@stacksjs/rpx 0.7.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin/cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{B as p,C as c,a as r,b as e,c as a,w as s}from"../chunk-
|
|
2
|
+
import{B as p,C as c,a as r,b as e,c as a,w as s}from"../chunk-xt6fyy5z.js";var o=new r("reverse-proxy");o.command("start","Start the Reverse Proxy Server").option("--from <from>","The URL to proxy from").option("--to <to>","The URL to proxy to").option("--key-path <path>","Absolute path to the SSL key").option("--cert-path <path>","Absolute path to the SSL certificate").option("--ca-cert-path <path>","Absolute path to the SSL CA certificate").option("--etc-hosts-cleanup","Cleanup /etc/hosts on exit").option("--verbose","Enable verbose logging").example("reverse-proxy start --from localhost:5173 --to my-project.localhost").example("reverse-proxy start --from localhost:3000 --to my-project.localhost/api").example("reverse-proxy start --from localhost:3000 --to localhost:3001").example("reverse-proxy start --from localhost:5173 --to my-project.test --key-path /absolute/path/to/key --cert-path /absolute/path/to/cert").action(async(t)=>{if(!t?.from||!t.to)return c(a);return p({from:t?.from,to:t?.to,https:s(t),etcHostsCleanup:t?.etcHostsCleanup,verbose:t?.verbose})});o.command("version","Show the version of the Reverse Proxy CLI").action(()=>{console.log(e)});o.version(e);o.help();o.parse();
|
|
@@ -308,7 +308,7 @@ const NOT_AN_ARRAY = '${e.array}';`}var w6=Object.getPrototypeOf(async function(
|
|
|
308
308
|
${u}`,Xm=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),Jm=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),ey=(e,u,t)=>{let r=t===""?"":`with ${t.trim()}() `,s=Zm.bind(null,r,u.toString());Object.defineProperty(s,"name",Jm);let{writable:n,enumerable:i,configurable:o}=Xm;Object.defineProperty(e,"toString",{value:s,writable:n,enumerable:i,configurable:o})};function ty(e,u,{ignoreNonConfigurable:t=!1}={}){let{name:r}=e;for(let s of Reflect.ownKeys(u))zm(e,u,s,t);return xm(e,u),ey(e,u,r),e}var Ks=new WeakMap,J2=(e,u={})=>{if(typeof e!=="function")throw new TypeError("Expected a function");let t,r=0,s=e.displayName||e.name||"<anonymous>",n=function(...i){if(Ks.set(n,++r),r===1)t=e.apply(this,i),e=void 0;else if(u.throw===!0)throw new Error(`Function \`${s}\` can only be called once`);return t};return ty(n,e),Ks.set(n,r),n};J2.callCount=(e)=>{if(!Ks.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return Ks.get(e)};var uy=J2,ii=[];ii.push("SIGHUP","SIGINT","SIGTERM");if(process.platform!=="win32")ii.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(process.platform==="linux")ii.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var Rs=(e)=>!!e&&typeof e==="object"&&typeof e.removeListener==="function"&&typeof e.emit==="function"&&typeof e.reallyExit==="function"&&typeof e.listeners==="function"&&typeof e.kill==="function"&&typeof e.pid==="number"&&typeof e.on==="function",Jn=Symbol.for("signal-exit emitter"),ea=globalThis,ry=Object.defineProperty.bind(Object);class ec{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(ea[Jn])return ea[Jn];ry(ea,Jn,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(e,u){this.listeners[e].push(u)}removeListener(e,u){let t=this.listeners[e],r=t.indexOf(u);if(r===-1)return;if(r===0&&t.length===1)t.length=0;else t.splice(r,1)}emit(e,u,t){if(this.emitted[e])return!1;this.emitted[e]=!0;let r=!1;for(let s of this.listeners[e])r=s(u,t)===!0||r;if(e==="exit")r=this.emit("afterExit",u,t)||r;return r}}class Ma{}var iy=(e)=>{return{onExit(u,t){return e.onExit(u,t)},load(){return e.load()},unload(){return e.unload()}}};class tc extends Ma{onExit(){return()=>{}}load(){}unload(){}}class uc extends Ma{#e=Ca.platform==="win32"?"SIGINT":"SIGHUP";#t=new ec;#u;#r;#i;#n={};#s=!1;constructor(e){super();this.#u=e,this.#n={};for(let u of ii)this.#n[u]=()=>{let t=this.#u.listeners(u),{count:r}=this.#t,s=e;if(typeof s.__signal_exit_emitter__==="object"&&typeof s.__signal_exit_emitter__.count==="number")r+=s.__signal_exit_emitter__.count;if(t.length===r){this.unload();let n=this.#t.emit("exit",null,u),i=u==="SIGHUP"?this.#e:u;if(!n)e.kill(e.pid,i)}};this.#i=e.reallyExit,this.#r=e.emit}onExit(e,u){if(!Rs(this.#u))return()=>{};if(this.#s===!1)this.load();let t=u?.alwaysLast?"afterExit":"exit";return this.#t.on(t,e),()=>{if(this.#t.removeListener(t,e),this.#t.listeners.exit.length===0&&this.#t.listeners.afterExit.length===0)this.unload()}}load(){if(this.#s)return;this.#s=!0,this.#t.count+=1;for(let e of ii)try{let u=this.#n[e];if(u)this.#u.on(e,u)}catch(u){}this.#u.emit=(e,...u)=>{return this.#f(e,...u)},this.#u.reallyExit=(e)=>{return this.#a(e)}}unload(){if(!this.#s)return;this.#s=!1,ii.forEach((e)=>{let u=this.#n[e];if(!u)throw new Error("Listener not defined for signal: "+e);try{this.#u.removeListener(e,u)}catch(t){}}),this.#u.emit=this.#r,this.#u.reallyExit=this.#i,this.#t.count-=1}#a(e){if(!Rs(this.#u))return 0;return this.#u.exitCode=e||0,this.#t.emit("exit",this.#u.exitCode,null),this.#i.call(this.#u,this.#u.exitCode)}#f(e,...u){let t=this.#r;if(e==="exit"&&Rs(this.#u)){if(typeof u[0]==="number")this.#u.exitCode=u[0];let r=t.call(this.#u,e,...u);return this.#t.emit("exit",this.#u.exitCode,null),r}else return t.call(this.#u,e,...u)}}var Ca=globalThis.process,{onExit:sy,load:ST,unload:TT}=iy(Rs(Ca)?new uc(Ca):new tc),pl=Ts.stderr.isTTY?Ts.stderr:Ts.stdout.isTTY?Ts.stdout:void 0,ny=pl?uy(()=>{sy(()=>{pl.write("\x1B[?25h")},{alwaysLast:!0})}):()=>{},ay=ny,Gs=!1,si={};si.show=(e=X2.stderr)=>{if(!e.isTTY)return;Gs=!1,e.write("\x1B[?25h")};si.hide=(e=X2.stderr)=>{if(!e.isTTY)return;ay(),Gs=!0,e.write("\x1B[?25l")};si.toggle=(e,u)=>{if(e!==void 0)Gs=e;if(Gs)si.show(u);else si.hide(u)};var gl=si,ws=Ge(d2(),1);function hy(){if(Au.platform!=="win32")return Au.env.TERM!=="linux";return Boolean(Au.env.CI)||Boolean(Au.env.WT_SESSION)||Boolean(Au.env.TERMINUS_SUBLIME)||Au.env.ConEmuTask==="{cmd::Cmder}"||Au.env.TERM_PROGRAM==="Terminus-Sublime"||Au.env.TERM_PROGRAM==="vscode"||Au.env.TERM==="xterm-256color"||Au.env.TERM==="alacritty"||Au.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var oy={info:er.blue("\u2139"),success:er.green("\u2714"),warning:er.yellow("\u26A0"),error:er.red("\u2716")},ly={info:er.blue("i"),success:er.green("\u221A"),warning:er.yellow("\u203C"),error:er.red("\xD7")},cy=hy()?oy:ly,Is=cy;function Dy({onlyFirst:e=!1}={}){let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}var fy=Dy();function rc(e){if(typeof e!=="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(fy,"")}function dy(e){return e===161||e===164||e===167||e===168||e===170||e===173||e===174||e>=176&&e<=180||e>=182&&e<=186||e>=188&&e<=191||e===198||e===208||e===215||e===216||e>=222&&e<=225||e===230||e>=232&&e<=234||e===236||e===237||e===240||e===242||e===243||e>=247&&e<=250||e===252||e===254||e===257||e===273||e===275||e===283||e===294||e===295||e===299||e>=305&&e<=307||e===312||e>=319&&e<=322||e===324||e>=328&&e<=331||e===333||e===338||e===339||e===358||e===359||e===363||e===462||e===464||e===466||e===468||e===470||e===472||e===474||e===476||e===593||e===609||e===708||e===711||e>=713&&e<=715||e===717||e===720||e>=728&&e<=731||e===733||e===735||e>=768&&e<=879||e>=913&&e<=929||e>=931&&e<=937||e>=945&&e<=961||e>=963&&e<=969||e===1025||e>=1040&&e<=1103||e===1105||e===8208||e>=8211&&e<=8214||e===8216||e===8217||e===8220||e===8221||e>=8224&&e<=8226||e>=8228&&e<=8231||e===8240||e===8242||e===8243||e===8245||e===8251||e===8254||e===8308||e===8319||e>=8321&&e<=8324||e===8364||e===8451||e===8453||e===8457||e===8467||e===8470||e===8481||e===8482||e===8486||e===8491||e===8531||e===8532||e>=8539&&e<=8542||e>=8544&&e<=8555||e>=8560&&e<=8569||e===8585||e>=8592&&e<=8601||e===8632||e===8633||e===8658||e===8660||e===8679||e===8704||e===8706||e===8707||e===8711||e===8712||e===8715||e===8719||e===8721||e===8725||e===8730||e>=8733&&e<=8736||e===8739||e===8741||e>=8743&&e<=8748||e===8750||e>=8756&&e<=8759||e===8764||e===8765||e===8776||e===8780||e===8786||e===8800||e===8801||e>=8804&&e<=8807||e===8810||e===8811||e===8814||e===8815||e===8834||e===8835||e===8838||e===8839||e===8853||e===8857||e===8869||e===8895||e===8978||e>=9312&&e<=9449||e>=9451&&e<=9547||e>=9552&&e<=9587||e>=9600&&e<=9615||e>=9618&&e<=9621||e===9632||e===9633||e>=9635&&e<=9641||e===9650||e===9651||e===9654||e===9655||e===9660||e===9661||e===9664||e===9665||e>=9670&&e<=9672||e===9675||e>=9678&&e<=9681||e>=9698&&e<=9701||e===9711||e===9733||e===9734||e===9737||e===9742||e===9743||e===9756||e===9758||e===9792||e===9794||e===9824||e===9825||e>=9827&&e<=9829||e>=9831&&e<=9834||e===9836||e===9837||e===9839||e===9886||e===9887||e===9919||e>=9926&&e<=9933||e>=9935&&e<=9939||e>=9941&&e<=9953||e===9955||e===9960||e===9961||e>=9963&&e<=9969||e===9972||e>=9974&&e<=9977||e===9979||e===9980||e===9982||e===9983||e===10045||e>=10102&&e<=10111||e>=11094&&e<=11097||e>=12872&&e<=12879||e>=57344&&e<=63743||e>=65024&&e<=65039||e===65533||e>=127232&&e<=127242||e>=127248&&e<=127277||e>=127280&&e<=127337||e>=127344&&e<=127373||e===127375||e===127376||e>=127387&&e<=127404||e>=917760&&e<=917999||e>=983040&&e<=1048573||e>=1048576&&e<=1114109}function Ey(e){return e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510}function Cy(e){return e>=4352&&e<=4447||e===8986||e===8987||e===9001||e===9002||e>=9193&&e<=9196||e===9200||e===9203||e===9725||e===9726||e===9748||e===9749||e>=9776&&e<=9783||e>=9800&&e<=9811||e===9855||e>=9866&&e<=9871||e===9875||e===9889||e===9898||e===9899||e===9917||e===9918||e===9924||e===9925||e===9934||e===9940||e===9962||e===9970||e===9971||e===9973||e===9978||e===9981||e===9989||e===9994||e===9995||e===10024||e===10060||e===10062||e>=10067&&e<=10069||e===10071||e>=10133&&e<=10135||e===10160||e===10175||e===11035||e===11036||e===11088||e===11093||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12773||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=94176&&e<=94180||e===94192||e===94193||e>=94208&&e<=100343||e>=100352&&e<=101589||e>=101631&&e<=101640||e>=110576&&e<=110579||e>=110581&&e<=110587||e===110589||e===110590||e>=110592&&e<=110882||e===110898||e>=110928&&e<=110930||e===110933||e>=110948&&e<=110951||e>=110960&&e<=111355||e>=119552&&e<=119638||e>=119648&&e<=119670||e===126980||e===127183||e===127374||e>=127377&&e<=127386||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e===127568||e===127569||e>=127584&&e<=127589||e>=127744&&e<=127776||e>=127789&&e<=127797||e>=127799&&e<=127868||e>=127870&&e<=127891||e>=127904&&e<=127946||e>=127951&&e<=127955||e>=127968&&e<=127984||e===127988||e>=127992&&e<=128062||e===128064||e>=128066&&e<=128252||e>=128255&&e<=128317||e>=128331&&e<=128334||e>=128336&&e<=128359||e===128378||e===128405||e===128406||e===128420||e>=128507&&e<=128591||e>=128640&&e<=128709||e===128716||e>=128720&&e<=128722||e>=128725&&e<=128727||e>=128732&&e<=128735||e===128747||e===128748||e>=128756&&e<=128764||e>=128992&&e<=129003||e===129008||e>=129292&&e<=129338||e>=129340&&e<=129349||e>=129351&&e<=129535||e>=129648&&e<=129660||e>=129664&&e<=129673||e>=129679&&e<=129734||e>=129742&&e<=129756||e>=129759&&e<=129769||e>=129776&&e<=129784||e>=131072&&e<=196605||e>=196608&&e<=262141}function py(e){if(!Number.isSafeInteger(e))throw new TypeError(`Expected a code point, got \`${typeof e}\`.`)}function gy(e,{ambiguousAsWide:u=!1}={}){if(py(e),Ey(e)||Cy(e)||u&&dy(e))return 2;return 1}var my=()=>{return/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g},yy=new Intl.Segmenter,Fy=/^\p{Default_Ignorable_Code_Point}$/u;function Ay(e,u={}){if(typeof e!=="string"||e.length===0)return 0;let{ambiguousIsNarrow:t=!0,countAnsiEscapeCodes:r=!1}=u;if(!r)e=rc(e);if(e.length===0)return 0;let s=0,n={ambiguousAsWide:!t};for(let{segment:i}of yy.segment(e)){let o=i.codePointAt(0);if(o<=31||o>=127&&o<=159)continue;if(o>=8203&&o<=8207||o===65279)continue;if(o>=768&&o<=879||o>=6832&&o<=6911||o>=7616&&o<=7679||o>=8400&&o<=8447||o>=65056&&o<=65071)continue;if(o>=55296&&o<=57343)continue;if(o>=65024&&o<=65039)continue;if(Fy.test(i))continue;if(my().test(i)){s+=2;continue}s+=gy(o,n)}return s}function vy({stream:e=process.stdout}={}){return Boolean(e&&e.isTTY&&!0&&!("CI"in process.env))}function By(){let{env:e}=ml,{TERM:u,TERM_PROGRAM:t}=e;if(ml.platform!=="win32")return u!=="linux";return Boolean(e.WT_SESSION)||Boolean(e.TERMINUS_SUBLIME)||e.ConEmuTask==="{cmd::Cmder}"||t==="Terminus-Sublime"||t==="vscode"||u==="xterm-256color"||u==="alacritty"||u==="rxvt-unicode"||u==="rxvt-unicode-256color"||e.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var by=3;class ic{#e=0;start(){if(this.#e++,this.#e===1)this.#t()}stop(){if(this.#e<=0)throw new Error("`stop` called more times than `start`");if(this.#e--,this.#e===0)this.#u()}#t(){if(Ru.platform==="win32"||!Ru.stdin.isTTY)return;Ru.stdin.setRawMode(!0),Ru.stdin.on("data",this.#r),Ru.stdin.resume()}#u(){if(!Ru.stdin.isTTY)return;Ru.stdin.off("data",this.#r),Ru.stdin.pause(),Ru.stdin.setRawMode(!1)}#r(e){if(e[0]===by)Ru.emit("SIGINT")}}var Sy=new ic,yl=Sy,_T=Ge(d2(),1);class Ty{#e=0;#t=!1;#u=0;#r=0;#i;#n;#s;#a;#f;#l;#c;#D;#E;#h;#o;color;constructor(e){if(typeof e==="string")e={text:e};if(this.#i={color:"cyan",stream:Ss.stderr,discardStdin:!0,hideCursor:!0,...e},this.color=this.#i.color,this.spinner=this.#i.spinner,this.#f=this.#i.interval,this.#s=this.#i.stream,this.#l=typeof this.#i.isEnabled==="boolean"?this.#i.isEnabled:vy({stream:this.#s}),this.#c=typeof this.#i.isSilent==="boolean"?this.#i.isSilent:!1,this.text=this.#i.text,this.prefixText=this.#i.prefixText,this.suffixText=this.#i.suffixText,this.indent=this.#i.indent,Ss.env.NODE_ENV==="test")this._stream=this.#s,this._isEnabled=this.#l,Object.defineProperty(this,"_linesToClear",{get(){return this.#e},set(u){this.#e=u}}),Object.defineProperty(this,"_frameIndex",{get(){return this.#r}}),Object.defineProperty(this,"_lineCount",{get(){return this.#u}})}get indent(){return this.#D}set indent(e=0){if(!(e>=0&&Number.isInteger(e)))throw new Error("The `indent` option must be an integer from 0 and up");this.#D=e,this.#d()}get interval(){return this.#f??this.#n.interval??100}get spinner(){return this.#n}set spinner(e){if(this.#r=0,this.#f=void 0,typeof e==="object"){if(e.frames===void 0)throw new Error("The given spinner must have a `frames` property");this.#n=e}else if(!By())this.#n=ws.default.line;else if(e===void 0)this.#n=ws.default.dots;else if(e!=="default"&&ws.default[e])this.#n=ws.default[e];else throw new Error(`There is no built-in spinner named '${e}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`)}get text(){return this.#E}set text(e=""){this.#E=e,this.#d()}get prefixText(){return this.#h}set prefixText(e=""){this.#h=e,this.#d()}get suffixText(){return this.#o}set suffixText(e=""){this.#o=e,this.#d()}get isSpinning(){return this.#a!==void 0}#C(e=this.#h,u=" "){if(typeof e==="string"&&e!=="")return e+u;if(typeof e==="function")return e()+u;return""}#p(e=this.#o,u=" "){if(typeof e==="string"&&e!=="")return u+e;if(typeof e==="function")return u+e();return""}#d(){let e=this.#s.columns??80,u=this.#C(this.#h,"-"),t=this.#p(this.#o,"-"),r=" ".repeat(this.#D)+u+"--"+this.#E+"--"+t;this.#u=0;for(let s of rc(r).split(`
|
|
309
309
|
`))this.#u+=Math.max(1,Math.ceil(Ay(s,{countAnsiEscapeCodes:!0})/e))}get isEnabled(){return this.#l&&!this.#c}set isEnabled(e){if(typeof e!=="boolean")throw new TypeError("The `isEnabled` option must be a boolean");this.#l=e}get isSilent(){return this.#c}set isSilent(e){if(typeof e!=="boolean")throw new TypeError("The `isSilent` option must be a boolean");this.#c=e}frame(){let{frames:e}=this.#n,u=e[this.#r];if(this.color)u=er[this.color](u);this.#r=++this.#r%e.length;let t=typeof this.#h==="string"&&this.#h!==""?this.#h+" ":"",r=typeof this.text==="string"?" "+this.text:"",s=typeof this.#o==="string"&&this.#o!==""?" "+this.#o:"";return t+u+r+s}clear(){if(!this.#l||!this.#s.isTTY)return this;this.#s.cursorTo(0);for(let e=0;e<this.#e;e++){if(e>0)this.#s.moveCursor(0,-1);this.#s.clearLine(1)}if(this.#D||this.lastIndent!==this.#D)this.#s.cursorTo(this.#D);return this.lastIndent=this.#D,this.#e=0,this}render(){if(this.#c)return this;return this.clear(),this.#s.write(this.frame()),this.#e=this.#u,this}start(e){if(e)this.text=e;if(this.#c)return this;if(!this.#l){if(this.text)this.#s.write(`- ${this.text}
|
|
310
310
|
`);return this}if(this.isSpinning)return this;if(this.#i.hideCursor)gl.hide(this.#s);if(this.#i.discardStdin&&Ss.stdin.isTTY)this.#t=!0,yl.start();return this.render(),this.#a=setInterval(this.render.bind(this),this.interval),this}stop(){if(!this.#l)return this;if(clearInterval(this.#a),this.#a=void 0,this.#r=0,this.clear(),this.#i.hideCursor)gl.show(this.#s);if(this.#i.discardStdin&&Ss.stdin.isTTY&&this.#t)yl.stop(),this.#t=!1;return this}succeed(e){return this.stopAndPersist({symbol:Is.success,text:e})}fail(e){return this.stopAndPersist({symbol:Is.error,text:e})}warn(e){return this.stopAndPersist({symbol:Is.warning,text:e})}info(e){return this.stopAndPersist({symbol:Is.info,text:e})}stopAndPersist(e={}){if(this.#c)return this;let u=e.prefixText??this.#h,t=this.#C(u," "),r=e.symbol??" ",s=e.text??this.text,n=typeof s==="string"?" "+s:"",i=e.suffixText??this.#o,o=this.#p(i," "),l=t+r+n+o+`
|
|
311
|
-
`;return this.stop(),this.#s.write(l),this}}function Fl(e){if(Array.isArray(e))return[...e];return{...e}}function Iy(e){if(Array.isArray(e))return e;return[e]}function ta(e,...u){Iy(u).forEach((t)=>{delete e[t]})}var pr=(e)=>Array.isArray(e);function Xu(e){return typeof e==="object"&&!Array.isArray(e)&&e!==null}var tu=(e)=>typeof e==="function";function ri(e,u){try{return u.split(".").reduce((t,r)=>t[r],e)}catch(t){return e}}function Oi(e){if(Array.isArray(e))return[...e];if("all"in e&&typeof e.all==="function")return e.all();return Object.values(e)}function Ny(e){return new We(e)}class We{items;constructor(e=[]){this.items=e}[Symbol.iterator]=$y;toJSON(){return this.items}all(){return this.items}average(e){if(e===void 0)return this.sum()/Number(this.items.length);if(tu(e))return Number(new this.constructor(this.items).sum(e))/Number(this.items.length);return Number(new this.constructor(this.items).pluck(e).sum())/Number(this.items.length)}avg=this.average;chunk(e){let u=[],t=Array.isArray(this.items)?this.items:Object.values(this.items);for(let r=0;r<t.length;r+=e)u.push(t.slice(r,r+e));return new We(u)}collapse(){return new this.constructor([].concat(...this.items))}combine(e){if(typeof e==="string")e=[e];if(!Array.isArray(e))throw new TypeError("The values must be an array or a string");let u={};return(Array.isArray(this.items)?this.items:Object.keys(this.items)).forEach((r,s)=>{if(e[s]!==void 0)u[r]=e[s]}),new We(u)}concat(e){let u=e;if(e instanceof this.constructor)u=e.all();else if(typeof e==="object")u=[],Object.keys(e).forEach((r)=>{u.push(e[r])});let t=Fl(this.items);return u.forEach((r)=>{if(typeof r==="object")Object.keys(r).forEach((s)=>t.push(r[s]));else t.push(r)}),new this.constructor(t)}contains(e,u){if(typeof e==="function")return this.items.some(e);if(Array.isArray(this.items))return this.items.includes(e);if(u!==void 0){if(Array.isArray(this.items))return this.items.some((t)=>t[e]!==void 0&&t[e]===u);return e in this.items&&this.items[e]===u}if(Array.isArray(this.items))return this.items.includes(e);return Object.values(this.items).includes(e)}containsOneItem(){if(typeof this.items==="string")return!0;return Object.keys(this.items).length===1}count(e){if(e)return this.filter(e).count();return Object.keys(this.items).length}countBy(e){let u={};return this.each((t)=>{let r=e?e(t):t;u[r]=(u[r]||0)+1}),new We(u)}crossJoin(...e){function u(t,r,s){let n=s[0];if(n instanceof We)n=n.all();let i=s.slice(1),o=!i.length,l=[];for(let a=0;a<n.length;a+=1){let D=t.slice();if(D.push(n[a]),o)l.push(D);else l=l.concat(u(D,r,i))}return l}return new this.constructor(u([],this.constructor,[].concat([this.items],e)))}dd(){console.log(JSON.stringify(this.all(),null,2)),wy.exit()}diff(e){let u;if(e instanceof this.constructor)u=e.all();else u=e;let t=this.items.filter((r)=>!u.includes(r));return new this.constructor(t)}diffAssoc(e){let u=e;if(e instanceof this.constructor)u=e.all();let t={};return Object.keys(this.items).forEach((r)=>{if(u[r]===void 0||u[r]!==this.items[r])t[r]=this.items[r]}),new this.constructor(t)}diffKeys(e){let u;if(e instanceof this.constructor)u=e.all();else u=e;let t=Object.keys(u),r=Object.keys(this.items).filter((s)=>!t.includes(s));return new this.constructor(this.items).only(r)}diffUsing(e,u){if(console.log("Original collection:",this.items),console.log("Array to compare:",e),e===null)return new We(this.items);let t=this.items.filter((r)=>{return e.findIndex((n)=>{return u(r,n)===0})===-1});return new We(t)}doesntContain(e,u){if(console.log("doesntContain called with:",{key:e,value:u}),typeof e==="function")return console.log("Function branch"),!this.contains(e);if(u!==void 0)return console.log("Key-value pair branch"),!this.contains((t)=>{return console.log("Comparing:",t[e],"with",u),t[e]===u});return console.log("Single value branch"),!this.contains(e)}dump(){return console.log(this.items),this}duplicates(){let e=[],u={},t=(r)=>{if(Array.isArray(r)||typeof r==="object")return JSON.stringify(r);return r};if(Array.isArray(this.items))this.items.forEach((r,s)=>{let n=t(r);if(!e.includes(n))e.push(n);else u[s]=r});else if(typeof this.items==="object")Object.keys(this.items).forEach((r)=>{let s=t(this.items[r]);if(!e.includes(s))e.push(s);else u[r]=this.items[r]});return new this.constructor(u)}each(e){let u=!1;if(Array.isArray(this.items)){let{length:t}=this.items;for(let r=0;r<t&&!u;r+=1)u=e(this.items[r],r,this.items)===!1}else{let t=Object.keys(this.items),{length:r}=t;for(let s=0;s<r&&!u;s+=1){let n=t[s];u=e(this.items[n],n,this.items)===!1}}return this}eachSpread(e){return this.each((u,t)=>{e(...u,t)}),this}every(e){return Oi(this.items).every(e)}except(e){let u={...this.items};return(Array.isArray(e)?e:[e]).forEach((r)=>delete u[r]),new We(u)}filter(e){if(console.log("Filter method called with callback:",e),console.log("Current items:",this.items),typeof e!=="function"){console.log("No callback provided, removing falsy values");let t=this.items.filter((r)=>{return console.log("Filtering item:",r),Boolean(r)});return console.log("Filtered items:",t),new We(t)}let u=this.items.filter((t,r)=>{return console.log("Filtering item:",t,"at index:",r),e(t,r)});return console.log("Filtered items:",u),new We(u)}first(e,u){if(tu(e)){let t=Object.keys(this.items);for(let r=0;r<t.length;r+=1){let s=t[r],n=this.items[s];if(e(n,s))return n}if(tu(u))return u();return u}if(Array.isArray(this.items)&&this.items.length||Object.keys(this.items).length){if(Array.isArray(this.items))return this.items[0];let t=Object.keys(this.items)[0];return this.items[t]}if(tu(u))return u();return u}firstOrFail(e){let u=this.items.find(e||(()=>!0));if(u===void 0)throw new Error("Item not found.");return u}firstWhere(e,u,t){return this.where(e,u,t).first()||null}flatMap(e){return this.map(e).collapse()}flatten(e=Number.POSITIVE_INFINITY){let u=(t,r)=>{if(!Array.isArray(t)&&typeof t!=="object")return[t];return r>0?Object.values(t).reduce((s,n)=>s.concat(Array.isArray(n)||typeof n==="object"?u(n,r-1):n),[]):Array.isArray(t)?[...t]:[t]};return new We(u(this.items,e))}flip(){let e={};if(Array.isArray(this.items))this.items.forEach((u,t)=>{e[u]=t});else Object.entries(this.items).forEach(([u,t])=>{e[t]=u});return new this.constructor(e)}forPage(e,u){let t={};if(Array.isArray(this.items))t=this.items.slice(e*u-u,e*u);else Object.keys(this.items).slice(e*u-u,e*u).forEach((r)=>{t[r]=this.items[r]});return new this.constructor(t)}forget(e){if(Array.isArray(this.items))this.items=this.items.filter((u,t)=>t!==Number.parseInt(e,10));else if(typeof this.items==="object"&&this.items!==null)delete this.items[e];return this}get(e,u=null){if(Array.isArray(this.items))return this.items[e]??u;return this.items[e]??u}groupBy(e){let u={};return this.each((t,r)=>{let s=typeof e==="function"?e(t):t[e];if(!(s in u))u[s]=new We;u[s].push(t)}),new We(u)}has(e){if(Array.isArray(this.items))return e in this.items;return e in this.items}implode(e,u){if(u===void 0)return this.items.join(e);return new this.constructor(this.items).pluck(e).all().join(u)}includes(e){if(Array.isArray(this.items))return this.items.includes(e);return Object.values(this.items).includes(e)}intersect(e){let u=e;if(e instanceof this.constructor)u=e.all();let t=this.items.filter((r)=>u.includes(r));return new this.constructor(t)}intersectByKeys(e){let u=Object.keys(e);if(e instanceof this.constructor)u=Object.keys(e.all());let t={};return Object.keys(this.items).forEach((r)=>{if(u.includes(r))t[r]=this.items[r]}),new this.constructor(t)}isEmpty(){return this.count()===0}isNotEmpty(){return!this.isEmpty()}join(e,u){let t=this.values();if(u===void 0)return t.implode(e);let r=t.count();if(r===0)return"";if(r===1)return t.last();let s=t.pop();return t.implode(e)+u+s}keyBy(e){let u={};if(tu(e))this.items.forEach((t)=>{u[e(t)]=t});else this.items.forEach((t)=>{let r=ri(t,e);u[r||""]=t});return new this.constructor(u)}keys(){return new We(Object.keys(this.items))}last(e,u){let{items:t}=this;if(tu(e))t=this.filter(e).all();if(Array.isArray(t)&&!t.length||!Object.keys(t).length){if(tu(u))return u();return u}if(Array.isArray(t))return t[t.length-1];let r=Object.keys(t);return t[r[r.length-1]]}macro(e,u){this.constructor.prototype[e]=u}make(e=[]){return new this.constructor(e)}map(e){if(Array.isArray(this.items))return new this.constructor(this.items.map(e));let u={};return Object.keys(this.items).forEach((t)=>{u[t]=e(this.items[t],Number(t))}),new this.constructor(u)}mapSpread(e){return this.map((u,t)=>e(...u,t))}mapToDictionary(e){let u={};return this.items.forEach((t,r)=>{let[s,n]=e(t,r);if(u[s]===void 0)u[s]=[n];else u[s].push(n)}),new this.constructor(u)}mapInto(e){return this.map((u,t)=>new e(u,t))}mapToGroups(e){let u={};return this.items.forEach((t,r)=>{let[s,n]=e(t,r);if(u[s]===void 0)u[s]=[n];else u[s].push(n)}),new this.constructor(u)}mapWithKeys(e){let u={};if(Array.isArray(this.items))this.items.forEach((t,r)=>{let[s,n]=e(t,r);u[s]=n});else Object.keys(this.items).forEach((t)=>{let[r,s]=e(this.items[t],Number(t));u[r]=s});return new this.constructor(u)}max(e){if(typeof e==="string"){let u=this.items.filter((t)=>t[e]!==void 0);return Math.max(...u.map((t)=>t[e]))}return Math.max(...this.items)}median(e){let{length:u}=this.items;if(e===void 0){if(u%2===0)return(this.items[u/2-1]+this.items[u/2])/2;return this.items[Math.floor(u/2)]}if(u%2===0)return(this.items[u/2-1][e]+this.items[u/2][e])/2;return this.items[Math.floor(u/2)][e]}merge(e){let u={...this.items,...e};return new We(u)}mergeRecursive(e){let u=(t,r)=>{let s={};return Object.keys({...t,...r}).forEach((i)=>{if(t[i]===void 0&&r[i]!==void 0)s[i]=r[i];else if(t[i]!==void 0&&r[i]===void 0)s[i]=t[i];else if(t[i]!==void 0&&r[i]!==void 0)if(t[i]===r[i])s[i]=t[i];else if(!Array.isArray(t[i])&&typeof t[i]==="object"&&!Array.isArray(r[i])&&typeof r[i]==="object")s[i]=u(t[i],r[i]);else s[i]=[].concat(t[i],r[i])}),s};if(!e)return this;if(e.constructor.name==="Collection")return new this.constructor(u(this.items,e.all()));return new this.constructor(u(this.items,e))}min(e){if(e!==void 0){let u=this.items.filter((t)=>t[e]!==void 0);return Math.min(...u.map((t)=>t[e]))}return Math.min(...this.items)}mode(e){let u=[],t=1;if(!this.items.length)return null;return this.items.forEach((r)=>{let s=u.filter((n)=>{if(e!==void 0)return n.key===r[e];return n.key===r});if(!s.length)if(e!==void 0)u.push({key:r[e],count:1});else u.push({key:r,count:1});else{s[0].count+=1;let{count:n}=s[0];if(n>t)t=n}}),u.filter((r)=>r.count===t).map((r)=>r.key)}nth(e,u=0){let r=Oi(this.items).slice(u).filter((s,n)=>n%e===0);return new this.constructor(r)}only(e){let u={};return e.forEach((t)=>{if(t in this.items)u[t]=this.items[t]}),new We(u)}pad(e,u){let t=Math.abs(e),r=this.count();if(t<=r)return this;let s=t-r,n=Fl(this.items),i=Array.isArray(this.items),o=e<0;for(let l=0;l<s;){if(!i)if(n[l]!==void 0)s+=1;else n[l]=u;else if(o)n.unshift(u);else n.push(u);l+=1}return new this.constructor(n)}partition(e){let u;if(Array.isArray(this.items))u=[new this.constructor([]),new this.constructor([])],this.items.forEach((t)=>{if(e(t)===!0)u[0].push(t);else u[1].push(t)});else u=[new this.constructor({}),new this.constructor({})],Object.keys(this.items).forEach((t)=>{let r=this.items[t];if(e(r)===!0)u[0].put(t,r);else u[1].put(t,r)});return new this.constructor(u)}pipe(e){return e(this)}pluck(e,u){if(e.includes("*")){let t=_y(this.items),r=[];if(u!==void 0){let o=new RegExp(`0.${u}`,"g"),l=`0.${u}`.split(".").length;Object.keys(t).forEach((a)=>{let D=a.match(o);if(D){let h=D[0];if(h.split(".").length===l)r.push(t[h])}})}let s=[],n=new RegExp(`0.${e}`,"g"),i=`0.${e}`.split(".").length;if(Object.keys(t).forEach((o)=>{let l=o.match(n);if(l){let a=l[0];if(a.split(".").length===i)s.push(t[a])}}),u!==void 0){let o={};return this.items.forEach((l,a)=>{o[r[a]||""]=s}),new this.constructor(o)}return new this.constructor([s])}if(u!==void 0){let t={};return this.items.forEach((r)=>{if(ri(r,e)!==void 0)t[r[u]||""]=ri(r,e);else t[r[u]||""]=null}),new this.constructor(t)}return this.map((t)=>{if(ri(t,e)!==void 0)return ri(t,e);return null})}pop(e=1){if(this.isEmpty())return null;if(pr(this.items)){if(e===1)return this.items.pop();return new this.constructor(this.items.splice(-e))}if(Xu(this.items)){let u=Object.keys(this.items);if(e===1){let s=u[u.length-1],n=this.items[s];return ta(this.items,s),n}let t=u.slice(-e),r=t.reduce((s,n)=>{return s[n]=this.items[n],s},{});return ta(this.items,t),new this.constructor(r)}return null}prepend(e,u){if(u!==void 0)return this.put(u,e);return this.items.unshift(e),this}pull(e,u=null){if(Array.isArray(this.items)){let r=Number(e);if(Number.isNaN(r))return u;let s=this.items[r];return this.items.splice(r,1),s??u}let t=this.items[e];return delete this.items[e],t??u}push(...e){return this.items=[...this.items,...e],this}put(e,u){return this.items[e]=u,this}random(e=null){let u=Oi(this.items),t=new this.constructor(u).shuffle();if(e!==Number.parseInt(e,10))return t.first();return t.take(e)}reduce(e,u){let t=null;if(u!==void 0)t=u;if(Array.isArray(this.items))this.items.forEach((r)=>{t=e(t,r)});else Object.keys(this.items).forEach((r)=>{t=e(t,this.items[r],r)});return t}reject(e){return new this.constructor(this.items).filter((u)=>!e(u))}replace(e){if(!e)return this;if(Array.isArray(e)){let t=this.items.map((r,s)=>e[s]||r);return new this.constructor(t)}if(e.constructor.name==="Collection"){let t={...this.items,...e.all()};return new this.constructor(t)}let u={...this.items,...e};return new this.constructor(u)}replaceRecursive(e){let u=(t,r)=>{let s={...t};return Object.keys({...t,...r}).forEach((i)=>{if(!Array.isArray(r[i])&&typeof r[i]==="object")s[i]=u(t[i],r[i]);else if(t[i]===void 0&&r[i]!==void 0)if(typeof t[i]==="object")s[i]={...r[i]};else s[i]=r[i];else if(t[i]!==void 0&&r[i]===void 0)if(typeof t[i]==="object")s[i]={...t[i]};else s[i]=t[i];else if(t[i]!==void 0&&r[i]!==void 0)if(typeof r[i]==="object")s[i]={...r[i]};else s[i]=r[i]}),s};if(!e)return this;if(!Array.isArray(e)&&typeof e!=="object")return new this.constructor(u(this.items,[e]));if(e.constructor.name==="Collection")return new this.constructor(u(this.items,e.all()));return new this.constructor(u(this.items,e))}reverse(){let e=[].concat(this.items).reverse();return new this.constructor(e)}search(e,u){let t,r=(s,n)=>{if(tu(e))return e(this.items[n],n);if(u)return this.items[n]===e;return this.items[n]==e};if(pr(this.items))t=this.items.findIndex(r);else if(Xu(this.items))t=Object.keys(this.items).find((s)=>r(this.items[s],s));if(t===void 0||t<0)return!1;return t}shift(e=1){if(this.isEmpty())return null;if(pr(this.items)){if(e===1)return this.items.shift();return new this.constructor(this.items.splice(0,e))}if(Xu(this.items)){if(e===1){let s=Object.keys(this.items)[0],n=this.items[s];return delete this.items[s],n}let t=Object.keys(this.items).slice(0,e),r=t.reduce((s,n)=>{return s[n]=this.items[n],s},{});return ta(this.items,t),new this.constructor(r)}return null}shuffle(){let e=Oi(this.items),u,t,r;for(r=e.length;r;r-=1)u=Math.floor(Math.random()*r),t=e[r-1],e[r-1]=e[u],e[u]=t;return this.items=e,this}skip(e){if(Xu(this.items))return new this.constructor(Object.keys(this.items).reduce((u,t,r)=>{if(r+1>e)u[t]=this.items[t];return u},{}));return new this.constructor(this.items.slice(e))}skipUntil(e){let u=null,t,r=(s)=>s===e;if(tu(e))r=e;if(pr(this.items))t=this.items.filter((s)=>{if(u!==!0)u=r(s);return u});if(Xu(this.items))t=Object.keys(this.items).reduce((s,n)=>{if(u!==!0)u=r(this.items[n]);if(u!==!1)s[n]=this.items[n];return s},{});return new this.constructor(t)}skipWhile(e){let u=null,t,r=(s)=>s===e;if(tu(e))r=e;if(pr(this.items))t=this.items.filter((s)=>{if(u!==!0)u=!r(s);return u});if(Xu(this.items))t=Object.keys(this.items).reduce((s,n)=>{if(u!==!0)u=!r(this.items[n]);if(u!==!1)s[n]=this.items[n];return s},{});return new this.constructor(t)}slice(e,u){let t=this.items.slice(e);if(u!==void 0)t=t.slice(0,u);return new this.constructor(t)}sole(){if(this.items.length!==1)throw new Error("Collection does not contain exactly one item.");return this.items[0]}some(e){return this.items.some((u)=>u.hasOwnProperty(e))}sort(e){let u=[].concat(this.items);if(e===void 0)if(this.every((t)=>typeof t==="number"))u.sort((t,r)=>t-r);else u.sort();else u.sort(e);return new this.constructor(u)}sortDesc(){return this.sort().reverse()}sortBy(e){let u=[].concat(this.items),t=(r)=>{if(tu(e))return e(r);return ri(r,e)};return u.sort((r,s)=>{let n=t(r),i=t(s);if(n===null||n===void 0)return 1;if(i===null||i===void 0)return-1;if(n<i)return-1;if(n>i)return 1;return 0}),new this.constructor(u)}sortByDesc(e){return this.sortBy(e).reverse()}sortKeys(){let e={};return Object.keys(this.items).sort().forEach((u)=>{e[u]=this.items[u]}),new this.constructor(e)}sortKeysDesc(){let e={};return Object.keys(this.items).sort().reverse().forEach((u)=>{e[u]=this.items[u]}),new this.constructor(e)}splice(e,u,t){let r=this.slice(e,u);if(this.items=this.diff(r.all()).all(),Array.isArray(t))for(let s=0,{length:n}=t;s<n;s+=1)this.items.splice(e+s,0,t[s]);return r}split(e){let u=this.toArray(),t=[],r=Math.ceil(u.length/e);for(let s=0;s<u.length;s+=r)t.push(u.slice(s,s+r));return new We(t)}sum(e){let u=Oi(this.items),t=0;if(e===void 0)for(let r=0,{length:s}=u;r<s;r+=1)t+=Number.parseFloat(u[r]);else if(tu(e))for(let r=0,{length:s}=u;r<s;r+=1)t+=Number.parseFloat(e(u[r]));else for(let r=0,{length:s}=u;r<s;r+=1)t+=Number.parseFloat(u[r][e]);return Number.parseFloat(t.toPrecision(12))}take(e){if(!Array.isArray(this.items)&&typeof this.items==="object"){let u=Object.keys(this.items),t;if(e<0)t=u.slice(e);else t=u.slice(0,e);let r={};return u.forEach((s)=>{if(t.includes(s))r[s]=this.items[s]}),new this.constructor(r)}if(e<0)return new this.constructor(this.items.slice(e));return new this.constructor(this.items.slice(0,e))}takeUntil(e){let u=null,t,r=(s)=>s===e;if(tu(e))r=e;if(pr(this.items))t=this.items.filter((s)=>{if(u!==!1)u=!r(s);return u});if(Xu(this.items))t=Object.keys(this.items).reduce((s,n)=>{if(u!==!1)u=!r(this.items[n]);if(u!==!1)s[n]=this.items[n];return s},{});return new this.constructor(t)}takeWhile(e){let u=null,t,r=(s)=>s===e;if(tu(e))r=e;if(pr(this.items))t=this.items.filter((s)=>{if(u!==!1)u=r(s);return u});if(Xu(this.items))t=Object.keys(this.items).reduce((s,n)=>{if(u!==!1)u=r(this.items[n]);if(u!==!1)s[n]=this.items[n];return s},{});return new this.constructor(t)}tap(e){return e(this),this}times(e,u){for(let t=1;t<=e;t+=1)this.items.push(u(t));return this}toArray(){return Array.isArray(this.items)?this.items:Object.values(this.items)}toJson(){return JSON.stringify(this.items)}transform(e){if(Array.isArray(this.items))this.items=this.items.map(e);else{let u={};Object.keys(this.items).forEach((t)=>{u[t]=e(this.items[t],t)}),this.items=u}return this}undot(){if(Array.isArray(this.items))return this;let e={};return Object.keys(this.items).forEach((u)=>{if(u.includes(".")){let t=e;u.split(".").reduce((r,s,n,i)=>{if(!r[s])r[s]={};if(n===i.length-1)r[s]=this.items[u];return r[s]},t),e={...e,...t}}else e[u]=this.items[u]}),new this.constructor(e)}unless(e,u,t){if(!e)return u(this);if(t)return t();return}unlessEmpty(e){if(!this.isEmpty())e(this);return this}unlessNotEmpty(e){if(this.isEmpty())e(this);return this}union(e){let u=JSON.parse(JSON.stringify(this.items));return Object.keys(e).forEach((t)=>{if(this.items[t]===void 0)u[t]=e[t]}),new this.constructor(u)}unique(){let e=Array.from(new Set(this.items));return new this.constructor(e)}unwrap(){return this.items}values(){return new We(Object.values(this.items))}when(e,u,t){if(e)u(this,e);else if(t)t();return this}whenEmpty(e,u){if(Array.isArray(this.items)&&!this.items.length)return e(this);if(!Object.keys(this.items).length)return e(this);if(u!==void 0){if(Array.isArray(this.items)&&this.items.length)return u(this);if(Object.keys(this.items).length)return u(this)}return this}whenNotEmpty(e,u){if(Array.isArray(this.items)&&this.items.length)return e(this);if(Object.keys(this.items).length)return e(this);if(u!==void 0){if(Array.isArray(this.items)&&!this.items.length)return u(this);if(!Object.keys(this.items).length)return u(this)}return this}where(e,u,t){if(arguments.length===1)return new We(this.items.filter((s)=>s[e]!==void 0));if(arguments.length===2)t=u,u="===";let r=(s,n,i,o)=>{let l=s[n];switch(o){case"===":return l===i;case"!==":return l!==i;case"<":return l<i;case"<=":return l<=i;case">":return l>i;case">=":return l>=i;default:return l==i}};return new We(this.items.filter((s)=>r(s,e,t,u)))}whereBetween(e,u){return this.filter((t)=>{let r=typeof t==="object"?t[e]:t;return r>=u[0]&&r<=u[1]})}whereIn(e,u){return this.filter((t)=>{let r=typeof t==="object"?t[e]:t;return u.includes(r)})}whereNotBetween(e,u){return this.filter((t)=>{let r=typeof t==="object"?t[e]:t;return r<u[0]||r>u[1]})}whereNotIn(e,u){let t=this.items.filter((r)=>{let s=e.split("."),n=r;for(let i of s){if(n[i]===void 0)return!0;n=n[i]}return!u.includes(n)});return new We(t)}getNestedValue(e,u){return u.split(".").reduce((r,s)=>r&&r[s]!==void 0?r[s]:null,e)}whereInstanceOf(e){return this.filter((u)=>u instanceof e)}whereNotNull(e){return this.where(e,"!==",null)}whereNull(e){return this.where(e,"===",null)}static wrap(e){if(e instanceof We)return e;return new We(Array.isArray(e)?e:[e])}static unwrap(e){if(e instanceof We)return e.all();return e}wrap(e){if(e instanceof We)return e;if(typeof e==="object")return new We(e);return new We([e])}zip(...e){let u=e.map((r)=>this.constructor.wrap(r).all()),t=this.items.map((r,s)=>{let n=[r];return u.forEach((i)=>{n.push(i[s])}),new this.constructor(n)});return new this.constructor(t)}}var _y=function e(u){let t={};return u.forEach((r,s)=>{function n(i,o){if(Xu(i))Object.keys(i).forEach((l)=>{n(i[l],`${o}.${l}`)});else if(pr(i))i.forEach((l,a)=>{n(l,`${o}.${a}`)});t[o]=i}n(r,s)}),t};function $y(){let e=-1;return{next:()=>{return e+=1,{value:this.items[e],done:e>=this.items.length}}}}Ws();var RT=Ny(["The best way to get started is to quit talking and begin doing.","The pessimist sees difficulty in every opportunity. The optimist sees opportunity in every difficulty.","Don\u2019t let yesterday take up too much of today.","You learn more from failure than from success. Don\u2019t let it stop you. Failure builds character.","It\u2019s not whether you get knocked down, it\u2019s whether you get up.","If you are working on something that you really care about, you don\u2019t have to be pushed. The vision pulls you.","People who are crazy enough to think they can change the world, are the ones who do.","Failure will never overtake me if my determination to succeed is strong enough.","Entrepreneurs are great at dealing with uncertainty and also very good at minimizing risk. That\u2019s the classic entrepreneur.","We may encounter many defeats but we must not be defeated.","Knowing is not enough; we must apply. Wishing is not enough; we must do.","Imagine your life is perfect in every respect; what would it look like?","We generate fears while we sit. We overcome them by action.","Whether you think you can or think you can\u2019t, you\u2019re right.","Security is mostly a superstition. Life is either a daring adventure or nothing."]),OT=Kg.default;var sc="0.7.0";import{homedir as Va}from"os";import{join as Ka}from"path";import{resolve as Oy}from"path";import Ly from"process";function ka(e,u){if(Array.isArray(u)&&!Array.isArray(e))return u;if(Array.isArray(u)&&Array.isArray(e))return u.map((r,s)=>{let n=e[s];if(ci(r)&&ci(n))return ka(n,r);return r});if(!ci(u)||!ci(e))return u;let t={...e};for(let r in u)if(Object.prototype.hasOwnProperty.call(u,r)){let s=u[r],n=t[r];if(s===null||s===void 0)t[r]=s;else if(ci(s)&&ci(n))t[r]=ka(n,s);else t[r]=s}return t}function ci(e){return Boolean(e&&typeof e==="object"&&!Array.isArray(e))}async function nc({name:e,cwd:u,defaultConfig:t}){let r=Oy(u||Ly.cwd(),`${e}.config`);try{let s=await import(r),n=s.default||s;return ka(t,n)}catch(s){return t}}var Uy={from:"localhost:5173",to:"stacks.localhost",cleanUrls:!1,https:{basePath:"",caCertPath:Ka(Va(),".stacks","ssl","stacks.localhost.ca.crt"),certPath:Ka(Va(),".stacks","ssl","stacks.localhost.crt"),keyPath:Ka(Va(),".stacks","ssl","stacks.localhost.crt.key")},etcHostsCleanup:!0,vitePluginUsage:!1,verbose:!0},Qi=await nc({name:"reverse-proxy",defaultConfig:Uy});function ae(e,u,t){if(t)console.debug(`[rpx:${e}] ${u}`)}function cw(e){if(zi(e))return e.proxies.map((u)=>{let t=u.to||"stacks.localhost";return t.startsWith("http")?new URL(t).hostname:t});if(Js(e)){let u=e.to||"stacks.localhost";return[u.startsWith("http")?new URL(u).hostname:u]}return["stacks.localhost"]}function ac(e){return typeof e==="object"&&e!==null&&"certificate"in e&&"privateKey"in e&&typeof e.certificate==="string"&&typeof e.privateKey==="string"}function Xs(e){if(!e)return"stacks.localhost";if(zi(e)&&e.proxies.length>0)return e.proxies[0].to||"stacks.localhost";if(Js(e))return e.to||"stacks.localhost";return"stacks.localhost"}function Yi(e){return"proxies"in e&&Array.isArray(e.proxies)}function zi(e){return"proxies"in e&&Array.isArray(e.proxies)}function Js(e){return"to"in e&&typeof e.to==="string"}import{exec as Py}from"child_process";import Vr from"fs";import hc from"os";import Ga from"path";import qi from"process";import{promisify as My}from"util";var ky=My(Py),vr=qi.platform==="win32"?Ga.join(qi.env.windir||"C:\\Windows","System32","drivers","etc","hosts"):"/etc/hosts";async function oc(e){if(qi.platform==="win32")throw new Error("Administrator privileges required on Windows");try{await ky(`sudo ${e}`)}catch(u){throw new Error(`Failed to execute sudo command: ${u.message}`)}}async function lc(e,u){ae("hosts",`Adding hosts: ${e.join(", ")}`,u),ae("hosts",`Using hosts file at: ${vr}`,u);try{let t=await Vr.promises.readFile(vr,"utf-8"),r=e.filter((i)=>{let o=`127.0.0.1 ${i}`,l=`::1 ${i}`;return!t.includes(o)&&!t.includes(l)});if(r.length===0){ae("hosts","All hosts already exist in hosts file",u),me.info("All hosts are already in the hosts file");return}let s=r.map((i)=>`
|
|
311
|
+
`;return this.stop(),this.#s.write(l),this}}function Fl(e){if(Array.isArray(e))return[...e];return{...e}}function Iy(e){if(Array.isArray(e))return e;return[e]}function ta(e,...u){Iy(u).forEach((t)=>{delete e[t]})}var pr=(e)=>Array.isArray(e);function Xu(e){return typeof e==="object"&&!Array.isArray(e)&&e!==null}var tu=(e)=>typeof e==="function";function ri(e,u){try{return u.split(".").reduce((t,r)=>t[r],e)}catch(t){return e}}function Oi(e){if(Array.isArray(e))return[...e];if("all"in e&&typeof e.all==="function")return e.all();return Object.values(e)}function Ny(e){return new We(e)}class We{items;constructor(e=[]){this.items=e}[Symbol.iterator]=$y;toJSON(){return this.items}all(){return this.items}average(e){if(e===void 0)return this.sum()/Number(this.items.length);if(tu(e))return Number(new this.constructor(this.items).sum(e))/Number(this.items.length);return Number(new this.constructor(this.items).pluck(e).sum())/Number(this.items.length)}avg=this.average;chunk(e){let u=[],t=Array.isArray(this.items)?this.items:Object.values(this.items);for(let r=0;r<t.length;r+=e)u.push(t.slice(r,r+e));return new We(u)}collapse(){return new this.constructor([].concat(...this.items))}combine(e){if(typeof e==="string")e=[e];if(!Array.isArray(e))throw new TypeError("The values must be an array or a string");let u={};return(Array.isArray(this.items)?this.items:Object.keys(this.items)).forEach((r,s)=>{if(e[s]!==void 0)u[r]=e[s]}),new We(u)}concat(e){let u=e;if(e instanceof this.constructor)u=e.all();else if(typeof e==="object")u=[],Object.keys(e).forEach((r)=>{u.push(e[r])});let t=Fl(this.items);return u.forEach((r)=>{if(typeof r==="object")Object.keys(r).forEach((s)=>t.push(r[s]));else t.push(r)}),new this.constructor(t)}contains(e,u){if(typeof e==="function")return this.items.some(e);if(Array.isArray(this.items))return this.items.includes(e);if(u!==void 0){if(Array.isArray(this.items))return this.items.some((t)=>t[e]!==void 0&&t[e]===u);return e in this.items&&this.items[e]===u}if(Array.isArray(this.items))return this.items.includes(e);return Object.values(this.items).includes(e)}containsOneItem(){if(typeof this.items==="string")return!0;return Object.keys(this.items).length===1}count(e){if(e)return this.filter(e).count();return Object.keys(this.items).length}countBy(e){let u={};return this.each((t)=>{let r=e?e(t):t;u[r]=(u[r]||0)+1}),new We(u)}crossJoin(...e){function u(t,r,s){let n=s[0];if(n instanceof We)n=n.all();let i=s.slice(1),o=!i.length,l=[];for(let a=0;a<n.length;a+=1){let D=t.slice();if(D.push(n[a]),o)l.push(D);else l=l.concat(u(D,r,i))}return l}return new this.constructor(u([],this.constructor,[].concat([this.items],e)))}dd(){console.log(JSON.stringify(this.all(),null,2)),wy.exit()}diff(e){let u;if(e instanceof this.constructor)u=e.all();else u=e;let t=this.items.filter((r)=>!u.includes(r));return new this.constructor(t)}diffAssoc(e){let u=e;if(e instanceof this.constructor)u=e.all();let t={};return Object.keys(this.items).forEach((r)=>{if(u[r]===void 0||u[r]!==this.items[r])t[r]=this.items[r]}),new this.constructor(t)}diffKeys(e){let u;if(e instanceof this.constructor)u=e.all();else u=e;let t=Object.keys(u),r=Object.keys(this.items).filter((s)=>!t.includes(s));return new this.constructor(this.items).only(r)}diffUsing(e,u){if(console.log("Original collection:",this.items),console.log("Array to compare:",e),e===null)return new We(this.items);let t=this.items.filter((r)=>{return e.findIndex((n)=>{return u(r,n)===0})===-1});return new We(t)}doesntContain(e,u){if(console.log("doesntContain called with:",{key:e,value:u}),typeof e==="function")return console.log("Function branch"),!this.contains(e);if(u!==void 0)return console.log("Key-value pair branch"),!this.contains((t)=>{return console.log("Comparing:",t[e],"with",u),t[e]===u});return console.log("Single value branch"),!this.contains(e)}dump(){return console.log(this.items),this}duplicates(){let e=[],u={},t=(r)=>{if(Array.isArray(r)||typeof r==="object")return JSON.stringify(r);return r};if(Array.isArray(this.items))this.items.forEach((r,s)=>{let n=t(r);if(!e.includes(n))e.push(n);else u[s]=r});else if(typeof this.items==="object")Object.keys(this.items).forEach((r)=>{let s=t(this.items[r]);if(!e.includes(s))e.push(s);else u[r]=this.items[r]});return new this.constructor(u)}each(e){let u=!1;if(Array.isArray(this.items)){let{length:t}=this.items;for(let r=0;r<t&&!u;r+=1)u=e(this.items[r],r,this.items)===!1}else{let t=Object.keys(this.items),{length:r}=t;for(let s=0;s<r&&!u;s+=1){let n=t[s];u=e(this.items[n],n,this.items)===!1}}return this}eachSpread(e){return this.each((u,t)=>{e(...u,t)}),this}every(e){return Oi(this.items).every(e)}except(e){let u={...this.items};return(Array.isArray(e)?e:[e]).forEach((r)=>delete u[r]),new We(u)}filter(e){if(console.log("Filter method called with callback:",e),console.log("Current items:",this.items),typeof e!=="function"){console.log("No callback provided, removing falsy values");let t=this.items.filter((r)=>{return console.log("Filtering item:",r),Boolean(r)});return console.log("Filtered items:",t),new We(t)}let u=this.items.filter((t,r)=>{return console.log("Filtering item:",t,"at index:",r),e(t,r)});return console.log("Filtered items:",u),new We(u)}first(e,u){if(tu(e)){let t=Object.keys(this.items);for(let r=0;r<t.length;r+=1){let s=t[r],n=this.items[s];if(e(n,s))return n}if(tu(u))return u();return u}if(Array.isArray(this.items)&&this.items.length||Object.keys(this.items).length){if(Array.isArray(this.items))return this.items[0];let t=Object.keys(this.items)[0];return this.items[t]}if(tu(u))return u();return u}firstOrFail(e){let u=this.items.find(e||(()=>!0));if(u===void 0)throw new Error("Item not found.");return u}firstWhere(e,u,t){return this.where(e,u,t).first()||null}flatMap(e){return this.map(e).collapse()}flatten(e=Number.POSITIVE_INFINITY){let u=(t,r)=>{if(!Array.isArray(t)&&typeof t!=="object")return[t];return r>0?Object.values(t).reduce((s,n)=>s.concat(Array.isArray(n)||typeof n==="object"?u(n,r-1):n),[]):Array.isArray(t)?[...t]:[t]};return new We(u(this.items,e))}flip(){let e={};if(Array.isArray(this.items))this.items.forEach((u,t)=>{e[u]=t});else Object.entries(this.items).forEach(([u,t])=>{e[t]=u});return new this.constructor(e)}forPage(e,u){let t={};if(Array.isArray(this.items))t=this.items.slice(e*u-u,e*u);else Object.keys(this.items).slice(e*u-u,e*u).forEach((r)=>{t[r]=this.items[r]});return new this.constructor(t)}forget(e){if(Array.isArray(this.items))this.items=this.items.filter((u,t)=>t!==Number.parseInt(e,10));else if(typeof this.items==="object"&&this.items!==null)delete this.items[e];return this}get(e,u=null){if(Array.isArray(this.items))return this.items[e]??u;return this.items[e]??u}groupBy(e){let u={};return this.each((t,r)=>{let s=typeof e==="function"?e(t):t[e];if(!(s in u))u[s]=new We;u[s].push(t)}),new We(u)}has(e){if(Array.isArray(this.items))return e in this.items;return e in this.items}implode(e,u){if(u===void 0)return this.items.join(e);return new this.constructor(this.items).pluck(e).all().join(u)}includes(e){if(Array.isArray(this.items))return this.items.includes(e);return Object.values(this.items).includes(e)}intersect(e){let u=e;if(e instanceof this.constructor)u=e.all();let t=this.items.filter((r)=>u.includes(r));return new this.constructor(t)}intersectByKeys(e){let u=Object.keys(e);if(e instanceof this.constructor)u=Object.keys(e.all());let t={};return Object.keys(this.items).forEach((r)=>{if(u.includes(r))t[r]=this.items[r]}),new this.constructor(t)}isEmpty(){return this.count()===0}isNotEmpty(){return!this.isEmpty()}join(e,u){let t=this.values();if(u===void 0)return t.implode(e);let r=t.count();if(r===0)return"";if(r===1)return t.last();let s=t.pop();return t.implode(e)+u+s}keyBy(e){let u={};if(tu(e))this.items.forEach((t)=>{u[e(t)]=t});else this.items.forEach((t)=>{let r=ri(t,e);u[r||""]=t});return new this.constructor(u)}keys(){return new We(Object.keys(this.items))}last(e,u){let{items:t}=this;if(tu(e))t=this.filter(e).all();if(Array.isArray(t)&&!t.length||!Object.keys(t).length){if(tu(u))return u();return u}if(Array.isArray(t))return t[t.length-1];let r=Object.keys(t);return t[r[r.length-1]]}macro(e,u){this.constructor.prototype[e]=u}make(e=[]){return new this.constructor(e)}map(e){if(Array.isArray(this.items))return new this.constructor(this.items.map(e));let u={};return Object.keys(this.items).forEach((t)=>{u[t]=e(this.items[t],Number(t))}),new this.constructor(u)}mapSpread(e){return this.map((u,t)=>e(...u,t))}mapToDictionary(e){let u={};return this.items.forEach((t,r)=>{let[s,n]=e(t,r);if(u[s]===void 0)u[s]=[n];else u[s].push(n)}),new this.constructor(u)}mapInto(e){return this.map((u,t)=>new e(u,t))}mapToGroups(e){let u={};return this.items.forEach((t,r)=>{let[s,n]=e(t,r);if(u[s]===void 0)u[s]=[n];else u[s].push(n)}),new this.constructor(u)}mapWithKeys(e){let u={};if(Array.isArray(this.items))this.items.forEach((t,r)=>{let[s,n]=e(t,r);u[s]=n});else Object.keys(this.items).forEach((t)=>{let[r,s]=e(this.items[t],Number(t));u[r]=s});return new this.constructor(u)}max(e){if(typeof e==="string"){let u=this.items.filter((t)=>t[e]!==void 0);return Math.max(...u.map((t)=>t[e]))}return Math.max(...this.items)}median(e){let{length:u}=this.items;if(e===void 0){if(u%2===0)return(this.items[u/2-1]+this.items[u/2])/2;return this.items[Math.floor(u/2)]}if(u%2===0)return(this.items[u/2-1][e]+this.items[u/2][e])/2;return this.items[Math.floor(u/2)][e]}merge(e){let u={...this.items,...e};return new We(u)}mergeRecursive(e){let u=(t,r)=>{let s={};return Object.keys({...t,...r}).forEach((i)=>{if(t[i]===void 0&&r[i]!==void 0)s[i]=r[i];else if(t[i]!==void 0&&r[i]===void 0)s[i]=t[i];else if(t[i]!==void 0&&r[i]!==void 0)if(t[i]===r[i])s[i]=t[i];else if(!Array.isArray(t[i])&&typeof t[i]==="object"&&!Array.isArray(r[i])&&typeof r[i]==="object")s[i]=u(t[i],r[i]);else s[i]=[].concat(t[i],r[i])}),s};if(!e)return this;if(e.constructor.name==="Collection")return new this.constructor(u(this.items,e.all()));return new this.constructor(u(this.items,e))}min(e){if(e!==void 0){let u=this.items.filter((t)=>t[e]!==void 0);return Math.min(...u.map((t)=>t[e]))}return Math.min(...this.items)}mode(e){let u=[],t=1;if(!this.items.length)return null;return this.items.forEach((r)=>{let s=u.filter((n)=>{if(e!==void 0)return n.key===r[e];return n.key===r});if(!s.length)if(e!==void 0)u.push({key:r[e],count:1});else u.push({key:r,count:1});else{s[0].count+=1;let{count:n}=s[0];if(n>t)t=n}}),u.filter((r)=>r.count===t).map((r)=>r.key)}nth(e,u=0){let r=Oi(this.items).slice(u).filter((s,n)=>n%e===0);return new this.constructor(r)}only(e){let u={};return e.forEach((t)=>{if(t in this.items)u[t]=this.items[t]}),new We(u)}pad(e,u){let t=Math.abs(e),r=this.count();if(t<=r)return this;let s=t-r,n=Fl(this.items),i=Array.isArray(this.items),o=e<0;for(let l=0;l<s;){if(!i)if(n[l]!==void 0)s+=1;else n[l]=u;else if(o)n.unshift(u);else n.push(u);l+=1}return new this.constructor(n)}partition(e){let u;if(Array.isArray(this.items))u=[new this.constructor([]),new this.constructor([])],this.items.forEach((t)=>{if(e(t)===!0)u[0].push(t);else u[1].push(t)});else u=[new this.constructor({}),new this.constructor({})],Object.keys(this.items).forEach((t)=>{let r=this.items[t];if(e(r)===!0)u[0].put(t,r);else u[1].put(t,r)});return new this.constructor(u)}pipe(e){return e(this)}pluck(e,u){if(e.includes("*")){let t=_y(this.items),r=[];if(u!==void 0){let o=new RegExp(`0.${u}`,"g"),l=`0.${u}`.split(".").length;Object.keys(t).forEach((a)=>{let D=a.match(o);if(D){let h=D[0];if(h.split(".").length===l)r.push(t[h])}})}let s=[],n=new RegExp(`0.${e}`,"g"),i=`0.${e}`.split(".").length;if(Object.keys(t).forEach((o)=>{let l=o.match(n);if(l){let a=l[0];if(a.split(".").length===i)s.push(t[a])}}),u!==void 0){let o={};return this.items.forEach((l,a)=>{o[r[a]||""]=s}),new this.constructor(o)}return new this.constructor([s])}if(u!==void 0){let t={};return this.items.forEach((r)=>{if(ri(r,e)!==void 0)t[r[u]||""]=ri(r,e);else t[r[u]||""]=null}),new this.constructor(t)}return this.map((t)=>{if(ri(t,e)!==void 0)return ri(t,e);return null})}pop(e=1){if(this.isEmpty())return null;if(pr(this.items)){if(e===1)return this.items.pop();return new this.constructor(this.items.splice(-e))}if(Xu(this.items)){let u=Object.keys(this.items);if(e===1){let s=u[u.length-1],n=this.items[s];return ta(this.items,s),n}let t=u.slice(-e),r=t.reduce((s,n)=>{return s[n]=this.items[n],s},{});return ta(this.items,t),new this.constructor(r)}return null}prepend(e,u){if(u!==void 0)return this.put(u,e);return this.items.unshift(e),this}pull(e,u=null){if(Array.isArray(this.items)){let r=Number(e);if(Number.isNaN(r))return u;let s=this.items[r];return this.items.splice(r,1),s??u}let t=this.items[e];return delete this.items[e],t??u}push(...e){return this.items=[...this.items,...e],this}put(e,u){return this.items[e]=u,this}random(e=null){let u=Oi(this.items),t=new this.constructor(u).shuffle();if(e!==Number.parseInt(e,10))return t.first();return t.take(e)}reduce(e,u){let t=null;if(u!==void 0)t=u;if(Array.isArray(this.items))this.items.forEach((r)=>{t=e(t,r)});else Object.keys(this.items).forEach((r)=>{t=e(t,this.items[r],r)});return t}reject(e){return new this.constructor(this.items).filter((u)=>!e(u))}replace(e){if(!e)return this;if(Array.isArray(e)){let t=this.items.map((r,s)=>e[s]||r);return new this.constructor(t)}if(e.constructor.name==="Collection"){let t={...this.items,...e.all()};return new this.constructor(t)}let u={...this.items,...e};return new this.constructor(u)}replaceRecursive(e){let u=(t,r)=>{let s={...t};return Object.keys({...t,...r}).forEach((i)=>{if(!Array.isArray(r[i])&&typeof r[i]==="object")s[i]=u(t[i],r[i]);else if(t[i]===void 0&&r[i]!==void 0)if(typeof t[i]==="object")s[i]={...r[i]};else s[i]=r[i];else if(t[i]!==void 0&&r[i]===void 0)if(typeof t[i]==="object")s[i]={...t[i]};else s[i]=t[i];else if(t[i]!==void 0&&r[i]!==void 0)if(typeof r[i]==="object")s[i]={...r[i]};else s[i]=r[i]}),s};if(!e)return this;if(!Array.isArray(e)&&typeof e!=="object")return new this.constructor(u(this.items,[e]));if(e.constructor.name==="Collection")return new this.constructor(u(this.items,e.all()));return new this.constructor(u(this.items,e))}reverse(){let e=[].concat(this.items).reverse();return new this.constructor(e)}search(e,u){let t,r=(s,n)=>{if(tu(e))return e(this.items[n],n);if(u)return this.items[n]===e;return this.items[n]==e};if(pr(this.items))t=this.items.findIndex(r);else if(Xu(this.items))t=Object.keys(this.items).find((s)=>r(this.items[s],s));if(t===void 0||t<0)return!1;return t}shift(e=1){if(this.isEmpty())return null;if(pr(this.items)){if(e===1)return this.items.shift();return new this.constructor(this.items.splice(0,e))}if(Xu(this.items)){if(e===1){let s=Object.keys(this.items)[0],n=this.items[s];return delete this.items[s],n}let t=Object.keys(this.items).slice(0,e),r=t.reduce((s,n)=>{return s[n]=this.items[n],s},{});return ta(this.items,t),new this.constructor(r)}return null}shuffle(){let e=Oi(this.items),u,t,r;for(r=e.length;r;r-=1)u=Math.floor(Math.random()*r),t=e[r-1],e[r-1]=e[u],e[u]=t;return this.items=e,this}skip(e){if(Xu(this.items))return new this.constructor(Object.keys(this.items).reduce((u,t,r)=>{if(r+1>e)u[t]=this.items[t];return u},{}));return new this.constructor(this.items.slice(e))}skipUntil(e){let u=null,t,r=(s)=>s===e;if(tu(e))r=e;if(pr(this.items))t=this.items.filter((s)=>{if(u!==!0)u=r(s);return u});if(Xu(this.items))t=Object.keys(this.items).reduce((s,n)=>{if(u!==!0)u=r(this.items[n]);if(u!==!1)s[n]=this.items[n];return s},{});return new this.constructor(t)}skipWhile(e){let u=null,t,r=(s)=>s===e;if(tu(e))r=e;if(pr(this.items))t=this.items.filter((s)=>{if(u!==!0)u=!r(s);return u});if(Xu(this.items))t=Object.keys(this.items).reduce((s,n)=>{if(u!==!0)u=!r(this.items[n]);if(u!==!1)s[n]=this.items[n];return s},{});return new this.constructor(t)}slice(e,u){let t=this.items.slice(e);if(u!==void 0)t=t.slice(0,u);return new this.constructor(t)}sole(){if(this.items.length!==1)throw new Error("Collection does not contain exactly one item.");return this.items[0]}some(e){return this.items.some((u)=>u.hasOwnProperty(e))}sort(e){let u=[].concat(this.items);if(e===void 0)if(this.every((t)=>typeof t==="number"))u.sort((t,r)=>t-r);else u.sort();else u.sort(e);return new this.constructor(u)}sortDesc(){return this.sort().reverse()}sortBy(e){let u=[].concat(this.items),t=(r)=>{if(tu(e))return e(r);return ri(r,e)};return u.sort((r,s)=>{let n=t(r),i=t(s);if(n===null||n===void 0)return 1;if(i===null||i===void 0)return-1;if(n<i)return-1;if(n>i)return 1;return 0}),new this.constructor(u)}sortByDesc(e){return this.sortBy(e).reverse()}sortKeys(){let e={};return Object.keys(this.items).sort().forEach((u)=>{e[u]=this.items[u]}),new this.constructor(e)}sortKeysDesc(){let e={};return Object.keys(this.items).sort().reverse().forEach((u)=>{e[u]=this.items[u]}),new this.constructor(e)}splice(e,u,t){let r=this.slice(e,u);if(this.items=this.diff(r.all()).all(),Array.isArray(t))for(let s=0,{length:n}=t;s<n;s+=1)this.items.splice(e+s,0,t[s]);return r}split(e){let u=this.toArray(),t=[],r=Math.ceil(u.length/e);for(let s=0;s<u.length;s+=r)t.push(u.slice(s,s+r));return new We(t)}sum(e){let u=Oi(this.items),t=0;if(e===void 0)for(let r=0,{length:s}=u;r<s;r+=1)t+=Number.parseFloat(u[r]);else if(tu(e))for(let r=0,{length:s}=u;r<s;r+=1)t+=Number.parseFloat(e(u[r]));else for(let r=0,{length:s}=u;r<s;r+=1)t+=Number.parseFloat(u[r][e]);return Number.parseFloat(t.toPrecision(12))}take(e){if(!Array.isArray(this.items)&&typeof this.items==="object"){let u=Object.keys(this.items),t;if(e<0)t=u.slice(e);else t=u.slice(0,e);let r={};return u.forEach((s)=>{if(t.includes(s))r[s]=this.items[s]}),new this.constructor(r)}if(e<0)return new this.constructor(this.items.slice(e));return new this.constructor(this.items.slice(0,e))}takeUntil(e){let u=null,t,r=(s)=>s===e;if(tu(e))r=e;if(pr(this.items))t=this.items.filter((s)=>{if(u!==!1)u=!r(s);return u});if(Xu(this.items))t=Object.keys(this.items).reduce((s,n)=>{if(u!==!1)u=!r(this.items[n]);if(u!==!1)s[n]=this.items[n];return s},{});return new this.constructor(t)}takeWhile(e){let u=null,t,r=(s)=>s===e;if(tu(e))r=e;if(pr(this.items))t=this.items.filter((s)=>{if(u!==!1)u=r(s);return u});if(Xu(this.items))t=Object.keys(this.items).reduce((s,n)=>{if(u!==!1)u=r(this.items[n]);if(u!==!1)s[n]=this.items[n];return s},{});return new this.constructor(t)}tap(e){return e(this),this}times(e,u){for(let t=1;t<=e;t+=1)this.items.push(u(t));return this}toArray(){return Array.isArray(this.items)?this.items:Object.values(this.items)}toJson(){return JSON.stringify(this.items)}transform(e){if(Array.isArray(this.items))this.items=this.items.map(e);else{let u={};Object.keys(this.items).forEach((t)=>{u[t]=e(this.items[t],t)}),this.items=u}return this}undot(){if(Array.isArray(this.items))return this;let e={};return Object.keys(this.items).forEach((u)=>{if(u.includes(".")){let t=e;u.split(".").reduce((r,s,n,i)=>{if(!r[s])r[s]={};if(n===i.length-1)r[s]=this.items[u];return r[s]},t),e={...e,...t}}else e[u]=this.items[u]}),new this.constructor(e)}unless(e,u,t){if(!e)return u(this);if(t)return t();return}unlessEmpty(e){if(!this.isEmpty())e(this);return this}unlessNotEmpty(e){if(this.isEmpty())e(this);return this}union(e){let u=JSON.parse(JSON.stringify(this.items));return Object.keys(e).forEach((t)=>{if(this.items[t]===void 0)u[t]=e[t]}),new this.constructor(u)}unique(){let e=Array.from(new Set(this.items));return new this.constructor(e)}unwrap(){return this.items}values(){return new We(Object.values(this.items))}when(e,u,t){if(e)u(this,e);else if(t)t();return this}whenEmpty(e,u){if(Array.isArray(this.items)&&!this.items.length)return e(this);if(!Object.keys(this.items).length)return e(this);if(u!==void 0){if(Array.isArray(this.items)&&this.items.length)return u(this);if(Object.keys(this.items).length)return u(this)}return this}whenNotEmpty(e,u){if(Array.isArray(this.items)&&this.items.length)return e(this);if(Object.keys(this.items).length)return e(this);if(u!==void 0){if(Array.isArray(this.items)&&!this.items.length)return u(this);if(!Object.keys(this.items).length)return u(this)}return this}where(e,u,t){if(arguments.length===1)return new We(this.items.filter((s)=>s[e]!==void 0));if(arguments.length===2)t=u,u="===";let r=(s,n,i,o)=>{let l=s[n];switch(o){case"===":return l===i;case"!==":return l!==i;case"<":return l<i;case"<=":return l<=i;case">":return l>i;case">=":return l>=i;default:return l==i}};return new We(this.items.filter((s)=>r(s,e,t,u)))}whereBetween(e,u){return this.filter((t)=>{let r=typeof t==="object"?t[e]:t;return r>=u[0]&&r<=u[1]})}whereIn(e,u){return this.filter((t)=>{let r=typeof t==="object"?t[e]:t;return u.includes(r)})}whereNotBetween(e,u){return this.filter((t)=>{let r=typeof t==="object"?t[e]:t;return r<u[0]||r>u[1]})}whereNotIn(e,u){let t=this.items.filter((r)=>{let s=e.split("."),n=r;for(let i of s){if(n[i]===void 0)return!0;n=n[i]}return!u.includes(n)});return new We(t)}getNestedValue(e,u){return u.split(".").reduce((r,s)=>r&&r[s]!==void 0?r[s]:null,e)}whereInstanceOf(e){return this.filter((u)=>u instanceof e)}whereNotNull(e){return this.where(e,"!==",null)}whereNull(e){return this.where(e,"===",null)}static wrap(e){if(e instanceof We)return e;return new We(Array.isArray(e)?e:[e])}static unwrap(e){if(e instanceof We)return e.all();return e}wrap(e){if(e instanceof We)return e;if(typeof e==="object")return new We(e);return new We([e])}zip(...e){let u=e.map((r)=>this.constructor.wrap(r).all()),t=this.items.map((r,s)=>{let n=[r];return u.forEach((i)=>{n.push(i[s])}),new this.constructor(n)});return new this.constructor(t)}}var _y=function e(u){let t={};return u.forEach((r,s)=>{function n(i,o){if(Xu(i))Object.keys(i).forEach((l)=>{n(i[l],`${o}.${l}`)});else if(pr(i))i.forEach((l,a)=>{n(l,`${o}.${a}`)});t[o]=i}n(r,s)}),t};function $y(){let e=-1;return{next:()=>{return e+=1,{value:this.items[e],done:e>=this.items.length}}}}Ws();var RT=Ny(["The best way to get started is to quit talking and begin doing.","The pessimist sees difficulty in every opportunity. The optimist sees opportunity in every difficulty.","Don\u2019t let yesterday take up too much of today.","You learn more from failure than from success. Don\u2019t let it stop you. Failure builds character.","It\u2019s not whether you get knocked down, it\u2019s whether you get up.","If you are working on something that you really care about, you don\u2019t have to be pushed. The vision pulls you.","People who are crazy enough to think they can change the world, are the ones who do.","Failure will never overtake me if my determination to succeed is strong enough.","Entrepreneurs are great at dealing with uncertainty and also very good at minimizing risk. That\u2019s the classic entrepreneur.","We may encounter many defeats but we must not be defeated.","Knowing is not enough; we must apply. Wishing is not enough; we must do.","Imagine your life is perfect in every respect; what would it look like?","We generate fears while we sit. We overcome them by action.","Whether you think you can or think you can\u2019t, you\u2019re right.","Security is mostly a superstition. Life is either a daring adventure or nothing."]),OT=Kg.default;var sc="0.7.1";import{homedir as Va}from"os";import{join as Ka}from"path";import{resolve as Oy}from"path";import Ly from"process";function ka(e,u){if(Array.isArray(u)&&!Array.isArray(e))return u;if(Array.isArray(u)&&Array.isArray(e))return u.map((r,s)=>{let n=e[s];if(ci(r)&&ci(n))return ka(n,r);return r});if(!ci(u)||!ci(e))return u;let t={...e};for(let r in u)if(Object.prototype.hasOwnProperty.call(u,r)){let s=u[r],n=t[r];if(s===null||s===void 0)t[r]=s;else if(ci(s)&&ci(n))t[r]=ka(n,s);else t[r]=s}return t}function ci(e){return Boolean(e&&typeof e==="object"&&!Array.isArray(e))}async function nc({name:e,cwd:u,defaultConfig:t}){let r=Oy(u||Ly.cwd(),`${e}.config`);try{let s=await import(r),n=s.default||s;return ka(t,n)}catch(s){return t}}var Uy={from:"localhost:5173",to:"stacks.localhost",cleanUrls:!1,https:{basePath:"",caCertPath:Ka(Va(),".stacks","ssl","stacks.localhost.ca.crt"),certPath:Ka(Va(),".stacks","ssl","stacks.localhost.crt"),keyPath:Ka(Va(),".stacks","ssl","stacks.localhost.crt.key")},etcHostsCleanup:!0,vitePluginUsage:!1,verbose:!0},Qi=await nc({name:"reverse-proxy",defaultConfig:Uy});function ae(e,u,t){if(t)console.debug(`[rpx:${e}] ${u}`)}function cw(e){if(zi(e))return e.proxies.map((u)=>{let t=u.to||"stacks.localhost";return t.startsWith("http")?new URL(t).hostname:t});if(Js(e)){let u=e.to||"stacks.localhost";return[u.startsWith("http")?new URL(u).hostname:u]}return["stacks.localhost"]}function ac(e){return typeof e==="object"&&e!==null&&"certificate"in e&&"privateKey"in e&&typeof e.certificate==="string"&&typeof e.privateKey==="string"}function Xs(e){if(!e)return"stacks.localhost";if(zi(e)&&e.proxies.length>0)return e.proxies[0].to||"stacks.localhost";if(Js(e))return e.to||"stacks.localhost";return"stacks.localhost"}function Yi(e){return"proxies"in e&&Array.isArray(e.proxies)}function zi(e){return"proxies"in e&&Array.isArray(e.proxies)}function Js(e){return"to"in e&&typeof e.to==="string"}import{exec as Py}from"child_process";import Vr from"fs";import hc from"os";import Ga from"path";import qi from"process";import{promisify as My}from"util";var ky=My(Py),vr=qi.platform==="win32"?Ga.join(qi.env.windir||"C:\\Windows","System32","drivers","etc","hosts"):"/etc/hosts";async function oc(e){if(qi.platform==="win32")throw new Error("Administrator privileges required on Windows");try{await ky(`sudo ${e}`)}catch(u){throw new Error(`Failed to execute sudo command: ${u.message}`)}}async function lc(e,u){ae("hosts",`Adding hosts: ${e.join(", ")}`,u),ae("hosts",`Using hosts file at: ${vr}`,u);try{let t=await Vr.promises.readFile(vr,"utf-8"),r=e.filter((i)=>{let o=`127.0.0.1 ${i}`,l=`::1 ${i}`;return!t.includes(o)&&!t.includes(l)});if(r.length===0){ae("hosts","All hosts already exist in hosts file",u),me.info("All hosts are already in the hosts file");return}let s=r.map((i)=>`
|
|
312
312
|
# Added by rpx
|
|
313
313
|
127.0.0.1 ${i}
|
|
314
314
|
::1 ${i}`).join(`
|
|
@@ -645,5 +645,5 @@ ${u}`,Wb=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),Hb=Objec
|
|
|
645
645
|
`))this.#u+=Math.max(1,Math.ceil(dS(s,{countAnsiEscapeCodes:!0})/e))}get isEnabled(){return this.#l&&!this.#c}set isEnabled(e){if(typeof e!=="boolean")throw new TypeError("The `isEnabled` option must be a boolean");this.#l=e}get isSilent(){return this.#c}set isSilent(e){if(typeof e!=="boolean")throw new TypeError("The `isSilent` option must be a boolean");this.#c=e}frame(){let{frames:e}=this.#n,u=e[this.#r];if(this.color)u=or[this.color](u);this.#r=++this.#r%e.length;let t=typeof this.#h==="string"&&this.#h!==""?this.#h+" ":"",r=typeof this.text==="string"?" "+this.text:"",s=typeof this.#o==="string"&&this.#o!==""?" "+this.#o:"";return t+u+r+s}clear(){if(!this.#l||!this.#s.isTTY)return this;this.#s.cursorTo(0);for(let e=0;e<this.#e;e++){if(e>0)this.#s.moveCursor(0,-1);this.#s.clearLine(1)}if(this.#D||this.lastIndent!==this.#D)this.#s.cursorTo(this.#D);return this.lastIndent=this.#D,this.#e=0,this}render(){if(this.#c)return this;return this.clear(),this.#s.write(this.frame()),this.#e=this.#u,this}start(e){if(e)this.text=e;if(this.#c)return this;if(!this.#l){if(this.text)this.#s.write(`- ${this.text}
|
|
646
646
|
`);return this}if(this.isSpinning)return this;if(this.#i.hideCursor)vf.hide(this.#s);if(this.#i.discardStdin&&en.stdin.isTTY)this.#t=!0,Bf.start();return this.render(),this.#a=setInterval(this.render.bind(this),this.interval),this}stop(){if(!this.#l)return this;if(clearInterval(this.#a),this.#a=void 0,this.#r=0,this.clear(),this.#i.hideCursor)vf.show(this.#s);if(this.#i.discardStdin&&en.stdin.isTTY&&this.#t)Bf.stop(),this.#t=!1;return this}succeed(e){return this.stopAndPersist({symbol:Dn.success,text:e})}fail(e){return this.stopAndPersist({symbol:Dn.error,text:e})}warn(e){return this.stopAndPersist({symbol:Dn.warning,text:e})}info(e){return this.stopAndPersist({symbol:Dn.info,text:e})}stopAndPersist(e={}){if(this.#c)return this;let u=e.prefixText??this.#h,t=this.#C(u," "),r=e.symbol??" ",s=e.text??this.text,n=typeof s==="string"?" "+s:"",i=e.suffixText??this.#o,o=this.#p(i," "),l=t+r+n+o+`
|
|
647
647
|
`;return this.stop(),this.#s.write(l),this}}function bf(e){if(Array.isArray(e))return[...e];return{...e}}function yS(e){if(Array.isArray(e))return e;return[e]}function s0(e,...u){yS(u).forEach((t)=>{delete e[t]})}var br=(e)=>Array.isArray(e);function nr(e){return typeof e==="object"&&!Array.isArray(e)&&e!==null}var ru=(e)=>typeof e==="function";function pi(e,u){try{return u.split(".").reduce((t,r)=>t[r],e)}catch(t){return e}}function Ji(e){if(Array.isArray(e))return[...e];if("all"in e&&typeof e.all==="function")return e.all();return Object.values(e)}function FS(e){return new He(e)}class He{items;constructor(e=[]){this.items=e}[Symbol.iterator]=vS;toJSON(){return this.items}all(){return this.items}average(e){if(e===void 0)return this.sum()/Number(this.items.length);if(ru(e))return Number(new this.constructor(this.items).sum(e))/Number(this.items.length);return Number(new this.constructor(this.items).pluck(e).sum())/Number(this.items.length)}avg=this.average;chunk(e){let u=[],t=Array.isArray(this.items)?this.items:Object.values(this.items);for(let r=0;r<t.length;r+=e)u.push(t.slice(r,r+e));return new He(u)}collapse(){return new this.constructor([].concat(...this.items))}combine(e){if(typeof e==="string")e=[e];if(!Array.isArray(e))throw new TypeError("The values must be an array or a string");let u={};return(Array.isArray(this.items)?this.items:Object.keys(this.items)).forEach((t,r)=>{if(e[r]!==void 0)u[t]=e[r]}),new He(u)}concat(e){let u=e;if(e instanceof this.constructor)u=e.all();else if(typeof e==="object")u=[],Object.keys(e).forEach((r)=>{u.push(e[r])});let t=bf(this.items);return u.forEach((r)=>{if(typeof r==="object")Object.keys(r).forEach((s)=>t.push(r[s]));else t.push(r)}),new this.constructor(t)}contains(e,u){if(typeof e==="function")return this.items.some(e);if(Array.isArray(this.items))return this.items.includes(e);if(u!==void 0){if(Array.isArray(this.items))return this.items.some((t)=>t[e]!==void 0&&t[e]===u);return e in this.items&&this.items[e]===u}if(Array.isArray(this.items))return this.items.includes(e);return Object.values(this.items).includes(e)}containsOneItem(){if(typeof this.items==="string")return!0;return Object.keys(this.items).length===1}count(e){if(e)return this.filter(e).count();return Object.keys(this.items).length}countBy(e){let u={};return this.each((t)=>{let r=e?e(t):t;u[r]=(u[r]||0)+1}),new He(u)}crossJoin(...e){function u(t,r,s){let n=s[0];if(n instanceof He)n=n.all();let i=s.slice(1),o=!i.length,l=[];for(let a=0;a<n.length;a+=1){let D=t.slice();if(D.push(n[a]),o)l.push(D);else l=l.concat(u(D,r,i))}return l}return new this.constructor(u([],this.constructor,[].concat([this.items],e)))}dd(){console.log(JSON.stringify(this.all(),null,2)),E9.exit()}diff(e){let u;if(e instanceof this.constructor)u=e.all();else u=e;let t=this.items.filter((r)=>!u.includes(r));return new this.constructor(t)}diffAssoc(e){let u=e;if(e instanceof this.constructor)u=e.all();let t={};return Object.keys(this.items).forEach((r)=>{if(u[r]===void 0||u[r]!==this.items[r])t[r]=this.items[r]}),new this.constructor(t)}diffKeys(e){let u;if(e instanceof this.constructor)u=e.all();else u=e;let t=Object.keys(u),r=Object.keys(this.items).filter((s)=>!t.includes(s));return new this.constructor(this.items).only(r)}diffUsing(e,u){if(console.log("Original collection:",this.items),console.log("Array to compare:",e),e===null)return new He(this.items);let t=this.items.filter((r)=>{return e.findIndex((s)=>{return u(r,s)===0})===-1});return new He(t)}doesntContain(e,u){if(console.log("doesntContain called with:",{key:e,value:u}),typeof e==="function")return console.log("Function branch"),!this.contains(e);if(u!==void 0)return console.log("Key-value pair branch"),!this.contains((t)=>{return console.log("Comparing:",t[e],"with",u),t[e]===u});return console.log("Single value branch"),!this.contains(e)}dump(){return console.log(this.items),this}duplicates(){let e=[],u={},t=(r)=>{if(Array.isArray(r)||typeof r==="object")return JSON.stringify(r);return r};if(Array.isArray(this.items))this.items.forEach((r,s)=>{let n=t(r);if(!e.includes(n))e.push(n);else u[s]=r});else if(typeof this.items==="object")Object.keys(this.items).forEach((r)=>{let s=t(this.items[r]);if(!e.includes(s))e.push(s);else u[r]=this.items[r]});return new this.constructor(u)}each(e){let u=!1;if(Array.isArray(this.items)){let{length:t}=this.items;for(let r=0;r<t&&!u;r+=1)u=e(this.items[r],r,this.items)===!1}else{let t=Object.keys(this.items),{length:r}=t;for(let s=0;s<r&&!u;s+=1){let n=t[s];u=e(this.items[n],n,this.items)===!1}}return this}eachSpread(e){return this.each((u,t)=>{e(...u,t)}),this}every(e){return Ji(this.items).every(e)}except(e){let u={...this.items};return(Array.isArray(e)?e:[e]).forEach((t)=>delete u[t]),new He(u)}filter(e){if(console.log("Filter method called with callback:",e),console.log("Current items:",this.items),typeof e!=="function"){console.log("No callback provided, removing falsy values");let t=this.items.filter((r)=>{return console.log("Filtering item:",r),Boolean(r)});return console.log("Filtered items:",t),new He(t)}let u=this.items.filter((t,r)=>{return console.log("Filtering item:",t,"at index:",r),e(t,r)});return console.log("Filtered items:",u),new He(u)}first(e,u){if(ru(e)){let t=Object.keys(this.items);for(let r=0;r<t.length;r+=1){let s=t[r],n=this.items[s];if(e(n,s))return n}if(ru(u))return u();return u}if(Array.isArray(this.items)&&this.items.length||Object.keys(this.items).length){if(Array.isArray(this.items))return this.items[0];let t=Object.keys(this.items)[0];return this.items[t]}if(ru(u))return u();return u}firstOrFail(e){let u=this.items.find(e||(()=>!0));if(u===void 0)throw new Error("Item not found.");return u}firstWhere(e,u,t){return this.where(e,u,t).first()||null}flatMap(e){return this.map(e).collapse()}flatten(e=Number.POSITIVE_INFINITY){let u=(t,r)=>{if(!Array.isArray(t)&&typeof t!=="object")return[t];return r>0?Object.values(t).reduce((s,n)=>s.concat(Array.isArray(n)||typeof n==="object"?u(n,r-1):n),[]):Array.isArray(t)?[...t]:[t]};return new He(u(this.items,e))}flip(){let e={};if(Array.isArray(this.items))this.items.forEach((u,t)=>{e[u]=t});else Object.entries(this.items).forEach(([u,t])=>{e[t]=u});return new this.constructor(e)}forPage(e,u){let t={};if(Array.isArray(this.items))t=this.items.slice(e*u-u,e*u);else Object.keys(this.items).slice(e*u-u,e*u).forEach((r)=>{t[r]=this.items[r]});return new this.constructor(t)}forget(e){if(Array.isArray(this.items))this.items=this.items.filter((u,t)=>t!==Number.parseInt(e,10));else if(typeof this.items==="object"&&this.items!==null)delete this.items[e];return this}get(e,u=null){if(Array.isArray(this.items))return this.items[e]??u;return this.items[e]??u}groupBy(e){let u={};return this.each((t,r)=>{let s=typeof e==="function"?e(t):t[e];if(!(s in u))u[s]=new He;u[s].push(t)}),new He(u)}has(e){if(Array.isArray(this.items))return e in this.items;return e in this.items}implode(e,u){if(u===void 0)return this.items.join(e);return new this.constructor(this.items).pluck(e).all().join(u)}includes(e){if(Array.isArray(this.items))return this.items.includes(e);return Object.values(this.items).includes(e)}intersect(e){let u=e;if(e instanceof this.constructor)u=e.all();let t=this.items.filter((r)=>u.includes(r));return new this.constructor(t)}intersectByKeys(e){let u=Object.keys(e);if(e instanceof this.constructor)u=Object.keys(e.all());let t={};return Object.keys(this.items).forEach((r)=>{if(u.includes(r))t[r]=this.items[r]}),new this.constructor(t)}isEmpty(){return this.count()===0}isNotEmpty(){return!this.isEmpty()}join(e,u){let t=this.values();if(u===void 0)return t.implode(e);let r=t.count();if(r===0)return"";if(r===1)return t.last();let s=t.pop();return t.implode(e)+u+s}keyBy(e){let u={};if(ru(e))this.items.forEach((t)=>{u[e(t)]=t});else this.items.forEach((t)=>{let r=pi(t,e);u[r||""]=t});return new this.constructor(u)}keys(){return new He(Object.keys(this.items))}last(e,u){let{items:t}=this;if(ru(e))t=this.filter(e).all();if(Array.isArray(t)&&!t.length||!Object.keys(t).length){if(ru(u))return u();return u}if(Array.isArray(t))return t[t.length-1];let r=Object.keys(t);return t[r[r.length-1]]}macro(e,u){this.constructor.prototype[e]=u}make(e=[]){return new this.constructor(e)}map(e){if(Array.isArray(this.items))return new this.constructor(this.items.map(e));let u={};return Object.keys(this.items).forEach((t)=>{u[t]=e(this.items[t],Number(t))}),new this.constructor(u)}mapSpread(e){return this.map((u,t)=>e(...u,t))}mapToDictionary(e){let u={};return this.items.forEach((t,r)=>{let[s,n]=e(t,r);if(u[s]===void 0)u[s]=[n];else u[s].push(n)}),new this.constructor(u)}mapInto(e){return this.map((u,t)=>new e(u,t))}mapToGroups(e){let u={};return this.items.forEach((t,r)=>{let[s,n]=e(t,r);if(u[s]===void 0)u[s]=[n];else u[s].push(n)}),new this.constructor(u)}mapWithKeys(e){let u={};if(Array.isArray(this.items))this.items.forEach((t,r)=>{let[s,n]=e(t,r);u[s]=n});else Object.keys(this.items).forEach((t)=>{let[r,s]=e(this.items[t],Number(t));u[r]=s});return new this.constructor(u)}max(e){if(typeof e==="string"){let u=this.items.filter((t)=>t[e]!==void 0);return Math.max(...u.map((t)=>t[e]))}return Math.max(...this.items)}median(e){let{length:u}=this.items;if(e===void 0){if(u%2===0)return(this.items[u/2-1]+this.items[u/2])/2;return this.items[Math.floor(u/2)]}if(u%2===0)return(this.items[u/2-1][e]+this.items[u/2][e])/2;return this.items[Math.floor(u/2)][e]}merge(e){let u={...this.items,...e};return new He(u)}mergeRecursive(e){let u=(t,r)=>{let s={};return Object.keys({...t,...r}).forEach((n)=>{if(t[n]===void 0&&r[n]!==void 0)s[n]=r[n];else if(t[n]!==void 0&&r[n]===void 0)s[n]=t[n];else if(t[n]!==void 0&&r[n]!==void 0)if(t[n]===r[n])s[n]=t[n];else if(!Array.isArray(t[n])&&typeof t[n]==="object"&&!Array.isArray(r[n])&&typeof r[n]==="object")s[n]=u(t[n],r[n]);else s[n]=[].concat(t[n],r[n])}),s};if(!e)return this;if(e.constructor.name==="Collection")return new this.constructor(u(this.items,e.all()));return new this.constructor(u(this.items,e))}min(e){if(e!==void 0){let u=this.items.filter((t)=>t[e]!==void 0);return Math.min(...u.map((t)=>t[e]))}return Math.min(...this.items)}mode(e){let u=[],t=1;if(!this.items.length)return null;return this.items.forEach((r)=>{let s=u.filter((n)=>{if(e!==void 0)return n.key===r[e];return n.key===r});if(!s.length)if(e!==void 0)u.push({key:r[e],count:1});else u.push({key:r,count:1});else{s[0].count+=1;let{count:n}=s[0];if(n>t)t=n}}),u.filter((r)=>r.count===t).map((r)=>r.key)}nth(e,u=0){let t=Ji(this.items).slice(u).filter((r,s)=>s%e===0);return new this.constructor(t)}only(e){let u={};return e.forEach((t)=>{if(t in this.items)u[t]=this.items[t]}),new He(u)}pad(e,u){let t=Math.abs(e),r=this.count();if(t<=r)return this;let s=t-r,n=bf(this.items),i=Array.isArray(this.items),o=e<0;for(let l=0;l<s;){if(!i)if(n[l]!==void 0)s+=1;else n[l]=u;else if(o)n.unshift(u);else n.push(u);l+=1}return new this.constructor(n)}partition(e){let u;if(Array.isArray(this.items))u=[new this.constructor([]),new this.constructor([])],this.items.forEach((t)=>{if(e(t)===!0)u[0].push(t);else u[1].push(t)});else u=[new this.constructor({}),new this.constructor({})],Object.keys(this.items).forEach((t)=>{let r=this.items[t];if(e(r)===!0)u[0].put(t,r);else u[1].put(t,r)});return new this.constructor(u)}pipe(e){return e(this)}pluck(e,u){if(e.includes("*")){let t=AS(this.items),r=[];if(u!==void 0){let o=new RegExp(`0.${u}`,"g"),l=`0.${u}`.split(".").length;Object.keys(t).forEach((a)=>{let D=a.match(o);if(D){let h=D[0];if(h.split(".").length===l)r.push(t[h])}})}let s=[],n=new RegExp(`0.${e}`,"g"),i=`0.${e}`.split(".").length;if(Object.keys(t).forEach((o)=>{let l=o.match(n);if(l){let a=l[0];if(a.split(".").length===i)s.push(t[a])}}),u!==void 0){let o={};return this.items.forEach((l,a)=>{o[r[a]||""]=s}),new this.constructor(o)}return new this.constructor([s])}if(u!==void 0){let t={};return this.items.forEach((r)=>{if(pi(r,e)!==void 0)t[r[u]||""]=pi(r,e);else t[r[u]||""]=null}),new this.constructor(t)}return this.map((t)=>{if(pi(t,e)!==void 0)return pi(t,e);return null})}pop(e=1){if(this.isEmpty())return null;if(br(this.items)){if(e===1)return this.items.pop();return new this.constructor(this.items.splice(-e))}if(nr(this.items)){let u=Object.keys(this.items);if(e===1){let s=u[u.length-1],n=this.items[s];return s0(this.items,s),n}let t=u.slice(-e),r=t.reduce((s,n)=>{return s[n]=this.items[n],s},{});return s0(this.items,t),new this.constructor(r)}return null}prepend(e,u){if(u!==void 0)return this.put(u,e);return this.items.unshift(e),this}pull(e,u=null){if(Array.isArray(this.items)){let r=Number(e);if(Number.isNaN(r))return u;let s=this.items[r];return this.items.splice(r,1),s??u}let t=this.items[e];return delete this.items[e],t??u}push(...e){return this.items=[...this.items,...e],this}put(e,u){return this.items[e]=u,this}random(e=null){let u=Ji(this.items),t=new this.constructor(u).shuffle();if(e!==Number.parseInt(e,10))return t.first();return t.take(e)}reduce(e,u){let t=null;if(u!==void 0)t=u;if(Array.isArray(this.items))this.items.forEach((r)=>{t=e(t,r)});else Object.keys(this.items).forEach((r)=>{t=e(t,this.items[r],r)});return t}reject(e){return new this.constructor(this.items).filter((u)=>!e(u))}replace(e){if(!e)return this;if(Array.isArray(e)){let t=this.items.map((r,s)=>e[s]||r);return new this.constructor(t)}if(e.constructor.name==="Collection"){let t={...this.items,...e.all()};return new this.constructor(t)}let u={...this.items,...e};return new this.constructor(u)}replaceRecursive(e){let u=(t,r)=>{let s={...t};return Object.keys({...t,...r}).forEach((n)=>{if(!Array.isArray(r[n])&&typeof r[n]==="object")s[n]=u(t[n],r[n]);else if(t[n]===void 0&&r[n]!==void 0)if(typeof t[n]==="object")s[n]={...r[n]};else s[n]=r[n];else if(t[n]!==void 0&&r[n]===void 0)if(typeof t[n]==="object")s[n]={...t[n]};else s[n]=t[n];else if(t[n]!==void 0&&r[n]!==void 0)if(typeof r[n]==="object")s[n]={...r[n]};else s[n]=r[n]}),s};if(!e)return this;if(!Array.isArray(e)&&typeof e!=="object")return new this.constructor(u(this.items,[e]));if(e.constructor.name==="Collection")return new this.constructor(u(this.items,e.all()));return new this.constructor(u(this.items,e))}reverse(){let e=[].concat(this.items).reverse();return new this.constructor(e)}search(e,u){let t,r=(s,n)=>{if(ru(e))return e(this.items[n],n);if(u)return this.items[n]===e;return this.items[n]==e};if(br(this.items))t=this.items.findIndex(r);else if(nr(this.items))t=Object.keys(this.items).find((s)=>r(this.items[s],s));if(t===void 0||t<0)return!1;return t}shift(e=1){if(this.isEmpty())return null;if(br(this.items)){if(e===1)return this.items.shift();return new this.constructor(this.items.splice(0,e))}if(nr(this.items)){if(e===1){let r=Object.keys(this.items)[0],s=this.items[r];return delete this.items[r],s}let u=Object.keys(this.items).slice(0,e),t=u.reduce((r,s)=>{return r[s]=this.items[s],r},{});return s0(this.items,u),new this.constructor(t)}return null}shuffle(){let e=Ji(this.items),u,t,r;for(r=e.length;r;r-=1)u=Math.floor(Math.random()*r),t=e[r-1],e[r-1]=e[u],e[u]=t;return this.items=e,this}skip(e){if(nr(this.items))return new this.constructor(Object.keys(this.items).reduce((u,t,r)=>{if(r+1>e)u[t]=this.items[t];return u},{}));return new this.constructor(this.items.slice(e))}skipUntil(e){let u=null,t,r=(s)=>s===e;if(ru(e))r=e;if(br(this.items))t=this.items.filter((s)=>{if(u!==!0)u=r(s);return u});if(nr(this.items))t=Object.keys(this.items).reduce((s,n)=>{if(u!==!0)u=r(this.items[n]);if(u!==!1)s[n]=this.items[n];return s},{});return new this.constructor(t)}skipWhile(e){let u=null,t,r=(s)=>s===e;if(ru(e))r=e;if(br(this.items))t=this.items.filter((s)=>{if(u!==!0)u=!r(s);return u});if(nr(this.items))t=Object.keys(this.items).reduce((s,n)=>{if(u!==!0)u=!r(this.items[n]);if(u!==!1)s[n]=this.items[n];return s},{});return new this.constructor(t)}slice(e,u){let t=this.items.slice(e);if(u!==void 0)t=t.slice(0,u);return new this.constructor(t)}sole(){if(this.items.length!==1)throw new Error("Collection does not contain exactly one item.");return this.items[0]}some(e){return this.items.some((u)=>u.hasOwnProperty(e))}sort(e){let u=[].concat(this.items);if(e===void 0)if(this.every((t)=>typeof t==="number"))u.sort((t,r)=>t-r);else u.sort();else u.sort(e);return new this.constructor(u)}sortDesc(){return this.sort().reverse()}sortBy(e){let u=[].concat(this.items),t=(r)=>{if(ru(e))return e(r);return pi(r,e)};return u.sort((r,s)=>{let n=t(r),i=t(s);if(n===null||n===void 0)return 1;if(i===null||i===void 0)return-1;if(n<i)return-1;if(n>i)return 1;return 0}),new this.constructor(u)}sortByDesc(e){return this.sortBy(e).reverse()}sortKeys(){let e={};return Object.keys(this.items).sort().forEach((u)=>{e[u]=this.items[u]}),new this.constructor(e)}sortKeysDesc(){let e={};return Object.keys(this.items).sort().reverse().forEach((u)=>{e[u]=this.items[u]}),new this.constructor(e)}splice(e,u,t){let r=this.slice(e,u);if(this.items=this.diff(r.all()).all(),Array.isArray(t))for(let s=0,{length:n}=t;s<n;s+=1)this.items.splice(e+s,0,t[s]);return r}split(e){let u=this.toArray(),t=[],r=Math.ceil(u.length/e);for(let s=0;s<u.length;s+=r)t.push(u.slice(s,s+r));return new He(t)}sum(e){let u=Ji(this.items),t=0;if(e===void 0)for(let r=0,{length:s}=u;r<s;r+=1)t+=Number.parseFloat(u[r]);else if(ru(e))for(let r=0,{length:s}=u;r<s;r+=1)t+=Number.parseFloat(e(u[r]));else for(let r=0,{length:s}=u;r<s;r+=1)t+=Number.parseFloat(u[r][e]);return Number.parseFloat(t.toPrecision(12))}take(e){if(!Array.isArray(this.items)&&typeof this.items==="object"){let u=Object.keys(this.items),t;if(e<0)t=u.slice(e);else t=u.slice(0,e);let r={};return u.forEach((s)=>{if(t.includes(s))r[s]=this.items[s]}),new this.constructor(r)}if(e<0)return new this.constructor(this.items.slice(e));return new this.constructor(this.items.slice(0,e))}takeUntil(e){let u=null,t,r=(s)=>s===e;if(ru(e))r=e;if(br(this.items))t=this.items.filter((s)=>{if(u!==!1)u=!r(s);return u});if(nr(this.items))t=Object.keys(this.items).reduce((s,n)=>{if(u!==!1)u=!r(this.items[n]);if(u!==!1)s[n]=this.items[n];return s},{});return new this.constructor(t)}takeWhile(e){let u=null,t,r=(s)=>s===e;if(ru(e))r=e;if(br(this.items))t=this.items.filter((s)=>{if(u!==!1)u=r(s);return u});if(nr(this.items))t=Object.keys(this.items).reduce((s,n)=>{if(u!==!1)u=r(this.items[n]);if(u!==!1)s[n]=this.items[n];return s},{});return new this.constructor(t)}tap(e){return e(this),this}times(e,u){for(let t=1;t<=e;t+=1)this.items.push(u(t));return this}toArray(){return Array.isArray(this.items)?this.items:Object.values(this.items)}toJson(){return JSON.stringify(this.items)}transform(e){if(Array.isArray(this.items))this.items=this.items.map(e);else{let u={};Object.keys(this.items).forEach((t)=>{u[t]=e(this.items[t],t)}),this.items=u}return this}undot(){if(Array.isArray(this.items))return this;let e={};return Object.keys(this.items).forEach((u)=>{if(u.includes(".")){let t=e;u.split(".").reduce((r,s,n,i)=>{if(!r[s])r[s]={};if(n===i.length-1)r[s]=this.items[u];return r[s]},t),e={...e,...t}}else e[u]=this.items[u]}),new this.constructor(e)}unless(e,u,t){if(!e)return u(this);if(t)return t();return}unlessEmpty(e){if(!this.isEmpty())e(this);return this}unlessNotEmpty(e){if(this.isEmpty())e(this);return this}union(e){let u=JSON.parse(JSON.stringify(this.items));return Object.keys(e).forEach((t)=>{if(this.items[t]===void 0)u[t]=e[t]}),new this.constructor(u)}unique(){let e=Array.from(new Set(this.items));return new this.constructor(e)}unwrap(){return this.items}values(){return new He(Object.values(this.items))}when(e,u,t){if(e)u(this,e);else if(t)t();return this}whenEmpty(e,u){if(Array.isArray(this.items)&&!this.items.length)return e(this);if(!Object.keys(this.items).length)return e(this);if(u!==void 0){if(Array.isArray(this.items)&&this.items.length)return u(this);if(Object.keys(this.items).length)return u(this)}return this}whenNotEmpty(e,u){if(Array.isArray(this.items)&&this.items.length)return e(this);if(Object.keys(this.items).length)return e(this);if(u!==void 0){if(Array.isArray(this.items)&&!this.items.length)return u(this);if(!Object.keys(this.items).length)return u(this)}return this}where(e,u,t){if(arguments.length===1)return new He(this.items.filter((s)=>s[e]!==void 0));if(arguments.length===2)t=u,u="===";let r=(s,n,i,o)=>{let l=s[n];switch(o){case"===":return l===i;case"!==":return l!==i;case"<":return l<i;case"<=":return l<=i;case">":return l>i;case">=":return l>=i;default:return l==i}};return new He(this.items.filter((s)=>r(s,e,t,u)))}whereBetween(e,u){return this.filter((t)=>{let r=typeof t==="object"?t[e]:t;return r>=u[0]&&r<=u[1]})}whereIn(e,u){return this.filter((t)=>{let r=typeof t==="object"?t[e]:t;return u.includes(r)})}whereNotBetween(e,u){return this.filter((t)=>{let r=typeof t==="object"?t[e]:t;return r<u[0]||r>u[1]})}whereNotIn(e,u){let t=this.items.filter((r)=>{let s=e.split("."),n=r;for(let i of s){if(n[i]===void 0)return!0;n=n[i]}return!u.includes(n)});return new He(t)}getNestedValue(e,u){return u.split(".").reduce((t,r)=>t&&t[r]!==void 0?t[r]:null,e)}whereInstanceOf(e){return this.filter((u)=>u instanceof e)}whereNotNull(e){return this.where(e,"!==",null)}whereNull(e){return this.where(e,"===",null)}static wrap(e){if(e instanceof He)return e;return new He(Array.isArray(e)?e:[e])}static unwrap(e){if(e instanceof He)return e.all();return e}wrap(e){if(e instanceof He)return e;if(typeof e==="object")return new He(e);return new He([e])}zip(...e){let u=e.map((r)=>this.constructor.wrap(r).all()),t=this.items.map((r,s)=>{let n=[r];return u.forEach((i)=>{n.push(i[s])}),new this.constructor(n)});return new this.constructor(t)}}var AS=function e(u){let t={};return u.forEach((r,s)=>{function n(i,o){if(nr(i))Object.keys(i).forEach((l)=>{n(i[l],`${o}.${l}`)});else if(br(i))i.forEach((l,a)=>{n(l,`${o}.${a}`)});t[o]=i}n(r,s)}),t};function vS(){let e=-1;return{next:()=>{return e+=1,{value:this.items[e],done:e>=this.items.length}}}}In();var F3=FS(["The best way to get started is to quit talking and begin doing.","The pessimist sees difficulty in every opportunity. The optimist sees opportunity in every difficulty.","Don\u2019t let yesterday take up too much of today.","You learn more from failure than from success. Don\u2019t let it stop you. Failure builds character.","It\u2019s not whether you get knocked down, it\u2019s whether you get up.","If you are working on something that you really care about, you don\u2019t have to be pushed. The vision pulls you.","People who are crazy enough to think they can change the world, are the ones who do.","Failure will never overtake me if my determination to succeed is strong enough.","Entrepreneurs are great at dealing with uncertainty and also very good at minimizing risk. That\u2019s the classic entrepreneur.","We may encounter many defeats but we must not be defeated.","Knowing is not enough; we must apply. Wishing is not enough; we must do.","Imagine your life is perfect in every respect; what would it look like?","We generate fears while we sit. We overcome them by action.","Whether you think you can or think you can\u2019t, you\u2019re right.","Security is mostly a superstition. Life is either a daring adventure or nothing."]),A3=N7.default;function B0(e,u){if(Array.isArray(u)&&!Array.isArray(e))return u;if(Array.isArray(u)&&Array.isArray(e))return u.map((r,s)=>{let n=e[s];if(gi(r)&&gi(n))return B0(n,r);return r});if(!gi(u)||!gi(e))return u;let t={...e};for(let r in u)if(Object.prototype.hasOwnProperty.call(u,r)){let s=u[r],n=t[r];if(s===null||s===void 0)t[r]=s;else if(gi(s)&&gi(n))t[r]=B0(n,s);else t[r]=s}return t}function gi(e){return Boolean(e&&typeof e==="object"&&!Array.isArray(e))}async function SS({name:e,cwd:u,defaultConfig:t}){let r=BS(u||bS.cwd(),`${e}.config`);try{let s=await import(r),n=s.default||s;return B0(t,n)}catch(s){return t}}var v8={altNameIPs:["127.0.0.1"],altNameURIs:["localhost"],organizationName:"Local Development",countryName:"US",stateName:"California",localityName:"Playa Vista",commonName:"stacks.localhost",validityDays:825,hostCertCN:"stacks.localhost",domain:"stacks.localhost",rootCA:{certificate:"",privateKey:""},basePath:"",caCertPath:a0.join(n0.homedir(),".stacks","ssl","stacks.localhost.ca.crt"),certPath:a0.join(n0.homedir(),".stacks","ssl","stacks.localhost.crt"),keyPath:a0.join(n0.homedir(),".stacks","ssl","stacks.localhost.crt.key"),verbose:!1},bt=await SS({name:"tls",defaultConfig:v8}),T3=wf(Gf(),1);function B8(e){let u=Number.parseInt(e[0],16);if(u<8)return e;return u-=8,u.toString()+e.substring(1)}function b8(e,u){let t=[];function r(s){try{let n=Sf.readdirSync(s);for(let i of n){let o=TS.join(s,i);if(Sf.lstatSync(o).isDirectory())r(o);else if(i===u)t.push(s)}}catch(n){console.warn(`Error reading directory ${s}: ${n}`)}}return r(e),t}function Pe(e,u,t){if(t||bt.verbose)console.debug(`[tlsx:${e}] ${u}`)}var Ht=wf(Gf(),1);function q0(e){Pe("cert","Generating random serial number",e);let u=B8(Ht.default.util.bytesToHex(Ht.default.random.getBytesSync(20)));return Pe("cert",`Generated serial number: ${u}`,e),u}function x0(e){let u=e.notBeforeDays??2,t=e.validityDays??(e.validityYears?e.validityYears*365:180);Pe("cert","Calculating certificate validity dates",e.verbose);let r=new Date(Date.now()-86400*u*1000),s=new Date(r.getTime()+t*24*60*60*1000);return r.setUTCHours(0,0,0,0),s.setUTCHours(23,59,59,999),Pe("cert",`Validity period: ${r.toISOString()} to ${s.toISOString()}`,e.verbose),{notBefore:r,notAfter:s}}function wS(e){let u=[];if(u.push({name:"basicConstraints",cA:e.isCA??!1,critical:!0,...e.basicConstraints||{}}),e.keyUsage)u.push({name:"keyUsage",critical:!0,...e.keyUsage});if(e.extKeyUsage)u.push({name:"extKeyUsage",...e.extKeyUsage});if(e.subjectAltNames&&e.subjectAltNames.length>0)u.push({name:"subjectAltName",altNames:e.subjectAltNames});return u}async function Z0(e={}){Pe("ca","Creating new Root CA Certificate",e.verbose);let u=e.keySize||2048;Pe("ca",`Generating ${u}-bit RSA key pair`,e.verbose);let{privateKey:t,publicKey:r}=Ht.pki.rsa.generateKeyPair(u),s=[{shortName:"C",value:e.countryName||bt.countryName},{shortName:"ST",value:e.stateName||bt.stateName},{shortName:"L",value:e.localityName||bt.localityName},{shortName:"O",value:e.organization||"Local Development CA"},{shortName:"OU",value:e.organizationalUnit||"Certificate Authority"},{shortName:"CN",value:e.commonName||"Local Development Root CA"},...e.extraAttributes||[]],{notBefore:n,notAfter:i}=x0({validityYears:e.validityYears||100,verbose:e.verbose}),o=Ht.pki.createCertificate();return o.publicKey=r,o.serialNumber=q0(e.verbose),o.validity.notBefore=n,o.validity.notAfter=i,o.setSubject(s),o.setIssuer(s),o.setExtensions([{name:"basicConstraints",cA:!0,critical:!0},{name:"keyUsage",keyCertSign:!0,cRLSign:!0,critical:!0},{name:"subjectKeyIdentifier"}]),o.sign(t,Ht.default.md.sha256.create()),{certificate:Ht.pki.certificateToPem(o),privateKey:Ht.pki.privateKeyToPem(t),notBefore:n,notAfter:i}}async function X0(e){if(Pe("cert","Generating new certificate",e.verbose),Pe("cert",`Options: ${JSON.stringify(e)}`,e.verbose),!e.rootCA?.certificate||!e.rootCA?.privateKey)throw new Error("Root CA certificate and private key are required");let u=Ht.pki.certificateFromPem(e.rootCA.certificate),t=Ht.pki.privateKeyFromPem(e.rootCA.privateKey);Pe("cert","Generating 2048-bit RSA key pair for host certificate",e.verbose);let r=2048,{privateKey:s,publicKey:n}=Ht.pki.rsa.generateKeyPair(r),i=e.certificateAttributes||[{shortName:"C",value:e.countryName||bt.countryName},{shortName:"ST",value:e.stateName||bt.stateName},{shortName:"L",value:e.localityName||bt.localityName},{shortName:"O",value:e.organizationName||bt.organizationName},{shortName:"CN",value:e.commonName||bt.commonName}],{notBefore:o,notAfter:l}=x0({validityDays:e.validityDays,verbose:e.verbose}),a=Ht.pki.createCertificate();return a.publicKey=n,a.serialNumber=q0(e.verbose),a.validity.notBefore=o,a.validity.notAfter=l,a.setSubject(i),a.setIssuer(u.subject.attributes),a.setExtensions(wS(e)),a.sign(t,Ht.default.md.sha256.create()),{certificate:Ht.pki.certificateToPem(a),privateKey:Ht.pki.privateKeyToPem(s),notBefore:o,notAfter:l}}async function J0(e,u,t){Pe("trust",`Adding certificate to system trust store with options: ${JSON.stringify(t)}`,t?.verbose),Pe("trust","Storing certificate and private key",t?.verbose);let r=S8(e,t);Pe("trust","Storing CA certificate",t?.verbose);let s=T8(u,t),n=Tf.platform();Pe("trust",`Detected platform: ${n}`,t?.verbose);let i="TC, C, C";if(n==="darwin")Pe("trust","Adding certificate to macOS keychain",t?.verbose),await on(`sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ${s}`);else if(n==="win32")Pe("trust","Adding certificate to Windows certificate store",t?.verbose),await on(`certutil -f -v -addstore -enterprise Root ${s}`);else if(n==="linux"){Pe("trust","Adding certificate to Linux certificate store",t?.verbose);let o=Tf.homedir(),l="cert9.db";Pe("trust",`Searching for certificate databases in ${o}`,t?.verbose);let a=b8(o,l);for(let D of a){Pe("trust",`Processing certificate database in ${D}`,t?.verbose);try{Pe("trust",`Attempting to delete existing cert for ${bt.commonName}`,t?.verbose),await on(`certutil -d sql:${D} -D -n ${bt.commonName}`)}catch(h){Pe("trust",`Warning: Error deleting existing cert: ${h}`,t?.verbose),console.warn(`Error deleting existing cert: ${h}`)}Pe("trust",`Adding new certificate to ${D}`,t?.verbose),await on(`certutil -d sql:${D} -A -t ${i} -n ${bt.commonName} -i ${s}`),hr.info(`Cert added to ${D}`)}}else throw Pe("trust",`Error: Unsupported platform ${n}`,t?.verbose),new Error(`Unsupported platform: ${n}`);return Pe("trust","Certificate successfully added to system trust store",t?.verbose),r}function S8(e,u){Pe("storage",`Storing certificate and private key with options: ${JSON.stringify(u)}`,u?.verbose);let t=mi.join(u?.basePath||bt.basePath,u?.certPath||bt.certPath),r=mi.join(u?.basePath||bt.basePath,u?.keyPath||bt.keyPath);Pe("storage",`Certificate path: ${t}`,u?.verbose),Pe("storage",`Private key path: ${r}`,u?.verbose);let s=mi.dirname(t);if(!ar.existsSync(s))Pe("storage",`Creating certificate directory: ${s}`,u?.verbose),ar.mkdirSync(s,{recursive:!0});Pe("storage","Writing certificate file",u?.verbose),ar.writeFileSync(t,e.certificate);let n=mi.dirname(r);if(!ar.existsSync(n))Pe("storage",`Creating private key directory: ${n}`,u?.verbose),ar.mkdirSync(n,{recursive:!0});return Pe("storage","Writing private key file",u?.verbose),ar.writeFileSync(r,e.privateKey),Pe("storage","Certificate and private key stored successfully",u?.verbose),t}function T8(e,u){Pe("storage","Storing CA certificate",u?.verbose);let t=mi.join(u?.basePath||bt.basePath,u?.caCertPath||bt.caCertPath);Pe("storage",`CA certificate path: ${t}`,u?.verbose);let r=mi.dirname(t);if(!ar.existsSync(r))Pe("storage",`Creating CA certificate directory: ${r}`,u?.verbose),ar.mkdirSync(r,{recursive:!0});return Pe("storage","Writing CA certificate file",u?.verbose),ar.writeFileSync(t,e),Pe("storage","CA certificate stored successfully",u?.verbose),t}var hI=Ht.tls,oI=Ht.pki,lI=Ht.default;var eh=null;function mI(e,u){let t=Yi(e)?e.proxies[0].to||"stacks.localhost":e.to||"stacks.localhost";if(typeof e.https==="object"&&typeof u.https==="object"){if(e.https.caCertPath&&e.https.certPath&&e.https.keyPath){let s=_r({...e,to:t,https:u.https}),n=e.https.altNameIPs?.filter((o)=>o!==void 0)||s.altNameIPs,i=e.https.altNameURIs?.filter((o)=>o!==void 0)||s.altNameURIs;return{...s,caCertPath:e.https.caCertPath||s.caCertPath,certPath:e.https.certPath||s.certPath,keyPath:e.https.keyPath||s.keyPath,basePath:e.https.basePath||s.basePath,commonName:e.https.commonName||s.commonName,organizationName:e.https.organizationName||s.organizationName,countryName:e.https.countryName||s.countryName,stateName:e.https.stateName||s.stateName,localityName:e.https.localityName||s.localityName,validityDays:e.https.validityDays||s.validityDays,altNameIPs:n,altNameURIs:i,verbose:e.verbose||s.verbose}}}return _r({...e,to:t})}function w8(e){let u=new Set;u.add(e);let t=e.split(".");if(t.length>=2)u.add(`*.${t.slice(1).join(".")}`);return Array.from(u)}function N8(e){let u=Xs(e),t="";if(typeof e?.https==="object")return t=e.https.basePath||"",{caCertPath:e.https.caCertPath||qr(t,`${u}.ca.crt`),certPath:e.https.certPath||qr(t,`${u}.crt`),keyPath:e.https.keyPath||qr(t,`${u}.key`)};let r=t||qr(IS(),".stacks","ssl"),s=u.replace(/\*/g,"wildcard");return{caCertPath:qr(r,`${s}.ca.crt`),certPath:qr(r,`${s}.crt`),keyPath:qr(r,`${s}.key`)}}function I8(e){let u=new Set;if(zi(e))e.proxies.forEach((t)=>{let r=t.to||"stacks.localhost";w8(r).forEach((s)=>u.add(s))});else if(Js(e)){let t=e.to||"stacks.localhost";w8(t).forEach((r)=>u.add(r))}else u.add("stacks.localhost");return u.add("localhost"),u.add("*.localhost"),u}async function th(e){ae("ssl","Loading SSL configuration",e.verbose);let u={...Qi,...e};if(e.https=_r(u),!e.https?.keyPath&&!e.https?.certPath)return ae("ssl","No SSL configuration provided",e.verbose),null;if(e.https?.keyPath&&!e.https?.certPath||!e.https?.keyPath&&e.https?.certPath){let t=!e.https?.keyPath?"keyPath":"certPath";throw ae("ssl",`Invalid SSL configuration - missing ${t}`,e.verbose),new Error(`SSL Configuration requires both keyPath and certPath. Missing: ${t}`)}try{if(!e.https?.keyPath||!e.https?.certPath)return null;try{ae("ssl","Reading SSL certificate files",e.verbose);let t=await ds.readFile(e.https?.keyPath,"utf8"),r=await ds.readFile(e.https?.certPath,"utf8");return ae("ssl","SSL configuration loaded successfully",e.verbose),{key:t,cert:r}}catch(t){return ae("ssl",`Failed to read certificates: ${t}`,e.verbose),null}}catch(t){throw ae("ssl",`SSL configuration error: ${t}`,e.verbose),t}}async function uh(e){if(eh){ae("ssl","Using cached SSL configuration",e.verbose);return}let u=zi(e)?e.proxies.map((i)=>i.to):[e.to];ae("ssl",`Generating certificate for domains: ${u.join(", ")}`,e.verbose);let t=_r(e,e.verbose);me.info("Generating Root CA certificate...");let r=await Z0(t),s=_r(e,e.verbose);me.info(`Generating host certificate for: ${u.join(", ")}`);let n=await X0({...s,rootCA:{certificate:r.certificate,privateKey:r.privateKey}});await J0(n,r.certificate,s),eh={key:n.privateKey,cert:n.certificate,ca:r.certificate},me.success(`Certificate generated successfully for ${u.length} domain${u.length>1?"s":""}`),ae("ssl",`Certificate includes domains: ${u.join(", ")}`,e.verbose)}function yI(){return eh}async function rh(e){let u=Xs(e),t=N8(e);try{ae("ssl",`Checking certificates for ${u} at paths:`,e?.verbose),ae("ssl",`CA: ${t.caCertPath}`,e?.verbose),ae("ssl",`Cert: ${t.certPath}`,e?.verbose),ae("ssl",`Key: ${t.keyPath}`,e?.verbose);let r=await ds.readFile(t.keyPath,"utf8"),s=await ds.readFile(t.certPath,"utf8"),n;if(t.caCertPath)try{n=await ds.readFile(t.caCertPath,"utf8")}catch(i){ae("ssl",`Failed to read CA cert: ${i}`,e?.verbose)}return{key:r,cert:s,ca:n}}catch(r){return ae("ssl",`Failed to read certificates: ${r}`,e?.verbose),null}}function _r(e,u){let t=Xs(e);ae("ssl",`Primary domain: ${t}`,u);let r=N8(e);if(typeof e.https==="object"){let s={domain:t,hostCertCN:t,basePath:e.https.basePath||"",caCertPath:e.https.caCertPath||r.caCertPath,certPath:e.https.certPath||r.certPath,keyPath:e.https.keyPath||r.keyPath,altNameIPs:["127.0.0.1","::1"],altNameURIs:[],commonName:e.https.commonName||t,organizationName:e.https.organizationName||"Local Development",countryName:e.https.countryName||"US",stateName:e.https.stateName||"California",localityName:e.https.localityName||"Playa Vista",validityDays:e.https.validityDays||825,verbose:u||!1,subjectAltNames:Array.from(I8(e)).map((n)=>({type:2,value:n}))};if(ac(e.https.rootCA))s.rootCA=e.https.rootCA;return s}return{domain:t,hostCertCN:t,basePath:"",...r,altNameIPs:["127.0.0.1","::1"],altNameURIs:[],commonName:t,organizationName:"Local Development",countryName:"US",stateName:"California",localityName:"Playa Vista",validityDays:825,verbose:u||!1,subjectAltNames:Array.from(I8(e)).map((s)=>({type:2,value:s}))}}import*as wi from"http";import*as _8 from"https";import*as Un from"net";import Yu from"process";var sh=new Set;async function Ii(e){ae("cleanup","Starting cleanup process",e?.verbose),console.log(`
|
|
648
|
-
`),me.info("Shutting down proxy servers...");let u=[],t=Array.from(sh).map((r)=>new Promise((s)=>{r.close(()=>{ae("cleanup","Server closed successfully",e?.verbose),s()})}));if(u.push(...t),e?.etcHostsCleanup&&e.domains?.length){ae("cleanup","Cleaning up hosts file entries",e?.verbose);let r=e.domains.filter((s)=>!s.includes("localhost"));if(r.length>0)me.info("Cleaning up hosts file entries..."),u.push(cc(r,e?.verbose).then(()=>{ae("cleanup",`Removed hosts entries for ${r.join(", ")}`,e?.verbose)}).catch((s)=>{ae("cleanup",`Failed to remove hosts entries: ${s}`,e?.verbose),me.warn(`Failed to clean up hosts file entries for ${r.join(", ")}:`,s)}))}try{await Promise.all(u),ae("cleanup","All cleanup tasks completed successfully",e?.verbose),me.success("All cleanup tasks completed successfully"),Yu.exit(0)}catch(r){ae("cleanup",`Error during cleanup: ${r}`,e?.verbose),me.error("Error during cleanup:",r),Yu.exit(1)}}Yu.on("SIGINT",Ii);Yu.on("SIGTERM",Ii);Yu.on("uncaughtException",(e)=>{ae("process",`Uncaught exception: ${e}`,!0),me.error("Uncaught exception:",e),Ii()});function ih(e,u,t){return ae("port",`Checking if port ${e} is in use on ${u}`,t),new Promise((r)=>{let s=Un.createServer();s.once("error",(n)=>{if(n.code==="EADDRINUSE")ae("port",`Port ${e} is in use`,t),r(!0)}),s.once("listening",()=>{ae("port",`Port ${e} is available`,t),s.close(),r(!1)}),s.listen(e,u)})}async function NS(e,u,t){ae("port",`Finding available port starting from ${e}`,t);let r=e;while(await ih(r,u,t))ae("port",`Port ${r} is in use, trying ${r+1}`,t),r++;return ae("port",`Found available port: ${r}`,t),r}async function _S(e,u,t){return ae("connection",`Testing connection to ${e}:${u}`,t),new Promise((r,s)=>{let n=Un.connect({host:e,port:u,timeout:5000});n.once("connect",()=>{ae("connection",`Successfully connected to ${e}:${u}`,t),n.end(),r()}),n.once("timeout",()=>{ae("connection",`Connection to ${e}:${u} timed out`,t),n.destroy(),s(new Error(`Connection to ${e}:${u} timed out`))}),n.once("error",(i)=>{ae("connection",`Failed to connect to ${e}:${u}: ${i}`,t),n.destroy(),s(new Error(`Failed to connect to ${e}:${u}: ${i.message}`))})})}async function $8(e){ae("server",`Starting server with options: ${JSON.stringify(e)}`,e.verbose);let u=new URL((e.from?.startsWith("http")?e.from:`http://${e.from}`)||"localhost:5173"),t=new URL((e.to?.startsWith("http")?e.to:`http://${e.to}`)||"stacks.localhost"),r=Number.parseInt(u.port)||(u.protocol.includes("https:")?443:80),s=[t.hostname];if(!t.hostname.includes("localhost")&&!t.hostname.includes("127.0.0.1")){ae("hosts",`Checking if hosts file entry exists for: ${t.hostname}`,e?.verbose);try{if(!(await Dc(s,e.verbose))[0]){me.info(`Adding ${t.hostname} to hosts file...`),me.info("This may require sudo/administrator privileges");try{await lc(s,e.verbose)}catch(o){if(me.error("Failed to add hosts entry:",o.message),me.warn("You can manually add this entry to your hosts file:"),me.warn(`127.0.0.1 ${t.hostname}`),me.warn(`::1 ${t.hostname}`),Yu.platform==="win32")me.warn("On Windows:"),me.warn("1. Run notepad as administrator"),me.warn("2. Open C:\\Windows\\System32\\drivers\\etc\\hosts");else me.warn("On Unix systems:"),me.warn("sudo nano /etc/hosts")}}else ae("hosts",`Host entry already exists for ${t.hostname}`,e.verbose)}catch(i){me.error("Failed to check hosts file:",i.message)}}try{await _S(u.hostname,r,e.verbose)}catch(i){ae("server",`Connection test failed: ${i}`,e.verbose),me.error(i.message),Yu.exit(1)}let n=e._cachedSSLConfig||null;if(e.https)try{if(e.https===!0)e.https=_r({...e,to:t.hostname});try{ae("ssl",`Attempting to load SSL configuration for ${t.hostname}`,e.verbose),n=await th({...e,to:t.hostname,https:e.https})}catch(i){ae("ssl",`Failed to load certificates, will generate new ones: ${i}`,e.verbose)}if(!n){if(ae("ssl",`Generating new certificates for ${t.hostname}`,e.verbose),await uh({...e,from:u.toString(),to:t.hostname,https:e.https}),n=await th({...e,to:t.hostname,https:e.https}),!n)throw new Error(`Failed to load SSL configuration after generating certificates for ${t.hostname}`)}}catch(i){throw ae("server",`SSL setup failed: ${i}`,e.verbose),i}ae("server",`Setting up reverse proxy with SSL config for ${t.hostname}`,e.verbose),await RS({...e,from:e.from||"localhost:5173",to:t.hostname,fromPort:r,sourceUrl:{hostname:u.hostname,host:u.host},ssl:n})}async function $S(e,u,t,r,s,n,i,o,l,a){ae("proxy",`Creating proxy server ${e} -> ${u} with cleanUrls: ${a}`,l);let D=(F,p)=>{ae("request",`Incoming request: ${F.method} ${F.url}`,l);let f=F.url||"/";if(a){if(!f.match(/\.[a-z0-9]+$/i))if(f.endsWith("/"))f=`${f}index.html`;else f=`${f}.html`}let m={hostname:n.hostname,port:t,path:f,method:F.method,headers:{...F.headers,host:n.host}};ae("request",`Proxy request options: ${JSON.stringify(m)}`,l);let B=wi.request(m,(C)=>{if(ae("response",`Proxy response received with status ${C.statusCode}`,l),a&&C.statusCode===404){let y=[];if(f.endsWith(".html"))y.push(f.slice(0,-5));else if(!f.match(/\.[a-z0-9]+$/i))y.push(`${f}.html`);if(!f.endsWith("/"))y.push(`${f}/index.html`);if(y.length>0){ae("cleanUrls",`Trying alternative paths: ${y.join(", ")}`,l);let A=(T)=>{if(T.length===0){p.writeHead(C.statusCode||404,C.headers),C.pipe(p);return}let I=T[0],v={...m,path:I},g=wi.request(v,(E)=>{if(E.statusCode===200)ae("cleanUrls",`Found matching path: ${I}`,l),p.writeHead(E.statusCode,E.headers),E.pipe(p);else A(T.slice(1))});g.on("error",()=>A(T.slice(1))),g.end()};A(y);return}}let c={...C.headers,"Strict-Transport-Security":"max-age=31536000; includeSubDomains; preload","X-Content-Type-Options":"nosniff"};p.writeHead(C.statusCode||500,c),C.pipe(p)});B.on("error",(C)=>{ae("request",`Proxy request failed: ${C}`,l),me.error("Proxy request failed:",C),p.writeHead(502),p.end(`Proxy Error: ${C.message}`)}),F.pipe(B)},h=i?{key:i.key,cert:i.cert,ca:i.ca,minVersion:"TLSv1.2",maxVersion:"TLSv1.3",requestCert:!1,rejectUnauthorized:!1,ciphers:["TLS_AES_128_GCM_SHA256","TLS_AES_256_GCM_SHA384","TLS_CHACHA20_POLY1305_SHA256","ECDHE-ECDSA-AES128-GCM-SHA256","ECDHE-RSA-AES128-GCM-SHA256","ECDHE-ECDSA-AES256-GCM-SHA384","ECDHE-RSA-AES256-GCM-SHA384"].join(":"),allowHTTP1:!0,ALPNProtocols:["h2","http/1.1"]}:void 0;ae("server",`Creating server with SSL config: ${!!i}`,l);let d=i&&h?_8.createServer(h,D):wi.createServer(D);if(i)d.on("secureConnection",(F)=>{ae("tls",`TLS Connection established: ${JSON.stringify({protocol:F.getProtocol?.(),cipher:F.getCipher?.(),authorized:F.authorized,authError:F.authorizationError})}`,l)});return sh.add(d),new Promise((F,p)=>{d.listen(r,s,()=>{if(ae("server",`Server listening on port ${r}`,l),!o){if(console.log(""),console.log(` ${Ar(Ua("reverse-proxy"))} ${Ar(`v${sc}`)}`),console.log(""),console.log(` ${Ar("\u279C")} ${Zs(e)} ${Zs("\u279C")} ${i?"https":"http"}://${u}`),r!==(i?443:80))console.log(` ${Ar("\u279C")} Listening on port ${r}`);if(i)console.log(` ${Ar("\u279C")} SSL enabled with:`),console.log(" - TLS 1.2/1.3"),console.log(" - Modern cipher suite"),console.log(" - HTTP/2 enabled"),console.log(" - HSTS enabled");if(a)console.log(` ${Ar("\u279C")} Clean URLs enabled`)}F()}),d.on("error",(f)=>{ae("server",`Server error: ${f}`,l),p(f)})})}async function RS(e){ae("setup",`Setting up reverse proxy: ${JSON.stringify(e)}`,e.verbose);let{from:u,to:t,fromPort:r,sourceUrl:s,ssl:n,verbose:i,etcHostsCleanup:o,portManager:l}=e,a=80,D=443,h="0.0.0.0";try{if(n&&!l?.usedPorts.has(a))if(!await ih(a,h,i))ae("setup","Starting HTTP redirect server",i),OS(i),l?.usedPorts.add(a);else ae("setup","Port 80 is in use, skipping HTTP redirect",i),me.warn("Port 80 is in use, HTTP to HTTPS redirect will not be available");let d=n?D:a,F;if(l)F=await l.getNextAvailablePort(d);else F=await ih(d,h,i)?await NS(n?8443:8080,h,i):d;if(F!==d)me.warn(`Port ${d} is in use. Using port ${F} instead.`),me.info(`You can use 'sudo lsof -i :${d}' (Unix) or 'netstat -ano | findstr :${d}' (Windows) to check what's using the port.`);await $S(u,t,r,F,h,s,n,i)}catch(d){ae("setup",`Setup failed: ${d}`,i),me.error(`Failed to setup reverse proxy: ${d.message}`),Ii({domains:[t],etcHostsCleanup:o,verbose:i})}}function OS(e){ae("redirect","Starting HTTP redirect server",e);let u=wi.createServer((t,r)=>{let s=t.headers.host||"";ae("redirect",`Redirecting request from ${s}${t.url} to HTTPS`,e),r.writeHead(301,{Location:`https://${s}${t.url}`}),r.end()}).listen(80);sh.add(u),ae("redirect","HTTP redirect server started",e)}function II(e){let u={...Qi,...e};ae("proxy",`Starting proxy with options: ${JSON.stringify(u)}`,u?.verbose);let t={from:u.from,to:u.to,cleanUrls:u.cleanUrls,https:_r(u),etcHostsCleanup:u.etcHostsCleanup,vitePluginUsage:u.vitePluginUsage,verbose:u.verbose};console.log("serverOptions",t),$8(t).catch((r)=>{ae("proxy",`Failed to start proxy: ${r}`,u.verbose),me.error(`Failed to start proxy: ${r.message}`),Ii({domains:[u.to],etcHostsCleanup:u.etcHostsCleanup,verbose:u.verbose})})}async function NI(e){ae("proxies","Starting proxy setup",e?.verbose);let u={...Qi,...e},t=Yi(u)?u.proxies[0].to||"stacks.localhost":u.to||"stacks.localhost";if(u.https){let o=await rh(u);if(o)ae("ssl",`Using existing certificates for ${t}`,u.verbose),u._cachedSSLConfig=o;else{ae("ssl",`No valid certificates found for ${t}, generating new ones`,u.verbose),await uh(u);let l=await rh(u);if(!l)throw new Error(`Failed to load SSL certificates after generation for ${t}. Please check file permissions and paths.`);u._cachedSSLConfig=l}}let r=Yi(u)?u.proxies.map((o)=>({...o,https:u.https,etcHostsCleanup:u.etcHostsCleanup,cleanUrls:u.cleanUrls,vitePluginUsage:u.vitePluginUsage,verbose:u.verbose,_cachedSSLConfig:u._cachedSSLConfig})):[{from:u.from||"localhost:5173",to:u.to||"stacks.localhost",cleanUrls:u.cleanUrls||!1,https:u.https,etcHostsCleanup:u.etcHostsCleanup,vitePluginUsage:u.vitePluginUsage,verbose:u.verbose,_cachedSSLConfig:u._cachedSSLConfig}],s=r.map((o)=>o.to||"stacks.localhost"),n=u._cachedSSLConfig,i=()=>Ii({domains:s,etcHostsCleanup:u.etcHostsCleanup||!1,verbose:u.verbose||!1});Yu.on("SIGINT",i),Yu.on("SIGTERM",i),Yu.on("uncaughtException",(o)=>{ae("process",`Uncaught exception: ${o}`,!0),console.error("Uncaught exception:",o),i()});for(let o of r)try{let l=o.to||"stacks.localhost";ae("proxy",`Starting proxy for ${l} with SSL config: ${!!n}`,o.verbose),await $8({from:o.from||"localhost:5173",to:l,cleanUrls:o.cleanUrls||!1,https:o.https||!1,etcHostsCleanup:o.etcHostsCleanup||!1,vitePluginUsage:o.vitePluginUsage||!1,verbose:o.verbose||!1,_cachedSSLConfig:n})}catch(l){ae("proxies",`Failed to start proxy for ${o.to}: ${l}`,o.verbose),console.error(`Failed to start proxy for ${o.to}:`,l),i()}}
|
|
648
|
+
`),me.info("Shutting down proxy servers...");let u=[],t=Array.from(sh).map((r)=>new Promise((s)=>{r.close(()=>{ae("cleanup","Server closed successfully",e?.verbose),s()})}));if(u.push(...t),e?.etcHostsCleanup&&e.domains?.length){ae("cleanup","Cleaning up hosts file entries",e?.verbose);let r=e.domains.filter((s)=>!s.includes("localhost"));if(r.length>0)me.info("Cleaning up hosts file entries..."),u.push(cc(r,e?.verbose).then(()=>{ae("cleanup",`Removed hosts entries for ${r.join(", ")}`,e?.verbose)}).catch((s)=>{ae("cleanup",`Failed to remove hosts entries: ${s}`,e?.verbose),me.warn(`Failed to clean up hosts file entries for ${r.join(", ")}:`,s)}))}try{await Promise.all(u),ae("cleanup","All cleanup tasks completed successfully",e?.verbose),me.success("All cleanup tasks completed successfully"),Yu.exit(0)}catch(r){ae("cleanup",`Error during cleanup: ${r}`,e?.verbose),me.error("Error during cleanup:",r),Yu.exit(1)}}Yu.on("SIGINT",Ii);Yu.on("SIGTERM",Ii);Yu.on("uncaughtException",(e)=>{ae("process",`Uncaught exception: ${e}`,!0),me.error("Uncaught exception:",e),Ii()});function ih(e,u,t){return ae("port",`Checking if port ${e} is in use on ${u}`,t),new Promise((r)=>{let s=Un.createServer();s.once("error",(n)=>{if(n.code==="EADDRINUSE")ae("port",`Port ${e} is in use`,t),r(!0)}),s.once("listening",()=>{ae("port",`Port ${e} is available`,t),s.close(),r(!1)}),s.listen(e,u)})}async function NS(e,u,t){ae("port",`Finding available port starting from ${e}`,t);let r=e;while(await ih(r,u,t))ae("port",`Port ${r} is in use, trying ${r+1}`,t),r++;return ae("port",`Found available port: ${r}`,t),r}async function _S(e,u,t){return ae("connection",`Testing connection to ${e}:${u}`,t),new Promise((r,s)=>{let n=Un.connect({host:e,port:u,timeout:5000});n.once("connect",()=>{ae("connection",`Successfully connected to ${e}:${u}`,t),n.end(),r()}),n.once("timeout",()=>{ae("connection",`Connection to ${e}:${u} timed out`,t),n.destroy(),s(new Error(`Connection to ${e}:${u} timed out`))}),n.once("error",(i)=>{ae("connection",`Failed to connect to ${e}:${u}: ${i}`,t),n.destroy(),s(new Error(`Failed to connect to ${e}:${u}: ${i.message}`))})})}async function $8(e){ae("server",`Starting server with options: ${JSON.stringify(e)}`,e.verbose);let u=new URL((e.from?.startsWith("http")?e.from:`http://${e.from}`)||"localhost:5173"),t=new URL((e.to?.startsWith("http")?e.to:`http://${e.to}`)||"stacks.localhost"),r=Number.parseInt(u.port)||(u.protocol.includes("https:")?443:80),s=[t.hostname];if(!t.hostname.includes("localhost")&&!t.hostname.includes("127.0.0.1")){ae("hosts",`Checking if hosts file entry exists for: ${t.hostname}`,e?.verbose);try{if(!(await Dc(s,e.verbose))[0]){me.info(`Adding ${t.hostname} to hosts file...`),me.info("This may require sudo/administrator privileges");try{await lc(s,e.verbose)}catch(o){if(me.error("Failed to add hosts entry:",o.message),me.warn("You can manually add this entry to your hosts file:"),me.warn(`127.0.0.1 ${t.hostname}`),me.warn(`::1 ${t.hostname}`),Yu.platform==="win32")me.warn("On Windows:"),me.warn("1. Run notepad as administrator"),me.warn("2. Open C:\\Windows\\System32\\drivers\\etc\\hosts");else me.warn("On Unix systems:"),me.warn("sudo nano /etc/hosts")}}else ae("hosts",`Host entry already exists for ${t.hostname}`,e.verbose)}catch(i){me.error("Failed to check hosts file:",i.message)}}try{await _S(u.hostname,r,e.verbose)}catch(i){ae("server",`Connection test failed: ${i}`,e.verbose),me.error(i.message),Yu.exit(1)}let n=e._cachedSSLConfig||null;if(e.https)try{if(e.https===!0)e.https=_r({...e,to:t.hostname});try{ae("ssl",`Attempting to load SSL configuration for ${t.hostname}`,e.verbose),n=await th({...e,to:t.hostname,https:e.https})}catch(i){ae("ssl",`Failed to load certificates, will generate new ones: ${i}`,e.verbose)}if(!n){if(ae("ssl",`Generating new certificates for ${t.hostname}`,e.verbose),await uh({...e,from:u.toString(),to:t.hostname,https:e.https}),n=await th({...e,to:t.hostname,https:e.https}),!n)throw new Error(`Failed to load SSL configuration after generating certificates for ${t.hostname}`)}}catch(i){throw ae("server",`SSL setup failed: ${i}`,e.verbose),i}ae("server",`Setting up reverse proxy with SSL config for ${t.hostname}`,e.verbose),await RS({...e,from:e.from||"localhost:5173",to:t.hostname,fromPort:r,sourceUrl:{hostname:u.hostname,host:u.host},ssl:n})}async function $S(e,u,t,r,s,n,i,o,l,a){ae("proxy",`Creating proxy server ${e} -> ${u} with cleanUrls: ${a}`,l);let D=(F,p)=>{ae("request",`Incoming request: ${F.method} ${F.url}`,l);let f=F.url||"/";if(a){if(!f.match(/\.[a-z0-9]+$/i))if(f.endsWith("/"))f=`${f}index.html`;else f=`${f}.html`}let m={hostname:n.hostname,port:t,path:f,method:F.method,headers:{...F.headers,host:n.host}};ae("request",`Proxy request options: ${JSON.stringify(m)}`,l);let B=wi.request(m,(C)=>{if(ae("response",`Proxy response received with status ${C.statusCode}`,l),a&&C.statusCode===404){let y=[];if(f.endsWith(".html"))y.push(f.slice(0,-5));else if(!f.match(/\.[a-z0-9]+$/i))y.push(`${f}.html`);if(!f.endsWith("/"))y.push(`${f}/index.html`);if(y.length>0){ae("cleanUrls",`Trying alternative paths: ${y.join(", ")}`,l);let A=(T)=>{if(T.length===0){p.writeHead(C.statusCode||404,C.headers),C.pipe(p);return}let I=T[0],v={...m,path:I},g=wi.request(v,(E)=>{if(E.statusCode===200)ae("cleanUrls",`Found matching path: ${I}`,l),p.writeHead(E.statusCode,E.headers),E.pipe(p);else A(T.slice(1))});g.on("error",()=>A(T.slice(1))),g.end()};A(y);return}}let c={...C.headers,"Strict-Transport-Security":"max-age=31536000; includeSubDomains; preload","X-Content-Type-Options":"nosniff"};p.writeHead(C.statusCode||500,c),C.pipe(p)});B.on("error",(C)=>{ae("request",`Proxy request failed: ${C}`,l),me.error("Proxy request failed:",C),p.writeHead(502),p.end(`Proxy Error: ${C.message}`)}),F.pipe(B)},h=i?{key:i.key,cert:i.cert,ca:i.ca,minVersion:"TLSv1.2",maxVersion:"TLSv1.3",requestCert:!1,rejectUnauthorized:!1,ciphers:["TLS_AES_128_GCM_SHA256","TLS_AES_256_GCM_SHA384","TLS_CHACHA20_POLY1305_SHA256","ECDHE-ECDSA-AES128-GCM-SHA256","ECDHE-RSA-AES128-GCM-SHA256","ECDHE-ECDSA-AES256-GCM-SHA384","ECDHE-RSA-AES256-GCM-SHA384"].join(":"),allowHTTP1:!0,ALPNProtocols:["h2","http/1.1"]}:void 0;ae("server",`Creating server with SSL config: ${!!i}`,l);let d=i&&h?_8.createServer(h,D):wi.createServer(D);if(i)d.on("secureConnection",(F)=>{ae("tls",`TLS Connection established: ${JSON.stringify({protocol:F.getProtocol?.(),cipher:F.getCipher?.(),authorized:F.authorized,authError:F.authorizationError})}`,l)});return sh.add(d),new Promise((F,p)=>{d.listen(r,s,()=>{if(ae("server",`Server listening on port ${r}`,l),!o){if(console.log(""),console.log(` ${Ar(Ua("reverse-proxy"))} ${Ar(`v${sc}`)}`),console.log(""),console.log(` ${Ar("\u279C")} ${Zs(e)} ${Zs("\u279C")} ${i?"https":"http"}://${u}`),r!==(i?443:80))console.log(` ${Ar("\u279C")} Listening on port ${r}`);if(i)console.log(` ${Ar("\u279C")} SSL enabled with:`),console.log(" - TLS 1.2/1.3"),console.log(" - Modern cipher suite"),console.log(" - HTTP/2 enabled"),console.log(" - HSTS enabled");if(a)console.log(` ${Ar("\u279C")} Clean URLs enabled`)}F()}),d.on("error",(f)=>{ae("server",`Server error: ${f}`,l),p(f)})})}async function RS(e){ae("setup",`Setting up reverse proxy: ${JSON.stringify(e)}`,e.verbose);let{from:u,to:t,fromPort:r,sourceUrl:s,ssl:n,verbose:i,etcHostsCleanup:o,vitePluginUsage:l,portManager:a}=e,D=80,h=443,d="0.0.0.0";try{if(n&&!a?.usedPorts.has(D))if(!await ih(D,d,i))ae("setup","Starting HTTP redirect server",i),OS(i),a?.usedPorts.add(D);else ae("setup","Port 80 is in use, skipping HTTP redirect",i),me.warn("Port 80 is in use, HTTP to HTTPS redirect will not be available");let F=n?h:D,p;if(a)p=await a.getNextAvailablePort(F);else p=await ih(F,d,i)?await NS(n?8443:8080,d,i):F;if(p!==F)me.warn(`Port ${F} is in use. Using port ${p} instead.`),me.info(`You can use 'sudo lsof -i :${F}' (Unix) or 'netstat -ano | findstr :${F}' (Windows) to check what's using the port.`);await $S(u,t,r,p,d,s,n,l,i)}catch(F){ae("setup",`Setup failed: ${F}`,i),me.error(`Failed to setup reverse proxy: ${F.message}`),Ii({domains:[t],etcHostsCleanup:o,verbose:i})}}function OS(e){ae("redirect","Starting HTTP redirect server",e);let u=wi.createServer((t,r)=>{let s=t.headers.host||"";ae("redirect",`Redirecting request from ${s}${t.url} to HTTPS`,e),r.writeHead(301,{Location:`https://${s}${t.url}`}),r.end()}).listen(80);sh.add(u),ae("redirect","HTTP redirect server started",e)}function II(e){let u={...Qi,...e};ae("proxy",`Starting proxy with options: ${JSON.stringify(u)}`,u?.verbose);let t={from:u.from,to:u.to,cleanUrls:u.cleanUrls,https:_r(u),etcHostsCleanup:u.etcHostsCleanup,vitePluginUsage:u.vitePluginUsage,verbose:u.verbose};console.log("serverOptions",t),$8(t).catch((r)=>{ae("proxy",`Failed to start proxy: ${r}`,u.verbose),me.error(`Failed to start proxy: ${r.message}`),Ii({domains:[u.to],etcHostsCleanup:u.etcHostsCleanup,verbose:u.verbose})})}async function NI(e){ae("proxies","Starting proxy setup",e?.verbose);let u={...Qi,...e},t=Yi(u)?u.proxies[0].to||"stacks.localhost":u.to||"stacks.localhost";if(u.https){let o=await rh(u);if(o)ae("ssl",`Using existing certificates for ${t}`,u.verbose),u._cachedSSLConfig=o;else{ae("ssl",`No valid certificates found for ${t}, generating new ones`,u.verbose),await uh(u);let l=await rh(u);if(!l)throw new Error(`Failed to load SSL certificates after generation for ${t}. Please check file permissions and paths.`);u._cachedSSLConfig=l}}let r=Yi(u)?u.proxies.map((o)=>({...o,https:u.https,etcHostsCleanup:u.etcHostsCleanup,cleanUrls:u.cleanUrls,vitePluginUsage:u.vitePluginUsage,verbose:u.verbose,_cachedSSLConfig:u._cachedSSLConfig})):[{from:u.from||"localhost:5173",to:u.to||"stacks.localhost",cleanUrls:u.cleanUrls||!1,https:u.https,etcHostsCleanup:u.etcHostsCleanup,vitePluginUsage:u.vitePluginUsage,verbose:u.verbose,_cachedSSLConfig:u._cachedSSLConfig}],s=r.map((o)=>o.to||"stacks.localhost"),n=u._cachedSSLConfig,i=()=>Ii({domains:s,etcHostsCleanup:u.etcHostsCleanup||!1,verbose:u.verbose||!1});Yu.on("SIGINT",i),Yu.on("SIGTERM",i),Yu.on("uncaughtException",(o)=>{ae("process",`Uncaught exception: ${o}`,!0),console.error("Uncaught exception:",o),i()});for(let o of r)try{let l=o.to||"stacks.localhost";ae("proxy",`Starting proxy for ${l} with SSL config: ${!!n}`,o.verbose),await $8({from:o.from||"localhost:5173",to:l,cleanUrls:o.cleanUrls||!1,https:o.https||!1,etcHostsCleanup:o.etcHostsCleanup||!1,vitePluginUsage:o.vitePluginUsage||!1,verbose:o.verbose||!1,_cachedSSLConfig:n})}catch(l){ae("proxies",`Failed to start proxy for ${o.to}: ${l}`,o.verbose),console.error(`Failed to start proxy for ${o.to}:`,l),i()}}
|
|
649
649
|
export{qE as a,sc as b,Qi as c,ae as d,cw as e,ac as f,Xs as g,Yi as h,zi as i,Js as j,vr as k,lc as l,cc as m,Dc as n,mI as o,w8 as p,N8 as q,I8 as r,th as s,uh as t,yI as u,rh as v,_r as w,Ii as x,$8 as y,RS as z,OS as A,II as B,NI as C};
|
package/dist/src/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{A,B as N,C as e,c as r,d as g,e as l,f as P,g as y,h as C,i as m,j as v,k as R,l as S,m as c,n as u,o as b,p as O,q as d,r as h,s as B,t as L,u as M,v as U,w as T,x as k,y as H,z as j}from"../chunk-
|
|
2
|
+
import{A,B as N,C as e,c as r,d as g,e as l,f as P,g as y,h as C,i as m,j as v,k as R,l as S,m as c,n as u,o as b,p as O,q as d,r as h,s as B,t as L,u as M,v as U,w as T,x as k,y as H,z as j}from"../chunk-xt6fyy5z.js";var f=e;export{H as startServer,N as startProxy,e as startProxies,A as startHttpRedirectServer,j as setupReverseProxy,b as resolveSSLPaths,c as removeHosts,B as loadSSLConfig,P as isValidRootCA,v as isSingleProxyOptions,m as isMultiProxyOptions,C as isMultiProxyConfig,T as httpsConfig,R as hostsFilePath,M as getSSLConfig,y as getPrimaryDomain,h as getAllDomains,O as generateWildcardPatterns,d as generateSSLPaths,L as generateCertificate,l as extractHostname,f as default,g as debugLog,r as config,k as cleanup,u as checkHosts,U as checkExistingCertificates,S as addHosts};
|