@visulima/cerebro
Version:
A delightful toolkit for building cross-runtime CLIs for Node.js, Deno, and Bun.
5 lines • 57.8 kB
JavaScript
var It=Object.defineProperty;var b=(t,e)=>It(t,"name",{value:e,configurable:!0});import{createRequire as St}from"node:module";import{o as Vt,D as Tt}from"./help-command-CIRIXN03.js";import{VERBOSITY_DEBUG as W,POSITIONALS_KEY as te,VERBOSITY_QUIET as Rt,VERBOSITY_VERBOSE as Dt,VERBOSITY_NORMAL as Ne}from"./VERBOSITY_QUIET-XPultrIA.js";import{c as P}from"./cerebro-error-BnJTixb2.js";import{d as q,f as Ae,e as ie,o as je,a as Bt,h as zt,i as Wt}from"./runtime-process-G-n-wOub.js";import{distance as Ft}from"fastest-levenshtein";const Ut=St(import.meta.url),Y=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Mt=b(t=>{if(typeof Y<"u"&&Y.versions&&Y.versions.node){const[e,n]=Y.versions.node.split(".").map(Number);if(e>22||e===22&&n>=3||e===20&&n>=16)return Y.getBuiltinModule(t)}return Ut(t)},"__cjs_getBuiltinModule"),{createRequire:qt}=Mt("node:module");var Gt=Object.defineProperty,Ht=b((t,e)=>Gt(t,"name",{value:e,configurable:!0}),"t$9");let D=class extends P{static{b(this,"a")}static{Ht(this,"CommandNotFoundError")}commandName;constructor(e,n=[]){const a=`Command "${e}" not found${n.length>0?`. Did you mean: ${n.join(", ")}?`:""}`;super(a,"COMMAND_NOT_FOUND",{commandName:e,suggestions:n}),this.name="CommandNotFoundError",this.commandName=e,n.length>0&&(this.hint=`Try one of these commands: ${n.join(", ")}`)}};var Kt=Object.defineProperty,Yt=b((t,e)=>Kt(t,"name",{value:e,configurable:!0}),"e$7");let Ze=class extends P{static{b(this,"o")}static{Yt(this,"ConflictingOptionsError")}option1;option2;constructor(e,n){super(`Options "${e}" and "${n}" cannot be used together`,"CONFLICTING_OPTIONS",{option1:e,option2:n}),this.name="ConflictingOptionsError",this.option1=e,this.option2=n,this.hint=`Remove either --${e} or --${n}`}};var Jt=Object.defineProperty,Zt=b((t,e)=>Jt(t,"name",{value:e,configurable:!0}),"e$6");let Qt=class extends P{static{b(this,"o")}static{Zt(this,"PluginError")}pluginName;constructor(e,n,a){super(`Plugin "${e}" error: ${n}`,"PLUGIN_ERROR",{originalError:a,pluginName:e}),this.name="PluginError",this.pluginName=e,a&&(this.cause=a)}};var Xt=Object.defineProperty,xe=b((t,e)=>Xt(t,"name",{value:e,configurable:!0}),"d$5");let en=class{static{b(this,"p")}static{xe(this,"PluginManager")}logger;plugins=new Map;initialized=!1;cachedDependencyOrder=void 0;constructor(e){this.logger=e}hasPlugins(){return this.plugins.size>0}register(e){if(this.initialized)throw new Error(`Cannot register plugin "${e.name}" after initialization`);if(this.plugins.has(e.name))throw new Error(`Plugin "${e.name}" is already registered`);q().CEREBRO_OUTPUT_LEVEL===String(W)&&this.logger.debug(`registering plugin: ${e.name}`),this.plugins.set(e.name,e),this.cachedDependencyOrder=void 0}async init(e){if(this.initialized)throw new Error("PluginManager already initialized");if(this.plugins.size===0){this.logger.debug("no plugins registered, skipping initialization"),this.initialized=!0;return}this.validateDependencies();const n=this.getDependencyOrder();this.logger.debug(`initializing ${n.length} plugin(s)...`);for(const a of n)if(typeof a.init=="function"){this.logger.debug(`initializing plugin: ${a.name}`);try{await a.init(e)}catch(r){const i=new Qt(a.name,`Failed to initialize: ${r instanceof Error?r.message:String(r)}`,r instanceof Error?r:void 0);throw this.logger.error(i.message),i}}this.initialized=!0}async executeLifecycle(e,n,a){if(!this.initialized)throw new Error("PluginManager not initialized");if(this.plugins.size===0)return;const r=this.getDependencyOrder();for(const i of r){const c=i[e];if(typeof c=="function"){this.logger.debug(`executing ${e} hook for plugin: ${i.name}`);try{await(e==="afterCommand"?c(n,a):c(n))}catch(s){throw this.logger.error(`Error in ${e} hook for plugin "${i.name}":`,s),s}}}}async executeErrorHandlers(e,n){if(!this.initialized||this.plugins.size===0)return;const a=this.getDependencyOrder();for(const r of a)if(typeof r.onError=="function"){this.logger.debug(`executing error handler for plugin: ${r.name}`);try{await r.onError(e,n)}catch(i){this.logger.error(`Error in error handler for plugin "${r.name}":`,i)}}}getDependencyOrder(){if(this.cachedDependencyOrder!==void 0)return this.cachedDependencyOrder;const e=[],n=new Set,a=new Set,r=xe(i=>{if(n.has(i))return;if(a.has(i))throw new Error(`Circular dependency detected involving plugin "${i}"`);const c=this.plugins.get(i);if(!c)throw new Error(`Plugin "${i}" not found`);if(a.add(i),c.dependencies)for(const s of c.dependencies)r(s);a.delete(i),n.add(i),e.push(c)},"visit");for(const i of this.plugins.keys())r(i);return this.cachedDependencyOrder=e,e}validateDependencies(){for(const e of this.plugins.values())if(e.dependencies){for(const n of e.dependencies)if(!this.plugins.has(n))throw new Error(`Plugin "${e.name}" depends on "${n}" which is not registered`)}}};var tn=Object.defineProperty,nn=b((t,e)=>tn(t,"name",{value:e,configurable:!0}),"n$b");const X=nn(t=>t.type?.name==="Boolean","optionIsBoolean");var an=Object.defineProperty,Qe=b((t,e)=>an(t,"name",{value:e,configurable:!0}),"p$b");const on=Qe(t=>{let e=t.type?t.type.name.toLowerCase():"string";const n=t.multiple??t.lazyMultiple?"[]":"";return e&&(e=e==="boolean"?"":`{underline ${e}${n}}`),e},"getTypeLabel"),rn=Qe(t=>(X(t)||(t.typeLabel=t.typeLabel??on(t),t.defaultOption&&(t.typeLabel=`${t.typeLabel} (D)`),t.required&&(t.typeLabel=`${t.typeLabel} (R)`)),t),"mapOptionTypeLabel");var sn=Object.defineProperty,Xe=b((t,e)=>sn(t,"name",{value:e,configurable:!0}),"e$4");const ln=new RegExp(/^-([^\d-])$/),cn=new RegExp(/^--(\S+)/),un=new RegExp(/^-([^\d-]{2,})$/),pn=Xe(t=>ln.test(t)||cn.test(t)||un.test(t),"isOption"),fn=Xe((t,e)=>{const n=e[0]&&pn(e[0])||e.length===0?null:e.shift()??null;if(!t.includes(n)){const a=new Error(`Command not recognised: ${n}`);throw a.command=n,a.name="INVALID_COMMAND",a}return{argv:e,command:n}},"commandLineCommands");var hn=Object.defineProperty,et=b((t,e)=>hn(t,"name",{value:e,configurable:!0}),"i$a"),dn=Object.defineProperty,tt=et((t,e)=>dn(t,"name",{value:e,configurable:!0}),"i"),mn=Object.defineProperty,nt=tt((t,e)=>mn(t,"name",{value:e,configurable:!0}),"s"),gn=Object.defineProperty,it=nt((t,e)=>gn(t,"name",{value:e,configurable:!0}),"i"),vn=Object.defineProperty,at=it((t,e)=>vn(t,"name",{value:e,configurable:!0}),"t");at(t=>t instanceof Error&&t.type==="VisulimaError","isVisulimaError");class oe extends Error{static{b(this,"v")}static{et(this,"g")}static{tt(this,"p")}static{nt(this,"V")}static{it(this,"VisulimaError")}static{at(this,"VisulimaError")}loc;title;hint;type="VisulimaError";constructor({cause:e,hint:n,location:a,message:r,name:i,stack:c,title:s}){super(r,{cause:e}),this.title=s,this.name=i,this.stack=c??this.stack,this.loc=a,this.hint=n}setLocation(e){this.loc=e}setName(e){this.name=e}setMessage(e){this.message=e}setHint(e){this.hint=e}}var yn=Object.defineProperty,ot=b((t,e)=>yn(t,"name",{value:e,configurable:!0}),"o$b"),wn=Object.defineProperty,rt=ot((t,e)=>wn(t,"name",{value:e,configurable:!0}),"o"),bn=Object.defineProperty,$n=rt((t,e)=>bn(t,"name",{value:e,configurable:!0}),"i");let On=class st extends oe{static{b(this,"a")}static{ot(this,"a")}static{rt(this,"t")}static{$n(this,"AlreadySetError")}optionName;constructor(e){super({cause:void 0,hint:`Remove the duplicate option '${e}' from your command line arguments.`,location:void 0,message:`Option '${e}' is already set`,name:"ALREADY_SET",stack:void 0,title:"Option Already Set"}),this.optionName=e,Object.setPrototypeOf(this,st.prototype)}};var An=Object.defineProperty,lt=b((t,e)=>An(t,"name",{value:e,configurable:!0}),"t$7"),En=Object.defineProperty,ct=lt((t,e)=>En(t,"name",{value:e,configurable:!0}),"e"),Pn=Object.defineProperty,Cn=ct((t,e)=>Pn(t,"name",{value:e,configurable:!0}),"e");let _e=class ut extends oe{static{b(this,"n")}static{lt(this,"n")}static{ct(this,"o")}static{Cn(this,"UnknownOptionError")}optionName;constructor(e){super({cause:void 0,hint:`Check your option definitions or remove the unknown option '${e}' from your command line arguments.`,location:void 0,message:`Unknown option: --${e}`,name:"UNKNOWN_OPTION",stack:void 0,title:"Unknown Option"}),this.optionName=`--${e}`,Object.setPrototypeOf(this,ut.prototype)}};var kn=Object.defineProperty,pt=b((t,e)=>kn(t,"name",{value:e,configurable:!0}),"a$6"),Nn=Object.defineProperty,ft=pt((t,e)=>Nn(t,"name",{value:e,configurable:!0}),"a"),jn=Object.defineProperty,xn=ft((t,e)=>jn(t,"name",{value:e,configurable:!0}),"o");let _n=class ht extends oe{static{b(this,"n")}static{pt(this,"o")}static{ft(this,"e")}static{xn(this,"UnknownValueError")}value;constructor(e){super({hint:"Use a defined option or add a defaultOption to capture this value.",message:`Unknown value: ${e}`,name:"UNKNOWN_VALUE",title:"Unknown Value"}),this.value=e,Object.setPrototypeOf(this,ht.prototype)}};var Ln=Object.defineProperty,dt=b((t,e)=>Ln(t,"name",{value:e,configurable:!0}),"i$7"),In=Object.defineProperty,mt=dt((t,e)=>In(t,"name",{value:e,configurable:!0}),"i"),Sn=Object.defineProperty,Un=mt((t,e)=>Sn(t,"name",{value:e,configurable:!0}),"i");let x=class gt extends oe{static{b(this,"a")}static{dt(this,"o")}static{mt(this,"e")}static{Un(this,"InvalidDefinitionsError")}constructor(e,n){super({cause:void 0,hint:n,location:void 0,message:e,name:"INVALID_DEFINITIONS",stack:void 0,title:"Invalid Option Definition"}),Object.setPrototypeOf(this,gt.prototype)}};var Mn=Object.defineProperty,Vn=b((t,e)=>Mn(t,"name",{value:e,configurable:!0}),"T$1"),Tn=Object.defineProperty,H=Vn((t,e)=>Tn(t,"name",{value:e,configurable:!0}),"P"),Rn=Object.defineProperty,re=H((t,e)=>Rn(t,"name",{value:e,configurable:!0}),"o");const Le=re(t=>t===Boolean||typeof t=="function"&&t.name?.startsWith("Boolean"),"isBooleanType"),Ie=re(t=>t===Number||typeof t=="function"&&t.name==="Number","isNumberType"),Se=re(t=>t===String||typeof t=="function"&&t.name==="String","isStringType"),Dn=re((t,e)=>Array.isArray(t)?Le(e)?t.map(Boolean):Ie(e)?t.map(Number):Se(e)?t.map(String):t.map(n=>e(String(n))):t===null?null:Le(e)?!!t:Ie(e)?Number(t):Se(e)?String(t):e(String(t)),"convertValue");var Bn=Object.defineProperty,zn=H((t,e)=>Bn(t,"name",{value:e,configurable:!0}),"e");const N=zn((t,e,n,...a)=>{t&&console.debug(`[command-line-args:${n}] ${e}`,...a)},"debug");var Wn=Object.defineProperty,T=H((t,e)=>Wn(t,"name",{value:e,configurable:!0}),"A");const Fn=/-([a-z])/g,me=T(t=>t===Boolean||typeof t=="function"&&t.name?.startsWith("Boolean"),"isBooleanType"),qn=T(t=>t.codePointAt(0)===95,"isSpecialKey"),Ue=T((t,e)=>Array.isArray(t)?[...t,...e]:[t,...e],"appendToArrayMultiple"),Me=T(t=>t==="__proto__"||t==="constructor"||t==="prototype","isUnsafeKey"),Ve=T((t,e,n,a=!1)=>{t[e]===void 0?t[e]=a?[n]:n:a&&Array.isArray(t[e])?t[e].push(n):t[e]=[t[e],n]},"createOrAppendArray"),Gn=T((t,e,n,a,r)=>{let i=e.get(t)||n.get(t);if(!i&&a){const c=t.toLowerCase();i=a.get(c)||r?.get(c)}return i},"getDefinition"),Hn=T((t,e,n,a)=>{const r=n.debug||!1;N(r,"resolveArgs called with options:","resolver",{partial:n.partial,stopAtFirstUnknown:n.stopAtFirstUnknown}),N(r,"Starting argument resolution","resolver"),N(r,"Tokens:","resolver",t),N(r,"Definitions:","resolver",e),N(r,"Processing tokens...","resolver");const i=new Map,c=new Map,s=n.caseInsensitive?new Map:void 0,g=n.caseInsensitive?new Map:void 0,o=n.camelCase?new Map:void 0,p=n.camelCase?new Map:void 0;for(const f of e)if(i.set(f.name,f),f.alias&&c.set(f.alias,f),n.caseInsensitive&&s&&(s.set(f.name.toLowerCase(),f),f.alias&&g&&g.set(f.alias.toLowerCase(),f)),n.camelCase&&o&&p){const h=f.name.replaceAll(Fn,(m,w)=>w.toUpperCase());o.set(f.name,h),p.set(h,f.name)}const u={},l={},d=[],y=new Set;let v=!1;const $=e.find(f=>f.defaultOption),C=e.some(f=>f.group),k=e.some(f=>f.type===Number);for(let f=0;f<t.length;f++){const h=t[f];if(h.kind==="option-terminator"){u._unknown=a.slice(h.index),v=!0;break}if(h.kind==="option"&&h.name){let m=Gn(h.name,i,c,s,g);if(!m&&h.value===void 0&&k&&/^\d+$/.test(h.name)){const O=e.find(I=>I.type===Number);O&&(m=O,h.value=h.name,h.name=O.name)}const w=m?m.name:h.name,A=m&&m.multiple,j=m&&m.lazyMultiple;if(l[w]!==void 0&&!A&&!j&&!n.partial)throw new On(w);if(!m&&n.partial){const O=h.rawName||`--${h.name}${h.value!==void 0&&h.inlineValue?`=${h.value}`:""}`;d.push({index:h.index,value:O});continue}if(!m&&n.stopAtFirstUnknown){u._unknown=a.slice(h.index);break}if(!m&&!n.partial)throw new _e(h.name);if(h.value===void 0){const O=t[f+1],I=O&&O.kind==="option"&&!("name"in O)&&O.value!==void 0,L=O&&m&&!(m.type&&me(m.type))&&(O.kind==="positional"||I),Lt=m&&m.defaultOption&&!m.multiple&&!m.lazyMultiple;if(L&&(!m?.defaultOption||Lt))if(A){let S=f+1;const de=[];for(;S<t.length&&(t[S].kind==="positional"||t[S].kind==="option"&&!("name"in t[S])&&t[S].value!==void 0);)de.push(t[S].value),y.add(t[S].index),S++;l[w]=l[w]===void 0?de:Ue(l[w],de),f=S-1}else j?(Ve(l,w,O.value,!0),y.add(O.index),f++):(l[w]=O.value,y.add(O.index),f++);else m&&m.type&&me(m.type)?Ve(l,w,!0,A):l[w]=A?[]:null}else{let{value:O}=h;if(m&&m.type&&me(m.type))switch(O){case"":{if(n.partial)l._unknown||(l._unknown=[]),l._unknown.push(`${h.rawName||`--${h.name}`}${h.value?`=${h.value}`:""}`),O=!0;else throw new _e(h.name);break}case"false":{O=!1;break}case"true":{O=!0;break}default:O=!0}const I=O===void 0?[]:[O];if(A){let L=f+1;for(;L<t.length&&t[L].kind==="positional";)I.push(t[L].value),y.add(t[L].index),L++;f=L-1}l[w]===void 0?l[w]=A||j?I:O:A||j?l[w]=Ue(l[w],I):l[w]=O}}else if(h.kind==="positional"&&n.stopAtFirstUnknown&&!y.has(h.index)){N(r,`Found unconsumed positional token at index ${h.index}, stopping processing`,"resolver"),u._unknown=a.slice(h.index);break}}for(const[f,h]of Object.entries(l)){const m=i.get(f);m&&(m.multiple||m.lazyMultiple)&&!Array.isArray(h)&&(l[f]=[h])}if($){const f=[],h=[];for(const m of t)m.kind==="positional"&&!y.has(m.index)&&(f.push(m.value),h.push(m));if(f.length>0){const m=l[$.name],w=$.multiple||$.lazyMultiple;m===void 0?w?(h.forEach(A=>y.add(A.index)),l[$.name]=f):(y.add(h[0].index),l[$.name]=f[0]):w&&(h.forEach(A=>y.add(A.index)),l[$.name]=Array.isArray(m)?[...f,...m]:[...f,m])}}if(!n.partial){for(const f of t)if(f.kind==="positional"&&!y.has(f.index))throw new _n(a[f.index])}if(n.partial&&!n.stopAtFirstUnknown){const f=[...d];if(l._unknown){const h=new Map;for(const[m,w]of a.entries())h.set(w,m);for(const m of l._unknown){const w=h.get(m);w!==void 0&&f.push({index:w,value:m})}}for(const h of t)h.kind==="positional"&&!y.has(h.index)&&f.push({index:h.index,value:a[h.index]});f.length>0&&(f.sort((h,m)=>h.index-m.index),u._unknown=f.map(h=>h.value))}if(n.stopAtFirstUnknown&&!v){const f=t.findIndex(w=>w.kind==="option"&&!i.has(w.name||"")&&!c.has(w.name||"")&&(!n.caseInsensitive||!s?.has(w.name?.toLowerCase()||"")&&!g?.has(w.name?.toLowerCase()||""))),h=t.findIndex(w=>w.kind==="positional"&&!y.has(w.index));let m=-1;if(f!==-1&&h!==-1?m=Math.min(f,h):f!==-1?m=f:h!==-1&&(m=h),m>=0){const w=t[m].index;u._unknown=a.slice(w)}}else d.length>0&&!n.partial&&(u._unknown=d.map(f=>f.value));for(const[f,h]of Object.entries(l)){const m=n.camelCase&&o?.get(f)||f,w=i.get(f);u[m]=w&&w.type?Dn(h,w.type):h===void 0?null:h}for(const f of e){const h=n.camelCase&&o?.get(f.name)||f.name;!(h in u)&&f.defaultValue!==void 0&&(f.multiple||f.lazyMultiple?u[h]=Array.isArray(f.defaultValue)?[...f.defaultValue]:[f.defaultValue]:u[h]=f.defaultValue)}if(C){const f={},h={},m={};for(const A of e)if(A.group){const j=Array.isArray(A.group)?A.group:[A.group];for(const O of j)Me(O)||f[O]||(f[O]={})}for(const A of Object.keys(u))if(!qn(A)){h[A]=u[A];let j=A;n.camelCase&&(j=p?.get(A)||A);const O=i.get(j);if(O&&O.group){const I=Array.isArray(O.group)?O.group:[O.group];for(const L of I)Me(L)||f[L]&&(f[L][A]=u[A])}else m[A]=u[A]}const w={_all:h};for(const[A,j]of Object.entries(f))w[A]=j;Object.keys(m).length>0&&(w._none=m),u._unknown&&(w._unknown=u._unknown),Object.keys(u).forEach(A=>delete u[A]),Object.assign(u,w)}return N(r,"Final parsed result:","resolver",u),u},"resolveArgs");var Kn=Object.defineProperty,R=H((t,e)=>Kn(t,"name",{value:e,configurable:!0}),"l");const V="-".codePointAt(0),M="=",Yn=M.codePointAt(0),Jn="--",Zn="-",Qn="--",vt=R(t=>t.length>2&&t.startsWith(Qn),"hasLongOptionPrefix"),Xn=R(t=>vt(t)&&!t.includes(M,3),"isLongOption"),ei=R(t=>vt(t)&&t.includes(M,3),"isLongOptionAndValue"),ti=R(t=>t!==void 0&&t.length>0&&t.codePointAt(0)!==V,"hasOptionValue"),ni=R(t=>{if(t.length!==2||t.codePointAt(0)!==V||t.codePointAt(1)===V)return!1;const e=t.codePointAt(1);return e!==void 0&&(e<48||e>57)},"isShortOption"),ii=R(t=>!(t.length<=2||t.codePointAt(0)!==V||t.codePointAt(1)===V),"isShortOptionGroup"),ai=R(t=>{const e=[],n=[...t];let a=-1,r=0;for(;n.length>0;){const i=n.shift();if(i===void 0)break;const c=n[0];if(r>0?r--:a++,i===Jn){e.push({index:a,kind:"option-terminator"});const s=n.map((g,o)=>({index:a+o+1,kind:"positional",value:g}));e.push(...s),a+=n.length;break}if(ni(i)){const s=i.charAt(1);let g,o;r?(e.push({index:a,inlineValue:o,kind:"option",name:s,rawName:i,value:g}),r===1&&ti(c)&&(g=n.shift(),e.push({index:a,inlineValue:o,kind:"option",value:g}))):e.push({index:a,inlineValue:o,kind:"option",name:s,rawName:i,value:g}),g!==void 0&&++a;continue}if(ii(i)&&!i.includes(M)){const s=[];let g="",o=!1;for(let p=1;p<i.length;p++){const u=i.charAt(p);o?g+=u:u.codePointAt(0)===Yn?o=!0:s.push(`${Zn}${u}`)}if(o)if(s.length>0){const p=s.pop();s.push(`${p}=${g}`)}else s.push(g);n.unshift(...s),r=s.length;continue}if(Xn(i)){const s=i.slice(2);e.push({index:a,kind:"option",name:s,rawName:i});continue}if(ei(i)){const s=i.indexOf(M),g=i.slice(2,s),o=i.slice(s+1);e.push({index:a,inlineValue:!0,kind:"option",name:g,rawName:i,value:o});continue}if(i.length>2&&i.codePointAt(0)===V&&i.codePointAt(1)!==V&&i.includes(M)){const s=i.indexOf(M),g=i.charAt(1),o=i.slice(s+1);e.push({index:a,inlineValue:!0,kind:"option",name:g,rawName:i,value:o});continue}e.push({index:a,kind:"positional",value:i})}return e},"parseArgsTokens");var oi=Object.defineProperty,Pe=H((t,e)=>oi(t,"name",{value:e,configurable:!0}),"d");const ri=Pe(t=>t&&(t===Boolean||typeof t=="function"&&t.name?.startsWith("Boolean")),"isBooleanType"),si=Pe(t=>typeof t=="function","isValidCustomTypeFunction"),li=Pe((t,e,n)=>{const a=n?.debug||!1;N(a,"Validating definitions:","validation",t,"caseInsensitive:",e);const r=new Set,i=new Set,c=new Set,s=new Set;let g=0;for(const o of t){if(N(a,"Checking definition:","validation",o),!o.name)throw N(a,"Validation failed: name is required","validation"),new x("Invalid option definition: name is required");if(typeof o.name!="string")throw new x("Invalid option definition: name must be a string");if(o.name.trim()==="")throw new x("Invalid option definition: name cannot be empty");const p=e?o.name.toLowerCase():"";if(r.has(o.name)||e&&c.has(p))throw new x(`Invalid option definition: duplicate name '${o.name}'`);if(i.has(o.name)||e&&s.has(p))throw new x(`Invalid option definition: name '${o.name}' conflicts with an existing alias`);if(r.add(o.name),e&&c.add(p),o.alias!==void 0){if(typeof o.alias!="string")throw new x("Invalid option definition: alias must be a string");if(o.alias.length!==1)throw new x("Invalid option definition: alias must be a single character");if(/\d/.test(o.alias))throw new x("Invalid option definition: alias cannot be numeric");if(o.alias==="-")throw new x('Invalid option definition: alias cannot be "-"');const u=e?o.alias.toLowerCase():"";if(i.has(o.alias)||e&&s.has(u))throw new x(`Invalid option definition: duplicate alias '${o.alias}'`);if(r.has(o.alias)||e&&c.has(u))throw new x(`Invalid option definition: alias '${o.alias}' conflicts with an existing option name`);i.add(o.alias),e&&s.add(u)}if(o.defaultOption&&(g++,o.type!==void 0&&ri(o.type)))throw new x("Invalid option definition: defaultOption cannot be Boolean type");if(o.type!==void 0&&!(o.type===Boolean||o.type===Number||o.type===String||typeof o.type=="function"&&si(o.type)))throw new x("Invalid option definition: invalid type")}if(g>1)throw N(a,"Validation failed: multiple defaultOptions not allowed","validation"),new x("Invalid option definition: multiple defaultOptions not allowed");N(a,"Validation completed successfully","validation")},"validateDefinitions");var ci=Object.defineProperty,ui=H((t,e)=>ci(t,"name",{value:e,configurable:!0}),"O");const pi=ui((t,e={})=>{const n=e.debug||!1;N(n,"Starting command-line-args parsing","index"),N(n,"Options:","index",e);const a={...e};a.stopAtFirstUnknown&&(a.partial=!0);const r=Array.isArray(t)?t:[t];N(n,"Normalized definitions:","index",r),li(r,a.caseInsensitive,n?a:void 0);let{argv:i}=a;if(!i&&(i=process.argv.slice(2),process.execArgv?.length)){const o=new Set(process.execArgv);i=i.filter(p=>!o.has(p))}N(n,"Using argv:","index",i);let c=i;a.caseInsensitive&&i&&(c=i.map(o=>{if(o.startsWith("--")){const p=o.indexOf("="),u=(p===-1?o.slice(2):o.slice(2,p)).toLowerCase();return p===-1?`--${u}`:`--${u}${o.slice(p)}`}if(o.startsWith("-")&&!o.startsWith("--")&&o.length>1){const p=o.slice(1).split("=",2),u=p[0],l=p[1];if(!u)return o;const d=u.toLowerCase();return l===void 0?`-${d}`:`-${d}=${l}`}return o}));const s=ai((c??i??[]).map(String));N(n,"Tokenized arguments:","index",s);const g=Hn(s,r,a,i??[]);return N(n,"Command-line-args parsing completed","index"),g},"commandLineArgs");var fi=Object.defineProperty,hi=b((t,e)=>fi(t,"name",{value:e,configurable:!0}),"m$5");let di=class{static{b(this,"a")}static{hi(this,"EmptyToolbox")}result;argv;options;argument;command;commandName;env;logger;runtime;constructor(e,n){this.commandName=e,this.command=n}};var mi=Object.defineProperty,gi=b((t,e)=>mi(t,"name",{value:e,configurable:!0}),"f$3");const vi=/^-{1,2}(\w+)(=(.+))?$/,yt=gi((t,e,n,a)=>{const r=vi.exec(t);if(r==null)return{};const i=r[1];if(!i)return{};const c=n&&a?n.get(i)??a.get(i):e.find(s=>s.name===i||s.alias===i);return c!==void 0?{argName:c.name,argValue:r[3],option:c}:{}},"getParameterOption");var yi=Object.defineProperty,Ee=b((t,e)=>yi(t,"name",{value:e,configurable:!0}),"e$3");const Te=Ee((t,e)=>{if(e.type===void 0)return t;if(e.type.name==="Boolean"){if(t==="true"||t==="1")return e.type(!0);if(t==="false"||t==="0")return e.type(!1)}return e.type(t)},"convertType"),wi=new Set(["0","1","false","true"]),bi=Ee((t,e,n,a)=>{if(e.length===0||t.length===0)return{};const r=Ee((i,c)=>{const{argName:s,argValue:g,option:o}=yt(c,e,n,a),{lastOption:p}=i;return o&&X(o)&&g&&s?i.partial[s]=Te(g,o):i.lastName&&p&&X(p)&&wi.has(c)&&(i.partial[i.lastName]=Te(c,p)),{lastName:s,lastOption:o,partial:i.partial}},"getBooleanValue");return t.reduce(r,{partial:{}}).partial},"getBooleanValues");var $i=Object.defineProperty,Re=b((t,e)=>$i(t,"name",{value:e,configurable:!0}),"e$2");const Oi=new Set(["0","1","false","true"]),Ai=Re((t,e,n,a)=>{if(e.length===0||t.length===0)return t;const r=Re((i,c)=>{const{argValue:s,option:g}=yt(c,e,n,a),{lastOption:o}=i;if(o&&X(o)&&Oi.has(c)){const{args:u}=i;return{args:u.slice(0,-1)}}if(g&&X(g)&&s)return{args:i.args};const p=[...i.args];return p.push(c),{args:p,lastOption:g}},"removeBooleanArguments");return t.reduce(r,{args:[]}).args},"removeBooleanValues");var Ei=Object.defineProperty,Pi=b((t,e)=>Ei(t,"name",{value:e,configurable:!0}),"o$8");const De=Pi(t=>{const e=new Map;for(const n of t){const a=e.get(n.name);a?e.set(n.name,{...a,...n}):e.set(n.name,n)}return[...e.values()]},"mergeArguments");var Ci=Object.defineProperty,se=b((t,e)=>Ci(t,"name",{value:e,configurable:!0}),"o$7");const ki=se(t=>{if(t===void 0)return;const e=t.toLowerCase().trim();return e==="true"||e==="1"||e==="yes"||e==="on"},"transformBooleanEnv"),Ni=se((t,e)=>{if(!t.type)return e;if(e!==void 0){if(t.type===Boolean||typeof t.type=="function"&&t.type.name==="Boolean")return ki(e);if(t.type===Number||typeof t.type=="function"&&t.type.name==="Number"){const n=Number.parseFloat(e);return Number.isNaN(n)?void 0:n}return t.type===String||typeof t.type=="function"&&t.type.name==="String"?e:t.type(e)}},"transformEnvValue"),ji=se(t=>t.toLowerCase().replaceAll(/_./g,e=>e[1]?.toUpperCase()??e).replace(/^[A-Z]/,e=>e.toLowerCase()),"toCamelCase"),xi=se(t=>{if(!t||t.length===0)return{};const e={},n=q();for(const a of t){const r=n[a.name],i=Ni(a,r),c=i===void 0?a.defaultValue:i,s=ji(a.name);e[s]=c}return e},"processEnvVariables");var _i=Object.defineProperty,le=b((t,e)=>_i(t,"name",{value:e,configurable:!0}),"l$a");const Li=le(t=>{const e=new Map,n=new Map;for(const a of t)if(e.set(a.name,a),a.alias){const r=Array.isArray(a.alias)?a.alias:[a.alias];for(const i of r)n.set(i,a)}return{optionMapByAlias:n,optionMapByName:e}},"buildOptionMaps"),Ii=le((t,e,n,a)=>{const r=new di(t.name,t),{_all:i,positionals:c}=e,s=Object.keys(n).length>0?{...i,...n}:i;te in s&&delete s[te],r.argument=c?.[te]??[];const g=Object.keys(a).length>0;return r.options=g?{...s,...a}:s,r.env=xi(t.env),r},"prepareToolbox"),Si=le((t,e,n)=>{const a=t.options??[],r=a.length>0;let i=De(r?[...a,...n]:n);if(i.length>0){for(const o of i)if(o.multiple&&o.lazyMultiple)throw new Error(`Argument "${o.name}" cannot have both multiple and lazyMultiple options, please choose one.`)}t.argument&&(i=[{defaultOption:!0,description:t.argument?.description,group:"positionals",multiple:!0,name:te,type:t.argument?.type,typeLabel:t.argument?.typeLabel},...i]);let c,s;if(r){const{optionMapByAlias:o,optionMapByName:p}=Li(a);c=Ai(e,a,p,o),s=bi(e,a,p,o)}else c=e,s={};const g=pi(i,{argv:c,camelCase:!0,partial:!0,stopAtFirstUnknown:!0});return{arguments_:i,booleanValues:s,parsedArgs:g}},"processCommandArgs"),B=le(async(t,e,n)=>await t.execute(e),"executeCommand");var Ui=Object.defineProperty,Mi=b((t,e)=>Ui(t,"name",{value:e,configurable:!0}),"n$6");let Vi=class extends P{static{b(this,"s")}static{Mi(this,"CommandValidationError")}commandName;missingOptions;constructor(e,n){super(`Command "${e}" is missing required options: ${n.join(", ")}`,"COMMAND_VALIDATION_ERROR",{commandName:e,missingOptions:n}),this.name="CommandValidationError",this.commandName=e,this.missingOptions=n,this.hint=`Provide the following required options: ${n.join(", ")}`}};var Ti=Object.defineProperty,Ri=b((t,e)=>Ti(t,"name",{value:e,configurable:!0}),"t$5");const Be=Ri((t,e,n=!1)=>{const a=[];for(const r of t)if(!(!n&&!r.required)&&e[r.name]===void 0){if(r.type?.name==="Boolean"){e[r.name]=!1;continue}a.push(r)}return a},"listMissingArguments");var Di=Object.defineProperty,wt=b((t,e)=>Di(t,"name",{value:e,configurable:!0}),"n$5");const Bi=wt((t,e)=>e.includes(t)?!0:Math.abs(t.length-e.length)>t.length/2?!1:Ft(t,e)<=t.length/3,"isSimilar"),F=wt((t,e)=>{const n=t.toLowerCase();return e.filter(a=>Bi(a.toLowerCase(),n))},"findAlternatives");var zi=Object.defineProperty,ce=b((t,e)=>zi(t,"name",{value:e,configurable:!0}),"a$2");const Wi=ce((t,e)=>{const n=[];if(t._unknown&&t._unknown.forEach(a=>{const r=a.startsWith("--");let i=`Found unknown ${r?"option":"argument"} "${a}"`;if(r){const c=F(a.replace("--",""),(e.options??[]).map(s=>s.name));if(c.length>0){const[s,...g]=c.map(o=>`--${o}`);i+=g.length>0?`, did you mean ${s} or ${g.join(", ")}?`:`, did you mean ${s}?`}}n.push(i)}),n.length>0)throw new Error(n.join(`
`))},"validateUnknownOptions"),Fi=ce((t,e,n)=>{const a=n.__requiredOptions__?Be(n.__requiredOptions__,e,!0):Be(t,e,!1);if(a.length>0)throw new Vi(n.name,a.map(r=>r.name));e._unknown&&e._unknown.length>0&&!n.argument&&Wi(e,n)},"validateRequiredOptions"),qi=ce((t,e,n)=>{const a=n.__conflictingOptions__??t.filter(r=>r.conflicts!==void 0);if(a.length>0){const r=a.find(i=>Array.isArray(i.conflicts)?i.conflicts.some(c=>e[c]!==void 0)&&e[i.name]!==void 0:e[i.conflicts]!==void 0&&e[i.name]!==void 0);if(r)throw new Ze(r.name,typeof r.conflicts=="string"?r.conflicts:r.conflicts?.[0]??"unknown")}},"validateConflictingOptions"),Gi=ce(t=>{if(!Array.isArray(t.options))return;const e=new Map,n=new Map;for(const r of t.options){if(r.name){const i=e.get(r.name)??[];i.push(r),e.set(r.name,i)}if(typeof r.alias=="string"&&r.alias.length>0){const i=n.get(r.alias)??[];i.push(r),n.set(r.alias,i)}else if(Array.isArray(r.alias)){for(const i of r.alias)if(i.length>0){const c=n.get(i)??[];c.push(r),n.set(i,c)}}}const a=[];for(const[r,i]of e)i.length>1&&a.push(`Duplicate option name "${r}" in command "${t.name}": ${JSON.stringify(i)}`);for(const[r,i]of n)i.length>1&&a.push(`Duplicate option alias "-${r}" used by options ${i.map(c=>`"${c.name}"`).join(", ")} in command "${t.name}"`);if(a.length>0)throw new Error(a.join(`
`))},"validateDuplicateOptions");var Hi=Object.defineProperty,Ce=b((t,e)=>Hi(t,"name",{value:e,configurable:!0}),"r$7");const Ki=Ce((t,e)=>{if(e.length===0)return{argv:[],commandPath:void 0};const n=[];for(let a=1;a<=e.length;a+=1){const r=e[a-1];if(r===void 0)break;n.push(r);const i=n.join(" ");if(t.has(i))return{argv:e.slice(a),commandPath:[...n]}}return{argv:e,commandPath:void 0}},"parseNestedCommand"),J=Ce(t=>t.join(" "),"getCommandPathKey"),Yi=Ce((t,e)=>e&&e.length>0?[...e,t]:[t],"getFullCommandPath");var Ji=Object.defineProperty,Zi=b((t,e)=>Ji(t,"name",{value:e,configurable:!0}),"p$4"),Qi=Object.defineProperty,bt=Zi((t,e)=>Qi(t,"name",{value:e,configurable:!0}),"e"),Xi=Object.defineProperty,ea=bt((t,e)=>Xi(t,"name",{value:e,configurable:!0}),"E");const $t=String.raw,ze=$t`\p{Emoji}(?:\p{EMod}|[\u{E0020}-\u{E007E}]+\u{E007F}|\uFE0F?\u20E3?)`,ta=ea(()=>new RegExp($t`\p{RI}{2}|(?)${ze}(?:\u200D${ze})*`,"gu"),"default");var na=Object.defineProperty,ia=bt((t,e)=>na(t,"name",{value:e,configurable:!0}),"p");Object.freeze(new Map([[0,0],[1,22],[2,22],[3,23],[4,24],[7,27],[8,28],[9,29],[30,39],[31,39],[32,39],[33,39],[34,39],[35,39],[36,39],[37,39],[40,49],[41,49],[42,49],[43,49],[44,49],[45,49],[46,49],[47,49],[90,39]]));const G=ta(),aa=/[-_./\s]+/g,Q=/(\u001B\[[0-9;]*[a-z])/i,We=new RegExp("\\p{Script=Arabic}","u"),oa=new RegExp("\\p{Script=Bengali}","u"),z=new RegExp("\\p{Script=Cyrillic}","u"),ra=new RegExp("\\p{Script=Devanagari}","u"),sa=new RegExp("\\p{Script=Ethiopic}","u"),ge=new RegExp("\\p{Script=Greek}","u"),la=new RegExp("\\p{Script=Greek}+|\\p{Script=Latin}+|[^\\p{Script=Greek}\\p{Script=Latin}]+","gu"),ca=new RegExp("\\p{Script=Gujarati}","u"),ua=new RegExp("\\p{Script=Gurmukhi}","u"),Fe=new RegExp("\\p{Script=Hangul}","u"),qe=new RegExp("\\p{Script=Hebrew}","u"),pa=new RegExp("\\p{Script=Hiragana}","u"),Ge=new RegExp("\\p{Script=Han}","u"),fa=new RegExp("\\p{Script=Kannada}","u"),ha=new RegExp("\\p{Script=Katakana}","u"),da=new RegExp("\\p{Script=Khmer}","u"),ma=new RegExp("\\p{Script=Lao}","u"),_=new RegExp("\\p{Script=Latin}","u"),ga=new RegExp("\\p{Script=Malayalam}","u"),va=new RegExp("\\p{Script=Myanmar}","u"),ya=new RegExp("\\p{Script=Oriya}","u"),wa=new RegExp("\\p{Script=Sinhala}","u"),ba=new RegExp("\\p{Script=Tamil}","u"),$a=new RegExp("\\p{Script=Telugu}","u"),Oa=new RegExp("\\p{Script=Thai}","u"),Aa=new RegExp("\\p{Script=Tibetan}","u"),He=/[\u02BB\u02BC\u0027]/u,Ea=ia(t=>t.replace(G,""),"stripEmoji");var Pa=Object.defineProperty,Ot=b((t,e)=>Pa(t,"name",{value:e,configurable:!0}),"i$6"),Ca=Object.defineProperty,At=Ot((t,e)=>Ca(t,"name",{value:e,configurable:!0}),"r"),ka=Object.defineProperty,Na=At((t,e)=>ka(t,"name",{value:e,configurable:!0}),"c");let Et=class{static{b(this,"l")}static{Ot(this,"y")}static{At(this,"s")}static{Na(this,"LRUCache")}capacity;cache;keyOrder;constructor(e){this.capacity=e,this.cache=new Map,this.keyOrder=[]}get(e){if(this.cache.has(e))return this.keyOrder=this.keyOrder.filter(n=>n!==e),this.keyOrder.push(e),this.cache.get(e)}has(e){return this.cache.has(e)}set(e,n){if(this.cache.has(e))this.keyOrder=this.keyOrder.filter(a=>a!==e);else if(this.cache.size>=this.capacity){const a=this.keyOrder.shift();a!==void 0&&this.cache.delete(a)}this.cache.set(e,n),this.keyOrder.push(e)}delete(e){this.cache.delete(e),this.keyOrder=this.keyOrder.filter(n=>n!==e)}clear(){this.cache.clear(),this.keyOrder=[]}size(){return this.cache.size}};var ja=Object.defineProperty,xa=b((t,e)=>ja(t,"name",{value:e,configurable:!0}),"r$5"),_a=Object.defineProperty,La=xa((t,e)=>_a(t,"name",{value:e,configurable:!0}),"a"),Ia=Object.defineProperty,Sa=La((t,e)=>Ia(t,"name",{value:e,configurable:!0}),"s");const Ua=Sa((t,e)=>typeof t!="string"||t===""?"":(e?.locale?t[0].toLocaleLowerCase(e.locale):t[0].toLowerCase())+t.slice(1),"lowerFirst");var Ma=Object.defineProperty,Va=b((t,e)=>Ma(t,"name",{value:e,configurable:!0}),"S"),Ta=Object.defineProperty,ue=Va((t,e)=>Ta(t,"name",{value:e,configurable:!0}),"m");const Ra=qt(import.meta.url),Z=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,Da=ue(t=>{if(typeof Z<"u"&&Z.versions&&Z.versions.node){const[e,n]=Z.versions.node.split(".").map(Number);if(e>22||e===22&&n>=3||e===20&&n>=16)return Z.getBuiltinModule(t)}return Ra(t)},"__cjs_getBuiltinModule"),{stripVTControlCharacters:Ba}=Da("node:util");var za=Object.defineProperty,Wa=ue((t,e)=>za(t,"name",{value:e,configurable:!0}),"g");const ve=new Et(1e3),Fa=Wa(t=>{const e=t.join("");if(ve.has(e))return ve.get(e);const n=t.map(r=>r.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`)).join("|"),a=new RegExp(n,"g");return ve.set(e,a),a},"getSeparatorsRegex");var qa=Object.defineProperty,Ga=ue((t,e)=>qa(t,"name",{value:e,configurable:!0}),"t");const Ha=Ga(t=>{const e=[];let n=0,a;for(G.lastIndex=0;(a=G.exec(t))!==null;)a.index>n&&e.push(t.slice(n,a.index)),e.push(a[0]),n=G.lastIndex;return n<t.length&&e.push(t.slice(n)),e.filter(Boolean)},"splitByEmoji");var Ka=Object.defineProperty,E=ue((t,e)=>Ka(t,"name",{value:e,configurable:!0}),"u");const Pt=new Uint8Array(128),Ct=new Uint8Array(128),kt=new Uint8Array(128);for(let t=0;t<128;t++)Pt[t]=t>=65&&t<=90?1:0,Ct[t]=t>=97&&t<=122?1:0,kt[t]=t>=48&&t<=57?1:0;const ye=E(t=>Pt[t],"isUpper"),Ke=E(t=>Ct[t],"isLower"),we=E(t=>kt[t],"isDigit"),U=E((t,e,n,a,r)=>{if(t.length===0)return[];let i=!1;for(const u of Object.values(e))if(u(t[0])){i=!0;break}if(!i&&!n)return[t];const c=[...t],s=[];let g=c[0],o="other";for(const[u,l]of Object.entries(e))if(l(c[0])){o=u;break}let p=n&&a?c[0]===c[0].toLocaleUpperCase(a):!1;for(let u=1;u<c.length;u++){const l=c[u];let d="other";for(const[$,C]of Object.entries(e))if(C(l)){d=$;break}const y=n&&a?l===l.toLocaleUpperCase(a):!1;let v=!1;r?v=r(o,d,p,y,l,u,c):(o!==d&&o!=="other"&&d!=="other"&&(v=!0),n&&d!=="other"&&!p&&y&&(v=!0)),v?(s.push(g),g=l):g+=l,o=d,n&&(p=y)}return g&&g.length>0&&s.push(g),s.length>0?s:[t]},"handleScriptTransitions"),Nt=E((t,e=new Set)=>{if(t.length===0)return[];if(t.toUpperCase()===t)return[t];let n=0;const a=[],r=t.length;for(let i=1;i<r;i++){const c=t.codePointAt(i-1),s=t.codePointAt(i);if(e.size>0){for(const d of e)if(t.startsWith(d,n)){a.push(d),n+=d.length,i=n-1;break}if(i<n)continue}const g=c&&c<128&&ye(c),o=s&&s<128&&ye(s),p=c&&c<128&&Ke(c),u=c&&c<128&&we(c),l=s&&s<128&&we(s);if(p&&o){a.push(t.slice(n,i)),n=i;continue}if(u&&!l||!u&&l){a.push(t.slice(n,i)),n=i;continue}if(l&&!u){let d=!1,y=!1;if(i+1<r){const v=t.codePointAt(i+1);d=v&&v<128&&ye(v),y=v&&v<128&&we(v)}if(!y&&d){a.push(t.slice(n,i),t.slice(i,i+1)),n=i+1;continue}}if(i+1<r){const d=t.codePointAt(i+1),y=d&&d<128&&Ke(d);if(g&&o&&y){const v=t.slice(n,i+1);e.has(v)||(a.push(t.slice(n,i)),n=i)}}}return n<r&&a.push(t.slice(n)),a.filter(i=>i!=="")},"splitCamelCaseFast"),jt=E((t,e,n)=>{if(t.length===0)return[];const a=t===t.toLocaleUpperCase(e);if(e.startsWith("de")){if(!a&&t.replaceAll("ß","SS")===t.toLocaleUpperCase(e))return[t];const o=[...t],p=o.length,u=[];let l=o[0],d=o[0]===o[0].toLocaleUpperCase(e),y=d,v=d?0:-1;for(let $=1;$<p;$++){const C=o[$],k=C===C.toLocaleUpperCase(e);if(k===d)l+=C;else if(k)l&&l.length>0&&(u.push(l),l=C),y=!0,v=$;else{if(y&&$-v>1){const f=o[$-1],h=l.slice(0,-1);h&&h.length>0&&u.push(h),l=f+C}else l+=C;y=!1,v=-1}d=k}return l&&l.length>0&&u.push(l),u}if(e.startsWith("uk")||e.startsWith("ru")||e.startsWith("bg")||e.startsWith("sr")||e.startsWith("mk")||e.startsWith("be")){if(!z.test(t)&&!_.test(t))return[t];const o=[...t],p=o.length,u=[];let l=o[0],d=z.test(o[0])?1:_.test(o[0])?2:0,y=o[0]===o[0].toLocaleUpperCase(e);for(let $=1;$<p;$++){const C=o[$],k=z.test(C)?1:_.test(C)?2:0,f=C===C.toLocaleUpperCase(e);d!==k&&(d===1||d===2)&&(k===1||k===2)||k===d&&!y&&f?(u.push(l),l=C):l+=C,d=k,y=f}l&&l.length>0&&u.push(l);const v=[];for(let $=0;$<u.length;$++)$<u.length-1&&u[$].length===1&&_.test(u[$])&&z.test(u[$+1][0])?(v.push(u[$]+u[$+1]),$+=1):v.push(u[$]);return v}if(e.startsWith("el")){if(!ge.test(t)&&!_.test(t))return[t];const o=t.match(la)??[t],p=[];if(o.length===1){const u=o[0];if(!u||!ge.test(u[0])||u.length===1)return[u||t]}for(const u of o){if(!u)continue;if(!ge.test(u[0])||u.length===1){p.push(u);continue}const l=u.length;let d=u[0],y=u[0]===u[0].toLocaleUpperCase(e);for(let v=1;v<l;v++){const $=u[v],C=$===$.toLocaleUpperCase(e);!y&&C?(p.push(d),d=$):d+=$,y=C}d&&p.push(d)}return p}if(e.startsWith("ja")||e.startsWith("ko")){const o=e.startsWith("ja"),p=o?{hiragana:E(l=>pa.test(l),"hiragana"),kanji:E(l=>Ge.test(l),"kanji"),katakana:E(l=>ha.test(l),"katakana"),latin:E(l=>_.test(l),"latin")}:{hangul:E(l=>Fe.test(l),"hangul"),latin:E(l=>_.test(l),"latin")},u=new Set(["が","で","と","に","の","は","へ","も","や","を"]);if(o){const l=U(t,p,!1,e,(y,v)=>y==="hiragana"&&v==="katakana"||y==="katakana"&&v==="hiragana"||y==="hiragana"&&v==="latin"||y==="katakana"&&v==="latin"||y==="kanji"&&v==="latin"||y==="latin"&&(v==="hiragana"||v==="katakana"||v==="kanji")),d=[];for(const y of l)y.length===1&&u.has(y)&&d.length>0?d[d.length-1]+=y:d.push(y);return d.length>0?d:[t]}return U(t,p,!1,e,(l,d)=>l==="hangul"&&d==="latin"||l==="latin"&&d==="hangul")}if(e.startsWith("sl")){const o=[...t],p=o.length,u=[];let l=o[0],d=o[0]===o[0].toLocaleUpperCase(e);for(let y=1;y<p;y++){const v=o[y],$=v===v.toLocaleUpperCase(e),C=/[ČŠŽĐ]/i.test(v),k=y<p-1&&o[y+1]===o[y+1].toLocaleUpperCase(e);!d&&$||C&&k?(u.push(l),l=v,C&&k&&(u.push(l),l="")):l+=v,d=$}return l&&l.length>0&&u.push(l),u}if(e.startsWith("zh"))return U(t,{han:E(o=>Ge.test(o),"han"),latin:E(o=>_.test(o),"latin")},!1,e);if(["ar","fa","he","ur"].includes(e.split("-")[0])){const o=E(p=>qe.test(p)||We.test(p),"isRtlChar");return U(t,{latin:E(p=>_.test(p),"latin"),rtl:E(p=>o(p),"rtl")},!1,e)}if(["am","bn","gu","hi","km","kn","lo","ml","mr","ne","or","pa","si","ta","te","th"].includes(e.split("-")[0])){const o=E(p=>ra.test(p)||oa.test(p)||ca.test(p)||ua.test(p)||fa.test(p)||ba.test(p)||$a.test(p)||ga.test(p)||wa.test(p)||Oa.test(p)||ma.test(p)||Aa.test(p)||va.test(p)||sa.test(p)||da.test(p)||ya.test(p),"isIndicChar");return U(t,{indic:E(p=>o(p),"indic"),latin:E(p=>_.test(p),"latin")},!1,e)}if(["be","bg","ru","sr","uk"].includes(e))return U(t,{cyrillic:E(o=>z.test(o),"cyrillic"),latin:E(o=>_.test(o),"latin")},!0,e);if(["ar","fa","he"].includes(e))return U(t,{latin:E(o=>_.test(o),"latin"),rtl:E(o=>qe.test(o)||We.test(o),"rtl")},!1,e);if(e.startsWith("ko"))return U(t,{hangul:E(o=>Fe.test(o),"hangul"),latin:E(o=>_.test(o),"latin")},!1,e);if(e.startsWith("uz")){if(!z.test(t)&&!_.test(t))return[t];const o=[...t],p=o.length,u=[];let l=o[0],d=o[0]===o[0].toLocaleUpperCase(e);for(let y=1;y<p;y++){const v=o[y],$=v===v.toLocaleUpperCase(e);if(He.test(v)||He.test(o[y-1])){l+=v;continue}!d&&$?(u.push(l),l=v):l+=v,d=$}return l&&l.length>0&&u.push(l),u}const r=[...t],i=r.length,c=[];let s=r[0],g=r[0]===r[0].toLocaleUpperCase(e);for(const o of n)if(t.startsWith(o)){c.push(o),s=r[o.length],g=s===s.toLocaleUpperCase(e);break}for(let o=1;o<i;o++){const p=r[o],u=p===p.toLocaleUpperCase(e);let l=!1;for(const d of n)if(t.startsWith(d,o)){c.push(s,d),o+=d.length-1,s="",l=!0;break}l||(!g&&u?(c.push(s),s=p):s+=p,g=u)}return s&&c.push(s),c},"splitCamelCaseLocale"),Ya=E((t,e,n)=>{const a=[],r=Q.test(t)?t.split(Q).filter(Boolean):[t];for(const i of r)if(Q.test(i))a.push(i);else{const c=G.test(i)?Ha(i).filter(Boolean):[i];for(const s of c)if(G.test(s))a.push(s);else if(e){const g=e.toLowerCase().split("-")[0];a.push(...jt(s,g,n))}else a.push(...Nt(s,n))}return a},"processTextWithAnsiEmoji"),Ja=E((t,e={})=>{if(!t||typeof t!="string")return[];const{handleAnsi:n=!1,handleEmoji:a=!1,knownAcronyms:r=[],locale:i,normalize:c=!1,separators:s,stripAnsi:g=!1,stripEmoji:o=!1}=e,p=new Set([...r].sort((v,$)=>$.length-v.length));let u=t;g&&(u=Ba(u)),o&&(u=Ea(u));const l=Array.isArray(s)?Fa(s):s instanceof RegExp?s:aa,d=u.split(l).filter(Boolean);let y=[];for(const v of d)n||a?y.push(...Ya(v,i,p)):i?y.push(...jt(v,i,p)):y.push(...Nt(v,p));return c&&(y=y.map(v=>p.has(v)?v:i&&v===v.toLocaleUpperCase(i)?v[0]+v.slice(1).toLocaleLowerCase(i):v.toUpperCase()===v&&!p.has(v)?v.slice(0,1)+v.slice(1).toLowerCase():v)),y},"splitByCase");var Za=Object.defineProperty,Qa=b((t,e)=>Za(t,"name",{value:e,configurable:!0}),"r$4"),Xa=Object.defineProperty,eo=Qa((t,e)=>Xa(t,"name",{value:e,configurable:!0}),"o"),to=Object.defineProperty,no=eo((t,e)=>to(t,"name",{value:e,configurable:!0}),"s");const io=no((t,e)=>typeof t!="string"||t===""?"":(e?.locale?t[0].toLocaleUpperCase(e.locale):t[0].toUpperCase())+t.slice(1),"upperFirst");var ao=Object.defineProperty,oo=b((t,e)=>ao(t,"name",{value:e,configurable:!0}),"r$3"),ro=Object.defineProperty,so=oo((t,e)=>ro(t,"name",{value:e,configurable:!0}),"r"),lo=Object.defineProperty,co=so((t,e)=>lo(t,"name",{value:e,configurable:!0}),"n");const uo=co((t,e)=>`${t}::${e?.joiner??""}::${e?.locale??""}::${e?.knownAcronyms?.join(",")??""}::${e?.normalize?"true":"false"}`,"generateCacheKey");var po=Object.defineProperty,fo=b((t,e)=>po(t,"name",{value:e,configurable:!0}),"i$4"),ho=Object.defineProperty,mo=fo((t,e)=>ho(t,"name",{value:e,configurable:!0}),"a"),go=Object.defineProperty,vo=mo((t,e)=>go(t,"name",{value:e,configurable:!0}),"l");const yo=vo((t,e)=>{const{length:n}=t;if(n===0)return"";if(n===1)return t[0];const a=[];let r="",i="";for(let c=0;c<n;c++){const s=t[c];if(Q.test(s)){r?(a.push(r+i+s),r="",i=""):(a.length>0&&a.push(e),r=s);continue}r?(i&&(i+=e),i+=s):(a.length>0&&a.push(e),a.push(s))}return a.join("")},"joinSegments");var wo=Object.defineProperty,bo=b((t,e)=>wo(t,"name",{value:e,configurable:!0}),"r$2"),$o=Object.defineProperty,Oo=bo((t,e)=>$o(t,"name",{value:e,configurable:!0}),"a"),Ao=Object.defineProperty,Eo=Oo((t,e)=>Ao(t,"name",{value:e,configurable:!0}),"t");const Po=Eo(t=>t.replaceAll(/(?<![a-zß])SS(?![a-z])/g,"ß"),"normalizeGermanEszett");var Co=Object.defineProperty,ko=b((t,e)=>Co(t,"name",{value:e,configurable:!0}),"l$2"),No=Object.defineProperty,jo=ko((t,e)=>No(t,"name",{value:e,configurable:!0}),"n"),xo=Object.defineProperty,_o=jo((t,e)=>xo(t,"name",{value:e,configurable:!0}),"l");const Lo=new Et(1e3),xt=_o((t,e)=>{if(typeof t!="string"||!t)return"";const n=e?.cache??!1,a=e?.cacheStore??Lo;let r;if(n&&(r=uo(t,e)),n&&r&&a.has(r))return a.get(r);let i=!0;const c=yo(Ja(t,{handleAnsi:e?.handleAnsi,handleEmoji:e?.handleEmoji,knownAcronyms:e?.knownAcronyms,locale:e?.locale,normalize:e?.normalize,separators:void 0,stripAnsi:e?.stripAnsi,stripEmoji:e?.stripEmoji}).map(s=>e?.handleAnsi&&Q.test(s)?s:(s=e?.locale?.startsWith("de")?Po(s):s,s=e?.locale?s.toLocaleLowerCase(e.locale):s.toLowerCase(),i?(i=!1,Ua(s,e)):io(s,e))),"");return n&&r&&a.set(r,c),c},"camelCase");var Io=Object.defineProperty,pe=b((t,e)=>Io(t,"name",{value:e,configurable:!0}),"a");const So=pe(t=>{t.options?.forEach(e=>{e.__camelCaseName__=xt(e.name)})},"processOptionNames"),Uo=pe(t=>{if(!Array.isArray(t.options)||t.options.length===0)return;const e=new Set;for(const a of t.options)e.add(a.name);const n=[];for(const a of t.options)if(a.name.startsWith("no-")){const r=a.name.replace("no-","");if(!e.has(r)){if(a.type!==Boolean)throw new Error(`Cannot add negated option "${a.name}" to command "${t.name}" because it is not a boolean.`);const i={...a,defaultValue:a.defaultValue===void 0?!0:!a.defaultValue,name:r};n.push(i),e.add(r)}}n.length>0&&t.options.push(...n)},"addNegatableOptions"),Mo=pe((t,e)=>{if(!e.options||e.options.length===0)return;const n=t.options,a=new Map;for(const i of e.options)if(i.name.startsWith("no-")){const c=xt(i.name);a.set(c,i)}const r=Object.keys(n).filter(i=>a.has(i));if(r.length!==0)for(const i of r){const c=i.charAt(2);if(!c)continue;const s=c.toLowerCase()+i.slice(3),g=a.get(i);g&&(g.__negated__=!0),n[s]=!n[i],Reflect.deleteProperty(n,i)}},"mapNegatableOptions"),Vo=pe((t,e)=>{if(!e.options||e.options.length===0)return;const n=new Map;for(const r of e.options)r.__camelCaseName__&&r.__negated__===void 0&&r.implies!==void 0&&n.set(r.__camelCaseName__,r);if(n.size===0)return;const a=t.options;for(const r of Object.keys(a)){const i=n.get(r);if(i?.implies){const c=i.implies;for(const[s,g]of Object.entries(c))a[s]===void 0&&(a[s]=g)}}},"mapImpliedOptions");var To=Object.defineProperty,fe=b((t,e)=>To(t,"name",{value:e,configurable:!0}),"e$1");const Ro=fe(()=>!!process.versions.electron,"isElectronApp"),Do=fe(()=>Ro()&&!process.defaultApp,"isBundledElectronApp"),Bo=fe(()=>Do()?0:1,"getProcessArgvBinIndex"),zo=fe(t=>t.slice(Bo()+1),"hideBin");var Wo=Object.defineProperty,_t=b((t,e)=>Wo(t,"name",{value:e,configurable:!0}),"s$2");const Fo=" ",qo=_t((t,e)=>t===e?!0:t.length!==e.length?!1:t.every((n,a)=>n===e[a]),"equals"),Go=_t(t=>{if(typeof t=="string")return t.split(Fo);const e=Ae();return qo(t,e)?zo(t):t},"parseRawCommand");var Ho=Object.defineProperty,be=b((t,e)=>Ho(t,"name",{value:e,configurable:!0}),"r");const Ko=be(t=>{const e=be(i=>{t.error(`Uncaught exception: ${i.message||i}`),i.stack&&t.error(i.stack),ie(1)},"uncaughtExceptionHandler"),n=be((i,c)=>{if(i instanceof Error)t.error(`Promise rejection: ${i.message||i}`),i.stack&&t.error(i.stack);else{let s;if(typeof i=="string")s=i;else try{s=JSON.stringify(i)}catch{s=String(i)}t.error(`Promise rejection: ${s}`)}ie(1)},"unhandledRejectionHandler"),a=je("uncaughtException",e),r=je("unhandledRejection",n);return()=>{a(),r()}},"registerExceptionHandler");var Yo=Object.defineProperty,K=b((t,e)=>Yo(t,"name",{value:e,configurable:!0}),"e");const ae=100,ke=K((t,e)=>{if(typeof t!="string"||t.trim().length===0)throw new P(`${e} must be a non-empty string`,"INVALID_INPUT",{fieldName:e,value:t});return t.trim()},"validateNonEmptyString"),Ye=K((t,e)=>{if(!Array.isArray(t)||!t.every(n=>typeof n=="string"))throw new P(`${e} must be an array of strings`,"INVALID_INPUT",{fieldName:e,value:t});return t},"validateStringArray");K((t,e)=>{if(typeof t!="function")throw new P(`${e} must be a function`,"INVALID_INPUT",{fieldName:e,value:t});return t},"validateFunction");const $e=K((t,e)=>{if(typeof t!="object"||t===null)throw new P(`${e} must be an object`,"INVALID_INPUT",{fieldName:e,value:t});return t},"validateObject"),ee=K(t=>{const e=ke(t,"Command name");if(e.length>ae)throw new P(`Command name is too long (maximum ${ae} characters)`,"INVALID_COMMAND_NAME",{commandName:e,length:e.length});if(e.includes("..")||e.includes("/")||e.includes("\\")||e.includes(";")||e.includes("|")||e.includes("&"))throw new P(`Command name "${e}" contains invalid characters`,"INVALID_COMMAND_NAME",{commandName:e});if(!/^[a-z][\w-]*$/i.test(e))throw new P(`Command name "${e}" must start with a letter and contain only letters, numbers, hyphens, and underscores`,"INVALID_COMMAND_NAME",{commandName:e});return e},"validateCommandName");K(t=>{const e=ke(t,"Plugin name");if(e.length>ae)throw new P(`Plugin name is too long (maximum ${ae} characters)`,"INVALID_PLUGIN_NAME",{length:e.length,pluginName:e});if(e.includes("..")||e.includes("/")||e.includes("\\")||e.includes(";")||e.includes("|")||e.includes("&"))throw new P(`Plugin name "${e}" contains invalid characters`,"INVALID_PLUGIN_NAME",{pluginName:e});if(!/^[a-z][\w-]*$/i.test(e))throw new P(`Plugin name "${e}" must start with a letter and contain only letters, numbers, hyphens, and underscores`,"INVALID_PLUGIN_NAME",{pluginName:e});return e},"validatePluginName");var Jo=Object.defineProperty,he=b((t,e)=>Jo(t,"name",{value:e,configurable:!0}),"s");const Zo=new Set([`
`,"\r"," ","\0",'"',"$","&","'","(",")",";","<",">","[","\\","]","`","{","|","}"]),Qo=he(t=>{if(typeof t!="string")throw new TypeError("Argument must be a string");if(t.length>1e4)throw new Error("Argument is too long (maximum 10000 characters)");for(const e of t)if(Zo.has(e))throw new Error(`Argument contains dangerous character: ${e}`);return t.trim()},"sanitizeArgument"),Je=he(t=>{if(!Array.isArray(t))throw new TypeError("Arguments must be an array");if(t.length>100)throw new Error("Too many arguments (maximum 100)");return t.map(e=>Qo(e))},"sanitizeArguments");he(t=>{if(typeof t!="string")throw new TypeError("Path must be a string");const e=t.trim();if(e.includes("..")||e.includes("../")||e.includes("..\\"))throw new Error("Path contains directory traversal sequences");if(e.startsWith("/")||/^[A-Z]:/i.test(e))throw new Error("Absolute paths are not allowed");if(e.length>1e3)throw new Error("Path is too long");return e},"validateSafePath");class vr{static{b(this,"RateLimiter")}static{he(this,"RateLimiter")}attempts=new Map;maxAttempts;windowMs;constructor(e=5,n=6e4){if(e<=0||n<=0)throw new Error("maxAttempts and windowMs must be positive numbers");this.maxAttempts=e,this.windowMs=n}checkLimit(e){const n=Date.now(),a=this.attempts.get(e);return!a||n>a.resetTime?(this.attempts.set(e,{count:1,resetTime:n+this.windowMs}),this.cleanup(n),!0):a.count>=this.maxAttempts?!1:(a.count+=1,!0)}reset(e){this.attempts.delete(e)}cleanup(e){for(const[n,a]of this.attempts.entries())e>a.resetTime&&this.attempts.delete(n)}}var Xo=Object.defineProperty,ne=b((t,e)=>Xo(t,"name",{value:e,configurable:!0}),"_");const er=/^-([^\d-])$/,tr=/^--(\S+)/,nr=/^-([^\d-]{2,})$/,Oe=ne(t=>er.test(t)||tr.test(t)||nr.test(t),"isOption");class yr{static{b(this,"Cli")}static{ne(this,"Cli")}#t;#e;#o;#c;#g;#u;#v;#r;#n;#i;#p;#s;#l;#f=!1;#y;#w=!1;#h;#d;#m;#A(){return this.#h===void 0&&(this.#h=[...this.#i.keys()]),this.#h}#b(){return this.#d===void 0&&(this.#d=[...this.#n.keys()]),this.#d}#a(){return this.#m===void 0&&(this.#m=[...this.#A(),...this.#b()]),this.#m}#E(){this.#h=void 0,this.#d=void 0,this.#m=void 0}#$(){if(this.#o===void 0){const e=Go(this.#e.argv);this.#o=Je(e),this.#P()}return this.#o}#P(){if(!this.#o)return;const e=q();let n=!1;for(const a of this.#o){if(a==="--quiet"||a==="-q"){e.CEREBRO_OUTPUT_LEVEL=String(Rt),n=!0;break}if(a==="--verbose"||a==="-v"){e.CEREBRO_OUTPUT_LEVEL=String(Dt),n=!0;break}if(a==="--debug"||a==="-vvv"){e.CEREBRO_OUTPUT_LEVEL=String(W),n=!0;break}}n||(e.CEREBRO_OUTPUT_LEVEL=Object.hasOwn(e,"DEBUG")?String(W):String(Ne))}#C(){this.#w||(this.#y=Ko(this.#t),this.#w=!0)}#O(e,n,a,r){this.#t.debug(`command '${r}' found, parsing command args: ${n.join(", ")}`);const{arguments_:i,booleanValues:c,parsedArgs:s}=Si(e,n,Vt),g=Object.keys(c).length>0?{...s,_all:{...s._all,...c}}:s;Fi(i,g,e);const o=Ii(e,s,c,a);o.runtime=this,o.argv=this.#$();const p=e.options&&e.options.length>0;if(p&&e.options){const u=e.options.filter(l=>l.name.startsWith("no-"));for(const l of u){const d=l.name.replace("no-",""),y=`--${l.name}`,v=`--${d}`,$=n.includes(y),C=n.includes(v);if($&&C)throw new Ze(d,l.name)}}return p&&(Mo(o,e),Vo(o,e)),qi(i,o.options,e),q().CEREBRO_OUTPUT_LEVEL===String(W)&&(this.#t.debug("command options parsed from options:"),this.#t.debug(JSON.stringify(o.options,null,2)),this.#t.debug("command argument parsed from argument:"),this.#t.debug(JSON.stringify(o.argument,null,2))),{arguments_:i,booleanValues:c,commandArgs:g,parsedArgs:s,toolbox:o}}constructor(e,n={}){if(typeof e!="string"||e.trim().length===0)throw new P("CLI name must be a non-empty string","INVALID_INPUT",{cliName:e});this.#g=e.trim();const a=n.argv??Ae(),r=n.cwd??Bt();if(this.#e={...n,argv:a,cwd:r},this.#e.argv&&!Array.isArray(this.#e.argv))throw new P("CLI argv option must be an array of strings","INVALID_INPUT",{argv:this.#e.argv});if(this.#e.cwd&&typeof this.#e.cwd!="string")throw new P("CLI cwd option must be a string","INVALID_INPUT",{cwd:this.#e.cwd});if(this.#e.packageName&&typeof this.#e.packageName!="string")throw new P("CLI packageName option must be a string","INVALID_INPUT",{packageName:this.#e.packageName});if(this.#e.packageVersion&&typeof this.#e.packageVersion!="string")throw new P("CLI packageVersion option must be a string","INVALID_INPUT",{packageVersion:this.#e.packageVersion});const i=q();if(i.CEREBRO_OUTPUT_LEVEL=String(Ne),typeof this.#e.logger=="object"){const c=["debug","error","info","log","warn"],s=[],g=this.#e.logger;for(const o of c)typeof g[o]!="function"&&s.push(o);if(s.length>0)throw new P(`Logger object is missing required methods: ${s.join(", ")}`,"INVALID_INPUT",{logger:this.#e.logger,missingMethods:s});this.#t=this.#e.logger}else this.#t={...console,debug:ne((...c)=>{i.CEREBRO_OUTPUT_LEVEL===String(W)&&console.debug(...c)},"debug")};this.#u=this.#e.packageVersion,this.#v=this.#e.packageName,this.#c=this.#e.cwd,this.#s="help",this.#l={},this.#n=new Map,this.#i=new Map,this.#p=new Map}setCommandSection(e){return this.#l=e,this}getCommandSection(){return this.#l.header||(this.#l.header=`${this.#g}${this.#u?` v${this.#u}`:""}`),this.#l}setDefaultCommand(e){return this.#s=e,this}get defaultCommand(){return this.#s}addCommand(e){$e(e,"Command"),ee(e.name),e.alias&&(typeof e.alias=="string"?ee(e.alias):Ye(e.alias,"Command alias").forEach(r=>ee(r))),e.argument&&$e(e.argument,"Command argument"),e.options&&$e(e.options,"Command options"),e.commandPath&&(Ye(e.commandPath,"Command commandPath"),e.commandPath.forEach(r=>{ee(r)}));const n=Yi(e.name,e.commandPath),a=J(n);if(this.#i.has(a))throw new P(`Command with path "${a}" already exists`,"DUPLICATE_COMMAND",{commandName:e.name,commandPath:e.commandPath});if(this.#n.has(e.name)&&!e.commandPath)throw new P(`Command with name "${e.name}" already exists`,"DUPLICATE_COMMAND",{commandName:e.name});if(e.options)for(const r of e.options)rn(r);if(Gi(e),Uo(e),So(e),e.options&&(e.__conflictingOptions__=e.options.filter(r=>r.conflicts!==void 0),e.__requiredOptions__=e.options.filter(r=>r.required===!0)),this.#n.set(e.name,e),this.#i.set(a,n),this.#p.set(a,e),this.#E(),e.alias!==void 0){const r=typeof e.alias=="string"?[e.alias]:e.alias;for(const i of r){if(q().CEREBRO_OUTPUT_LEVEL===String(W)&&this.#t.debug("adding alias",i),this.#n.has(i))throw new P(`Command alias "${i}" conflicts with existing command`,"DUPLICATE_COMMAND",{alias:i,commandName:e.name});this.#n.set(i,e)}}return this}addPlugin(e){return this.getPluginManager().register(e),this}getPluginManager(){return this.#r?this.#r:(this.#r=new en(this.#t),this.#r.register({description:"Attaches the logger to the toolbox",execute:ne(e=>{e.logger=this.#t},"execute"),name:"logger"}),this.#r)}getCliName(){return this.#g}getPackageVersion(){return this.#u}getPackageName(){return this.#v}getCommands(){return this.#n}getCwd(){return this.#c}dispose(){this.#y?.()}async run(e={}){const{autoDispose:n=!0,shouldExitProcess:a=!0,...r}=e;this.#n.has("help")||this.addCommand(new Tt(this.#n));const i=this.#b(),c=this.#i;this.#C();const s=this.#$();let g,o=[...s];const p=zt(),u=Wt(),l=Ae();this.#t.debug(`process.execPath: ${p}`),this.#t.debug(`process.execArgv: ${u.join(" ")}`),this.#t.debug(`process.argv: ${l.join(" ")}`);const d=Ki(c,[...s]);if(d.commandPath)g=d.commandPath,o=d.argv;else{if(s.length>1&&s[0]&&s[1]&&!Oe(s[0])&&!Oe(s[1])){const w=[];let A=0;for(;A<s.length;){const O=s[A];if(!O||Oe(O))break;w.push(O),A+=1}const j=J(w);if(w[0]&&!i.includes(w[0])){const O=this.#a(),I=F(j,O);throw new D(j,I)}}let m;try{m=fn([null,...i],[...s])}catch(w){if(w instanceof Error&&w.name==="INVALID_COMMAND"&&"command"in w){const A=w.command,j=this.#a(),O=F(A,j);throw new D(A,O)}throw w}m.command&&(g=[m.command],o=m.argv)}if(!g)if(this.#s)g=[this.#s];else{const m=this.#a();throw new D("",m)}const y=J(g),v=this.#i.get(y);let $;if(v){if($=this.#p.get(y),!$||J(v)!==y){const m=this.#a(),w=F(y,m);throw new D(y,w)}}else{const m=g[g.length-1];if($=m?this.#n.get(m):void 0,!$){const w=this.#a(),A=F(y,w);throw new D(y,A)}}if(typeof $.execute!="function")return this.#t.error(`Command "${$.name}" has no function to execute.`),a?ie(1):void 0;const C=o,{commandArgs:k,toolbox:f}=this.#O($,C,r,y),h=this.getPluginManager();try{!this.#f&&h.hasPlugins()&&(await h.init({cli:this,cwd:this.#c,logger:this.#t}),this.#f=!0),await h.executeLifecycle("execute",f),await h.executeLifecycle("beforeCommand",f);let m;if(k.global?.help){const w=this.#n.get("help");if(!w)throw new P("Help command not found","COMMAND_NOT_FOUND");m=await B(w,f,k)}else if(k.global?.version||k.global?.V){const w=this.#n.get("version");if(!w)throw new P("Version command not found","COMMAND_NOT_FOUND");m=await B(w,f,k)}else m=await B($,f,k);return await h.executeLifecycle("afterCommand",f,m),a?ie(0):void 0}catch(m){throw await h.executeErrorHandlers(m,f),m}finally{n&&this.dispose()}}async runCommand(e,n={}){const{argv:a=[],...r}=n;ke(e,"Command name");const i=e.split(" ").filter(Boolean),c=J(i),s=this.#i.get(c)?this.#p.get(c):this.#n.get(e);if(!s){const l=this.#a(),d=F(c||e,l);throw new D(e,d)}if(typeof s.execute!="function")throw new P(`Command "${s.name}" has no function to execute`,"INVALID_COMMAND",{commandName:s.name});const g=[...Je(a)];this.#t.debug(`running command '${e}' programmatically with args: ${g.join(", ")}`);const{commandArgs:o,toolbox:p}=this.#O(s,g,r,c||e),u=this.getPluginManager();try{!this.#f&&u.hasPlugins()&&(await u.init({cli:this,cwd:this.#c,logger:this.#t}),this.#f=!0),await u.executeLifecycle("execute",p),await u.executeLifecycle("beforeCommand",p);let l;if(o.global?.help){const d=this.#n.get("help");if(!d)throw new P("Help command not found","COMMAND_NOT_FOUND");l=await B(d,p,o)}else if(o.global?.version||o.global?.V){const d=this.#n.get("version");if(!d)throw new P("Version command not found","COMMAND_NOT_FOUND");l=await B(d,p,o)}else l=await B(s,p,o);return await u.executeLifecycle("afterCommand",p,l),l}catch(l){throw await u.executeErrorHandlers(l,p),l}}}export{yr as Cli};