@stricli/core 1.1.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,23 +1,23 @@
1
- "use strict";var ie=Object.defineProperty;var Me=Object.getOwnPropertyDescriptor;var Ge=Object.getOwnPropertyNames;var je=Object.prototype.hasOwnProperty;var Ue=(e,t)=>{for(var n in t)ie(e,n,{get:t[n],enumerable:!0})},qe=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Ge(t))!je.call(e,r)&&r!==n&&ie(e,r,{get:()=>t[r],enumerable:!(a=Me(t,r))||a.enumerable});return e};var Ve=e=>qe(ie({},"__esModule",{value:!0}),e);var gn={};Ue(gn,{AliasNotFoundError:()=>k,ArgumentParseError:()=>I,ArgumentScannerError:()=>h,EnumValidationError:()=>U,ExitCode:()=>N,FlagNotFoundError:()=>$,InvalidNegatedFlagSyntaxError:()=>K,UnexpectedFlagError:()=>z,UnexpectedPositionalError:()=>q,UnsatisfiedFlagError:()=>O,UnsatisfiedPositionalError:()=>V,booleanParser:()=>pe,buildApplication:()=>Ne,buildChoiceParser:()=>Be,buildCommand:()=>ke,buildRouteMap:()=>De,formatMessageForArgumentScannerError:()=>ee,generateHelpTextForAllCommands:()=>Pe,looseBooleanParser:()=>Q,numberParser:()=>Z,proposeCompletions:()=>Oe,run:()=>fn,text_en:()=>me});module.exports=Ve(gn);function J(e,t){let n=e.env?.[t];return typeof n=="string"&&n!=="0"}var N={UnknownCommand:-5,InvalidArgument:-4,ContextLoadError:-3,CommandLoadError:-2,InternalError:-1,Success:0,CommandRunError:1};function M(e){return e.replace(/-./g,t=>t[1].toUpperCase())}function A(e){return Array.from(e).map((t,n)=>{let a=t.toUpperCase(),r=t.toLowerCase();return n===0||a!==t||a===r?t:`-${r}`}).join("")}function We(e){let t=new Map;return{get:(...n)=>t.get(n.join(","))??e,set:(n,...a)=>{t.set(a.join(","),n)}}}function He(e,t,n){let{threshold:a,weights:r}=n;if(e===t)return 0;let i=Math.abs(e.length-t.length);if(typeof a=="number"&&i>a)return 1/0;let o=We(1/0);o.set(0,-1,-1);for(let s=0;s<t.length;++s)o.set((s+1)*r.insertion,-1,s);for(let s=0;s<e.length;++s)o.set((s+1)*r.deletion,s,-1);let d=-1/0;for(let s=0;s<e.length;++s){let u=1/0;for(let l=0;l<=t.length-1;++l){let p=e[s]===t[l]?0:1,c=[o.get(s-1,l)+r.deletion,o.get(s,l-1)+r.insertion,o.get(s-1,l-1)+p*r.substitution];e[s]===t[l-1]&&e[s-1]===t[l]&&c.push(o.get(s-2,l-2)+p*r.transposition);let f=Math.min(...c);o.set(f,s,l),f<u&&(u=f)}if(u>a){if(d>a)return 1/0;d=u}else d=-1/0}let m=o.get(e.length-1,t.length-1);return m>a?1/0:m}function _e(e,t,n){let a=e[1]-t[1];if(a!==0)return a;let r=e[0].startsWith(n),i=t[0].startsWith(n);return r&&!i?-1:!r&&i?1:e[0].localeCompare(t[0])}function G(e,t,n){let a=t.map(i=>[i,He(e,i,n)]).filter(([,i])=>i<=n.threshold),r=Math.min(...a.map(([,i])=>i));return a.filter(([,i])=>i===r).sort((i,o)=>_e(i,o,e)).map(([i])=>i)}var x=class extends Error{};function H(e){return e instanceof Error?e.stack??String(e):String(e)}function Ke(e,t){let n=[],a=Math.max(e.length,t.length);for(let r=0;r<a;++r)n[r]=Math.max(e[r],t[r]);return n}function L(e,t){if(e.length===0)return[];let n=Array(Math.max(...e.map(r=>r.length))).fill(0,0),a=e.reduce((r,i)=>{let o=i.map(d=>d.length);return Ke(r,o)},n);return e.map(r=>{let i=(r[0]??"").padEnd(a[0]);return r.slice(1).reduce((o,d,m,s)=>{let u=s.length===m+1?d:d.padEnd(a[m+1]);return[...o,t?.[m]??" ",u]},[i]).join("").trimEnd()})}function _(e,t){if(e.length<=1)return e[0]??"";if(e.length===2)return e.join(` ${t.conjunction} `);let n=e.slice(0,e.length-1).join(", ");return t.serialComma&&(n+=","),[n,t.conjunction,e[e.length-1]].join(" ")}function ze(e,t){return e.reduce((n,a)=>{let r=t(a),i=n[r]??[];return i.push(a),n[r]=i,n},{})}function ue(e,t){return ze(e,n=>n[t])}async function Y(e){let t=await Promise.allSettled(e),n=ue(t,"status");return n.rejected&&n.rejected.length>0?{status:"rejected",reasons:n.rejected.map(a=>a.reason)}:{status:"fulfilled",value:n.fulfilled?.map(a=>a.value)??[]}}var pe=e=>{switch(e.toLowerCase()){case"true":return!0;case"false":return!1}throw new SyntaxError(`Cannot convert ${e} to a boolean`)},Je=new Set(["true","t","yes","y","on","1"]),Ye=new Set(["false","f","no","n","off","0"]),Q=e=>{let t=e.toLowerCase();if(Je.has(t))return!0;if(Ye.has(t))return!1;throw new SyntaxError(`Cannot convert ${e} to a boolean`)};var Z=e=>{let t=Number(e);if(Number.isNaN(t))throw new SyntaxError(`Cannot convert ${e} to a number`);return t};var h=class extends x{_brand};function ee(e,t){let n=e.constructor.name,a=t[n];return a?a(e):e.message}function Qe(e,t,n){return Object.fromEntries(Object.entries(t).map(([a,r])=>{let i=r,o=e[i];if(!o){let d=X(i,n);throw new $(d,[],a)}return[a,[i,o]]}))}var $=class extends h{input;corrections;aliasName;constructor(t,n,a){let r=`No flag registered for --${t}`;if(a)r+=` (aliased from -${a})`;else if(n.length>0){let i=_(n.map(o=>`--${o}`),{kind:"conjunctive",conjunction:"or",serialComma:!0});r+=`, did you mean ${i}?`}super(r),this.input=t,this.corrections=n,this.aliasName=a}},k=class extends h{input;constructor(t){super(`No alias registered for -${t}`),this.input=t}};function se(e,t){return e.placeholder?e.placeholder:typeof t=="number"?`arg${t}`:"args"}function X(e,t){return t==="allow-kebab-for-camel"?A(e):e}var I=class extends h{externalFlagNameOrPlaceholder;input;exception;constructor(t,n,a){super(`Failed to parse "${n}" for ${t}: ${a instanceof Error?a.message:String(a)}`),this.externalFlagNameOrPlaceholder=t,this.input=n,this.exception=a}};function j(e,t,n,a){try{return t.parse.call(a,n)}catch(r){throw new I(e,n,r)}}var U=class extends h{externalFlagName;input;values;constructor(t,n,a,r){let i=`Expected "${n}" to be one of (${a.join("|")})`;if(r.length>0){let o=_(r.map(d=>`"${d}"`),{kind:"conjunctive",conjunction:"or",serialComma:!0});i+=`, did you mean ${o}?`}super(i),this.externalFlagName=t,this.input=n,this.values=a}},O=class extends h{externalFlagName;nextFlagName;constructor(t,n){let a=`Expected input for flag --${t}`;n&&(a+=` but encountered --${n} instead`),super(a),this.externalFlagName=t,this.nextFlagName=n}},q=class extends h{expectedCount;input;constructor(t,n){super(`Too many arguments, expected ${t} but encountered "${n}"`),this.expectedCount=t,this.input=n}},V=class extends h{placeholder;limit;constructor(t,n){let a;n?(a=`Expected at least ${n[0]} argument(s) for ${t}`,n[1]===0?a+=" but found none":a+=` but only found ${n[1]}`):a=`Expected argument for ${t}`,super(a),this.placeholder=t,this.limit=n}};function ce(e){if(e.startsWith("no")&&e.length>2){if(e[2]==="-")return e.slice(4);let t=e[2],n=t.toUpperCase();return t!==n?void 0:t.toLowerCase()+e.slice(3)}}function ge(e,t,n){let a=e,r=t[a];if(!r){let o=ce(a);if(o&&(r=t[o],r&&r.kind=="boolean"))return{namedFlag:[o,r],negated:!0}}let i=M(e);if(n.caseStyle==="allow-kebab-for-camel"&&!r){if(r=t[i],r)return{namedFlag:[i,r]};let o=ce(i);if(o&&(r=t[o],r&&r.kind=="boolean"))return{namedFlag:[o,r],negated:!0}}if(!r){if(i in t)throw new $(e,[i]);let o=A(e);if(o in t)throw new $(e,[o]);let d=G(a,Object.keys(t),n.distanceOptions);throw new $(e,d)}return{namedFlag:[a,r]}}function fe(e){return e.namedFlag[1].kind==="boolean"||e.namedFlag[1].kind==="counter"}var Ce=/^-([a-z]+)$/i,Ze=/^--([a-z][a-z-]+)$/i;function en(e,t,n,a){let r=Ce.exec(e);if(r){let o=r[1];return Array.from(o).map(d=>{let m=d,s=n[m];if(!s)throw new k(m);return{namedFlag:s}})}let i=Ze.exec(e);if(i){let o=i[1];return[ge(o,t,a)]}return[]}var nn=/^--([a-z][a-z-.\d_]+)=(.+)$/i,tn=/^-([a-z])=(.+)$/i,K=class extends h{externalFlagName;valueText;constructor(t,n){super(`Cannot negate flag --${t} and pass "${n}" as value`),this.externalFlagName=t,this.valueText=n}};function rn(e,t,n,a){let r=nn.exec(e);if(r){let o=r[1],{namedFlag:d,negated:m}=ge(o,t,a),s=r[2];if(m)throw new K(o,s);return[d,s]}let i=tn.exec(e);if(i){let o=i[1],d=n[o];if(!d)throw new k(o);let m=i[2];return[d,m]}}async function on(e,t,n,a,r){if(!n){if("default"in t&&typeof t.default<"u")return t.kind==="boolean"||t.kind==="enum"?t.default:j(e,t,t.default,r);if(t.optional)return;if(t.kind==="boolean")return!1;if(t.kind==="counter")return 0;throw new O(e)}if(t.kind==="counter")return n.reduce((o,d)=>{try{return o+Z.call(r,d)}catch(m){throw new I(e,d,m)}},0);if("variadic"in t&&t.variadic){if(t.kind==="enum"){for(let o of n)if(!t.values.includes(o)){let d=G(o,t.values,a.distanceOptions);throw new U(e,o,t.values,d)}return n}return Promise.all(n.map(o=>j(e,t,o,r)))}let i=n[0];if(t.kind==="boolean")try{return Q.call(r,i)}catch(o){throw new I(e,i,o)}if(t.kind==="enum"){if(!t.values.includes(i)){let o=G(i,t.values,a.distanceOptions);throw new U(e,i,t.values,o)}return i}return j(e,t,i,r)}var z=class extends h{externalFlagName;previousInput;input;constructor(t,n,a){super(`Too many arguments for --${t}, encountered "${a}" after "${n}"`),this.externalFlagName=t,this.previousInput=n,this.input=a}};function ye(e){return e.kind==="counter"?!0:"variadic"in e?!!e.variadic:!1}function v(e,t,n,a){let r=e.get(n[0])??[];if(r.length>0&&!ye(n[1])){let i=X(n[0],t);throw new z(i,r[0],a)}e.set(n[0],[...r,a])}function le(e,t,n){if(t.get(n)){let r=e[n];return!ye(r)}return!1}function ne(e,t){let{flags:n={},aliases:a={},positional:r={kind:"tuple",parameters:[]}}=e,i=Qe(n,a,t.caseStyle),o=[],d=new Map,m=0,s,u=!1;return{next:l=>{if(!u&&t.allowArgumentEscapeSequence&&l==="--"){if(s)if(s[1].kind==="parsed"&&s[1].inferEmpty)v(d,t.caseStyle,s,""),s=void 0;else{let p=X(s[0],t.caseStyle);throw new O(p)}u=!0;return}if(!u){let p=rn(l,n,i,t);if(p){if(s)if(s[1].kind==="parsed"&&s[1].inferEmpty)v(d,t.caseStyle,s,""),s=void 0;else{let f=X(s[0],t.caseStyle),T=X(p[0][0],t.caseStyle);throw new O(f,T)}v(d,t.caseStyle,...p);return}let c=en(l,n,i,t);if(c.length>0){if(s)if(s[1].kind==="parsed"&&s[1].inferEmpty)v(d,t.caseStyle,s,""),s=void 0;else{let f=X(s[0],t.caseStyle),T=X(c[0].namedFlag[0],t.caseStyle);throw new O(f,T)}if(c.every(fe))for(let f of c)f.namedFlag[1].kind==="boolean"?v(d,t.caseStyle,f.namedFlag,f.negated?"false":"true"):v(d,t.caseStyle,f.namedFlag,"1");else if(c.length>1){let f=c.find(E=>!fe(E)),T=X(f.namedFlag[0],t.caseStyle);throw new O(T)}else s=c[0].namedFlag;return}}if(s)v(d,t.caseStyle,s,l),s=void 0;else{if(r.kind==="tuple"){if(m>=r.parameters.length)throw new q(r.parameters.length,l)}else if(typeof r.maximum=="number"&&m>=r.maximum)throw new q(r.maximum,l);o[m]=l,++m}},parseArguments:async l=>{let p=[],c;r.kind==="array"?(typeof r.minimum=="number"&&m<r.minimum&&p.push(new V(se(r.parameter),[r.minimum,m])),c=Y(o.map(async(g,C)=>{let y=se(r.parameter,C+1);return j(y,r.parameter,g,l)}))):c=Y(r.parameters.map(async(g,C)=>{let y=se(g,C+1),b=o[C];if(typeof b!="string"){if(typeof g.default=="string")return j(y,g,g.default,l);if(g.optional)return;throw new V(y)}return j(y,g,b,l)})),s&&s[1].kind==="parsed"&&s[1].inferEmpty&&(v(d,t.caseStyle,s,""),s=void 0);let f=Y(Object.entries(n).map(async g=>{let[C,y]=g,b=X(C,t.caseStyle);if(s&&s[0]===C)throw new O(b);let P=d.get(C),w=await on(b,y,P,t,l);return[C,w]})),[T,E]=await Promise.all([c,f]);if(T.status==="rejected")for(let g of T.reasons)p.push(g);if(E.status==="rejected")for(let g of E.reasons)p.push(g);if(p.length>0)return{success:!1,errors:p};if(T.status==="rejected")throw new x("Unknown failure while scanning positional arguments");if(E.status==="rejected")throw new x("Unknown failure while scanning flag arguments");return{success:!0,arguments:[Object.fromEntries(E.value),...T.value]}},proposeCompletions:async({partial:l,completionConfig:p,text:c,context:f,includeVersionFlag:T})=>{if(s){let F=s[1],g;return F.kind==="enum"?g=F.values:F.proposeCompletions?g=await F.proposeCompletions.call(f,l):g=[],g.map(C=>({kind:"argument:value",completion:C,brief:F.brief})).filter(({completion:C})=>C.startsWith(l))}let E=[];if(!u){let F=Ce.exec(l);if(p.includeAliases){if(l===""||l==="-"){let g=Object.entries(a).filter(C=>!le(n,d,C[1]));for(let[C]of g){let y=i[C];y&&E.push({kind:"argument:flag",completion:`-${C}`,brief:y[1].brief})}}else if(F){let g=Array.from(F[1]);if(g.includes("h"))return[];if(T&&g.includes("v"))return[];let C=new Map(d);for(let P of g){let w=i[P];if(!w)throw new k(P);v(C,t.caseStyle,w,w[1].kind==="boolean"?"true":"1")}let y=g[g.length-1];if(y){let P=i[y];P&&E.push({kind:"argument:flag",completion:l,brief:P[1].brief})}let b=Object.entries(a).filter(P=>!le(n,C,P[1]));for(let[P]of b){let w=i[P];w&&E.push({kind:"argument:flag",completion:`${l}${P}`,brief:w[1].brief})}}}if(l===""||l==="-"||l.startsWith("--")){t.allowArgumentEscapeSequence&&E.push({kind:"argument:flag",completion:"--",brief:c.briefs.argumentEscapeSequence});let g=Object.entries(n).filter(([y])=>!le(n,d,y));t.caseStyle==="allow-kebab-for-camel"&&(g=g.map(([y,b])=>[A(y),b]));let C=g.map(([y,b])=>[`--${y}`,b]).filter(([y])=>y.startsWith(l));E.push(...C.map(([y,b])=>({kind:"argument:flag",completion:y,brief:b.brief})))}}if(r.kind==="array"){if(r.parameter.proposeCompletions&&(typeof r.maximum!="number"||m<r.maximum)){let F=await r.parameter.proposeCompletions.call(f,l);E.push(...F.map(g=>({kind:"argument:value",completion:g,brief:r.parameter.brief})))}}else{let F=r.parameters[m];if(F?.proposeCompletions){let g=await F.proposeCompletions.call(f,l);E.push(...g.map(C=>({kind:"argument:value",completion:C,brief:F.brief})))}}return E.filter(({completion:F})=>F.startsWith(l))}}}function xe(e,t,n){let a=t==="allow-kebab-for-camel"?"convert-camel-to-kebab":t,r=e.getAllEntries();return n.includeHiddenRoutes||(r=r.filter(i=>!i.hidden)),r.flatMap(i=>{let o=i.name[a];return n.includeAliases?[o,...i.aliases]:[o]})}var me={headers:{usage:"USAGE",aliases:"ALIASES",commands:"COMMANDS",flags:"FLAGS",arguments:"ARGUMENTS"},keywords:{default:"default ="},briefs:{help:"Print help information and exit",helpAll:"Print help information (including hidden commands/flags) and exit",version:"Print version information and exit",argumentEscapeSequence:"All subsequent inputs should be interpreted as arguments"},noCommandRegisteredForInput:({input:e,corrections:t})=>{let n=`No command registered for \`${e}\``;if(t.length>0){let a=_(t,{kind:"conjunctive",conjunction:"or",serialComma:!0});return`${n}, did you mean ${a}?`}else return n},noTextAvailableForLocale:({requestedLocale:e,defaultLocale:t})=>`Application does not support "${e}" locale, defaulting to "${t}"`,exceptionWhileParsingArguments:e=>e instanceof h?ee(e,{}):`Unable to parse arguments, ${H(e)}`,exceptionWhileLoadingCommandFunction:e=>`Unable to load command function, ${H(e)}`,exceptionWhileLoadingCommandContext:e=>`Unable to load command context, ${H(e)}`,exceptionWhileRunningCommand:e=>`Command failed, ${H(e)}`,commandErrorResult:e=>e.message,currentVersionIsNotLatest:({currentVersion:e,latestVersion:t,upgradeCommand:n})=>n?`Latest available version is ${t} (currently running ${e}), upgrade with "${n}"`:`Latest available version is ${t} (currently running ${e})`};function Te(e){if(e.startsWith("en"))return me}function S(e,t,n){return!n.disableAnsiColor&&!J(e,"STRICLI_NO_COLOR")&&(t.getColorDepth?.(e.env)??1)>=4}async function Fe({loader:e,parameters:t},{context:n,inputs:a,scannerConfig:r,errorFormatting:i,documentationConfig:o,determineExitCode:d}){let m=e(),s;try{let l=ne(t,r);for(let c of a)l.next(c);let p=await l.parseArguments(n);if(p.success)s=p.arguments;else{let c=S(n.process,n.process.stderr,o);for(let f of p.errors){let T=i.exceptionWhileParsingArguments(f,c);n.process.stderr.write(c?`\x1B[1m\x1B[31m${T}\x1B[39m\x1B[22m
1
+ "use strict";var ie=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var je=Object.getOwnPropertyNames;var Ue=Object.prototype.hasOwnProperty;var qe=(e,t)=>{for(var n in t)ie(e,n,{get:t[n],enumerable:!0})},Ve=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of je(t))!Ue.call(e,r)&&r!==n&&ie(e,r,{get:()=>t[r],enumerable:!(a=Ge(t,r))||a.enumerable});return e};var We=e=>Ve(ie({},"__esModule",{value:!0}),e);var yn={};qe(yn,{AliasNotFoundError:()=>k,ArgumentParseError:()=>I,ArgumentScannerError:()=>A,EnumValidationError:()=>U,ExitCode:()=>h,FlagNotFoundError:()=>$,InvalidNegatedFlagSyntaxError:()=>K,UnexpectedFlagError:()=>z,UnexpectedPositionalError:()=>q,UnsatisfiedFlagError:()=>O,UnsatisfiedPositionalError:()=>V,booleanParser:()=>pe,buildApplication:()=>be,buildChoiceParser:()=>Be,buildCommand:()=>Ie,buildRouteMap:()=>De,formatMessageForArgumentScannerError:()=>ee,generateHelpTextForAllCommands:()=>Se,looseBooleanParser:()=>Q,numberParser:()=>Z,proposeCompletions:()=>ve,run:()=>Cn,text_en:()=>me});module.exports=We(yn);function J(e,t){let n=e.env?.[t];return typeof n=="string"&&n!=="0"}var h={UnknownCommand:-5,InvalidArgument:-4,ContextLoadError:-3,CommandLoadError:-2,InternalError:-1,Success:0,CommandRunError:1};function D(e){return e.replace(/-./g,t=>t[1].toUpperCase())}function F(e){return Array.from(e).map((t,n)=>{let a=t.toUpperCase(),r=t.toLowerCase();return n===0||a!==t||a===r?t:`-${r}`}).join("")}function He(e){let t=new Map;return{get:(...n)=>t.get(n.join(","))??e,set:(n,...a)=>{t.set(a.join(","),n)}}}function _e(e,t,n){let{threshold:a,weights:r}=n;if(e===t)return 0;let i=Math.abs(e.length-t.length);if(typeof a=="number"&&i>a)return 1/0;let o=He(1/0);o.set(0,-1,-1);for(let s=0;s<t.length;++s)o.set((s+1)*r.insertion,-1,s);for(let s=0;s<e.length;++s)o.set((s+1)*r.deletion,s,-1);let d=-1/0;for(let s=0;s<e.length;++s){let u=1/0;for(let l=0;l<=t.length-1;++l){let p=e[s]===t[l]?0:1,c=[o.get(s-1,l)+r.deletion,o.get(s,l-1)+r.insertion,o.get(s-1,l-1)+p*r.substitution];e[s]===t[l-1]&&e[s-1]===t[l]&&c.push(o.get(s-2,l-2)+p*r.transposition);let f=Math.min(...c);o.set(f,s,l),f<u&&(u=f)}if(u>a){if(d>a)return 1/0;d=u}else d=-1/0}let m=o.get(e.length-1,t.length-1);return m>a?1/0:m}function Ke(e,t,n){let a=e[1]-t[1];if(a!==0)return a;let r=e[0].startsWith(n),i=t[0].startsWith(n);return r&&!i?-1:!r&&i?1:e[0].localeCompare(t[0])}function G(e,t,n){let a=t.map(i=>[i,_e(e,i,n)]).filter(([,i])=>i<=n.threshold),r=Math.min(...a.map(([,i])=>i));return a.filter(([,i])=>i===r).sort((i,o)=>Ke(i,o,e)).map(([i])=>i)}var C=class extends Error{};function H(e){return e instanceof Error?e.stack??String(e):String(e)}function ze(e,t){let n=[],a=Math.max(e.length,t.length);for(let r=0;r<a;++r)n[r]=Math.max(e[r],t[r]);return n}function L(e,t){if(e.length===0)return[];let n=Array(Math.max(...e.map(r=>r.length))).fill(0,0),a=e.reduce((r,i)=>{let o=i.map(d=>d.length);return ze(r,o)},n);return e.map(r=>{let i=(r[0]??"").padEnd(a[0]);return r.slice(1).reduce((o,d,m,s)=>{let u=s.length===m+1?d:d.padEnd(a[m+1]);return[...o,t?.[m]??" ",u]},[i]).join("").trimEnd()})}function _(e,t){if(e.length<=1)return e[0]??"";if(e.length===2)return e.join(` ${t.conjunction} `);let n=e.slice(0,e.length-1).join(", ");return t.serialComma&&(n+=","),[n,t.conjunction,e[e.length-1]].join(" ")}function Je(e,t){return e.reduce((n,a)=>{let r=t(a),i=n[r]??[];return i.push(a),n[r]=i,n},{})}function ue(e,t){return Je(e,n=>n[t])}async function Y(e){let t=await Promise.allSettled(e),n=ue(t,"status");return n.rejected&&n.rejected.length>0?{status:"rejected",reasons:n.rejected.map(a=>a.reason)}:{status:"fulfilled",value:n.fulfilled?.map(a=>a.value)??[]}}var pe=e=>{switch(e.toLowerCase()){case"true":return!0;case"false":return!1}throw new SyntaxError(`Cannot convert ${e} to a boolean`)},Ye=new Set(["true","t","yes","y","on","1"]),Qe=new Set(["false","f","no","n","off","0"]),Q=e=>{let t=e.toLowerCase();if(Ye.has(t))return!0;if(Qe.has(t))return!1;throw new SyntaxError(`Cannot convert ${e} to a boolean`)};var Z=e=>{let t=Number(e);if(Number.isNaN(t))throw new SyntaxError(`Cannot convert ${e} to a number`);return t};var A=class extends C{_brand};function ee(e,t){let n=e.constructor.name,a=t[n];return a?a(e):e.message}function Ze(e,t,n){return Object.fromEntries(Object.entries(t).map(([a,r])=>{let i=r,o=e[i];if(!o){let d=w(i,n);throw new $(d,[],a)}return[a,[i,o]]}))}var $=class extends A{input;corrections;aliasName;constructor(t,n,a){let r=`No flag registered for --${t}`;if(a)r+=` (aliased from -${a})`;else if(n.length>0){let i=_(n.map(o=>`--${o}`),{kind:"conjunctive",conjunction:"or",serialComma:!0});r+=`, did you mean ${i}?`}super(r),this.input=t,this.corrections=n,this.aliasName=a}},k=class extends A{input;constructor(t){super(`No alias registered for -${t}`),this.input=t}};function se(e,t){return e.placeholder?e.placeholder:typeof t=="number"?`arg${t}`:"args"}function w(e,t){return t==="allow-kebab-for-camel"?F(e):e}var I=class extends A{externalFlagNameOrPlaceholder;input;exception;constructor(t,n,a){super(`Failed to parse "${n}" for ${t}: ${a instanceof Error?a.message:String(a)}`),this.externalFlagNameOrPlaceholder=t,this.input=n,this.exception=a}};function j(e,t,n,a){try{return t.parse.call(a,n)}catch(r){throw new I(e,n,r)}}var U=class extends A{externalFlagName;input;values;constructor(t,n,a,r){let i=`Expected "${n}" to be one of (${a.join("|")})`;if(r.length>0){let o=_(r.map(d=>`"${d}"`),{kind:"conjunctive",conjunction:"or",serialComma:!0});i+=`, did you mean ${o}?`}super(i),this.externalFlagName=t,this.input=n,this.values=a}},O=class extends A{externalFlagName;nextFlagName;constructor(t,n){let a=`Expected input for flag --${t}`;n&&(a+=` but encountered --${n} instead`),super(a),this.externalFlagName=t,this.nextFlagName=n}},q=class extends A{expectedCount;input;constructor(t,n){super(`Too many arguments, expected ${t} but encountered "${n}"`),this.expectedCount=t,this.input=n}},V=class extends A{placeholder;limit;constructor(t,n){let a;n?(a=`Expected at least ${n[0]} argument(s) for ${t}`,n[1]===0?a+=" but found none":a+=` but only found ${n[1]}`):a=`Expected argument for ${t}`,super(a),this.placeholder=t,this.limit=n}};function ce(e){if(e.startsWith("no")&&e.length>2){if(e[2]==="-")return e.slice(4);let t=e[2],n=t.toUpperCase();return t!==n?void 0:t.toLowerCase()+e.slice(3)}}function ge(e,t,n){let a=e,r=t[a];if(!r){let o=ce(a);if(o&&(r=t[o],r&&r.kind=="boolean"))return{namedFlag:[o,r],negated:!0}}let i=D(e);if(n.caseStyle==="allow-kebab-for-camel"&&!r){if(r=t[i],r)return{namedFlag:[i,r]};let o=ce(i);if(o&&(r=t[o],r&&r.kind=="boolean"))return{namedFlag:[o,r],negated:!0}}if(!r){if(i in t)throw new $(e,[i]);let o=F(e);if(o in t)throw new $(e,[o]);let d=G(a,Object.keys(t),n.distanceOptions);throw new $(e,d)}return{namedFlag:[a,r]}}function fe(e){return e.namedFlag[1].kind==="boolean"||e.namedFlag[1].kind==="counter"}var Ce=/^-([a-z]+)$/i,en=/^--([a-z][a-z-.\d_]+)$/i;function nn(e,t,n,a){let r=Ce.exec(e);if(r){let o=r[1];return Array.from(o).map(d=>{let m=d,s=n[m];if(!s)throw new k(m);return{namedFlag:s}})}let i=en.exec(e);if(i){let o=i[1];return[ge(o,t,a)]}return[]}var tn=/^--([a-z][a-z-.\d_]+)=(.+)$/i,rn=/^-([a-z])=(.+)$/i,K=class extends A{externalFlagName;valueText;constructor(t,n){super(`Cannot negate flag --${t} and pass "${n}" as value`),this.externalFlagName=t,this.valueText=n}};function on(e,t,n,a){let r=tn.exec(e);if(r){let o=r[1],{namedFlag:d,negated:m}=ge(o,t,a),s=r[2];if(m)throw new K(o,s);return[d,s]}let i=rn.exec(e);if(i){let o=i[1],d=n[o];if(!d)throw new k(o);let m=i[2];return[d,m]}}async function an(e,t,n,a,r){if(!n){if("default"in t&&typeof t.default<"u")return t.kind==="boolean"||t.kind==="enum"?t.default:j(e,t,t.default,r);if(t.optional)return;if(t.kind==="boolean")return!1;if(t.kind==="counter")return 0;throw new O(e)}if(t.kind==="counter")return n.reduce((o,d)=>{try{return o+Z.call(r,d)}catch(m){throw new I(e,d,m)}},0);if("variadic"in t&&t.variadic){if(t.kind==="enum"){for(let o of n)if(!t.values.includes(o)){let d=G(o,t.values,a.distanceOptions);throw new U(e,o,t.values,d)}return n}return Promise.all(n.map(o=>j(e,t,o,r)))}let i=n[0];if(t.kind==="boolean")try{return Q.call(r,i)}catch(o){throw new I(e,i,o)}if(t.kind==="enum"){if(!t.values.includes(i)){let o=G(i,t.values,a.distanceOptions);throw new U(e,i,t.values,o)}return i}return j(e,t,i,r)}var z=class extends A{externalFlagName;previousInput;input;constructor(t,n,a){super(`Too many arguments for --${t}, encountered "${a}" after "${n}"`),this.externalFlagName=t,this.previousInput=n,this.input=a}};function ye(e){return e.kind==="counter"?!0:"variadic"in e?!!e.variadic:!1}function B(e,t,[n,a],r){let i=e.get(n)??[];if(i.length>0&&!ye(a)){let o=w(n,t);throw new z(o,i[0],r)}if("variadic"in a&&typeof a.variadic=="string"){let o=r.split(a.variadic);e.set(n,[...i,...o])}else e.set(n,[...i,r])}function le(e,t,n){if(t.get(n)){let r=e[n];return!ye(r)}return!1}function ne(e,t){let{flags:n={},aliases:a={},positional:r={kind:"tuple",parameters:[]}}=e,i=Ze(n,a,t.caseStyle),o=[],d=new Map,m=0,s,u=!1;return{next:l=>{if(!u&&t.allowArgumentEscapeSequence&&l==="--"){if(s)if(s[1].kind==="parsed"&&s[1].inferEmpty)B(d,t.caseStyle,s,""),s=void 0;else{let p=w(s[0],t.caseStyle);throw new O(p)}u=!0;return}if(!u){let p=on(l,n,i,t);if(p){if(s)if(s[1].kind==="parsed"&&s[1].inferEmpty)B(d,t.caseStyle,s,""),s=void 0;else{let f=w(s[0],t.caseStyle),T=w(p[0][0],t.caseStyle);throw new O(f,T)}B(d,t.caseStyle,...p);return}let c=nn(l,n,i,t);if(c.length>0){if(s)if(s[1].kind==="parsed"&&s[1].inferEmpty)B(d,t.caseStyle,s,""),s=void 0;else{let f=w(s[0],t.caseStyle),T=w(c[0].namedFlag[0],t.caseStyle);throw new O(f,T)}if(c.every(fe))for(let f of c)f.namedFlag[1].kind==="boolean"?B(d,t.caseStyle,f.namedFlag,f.negated?"false":"true"):B(d,t.caseStyle,f.namedFlag,"1");else if(c.length>1){let f=c.find(E=>!fe(E)),T=w(f.namedFlag[0],t.caseStyle);throw new O(T)}else s=c[0].namedFlag;return}}if(s)B(d,t.caseStyle,s,l),s=void 0;else{if(r.kind==="tuple"){if(m>=r.parameters.length)throw new q(r.parameters.length,l)}else if(typeof r.maximum=="number"&&m>=r.maximum)throw new q(r.maximum,l);o[m]=l,++m}},parseArguments:async l=>{let p=[],c;r.kind==="array"?(typeof r.minimum=="number"&&m<r.minimum&&p.push(new V(se(r.parameter),[r.minimum,m])),c=Y(o.map(async(g,x)=>{let y=se(r.parameter,x+1);return j(y,r.parameter,g,l)}))):c=Y(r.parameters.map(async(g,x)=>{let y=se(g,x+1),N=o[x];if(typeof N!="string"){if(typeof g.default=="string")return j(y,g,g.default,l);if(g.optional)return;throw new V(y)}return j(y,g,N,l)})),s&&s[1].kind==="parsed"&&s[1].inferEmpty&&(B(d,t.caseStyle,s,""),s=void 0);let f=Y(Object.entries(n).map(async g=>{let[x,y]=g,N=w(x,t.caseStyle);if(s&&s[0]===x)throw new O(N);let b=d.get(x),X=await an(N,y,b,t,l);return[x,X]})),[T,E]=await Promise.all([c,f]);if(T.status==="rejected")for(let g of T.reasons)p.push(g);if(E.status==="rejected")for(let g of E.reasons)p.push(g);if(p.length>0)return{success:!1,errors:p};if(T.status==="rejected")throw new C("Unknown failure while scanning positional arguments");if(E.status==="rejected")throw new C("Unknown failure while scanning flag arguments");return{success:!0,arguments:[Object.fromEntries(E.value),...T.value]}},proposeCompletions:async({partial:l,completionConfig:p,text:c,context:f,includeVersionFlag:T})=>{if(s)return xe(s[1],f,l);let E=[];if(!u){let S=Ce.exec(l);if(p.includeAliases){if(l===""||l==="-"){let g=Object.entries(a).filter(x=>!le(n,d,x[1]));for(let[x]of g){let y=i[x];y&&E.push({kind:"argument:flag",completion:`-${x}`,brief:y[1].brief})}}else if(S){let g=Array.from(S[1]);if(g.includes("h"))return[];if(T&&g.includes("v"))return[];let x=new Map(d);for(let b of g){let X=i[b];if(!X)throw new k(b);B(x,t.caseStyle,X,X[1].kind==="boolean"?"true":"1")}let y=g[g.length-1];if(y){let b=i[y];b&&E.push({kind:"argument:flag",completion:l,brief:b[1].brief})}let N=Object.entries(a).filter(b=>!le(n,x,b[1]));for(let[b]of N){let X=i[b];X&&E.push({kind:"argument:flag",completion:`${l}${b}`,brief:X[1].brief})}}}if(l===""||l==="-"||l.startsWith("--")){t.allowArgumentEscapeSequence&&E.push({kind:"argument:flag",completion:"--",brief:c.briefs.argumentEscapeSequence});let g=Object.entries(n).filter(([y])=>!le(n,d,y));t.caseStyle==="allow-kebab-for-camel"&&(g=g.map(([y,N])=>[F(y),N]));let x=g.map(([y,N])=>[`--${y}`,N]).filter(([y])=>y.startsWith(l));E.push(...x.map(([y,N])=>({kind:"argument:flag",completion:y,brief:N.brief})))}}if(r.kind==="array"){if(r.parameter.proposeCompletions&&(typeof r.maximum!="number"||m<r.maximum)){let S=await r.parameter.proposeCompletions.call(f,l);E.push(...S.map(g=>({kind:"argument:value",completion:g,brief:r.parameter.brief})))}}else{let S=r.parameters[m];if(S?.proposeCompletions){let g=await S.proposeCompletions.call(f,l);E.push(...g.map(x=>({kind:"argument:value",completion:x,brief:S.brief})))}}return E.filter(({completion:S})=>S.startsWith(l))}}}async function xe(e,t,n){if(typeof e.variadic=="string"&&n.endsWith(e.variadic))return xe(e,t,"");let a;return e.kind==="enum"?a=e.values:e.proposeCompletions?a=await e.proposeCompletions.call(t,n):a=[],a.map(r=>({kind:"argument:value",completion:r,brief:e.brief})).filter(({completion:r})=>r.startsWith(n))}function Te(e,t,n){let a=t==="allow-kebab-for-camel"?"convert-camel-to-kebab":t,r=e.getAllEntries();return n.includeHiddenRoutes||(r=r.filter(i=>!i.hidden)),r.flatMap(i=>{let o=i.name[a];return n.includeAliases?[o,...i.aliases]:[o]})}var me={headers:{usage:"USAGE",aliases:"ALIASES",commands:"COMMANDS",flags:"FLAGS",arguments:"ARGUMENTS"},keywords:{default:"default =",separator:"separator ="},briefs:{help:"Print help information and exit",helpAll:"Print help information (including hidden commands/flags) and exit",version:"Print version information and exit",argumentEscapeSequence:"All subsequent inputs should be interpreted as arguments"},noCommandRegisteredForInput:({input:e,corrections:t})=>{let n=`No command registered for \`${e}\``;if(t.length>0){let a=_(t,{kind:"conjunctive",conjunction:"or",serialComma:!0});return`${n}, did you mean ${a}?`}else return n},noTextAvailableForLocale:({requestedLocale:e,defaultLocale:t})=>`Application does not support "${e}" locale, defaulting to "${t}"`,exceptionWhileParsingArguments:e=>e instanceof A?ee(e,{}):`Unable to parse arguments, ${H(e)}`,exceptionWhileLoadingCommandFunction:e=>`Unable to load command function, ${H(e)}`,exceptionWhileLoadingCommandContext:e=>`Unable to load command context, ${H(e)}`,exceptionWhileRunningCommand:e=>`Command failed, ${H(e)}`,commandErrorResult:e=>e.message,currentVersionIsNotLatest:({currentVersion:e,latestVersion:t,upgradeCommand:n})=>n?`Latest available version is ${t} (currently running ${e}), upgrade with "${n}"`:`Latest available version is ${t} (currently running ${e})`};function Fe(e){if(e.startsWith("en"))return me}function P(e,t,n){return!n.disableAnsiColor&&!J(e,"STRICLI_NO_COLOR")&&(t.getColorDepth?.(e.env)??1)>=4}async function Ee({loader:e,parameters:t},{context:n,inputs:a,scannerConfig:r,errorFormatting:i,documentationConfig:o,determineExitCode:d}){let m=e(),s;try{let l=ne(t,r);for(let c of a)l.next(c);let p=await l.parseArguments(n);if(p.success)s=p.arguments;else{let c=P(n.process,n.process.stderr,o);for(let f of p.errors){let T=i.exceptionWhileParsingArguments(f,c);n.process.stderr.write(c?`\x1B[1m\x1B[31m${T}\x1B[39m\x1B[22m
2
2
  `:`${T}
3
- `)}return N.InvalidArgument}}catch(l){let p=S(n.process,n.process.stderr,o),c=i.exceptionWhileParsingArguments(l,p);return n.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
3
+ `)}return h.InvalidArgument}}catch(l){let p=P(n.process,n.process.stderr,o),c=i.exceptionWhileParsingArguments(l,p);return n.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
4
4
  `:`${c}
5
- `),N.InvalidArgument}let u;try{let l=await m;typeof l=="function"?u=l:u=l.default}catch(l){let p=S(n.process,n.process.stderr,o),c=i.exceptionWhileLoadingCommandFunction(l,p);return n.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
5
+ `),h.InvalidArgument}let u;try{let l=await m;typeof l=="function"?u=l:u=l.default}catch(l){let p=P(n.process,n.process.stderr,o),c=i.exceptionWhileLoadingCommandFunction(l,p);return n.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
6
6
  `:`${c}
7
- `),N.CommandLoadError}try{let l=await u.call(n,...s);if(l instanceof Error){let p=S(n.process,n.process.stderr,o),c=i.commandErrorResult(l,p);return n.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
7
+ `),h.CommandLoadError}try{let l=await u.call(n,...s);if(l instanceof Error){let p=P(n.process,n.process.stderr,o),c=i.commandErrorResult(l,p);return n.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
8
8
  `:`${c}
9
- `),d?d(l):N.CommandRunError}}catch(l){let p=S(n.process,n.process.stderr,o),c=i.exceptionWhileRunningCommand(l,p);return n.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
9
+ `),d?d(l):h.CommandRunError}}catch(l){let p=P(n.process,n.process.stderr,o),c=i.exceptionWhileRunningCommand(l,p);return n.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
10
10
  `:`${c}
11
- `),d?d(l):N.CommandRunError}return N.Success}var R=Symbol("RouteMap");var B=Symbol("Command");function te(e,t,n){let a=[...n],r=[],i,o=e,d,m=!0,s=!1;return{next:u=>{if(u==="--help"||u==="-h"){s=!0,d||(d=o);return}else if(u==="--helpAll"||u==="--help-all"||u==="-H"){s="all",d||(d=o);return}if(d){r.push(u);return}if(o.kind===B){d=o,r.push(u);return}let l=M(u),p=u,c=o.getRoutingTargetForInput(p);if(t.caseStyle==="allow-kebab-for-camel"&&!c&&(c=o.getRoutingTargetForInput(l),c&&(p=l)),!c){let f=o.getDefaultCommand();if(f){m=!1,i=[o,""],r.push(u),o=f;return}return{input:u,routeMap:o}}m=!1,i=[o,u],o=c,a.push(u)},finish:()=>{if(d=d??o,d.kind===R&&!s){let l=d.getDefaultCommand();l&&(i=[d,""],d=l,m=!1)}let u=i?i[0].getOtherAliasesForInput(i[1],t.caseStyle):{original:[],"convert-camel-to-kebab":[]};return{target:d,unprocessedInputs:r,helpRequested:s,prefix:a,rootLevel:m,aliases:u}}}}async function Ae({root:e,defaultText:t,config:n},a,r){let i=t;if(r.locale){let l=n.localization.loadText(r.locale);if(l)i=l;else{let p=S(r.process,r.process.stderr,n.documentation),c=i.noTextAvailableForLocale({requestedLocale:r.locale,defaultLocale:n.localization.defaultLocale,ansiColor:p});r.process.stderr.write(p?`\x1B[1m\x1B[33m${c}\x1B[39m\x1B[22m
11
+ `),d?d(l):h.CommandRunError}return h.Success}var R=Symbol("RouteMap");var v=Symbol("Command");function te(e,t,n){let a=[...n],r=[],i,o=e,d,m=!0,s=!1;return{next:u=>{if(u==="--help"||u==="-h"){s=!0,d||(d=o);return}else if(u==="--helpAll"||u==="--help-all"||u==="-H"){s="all",d||(d=o);return}if(d){r.push(u);return}if(o.kind===v){d=o,r.push(u);return}let l=D(u),p=u,c=o.getRoutingTargetForInput(p);if(t.caseStyle==="allow-kebab-for-camel"&&!c&&(c=o.getRoutingTargetForInput(l),c&&(p=l)),!c){let f=o.getDefaultCommand();if(f){m=!1,i=[o,""],r.push(u),o=f;return}return{input:u,routeMap:o}}m=!1,i=[o,u],o=c,a.push(u)},finish:()=>{if(d=d??o,d.kind===R&&!s){let l=d.getDefaultCommand();l&&(i=[d,""],d=l,m=!1)}let u=i?i[0].getOtherAliasesForInput(i[1],t.caseStyle):{original:[],"convert-camel-to-kebab":[]};return{target:d,unprocessedInputs:r,helpRequested:s,prefix:a,rootLevel:m,aliases:u}}}}async function Ae({root:e,defaultText:t,config:n},a,r){let i=t;if(r.locale){let l=n.localization.loadText(r.locale);if(l)i=l;else{let p=P(r.process,r.process.stderr,n.documentation),c=i.noTextAvailableForLocale({requestedLocale:r.locale,defaultLocale:n.localization.defaultLocale,ansiColor:p});r.process.stderr.write(p?`\x1B[1m\x1B[33m${c}\x1B[39m\x1B[22m
12
12
  `:`${c}
13
- `)}}if(n.versionInfo?.getLatestVersion&&!J(r.process,"STRICLI_SKIP_VERSION_CHECK")){let l;"currentVersion"in n.versionInfo?l=n.versionInfo.currentVersion:l=await n.versionInfo.getCurrentVersion.call(r);let p=await n.versionInfo.getLatestVersion.call(r,l);if(p&&l!==p){let c=S(r.process,r.process.stderr,n.documentation),f=i.currentVersionIsNotLatest({currentVersion:l,latestVersion:p,upgradeCommand:n.versionInfo.upgradeCommand,ansiColor:c});r.process.stderr.write(c?`\x1B[1m\x1B[33m${f}\x1B[39m\x1B[22m
13
+ `)}}if(n.versionInfo?.getLatestVersion&&!J(r.process,"STRICLI_SKIP_VERSION_CHECK")){let l;"currentVersion"in n.versionInfo?l=n.versionInfo.currentVersion:l=await n.versionInfo.getCurrentVersion.call(r);let p=await n.versionInfo.getLatestVersion.call(r,l);if(p&&l!==p){let c=P(r.process,r.process.stderr,n.documentation),f=i.currentVersionIsNotLatest({currentVersion:l,latestVersion:p,upgradeCommand:n.versionInfo.upgradeCommand,ansiColor:c});r.process.stderr.write(c?`\x1B[1m\x1B[33m${f}\x1B[39m\x1B[22m
14
14
  `:`${f}
15
15
  `)}}let o=a.slice();if(n.versionInfo&&(o[0]==="--version"||o[0]==="-v")){let l;return"currentVersion"in n.versionInfo?l=n.versionInfo.currentVersion:l=await n.versionInfo.getCurrentVersion.call(r),r.process.stdout.write(l+`
16
- `),N.Success}let d=te(e,n.scanner,[n.name]),m;for(;o.length>0&&!m;){let l=o.shift();m=d.next(l)}if(m){let l=xe(m.routeMap,n.scanner.caseStyle,n.completion),p=G(m.input,l,n.scanner.distanceOptions).map(T=>`\`${T}\``),c=S(r.process,r.process.stderr,n.documentation),f=i.noCommandRegisteredForInput({input:m.input,corrections:p,ansiColor:c});return r.process.stderr.write(c?`\x1B[1m\x1B[31m${f}\x1B[39m\x1B[22m
16
+ `),h.Success}let d=te(e,n.scanner,[n.name]),m;for(;o.length>0&&!m;){let l=o.shift();m=d.next(l)}if(m){let l=Te(m.routeMap,n.scanner.caseStyle,n.completion),p=G(m.input,l,n.scanner.distanceOptions).map(T=>`\`${T}\``),c=P(r.process,r.process.stderr,n.documentation),f=i.noCommandRegisteredForInput({input:m.input,corrections:p,ansiColor:c});return r.process.stderr.write(c?`\x1B[1m\x1B[31m${f}\x1B[39m\x1B[22m
17
17
  `:`${f}
18
- `),N.UnknownCommand}let s=d.finish();if(s.helpRequested||s.target.kind===R){let l=S(r.process,r.process.stdout,n.documentation);return r.process.stdout.write(s.target.formatHelp({prefix:s.prefix,includeVersionFlag:!!n.versionInfo&&s.rootLevel,includeArgumentEscapeSequenceFlag:n.scanner.allowArgumentEscapeSequence,includeHelpAllFlag:s.helpRequested==="all"||n.documentation.alwaysShowHelpAllFlag,includeHidden:s.helpRequested==="all",config:n.documentation,aliases:s.aliases[n.documentation.caseStyle],text:i,ansiColor:l})),N.Success}let u;if("forCommand"in r)try{u=await r.forCommand({prefix:s.prefix})}catch(l){let p=S(r.process,r.process.stderr,n.documentation),c=i.exceptionWhileLoadingCommandContext(l,p);return r.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m`:c),N.ContextLoadError}else u=r;return Fe(s.target,{context:u,inputs:s.unprocessedInputs,scannerConfig:n.scanner,documentationConfig:n.documentation,errorFormatting:i,determineExitCode:n.determineExitCode})}function W(e,t){return t==="convert-camel-to-kebab"?A(e):e}function Ee(e,t){return t==="convert-camel-to-kebab"?`no-${A(e)}`:`no${e[0].toUpperCase()}${e.slice(1)}`}function he(e){let t=e.scanner?.caseStyle??"original",n;if(e.documentation?.caseStyle){if(t==="original"&&e.documentation.caseStyle==="convert-camel-to-kebab")throw new x("Cannot convert route and flag names on display but scan as original");n=e.documentation.caseStyle}else t==="allow-kebab-for-camel"?n="convert-camel-to-kebab":n=t;let a={caseStyle:t,allowArgumentEscapeSequence:e.scanner?.allowArgumentEscapeSequence??!1,distanceOptions:e.scanner?.distanceOptions??{threshold:7,weights:{insertion:1,deletion:3,substitution:2,transposition:0}}},r={alwaysShowHelpAllFlag:e.documentation?.alwaysShowHelpAllFlag??!1,useAliasInUsageLine:e.documentation?.useAliasInUsageLine??!1,onlyRequiredInUsageLine:e.documentation?.onlyRequiredInUsageLine??!1,caseStyle:n,disableAnsiColor:e.documentation?.disableAnsiColor??!1},i={includeAliases:e.completion?.includeAliases??r.useAliasInUsageLine,includeHiddenRoutes:e.completion?.includeHiddenRoutes??!1,...e.completion};return{...e,scanner:a,completion:i,documentation:r,localization:{defaultLocale:"en",loadText:Te,...e.localization}}}function Ne(e,t){let n=he(t);if(e.kind===B&&n.versionInfo){if(e.usesFlag("version"))throw new x("Unable to use command with flag --version as root when version info is supplied");if(e.usesFlag("v"))throw new x("Unable to use command with alias -v as root when version info is supplied")}let a=n.localization.loadText(n.localization.defaultLocale);if(!a)throw new x(`No text available for the default locale "${n.localization.defaultLocale}"`);return{root:e,config:n,defaultText:a}}function*be(e,t,n){for(let a of e.getAllEntries()){if(a.hidden)continue;let r=a.name[n],i=[...t,r];a.target.kind===R?yield*be(a.target,i,n):yield[i,a.target,a.aliases]}}function Pe({root:e,defaultText:t,config:n},a){let r=t;if(a){let o=n.localization.loadText(a);if(o)r=o;else throw new x(`Application does not support "${a}" locale`)}let i=[];return e.kind===B?i.push([[n.name],e,[]]):i.push(...be(e,[n.name],n.documentation.caseStyle)),i.map(([o,d,m])=>[o.join(" "),d.formatHelp({prefix:o,config:n.documentation,includeVersionFlag:!!n.versionInfo&&o.length===1,includeArgumentEscapeSequenceFlag:n.scanner.allowArgumentEscapeSequence,includeHelpAllFlag:n.documentation.alwaysShowHelpAllFlag,includeHidden:!1,aliases:m,text:r,ansiColor:!1})])}async function Se({parameters:e},t){try{let n=ne(e,t.scannerConfig);for(let a of t.inputs)n.next(a);return await n.proposeCompletions(t)}catch{return[]}}async function Re(e,{partial:t,scannerConfig:n,completionConfig:a}){let r=e.getAllEntries();a.includeHiddenRoutes||(r=r.filter(o=>!o.hidden));let i=n.caseStyle==="allow-kebab-for-camel"?"convert-camel-to-kebab":n.caseStyle;return r.flatMap(o=>{let d=o.target.kind===B?"routing-target:command":"routing-target:route-map",m=o.target.brief,s={kind:d,completion:o.name[i],brief:m};return a.includeAliases?[s,...o.aliases.map(u=>({kind:d,completion:u,brief:m}))]:[s]}).filter(({completion:o})=>o.startsWith(t))}async function Oe({root:e,config:t,defaultText:n},a,r){if(a.length===0)return[];let i=te(e,t.scanner,[]),o=a.slice(0,-1),d;for(;o.length>0&&!d;){let l=o.shift();d=i.next(l)}if(d)return[];let m=i.finish();if(m.helpRequested)return[];let s;if("forCommand"in r)try{s=await r.forCommand({prefix:m.prefix})}catch{return[]}else s=r;let u=a[a.length-1];return m.target.kind===R?Re(m.target,{context:s,partial:u,scannerConfig:t.scanner,completionConfig:t.completion}):Se(m.target,{context:s,inputs:m.unprocessedInputs,partial:u,scannerConfig:t.scanner,completionConfig:t.completion,text:n,includeVersionFlag:!!t.versionInfo&&m.rootLevel})}function an(e,t){return e.includes(t)}function Be(e){return t=>{if(!an(e,t))throw new SyntaxError(`${t} is not one of (${e.join("|")})`);return t}}function de(e){return"default"in e&&typeof e.default<"u"}function D(e){return e.optional??de(e)}function ve(e){return`(${e})`}function Xe(e){return`[${e}]`}function we(e){return`${e}...`}function sn(e){return`<${e}>`}function ln(e){return`[<${e}>]`}function mn(e){return`<${e}>...`}function re(e,t){let n=Object.entries(e.flags??{}).filter(([,i])=>!(i.hidden||t.config.onlyRequiredInUsageLine&&D(i))).map(([i,o])=>{let d=t.config.caseStyle==="convert-camel-to-kebab"?`--${A(i)}`:`--${i}`;if(e.aliases&&t.config.useAliasInUsageLine){let s=Object.entries(e.aliases).filter(u=>u[1]===i);s.length===1&&s[0]&&(d=`-${s[0][0]}`)}if(o.kind==="boolean")return[o,d];if(o.kind==="enum"&&typeof o.placeholder!="string")return[o,`${d} ${o.values.join("|")}`];let m=o.placeholder??"value";return[o,`${d} ${m}`]}).map(([i,o])=>i.kind==="parsed"&&i.variadic?D(i)?we(Xe(o)):we(ve(o)):D(i)?Xe(o):ve(o)),a=[],r=e.positional;if(r)if(r.kind==="array")a=[mn(r.parameter.placeholder??"args")];else{let i=r.parameters;t.config.onlyRequiredInUsageLine&&(i=i.filter(o=>!o.optional&&typeof o.default>"u")),a=i.map((o,d)=>{let m=o.placeholder??`arg${d+1}`;return o.optional||typeof o.default<"u"?ln(m):sn(m)})}return[...t.prefix,...n,...a].join(" ")}function oe(e,t,n){let{keywords:a,briefs:r}=n.text,i=Object.entries(e).filter(([,m])=>!(m.hidden&&!n.includeHidden)),o=i.some(([,m])=>D(m)),d=i.map(([m,s])=>{let u=Object.entries(t).filter(f=>f[1]===m).map(([f])=>`-${f}`),l="--"+W(m,n.config.caseStyle);if(s.kind==="boolean"&&s.default!==!1){let f=Ee(m,n.config.caseStyle);l=`${l}/--${f}`}D(s)?l=`[${l}]`:o&&(l=` ${l}`),s.kind==="parsed"&&s.variadic&&(l=`${l}...`);let p=[];if(s.kind==="enum"){let f=s.values.join("|");p.push(f)}if(de(s)){let f=n.ansiColor?`\x1B[90m${a.default}\x1B[39m`:a.default;p.push(`${f} ${s.default===""?'""':String(s.default)}`)}let c=p.length>0?`[${p.join(", ")}]`:void 0;return{aliases:u.join(" "),flagName:l,brief:s.brief,suffix:c,hidden:s.hidden}});if(d.push({aliases:"-h",flagName:o?" --help":"--help",brief:r.help}),n.includeHelpAllFlag){let m=W("helpAll",n.config.caseStyle);d.push({aliases:"-H",flagName:o?` --${m}`:`--${m}`,brief:r.helpAll,hidden:!n.config.alwaysShowHelpAllFlag})}return n.includeVersionFlag&&d.push({aliases:"-v",flagName:o?" --version":"--version",brief:r.version}),n.includeArgumentEscapeSequenceFlag&&d.push({aliases:"",flagName:o?" --":"--",brief:r.argumentEscapeSequence}),L(d.map(m=>n.ansiColor?[m.hidden?`\x1B[90m${m.aliases}\x1B[39m`:`\x1B[97m${m.aliases}\x1B[39m`,m.hidden?`\x1B[90m${m.flagName}\x1B[39m`:`\x1B[97m${m.flagName}\x1B[39m`,m.hidden?`\x1B[90m${m.brief}\x1B[39m`:`\x1B[03m${m.brief}\x1B[23m`,m.suffix??""]:[m.aliases,m.flagName,m.brief,m.suffix??""]),[" "," "," "])}function*ae(e){if(yield e.config.useAliasInUsageLine?"-h":"--help",e.includeHelpAllFlag){let t=W("helpAll",e.config.caseStyle);yield e.config.useAliasInUsageLine?"-H":`--${t}`}e.includeVersionFlag&&(yield e.config.useAliasInUsageLine?"-v":"--version")}function $e(e,t){if(e.kind==="array"){let r=e.parameter.placeholder??"args",i=t.ansiColor?`\x1B[97m${r}...\x1B[39m`:`${r}...`,o=t.ansiColor?`\x1B[3m${e.parameter.brief}\x1B[23m`:e.parameter.brief;return L([[i,o]],[" "])}let{keywords:n}=t.text,a=e.parameters.some(r=>r.optional);return L(e.parameters.map((r,i)=>{let o=r.placeholder??`arg${i+1}`,d;return r.optional?o=`[${o}]`:a&&(o=` ${o}`),r.default&&(d=`[${t.ansiColor?`\x1B[90m${n.default}\x1B[39m`:n.default} ${r.default}]`),[t.ansiColor?`\x1B[97m${o}\x1B[39m`:o,t.ansiColor?`\x1B[3m${r.brief}\x1B[23m`:r.brief,d??""]}),[" "," "])}function*Le(e,t,n){let{brief:a,fullDescription:r,customUsage:i}=t,{headers:o}=n.text,d=n.prefix.join(" ");if(yield n.ansiColor?`\x1B[1m${o.usage}\x1B[22m`:o.usage,i)for(let s of i)if(typeof s=="string")yield` ${d} ${s}`;else{let u=n.ansiColor?`\x1B[3m${s.brief}\x1B[23m`:s.brief;yield` ${d} ${s.input}
19
- ${u}`}else yield` ${re(e,n)}`;for(let s of ae(n))yield` ${d} ${s}`;if(yield"",yield r??a,n.aliases&&n.aliases.length>0){let s=n.prefix.slice(0,-1).join(" ");yield"",yield n.ansiColor?`\x1B[1m${o.aliases}\x1B[22m`:o.aliases;for(let u of n.aliases)yield` ${s} ${u}`}yield"",yield n.ansiColor?`\x1B[1m${o.flags}\x1B[22m`:o.flags;for(let s of oe(e.flags??{},e.aliases??{},n))yield` ${s}`;let m=e.positional??{kind:"tuple",parameters:[]};if(m.kind==="array"||m.parameters.length>0){yield"",yield n.ansiColor?`\x1B[1m${o.arguments}\x1B[22m`:o.arguments;for(let s of $e(m,n))yield` ${s}`}}function dn(e,t){for(let n of t)if(n in e)throw new x(`Unable to use reserved flag --${n}`)}function un(e,t){for(let n of t)if(n in e)throw new x(`Unable to use reserved alias -${n}`)}function*pn(e){yield`no-${A(e)}`,yield`no${e[0].toUpperCase()}${e.slice(1)}`}function cn(e){let t=Object.entries(e).filter(([,n])=>n.kind==="boolean"&&!n.optional);for(let[n]of t)for(let a of pn(n))if(a in e)throw new x(`Unable to allow negation for --${n} as it conflicts with --${a}`)}function ke(e){let{flags:t={},aliases:n={}}=e.parameters;dn(t,["help","helpAll","help-all"]),un(n,["h","H"]),cn(t);let a;return"func"in e?a=async()=>e.func:a=e.loader,{kind:B,loader:a,parameters:e.parameters,get brief(){return e.docs.brief},formatUsageLine:r=>re(e.parameters,r),formatHelp:r=>[...Le(e.parameters,e.docs,r)].join(`
18
+ `),h.UnknownCommand}let s=d.finish();if(s.helpRequested||s.target.kind===R){let l=P(r.process,r.process.stdout,n.documentation);return r.process.stdout.write(s.target.formatHelp({prefix:s.prefix,includeVersionFlag:!!n.versionInfo&&s.rootLevel,includeArgumentEscapeSequenceFlag:n.scanner.allowArgumentEscapeSequence,includeHelpAllFlag:s.helpRequested==="all"||n.documentation.alwaysShowHelpAllFlag,includeHidden:s.helpRequested==="all",config:n.documentation,aliases:s.aliases[n.documentation.caseStyle],text:i,ansiColor:l})),h.Success}let u;if("forCommand"in r)try{u=await r.forCommand({prefix:s.prefix})}catch(l){let p=P(r.process,r.process.stderr,n.documentation),c=i.exceptionWhileLoadingCommandContext(l,p);return r.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m`:c),h.ContextLoadError}else u=r;return Ee(s.target,{context:u,inputs:s.unprocessedInputs,scannerConfig:n.scanner,documentationConfig:n.documentation,errorFormatting:i,determineExitCode:n.determineExitCode})}function W(e,t){return t==="convert-camel-to-kebab"?F(e):e}function he(e,t){return t==="convert-camel-to-kebab"?`no-${F(e)}`:`no${e[0].toUpperCase()}${e.slice(1)}`}function Ne(e){let t=e.scanner?.caseStyle??"original",n;if(e.documentation?.caseStyle){if(t==="original"&&e.documentation.caseStyle==="convert-camel-to-kebab")throw new C("Cannot convert route and flag names on display but scan as original");n=e.documentation.caseStyle}else t==="allow-kebab-for-camel"?n="convert-camel-to-kebab":n=t;let a={caseStyle:t,allowArgumentEscapeSequence:e.scanner?.allowArgumentEscapeSequence??!1,distanceOptions:e.scanner?.distanceOptions??{threshold:7,weights:{insertion:1,deletion:3,substitution:2,transposition:0}}},r={alwaysShowHelpAllFlag:e.documentation?.alwaysShowHelpAllFlag??!1,useAliasInUsageLine:e.documentation?.useAliasInUsageLine??!1,onlyRequiredInUsageLine:e.documentation?.onlyRequiredInUsageLine??!1,caseStyle:n,disableAnsiColor:e.documentation?.disableAnsiColor??!1},i={includeAliases:e.completion?.includeAliases??r.useAliasInUsageLine,includeHiddenRoutes:e.completion?.includeHiddenRoutes??!1,...e.completion};return{...e,scanner:a,completion:i,documentation:r,localization:{defaultLocale:"en",loadText:Fe,...e.localization}}}function be(e,t){let n=Ne(t);if(e.kind===v&&n.versionInfo){if(e.usesFlag("version"))throw new C("Unable to use command with flag --version as root when version info is supplied");if(e.usesFlag("v"))throw new C("Unable to use command with alias -v as root when version info is supplied")}let a=n.localization.loadText(n.localization.defaultLocale);if(!a)throw new C(`No text available for the default locale "${n.localization.defaultLocale}"`);return{root:e,config:n,defaultText:a}}function*Pe(e,t,n){for(let a of e.getAllEntries()){if(a.hidden)continue;let r=a.name[n],i=[...t,r];a.target.kind===R?yield*Pe(a.target,i,n):yield[i,a.target,a.aliases]}}function Se({root:e,defaultText:t,config:n},a){let r=t;if(a){let o=n.localization.loadText(a);if(o)r=o;else throw new C(`Application does not support "${a}" locale`)}let i=[];return e.kind===v?i.push([[n.name],e,[]]):i.push(...Pe(e,[n.name],n.documentation.caseStyle)),i.map(([o,d,m])=>[o.join(" "),d.formatHelp({prefix:o,config:n.documentation,includeVersionFlag:!!n.versionInfo&&o.length===1,includeArgumentEscapeSequenceFlag:n.scanner.allowArgumentEscapeSequence,includeHelpAllFlag:n.documentation.alwaysShowHelpAllFlag,includeHidden:!1,aliases:m,text:r,ansiColor:!1})])}async function Re({parameters:e},t){try{let n=ne(e,t.scannerConfig);for(let a of t.inputs)n.next(a);return await n.proposeCompletions(t)}catch{return[]}}async function Oe(e,{partial:t,scannerConfig:n,completionConfig:a}){let r=e.getAllEntries();a.includeHiddenRoutes||(r=r.filter(o=>!o.hidden));let i=n.caseStyle==="allow-kebab-for-camel"?"convert-camel-to-kebab":n.caseStyle;return r.flatMap(o=>{let d=o.target.kind===v?"routing-target:command":"routing-target:route-map",m=o.target.brief,s={kind:d,completion:o.name[i],brief:m};return a.includeAliases?[s,...o.aliases.map(u=>({kind:d,completion:u,brief:m}))]:[s]}).filter(({completion:o})=>o.startsWith(t))}async function ve({root:e,config:t,defaultText:n},a,r){if(a.length===0)return[];let i=te(e,t.scanner,[]),o=a.slice(0,-1),d;for(;o.length>0&&!d;){let l=o.shift();d=i.next(l)}if(d)return[];let m=i.finish();if(m.helpRequested)return[];let s;if("forCommand"in r)try{s=await r.forCommand({prefix:m.prefix})}catch{return[]}else s=r;let u=a[a.length-1];return m.target.kind===R?Oe(m.target,{context:s,partial:u,scannerConfig:t.scanner,completionConfig:t.completion}):Re(m.target,{context:s,inputs:m.unprocessedInputs,partial:u,scannerConfig:t.scanner,completionConfig:t.completion,text:n,includeVersionFlag:!!t.versionInfo&&m.rootLevel})}function sn(e,t){return e.includes(t)}function Be(e){return t=>{if(!sn(e,t))throw new SyntaxError(`${t} is not one of (${e.join("|")})`);return t}}function de(e){return"default"in e&&typeof e.default<"u"}function M(e){return e.optional??de(e)}function we(e){return`(${e})`}function Xe(e){return`[${e}]`}function $e(e){return`${e}...`}function ln(e){return`<${e}>`}function mn(e){return`[<${e}>]`}function dn(e){return`<${e}>...`}function re(e,t){let n=Object.entries(e.flags??{}).filter(([,i])=>!(i.hidden||t.config.onlyRequiredInUsageLine&&M(i))).map(([i,o])=>{let d=t.config.caseStyle==="convert-camel-to-kebab"?`--${F(i)}`:`--${i}`;if(e.aliases&&t.config.useAliasInUsageLine){let s=Object.entries(e.aliases).filter(u=>u[1]===i);s.length===1&&s[0]&&(d=`-${s[0][0]}`)}if(o.kind==="boolean")return[o,d];if(o.kind==="enum"&&typeof o.placeholder!="string")return[o,`${d} ${o.values.join("|")}`];let m=o.placeholder??"value";return[o,`${d} ${m}`]}).map(([i,o])=>i.kind==="parsed"&&i.variadic?M(i)?$e(Xe(o)):$e(we(o)):M(i)?Xe(o):we(o)),a=[],r=e.positional;if(r)if(r.kind==="array")a=[dn(r.parameter.placeholder??"args")];else{let i=r.parameters;t.config.onlyRequiredInUsageLine&&(i=i.filter(o=>!o.optional&&typeof o.default>"u")),a=i.map((o,d)=>{let m=o.placeholder??`arg${d+1}`;return o.optional||typeof o.default<"u"?mn(m):ln(m)})}return[...t.prefix,...n,...a].join(" ")}function oe(e,t,n){let{keywords:a,briefs:r}=n.text,i=Object.entries(e).filter(([,m])=>!(m.hidden&&!n.includeHidden)),o=i.some(([,m])=>M(m)),d=i.map(([m,s])=>{let u=Object.entries(t).filter(f=>f[1]===m).map(([f])=>`-${f}`),l="--"+W(m,n.config.caseStyle);if(s.kind==="boolean"&&s.default!==!1){let f=he(m,n.config.caseStyle);l=`${l}/--${f}`}M(s)?l=`[${l}]`:o&&(l=` ${l}`),s.kind==="parsed"&&s.variadic&&(l=`${l}...`);let p=[];if(s.kind==="enum"){let f=s.values.join("|");p.push(f)}if(de(s)){let f=n.ansiColor?`\x1B[90m${a.default}\x1B[39m`:a.default;p.push(`${f} ${s.default===""?'""':String(s.default)}`)}if("variadic"in s&&typeof s.variadic=="string"){let f=n.ansiColor?`\x1B[90m${a.separator}\x1B[39m`:a.separator;p.push(`${f} ${s.variadic}`)}let c=p.length>0?`[${p.join(", ")}]`:void 0;return{aliases:u.join(" "),flagName:l,brief:s.brief,suffix:c,hidden:s.hidden}});if(d.push({aliases:"-h",flagName:o?" --help":"--help",brief:r.help}),n.includeHelpAllFlag){let m=W("helpAll",n.config.caseStyle);d.push({aliases:"-H",flagName:o?` --${m}`:`--${m}`,brief:r.helpAll,hidden:!n.config.alwaysShowHelpAllFlag})}return n.includeVersionFlag&&d.push({aliases:"-v",flagName:o?" --version":"--version",brief:r.version}),n.includeArgumentEscapeSequenceFlag&&d.push({aliases:"",flagName:o?" --":"--",brief:r.argumentEscapeSequence}),L(d.map(m=>n.ansiColor?[m.hidden?`\x1B[90m${m.aliases}\x1B[39m`:`\x1B[97m${m.aliases}\x1B[39m`,m.hidden?`\x1B[90m${m.flagName}\x1B[39m`:`\x1B[97m${m.flagName}\x1B[39m`,m.hidden?`\x1B[90m${m.brief}\x1B[39m`:`\x1B[03m${m.brief}\x1B[23m`,m.suffix??""]:[m.aliases,m.flagName,m.brief,m.suffix??""]),[" "," "," "])}function*ae(e){if(yield e.config.useAliasInUsageLine?"-h":"--help",e.includeHelpAllFlag){let t=W("helpAll",e.config.caseStyle);yield e.config.useAliasInUsageLine?"-H":`--${t}`}e.includeVersionFlag&&(yield e.config.useAliasInUsageLine?"-v":"--version")}function Le(e,t){if(e.kind==="array"){let r=e.parameter.placeholder??"args",i=t.ansiColor?`\x1B[97m${r}...\x1B[39m`:`${r}...`,o=t.ansiColor?`\x1B[3m${e.parameter.brief}\x1B[23m`:e.parameter.brief;return L([[i,o]],[" "])}let{keywords:n}=t.text,a=e.parameters.some(r=>r.optional);return L(e.parameters.map((r,i)=>{let o=r.placeholder??`arg${i+1}`,d;return r.optional?o=`[${o}]`:a&&(o=` ${o}`),r.default&&(d=`[${t.ansiColor?`\x1B[90m${n.default}\x1B[39m`:n.default} ${r.default}]`),[t.ansiColor?`\x1B[97m${o}\x1B[39m`:o,t.ansiColor?`\x1B[3m${r.brief}\x1B[23m`:r.brief,d??""]}),[" "," "])}function*ke(e,t,n){let{brief:a,fullDescription:r,customUsage:i}=t,{headers:o}=n.text,d=n.prefix.join(" ");if(yield n.ansiColor?`\x1B[1m${o.usage}\x1B[22m`:o.usage,i)for(let s of i)if(typeof s=="string")yield` ${d} ${s}`;else{let u=n.ansiColor?`\x1B[3m${s.brief}\x1B[23m`:s.brief;yield` ${d} ${s.input}
19
+ ${u}`}else yield` ${re(e,n)}`;for(let s of ae(n))yield` ${d} ${s}`;if(yield"",yield r??a,n.aliases&&n.aliases.length>0){let s=n.prefix.slice(0,-1).join(" ");yield"",yield n.ansiColor?`\x1B[1m${o.aliases}\x1B[22m`:o.aliases;for(let u of n.aliases)yield` ${s} ${u}`}yield"",yield n.ansiColor?`\x1B[1m${o.flags}\x1B[22m`:o.flags;for(let s of oe(e.flags??{},e.aliases??{},n))yield` ${s}`;let m=e.positional??{kind:"tuple",parameters:[]};if(m.kind==="array"||m.parameters.length>0){yield"",yield n.ansiColor?`\x1B[1m${o.arguments}\x1B[22m`:o.arguments;for(let s of Le(m,n))yield` ${s}`}}function un(e,t){for(let n of t)if(n in e)throw new C(`Unable to use reserved flag --${n}`)}function pn(e,t){for(let n of t)if(n in e)throw new C(`Unable to use reserved alias -${n}`)}function*cn(e){yield`no-${F(e)}`,yield`no${e[0].toUpperCase()}${e.slice(1)}`}function fn(e){let t=Object.entries(e).filter(([,n])=>n.kind==="boolean"&&!n.optional);for(let[n]of t)for(let a of cn(n))if(a in e)throw new C(`Unable to allow negation for --${n} as it conflicts with --${a}`)}function gn(e){for(let[t,n]of Object.entries(e))if("variadic"in n&&typeof n.variadic=="string"){if(n.variadic.length<1)throw new C(`Unable to use "" as variadic separator for --${t} as it is empty`);if(/\s/.test(n.variadic))throw new C(`Unable to use "${n.variadic}" as variadic separator for --${t} as it contains whitespace`)}}function Ie(e){let{flags:t={},aliases:n={}}=e.parameters;un(t,["help","helpAll","help-all"]),pn(n,["h","H"]),fn(t),gn(t);let a;return"func"in e?a=async()=>e.func:a=e.loader,{kind:v,loader:a,parameters:e.parameters,get brief(){return e.docs.brief},formatUsageLine:r=>re(e.parameters,r),formatHelp:r=>[...ke(e.parameters,e.docs,r)].join(`
20
20
  `)+`
21
- `,usesFlag:r=>r in t||r in n}}function*Ie(e,t,n){let{brief:a,fullDescription:r,hideRoute:i}=t,{headers:o}=n.text;yield n.ansiColor?`\x1B[1m${o.usage}\x1B[22m`:o.usage;for(let[l,p]of Object.entries(e))if(!i||!i[l]||n.includeHidden){let c=n.config.caseStyle==="convert-camel-to-kebab"?A(l):l;yield` ${p.formatUsageLine({...n,prefix:[...n.prefix,c]})}`}let d=n.prefix.join(" ");for(let l of ae(n))yield` ${d} ${l}`;if(yield"",yield r??a,n.aliases&&n.aliases.length>0){let l=n.prefix.slice(0,-1).join(" ");yield"",yield n.ansiColor?`\x1B[1m${o.aliases}\x1B[22m`:o.aliases;for(let p of n.aliases)yield` ${l} ${p}`}yield"",yield n.ansiColor?`\x1B[1m${o.flags}\x1B[22m`:o.flags;for(let l of oe({},{},n))yield` ${l}`;yield"",yield n.ansiColor?`\x1B[1m${o.commands}\x1B[22m`:o.commands;let s=Object.entries(e).filter(([l])=>!i||!i[l]||n.includeHidden).map(([l,p])=>({routeName:W(l,n.config.caseStyle),brief:p.brief,hidden:i&&i[l]})),u=L(s.map(l=>n.ansiColor?[l.hidden?`\x1B[90m${l.routeName}\x1B[39m`:`\x1B[97m${l.routeName}\x1B[39m`,l.hidden?`\x1B[90m${l.brief}\x1B[39m`:`\x1B[03m${l.brief}\x1B[23m`]:[l.routeName,l.brief]),[" "]);for(let l of u)yield` ${l}`}function De({routes:e,defaultCommand:t,docs:n,aliases:a}){if(Object.entries(e).length===0)throw new x("Route map must contain at least one route");let r=a??{},i=new Map;for(let[m,s]of Object.entries(r)){if(m in e)throw new x(`Cannot use "${m}" as an alias when a route with that name already exists`);let u=i.get(s)??[];i.set(s,[...u,m])}let o=t?e[t]:void 0;if(o&&o.kind===R)throw new x(`Cannot use "${t}" as the default command because it is not a Command`);let d=m=>{if(m in r)return r[m];if(m in e)return m};return{kind:R,get brief(){return n.brief},formatUsageLine(m){let s=this.getAllEntries().filter(u=>!u.hidden).map(u=>u.name[m.config.caseStyle]);return`${m.prefix.join(" ")} ${s.join("|")} ...`},formatHelp:m=>[...Ie(e,n,m)].join(`
21
+ `,usesFlag:r=>r in t||r in n}}function*Me(e,t,n){let{brief:a,fullDescription:r,hideRoute:i}=t,{headers:o}=n.text;yield n.ansiColor?`\x1B[1m${o.usage}\x1B[22m`:o.usage;for(let[l,p]of Object.entries(e))if(!i||!i[l]||n.includeHidden){let c=n.config.caseStyle==="convert-camel-to-kebab"?F(l):l;yield` ${p.formatUsageLine({...n,prefix:[...n.prefix,c]})}`}let d=n.prefix.join(" ");for(let l of ae(n))yield` ${d} ${l}`;if(yield"",yield r??a,n.aliases&&n.aliases.length>0){let l=n.prefix.slice(0,-1).join(" ");yield"",yield n.ansiColor?`\x1B[1m${o.aliases}\x1B[22m`:o.aliases;for(let p of n.aliases)yield` ${l} ${p}`}yield"",yield n.ansiColor?`\x1B[1m${o.flags}\x1B[22m`:o.flags;for(let l of oe({},{},n))yield` ${l}`;yield"",yield n.ansiColor?`\x1B[1m${o.commands}\x1B[22m`:o.commands;let s=Object.entries(e).filter(([l])=>!i||!i[l]||n.includeHidden).map(([l,p])=>({routeName:W(l,n.config.caseStyle),brief:p.brief,hidden:i&&i[l]})),u=L(s.map(l=>n.ansiColor?[l.hidden?`\x1B[90m${l.routeName}\x1B[39m`:`\x1B[97m${l.routeName}\x1B[39m`,l.hidden?`\x1B[90m${l.brief}\x1B[39m`:`\x1B[03m${l.brief}\x1B[23m`]:[l.routeName,l.brief]),[" "]);for(let l of u)yield` ${l}`}function De({routes:e,defaultCommand:t,docs:n,aliases:a}){if(Object.entries(e).length===0)throw new C("Route map must contain at least one route");let r=a??{},i=new Map;for(let[m,s]of Object.entries(r)){if(m in e)throw new C(`Cannot use "${m}" as an alias when a route with that name already exists`);let u=i.get(s)??[];i.set(s,[...u,m])}let o=t?e[t]:void 0;if(o&&o.kind===R)throw new C(`Cannot use "${t}" as the default command because it is not a Command`);let d=m=>{if(m in r)return r[m];if(m in e)return m};return{kind:R,get brief(){return n.brief},formatUsageLine(m){let s=this.getAllEntries().filter(u=>!u.hidden).map(u=>u.name[m.config.caseStyle]);return`${m.prefix.join(" ")} ${s.join("|")} ...`},formatHelp:m=>[...Me(e,n,m)].join(`
22
22
  `)+`
23
- `,getDefaultCommand:()=>o,getOtherAliasesForInput:(m,s)=>{if(t){if(m===t)return{original:[""],"convert-camel-to-kebab":[""]};if(m==="")return{original:[t],"convert-camel-to-kebab":[t]}}let u=M(m),l=d(m);if(!l&&s==="allow-kebab-for-camel"&&(l=d(u)),!l)return{original:[],"convert-camel-to-kebab":[]};let p=[l,...i.get(l)??[]].filter(c=>c!==m&&c!==u);return{original:p,"convert-camel-to-kebab":p.map(A)}},getRoutingTargetForInput:m=>{let s=m in r?r[m]:m;return e[s]},getAllEntries(){let m=n.hideRoute;return Object.entries(e).map(([s,u])=>({name:{original:s,"convert-camel-to-kebab":A(s)},target:u,aliases:i.get(s)??[],hidden:m?.[s]??!1}))}}}async function fn(e,t,n){let a=await Ae(e,t,n);n.process.exitCode=a}0&&(module.exports={AliasNotFoundError,ArgumentParseError,ArgumentScannerError,EnumValidationError,ExitCode,FlagNotFoundError,InvalidNegatedFlagSyntaxError,UnexpectedFlagError,UnexpectedPositionalError,UnsatisfiedFlagError,UnsatisfiedPositionalError,booleanParser,buildApplication,buildChoiceParser,buildCommand,buildRouteMap,formatMessageForArgumentScannerError,generateHelpTextForAllCommands,looseBooleanParser,numberParser,proposeCompletions,run,text_en});
23
+ `,getDefaultCommand:()=>o,getOtherAliasesForInput:(m,s)=>{if(t){if(m===t)return{original:[""],"convert-camel-to-kebab":[""]};if(m==="")return{original:[t],"convert-camel-to-kebab":[t]}}let u=D(m),l=d(m);if(!l&&s==="allow-kebab-for-camel"&&(l=d(u)),!l)return{original:[],"convert-camel-to-kebab":[]};let p=[l,...i.get(l)??[]].filter(c=>c!==m&&c!==u);return{original:p,"convert-camel-to-kebab":p.map(F)}},getRoutingTargetForInput:m=>{let s=m in r?r[m]:m;return e[s]},getAllEntries(){let m=n.hideRoute;return Object.entries(e).map(([s,u])=>({name:{original:s,"convert-camel-to-kebab":F(s)},target:u,aliases:i.get(s)??[],hidden:m?.[s]??!1}))}}}async function Cn(e,t,n){let a=await Ae(e,t,n);n.process.exitCode=a}0&&(module.exports={AliasNotFoundError,ArgumentParseError,ArgumentScannerError,EnumValidationError,ExitCode,FlagNotFoundError,InvalidNegatedFlagSyntaxError,UnexpectedFlagError,UnexpectedPositionalError,UnsatisfiedFlagError,UnsatisfiedPositionalError,booleanParser,buildApplication,buildChoiceParser,buildCommand,buildRouteMap,formatMessageForArgumentScannerError,generateHelpTextForAllCommands,looseBooleanParser,numberParser,proposeCompletions,run,text_en});
package/dist/index.d.cts CHANGED
@@ -94,9 +94,15 @@ interface DocumentationKeywords {
94
94
  /**
95
95
  * Keyword to be included when flags or arguments have a default value.
96
96
  *
97
- * Defaults to `"default"`.
97
+ * Defaults to `"default ="`.
98
98
  */
99
99
  readonly default: string;
100
+ /**
101
+ * Keyword to be included when flags are variadic and have a defined separator.
102
+ *
103
+ * Defaults to `"separator ="`.
104
+ */
105
+ readonly separator: string;
100
106
  }
101
107
  /**
102
108
  * Section header strings used to build help text.
@@ -658,7 +664,7 @@ interface BaseEnumFlagParameter<T extends string> extends BaseFlagParameter {
658
664
  readonly default?: T;
659
665
  readonly optional?: boolean;
660
666
  readonly hidden?: boolean;
661
- readonly variadic?: boolean;
667
+ readonly variadic?: boolean | string;
662
668
  }
663
669
  interface RequiredEnumFlagParameter<T extends string> extends BaseEnumFlagParameter<T> {
664
670
  /**
@@ -704,8 +710,12 @@ interface OptionalVariadicEnumFlagParameter<T extends string> extends BaseEnumFl
704
710
  readonly hidden?: false;
705
711
  /**
706
712
  * Parameter extends array and must be set as variadic.
713
+ * Also supports using an arbitrary string as a separator for individual inputs.
714
+ * For example, `variadic: ","` will scan `--flag a,b,c` as `["a", "b", "c"]`.
715
+ * If no separator is provided, the default behavior is to parse the input as a single string.
716
+ * The separator cannot be the empty string or contain any whitespace.
707
717
  */
708
- readonly variadic: true;
718
+ readonly variadic: true | string;
709
719
  }
710
720
  interface RequiredVariadicEnumFlagParameter<T extends string> extends BaseEnumFlagParameter<T> {
711
721
  /**
@@ -723,8 +733,12 @@ interface RequiredVariadicEnumFlagParameter<T extends string> extends BaseEnumFl
723
733
  readonly hidden?: false;
724
734
  /**
725
735
  * Parameter extends array and must be set as variadic.
736
+ * Also supports using an arbitrary string as a separator for individual inputs.
737
+ * For example, `variadic: ","` will scan `--flag a,b,c` as `["a", "b", "c"]`.
738
+ * If no separator is provided, the default behavior is to parse the input as a single string.
739
+ * The separator cannot be the empty string or contain any whitespace.
726
740
  */
727
- readonly variadic: true;
741
+ readonly variadic: true | string;
728
742
  }
729
743
  interface BaseParsedFlagParameter<T, CONTEXT extends CommandContext> extends ParsedParameter<T, CONTEXT>, BaseFlagParameter {
730
744
  /**
@@ -740,7 +754,7 @@ interface BaseParsedFlagParameter<T, CONTEXT extends CommandContext> extends Par
740
754
  */
741
755
  readonly inferEmpty?: boolean;
742
756
  readonly optional?: boolean;
743
- readonly variadic?: boolean;
757
+ readonly variadic?: boolean | string;
744
758
  readonly hidden?: boolean;
745
759
  }
746
760
  type RequiredParsedFlagParameter<T, CONTEXT extends CommandContext> = BaseParsedFlagParameter<T, CONTEXT> & {
@@ -795,8 +809,12 @@ interface OptionalVariadicParsedFlagParameter<T, CONTEXT extends CommandContext>
795
809
  readonly optional: true;
796
810
  /**
797
811
  * Parameter extends array and must be set as variadic.
812
+ * Also supports using an arbitrary string as a separator for individual inputs.
813
+ * For example, `variadic: ","` will scan `--flag a,b,c` as `["a", "b", "c"]`.
814
+ * If no separator is provided, the default behavior is to parse the input as a single string.
815
+ * The separator cannot be the empty string or contain any whitespace.
798
816
  */
799
- readonly variadic: true;
817
+ readonly variadic: true | string;
800
818
  /**
801
819
  * Default values are not supported for variadic parameters.
802
820
  */
@@ -810,8 +828,12 @@ interface RequiredVariadicParsedFlagParameter<T, CONTEXT extends CommandContext>
810
828
  readonly optional?: false;
811
829
  /**
812
830
  * Parameter extends array and must be set as variadic.
831
+ * Also supports using an arbitrary string as a separator for individual inputs.
832
+ * For example, `variadic: ","` will scan `--flag a,b,c` as `["a", "b", "c"]`.
833
+ * If no separator is provided, the default behavior is to parse the input as a single string.
834
+ * The separator cannot be the empty string or contain any whitespace.
813
835
  */
814
- readonly variadic: true;
836
+ readonly variadic: true | string;
815
837
  /**
816
838
  * Default values are not supported for variadic parameters.
817
839
  */
@@ -827,10 +849,9 @@ type TypedFlagParameter<T, CONTEXT extends CommandContext = CommandContext> = un
827
849
  type FlagParameter<CONTEXT extends CommandContext> = BooleanFlagParameter | CounterFlagParameter | BaseEnumFlagParameter<string> | BaseParsedFlagParameter<unknown, CONTEXT>;
828
850
  /**
829
851
  * Definition of flags for each named parameter.
830
- * Required properties may vary depending on the type argument `T`.
831
852
  */
832
853
  type FlagParametersForType<T, CONTEXT extends CommandContext = CommandContext> = {
833
- readonly [K in keyof T]: TypedFlagParameter<T[K], CONTEXT>;
854
+ readonly [K in keyof T]-?: TypedFlagParameter<T[K], CONTEXT>;
834
855
  };
835
856
  /**
836
857
  * Definition of flags for each named parameter.
@@ -858,6 +879,9 @@ type UppercaseLetter = Capitalize<LowercaseLetter>;
858
879
  type ReservedAlias = "h";
859
880
  type AvailableAlias = Exclude<LowercaseLetter | UppercaseLetter, ReservedAlias>;
860
881
  type Aliases<T> = Readonly<Partial<Record<AvailableAlias, T>>>;
882
+ /**
883
+ * Root constraint for all flag type parameters.
884
+ */
861
885
  type BaseFlags = Readonly<Record<string, unknown>>;
862
886
  interface TypedCommandFlagParameters_<FLAGS extends BaseFlags, CONTEXT extends CommandContext> {
863
887
  /**
@@ -869,7 +893,9 @@ interface TypedCommandFlagParameters_<FLAGS extends BaseFlags, CONTEXT extends C
869
893
  */
870
894
  readonly aliases?: Aliases<keyof FLAGS & string>;
871
895
  }
872
- type TypedCommandFlagParameters<FLAGS extends BaseFlags, CONTEXT extends CommandContext> = Record<string, never> extends FLAGS ? Partial<TypedCommandFlagParameters_<FLAGS, CONTEXT>> : TypedCommandFlagParameters_<FLAGS, CONTEXT>;
896
+ type TypedCommandFlagParameters<FLAGS extends BaseFlags, CONTEXT extends CommandContext> = [
897
+ keyof FLAGS
898
+ ] extends [never] ? Partial<TypedCommandFlagParameters_<FLAGS, CONTEXT>> : TypedCommandFlagParameters_<FLAGS, CONTEXT>;
873
899
  interface TypedCommandPositionalParameters_<ARGS extends BaseArgs, CONTEXT extends CommandContext> {
874
900
  /**
875
901
  * Typed definitions for all positional parameters.
@@ -939,6 +965,10 @@ interface PositionalParameterTuple<T> {
939
965
  readonly kind: "tuple";
940
966
  readonly parameters: T;
941
967
  }
968
+ /**
969
+ * Root constraint for all positional argument type parameters.
970
+ * This is used to ensure that positional parameters are always defined as an array or tuple.
971
+ */
942
972
  type BaseArgs = readonly unknown[];
943
973
  /**
944
974
  * Definition of all positional parameters.
@@ -1338,7 +1368,7 @@ type CommandBuilderArguments<FLAGS extends BaseFlags, ARGS extends BaseArgs, CON
1338
1368
  /**
1339
1369
  * Build command from loader or local function as action with associated parameters and documentation.
1340
1370
  */
1341
- declare function buildCommand<const FLAGS extends Readonly<Partial<Record<keyof FLAGS, unknown>>>, const ARGS extends BaseArgs, const CONTEXT extends CommandContext = CommandContext>(builderArgs: CommandBuilderArguments<FLAGS, ARGS, CONTEXT>): Command<CONTEXT>;
1371
+ declare function buildCommand<const FLAGS extends Readonly<Partial<Record<keyof FLAGS, unknown>>> = NonNullable<unknown>, const ARGS extends BaseArgs = [], const CONTEXT extends CommandContext = CommandContext>(builderArgs: CommandBuilderArguments<FLAGS, ARGS, CONTEXT>): Command<CONTEXT>;
1342
1372
 
1343
1373
  /**
1344
1374
  * Help documentation for route map.
@@ -1392,4 +1422,4 @@ declare function buildRouteMap<R extends string, CONTEXT extends CommandContext
1392
1422
 
1393
1423
  declare function run<CONTEXT extends CommandContext>(app: Application<CONTEXT>, inputs: readonly string[], context: StricliDynamicCommandContext<CONTEXT>): Promise<void>;
1394
1424
 
1395
- export { AliasNotFoundError, type Aliases, type Application, type ApplicationConfiguration, type ApplicationContext, type ApplicationErrorFormatting, type ApplicationText, ArgumentParseError, ArgumentScannerError, type Command, type CommandBuilderArguments, type CommandContext, type CommandInfo, type CompletionConfiguration, type DisplayCaseStyle, type DocumentationBriefs, type DocumentationConfiguration, type DocumentationHeaders, type DocumentationKeywords, type DocumentedCommand, EnumValidationError, type EnvironmentVariableName, ExitCode, FlagNotFoundError, type FlagParametersForType, type InputCompletion, type InputParser, InvalidNegatedFlagSyntaxError, type PartialApplicationConfiguration, type RouteMap, type RouteMapBuilderArguments, type ScannerCaseStyle, type ScannerConfiguration, type StricliCommandContextBuilder, type StricliDynamicCommandContext, type StricliProcess, type TypedCommandFlagParameters, type TypedCommandParameters, type TypedCommandPositionalParameters, type TypedFlagParameter, type TypedPositionalParameter, type TypedPositionalParameters, UnexpectedFlagError, UnexpectedPositionalError, UnsatisfiedFlagError, UnsatisfiedPositionalError, type VersionInfo, booleanParser, buildApplication, buildChoiceParser, buildCommand, buildRouteMap, formatMessageForArgumentScannerError, generateHelpTextForAllCommands, looseBooleanParser, numberParser, proposeCompletionsForApplication as proposeCompletions, run, text_en };
1425
+ export { AliasNotFoundError, type Aliases, type Application, type ApplicationConfiguration, type ApplicationContext, type ApplicationErrorFormatting, type ApplicationText, ArgumentParseError, ArgumentScannerError, type BaseArgs, type BaseFlags, type Command, type CommandBuilderArguments, type CommandContext, type CommandFunction, type CommandFunctionLoader, type CommandInfo, type CommandModule, type CompletionConfiguration, type DisplayCaseStyle, type DocumentationBriefs, type DocumentationConfiguration, type DocumentationHeaders, type DocumentationKeywords, type DocumentedCommand, EnumValidationError, type EnvironmentVariableName, ExitCode, FlagNotFoundError, type FlagParametersForType, type InputCompletion, type InputParser, InvalidNegatedFlagSyntaxError, type PartialApplicationConfiguration, type RouteMap, type RouteMapBuilderArguments, type ScannerCaseStyle, type ScannerConfiguration, type StricliCommandContextBuilder, type StricliDynamicCommandContext, type StricliProcess, type TypedCommandFlagParameters, type TypedCommandParameters, type TypedCommandPositionalParameters, type TypedFlagParameter, type TypedPositionalParameter, type TypedPositionalParameters, UnexpectedFlagError, UnexpectedPositionalError, UnsatisfiedFlagError, UnsatisfiedPositionalError, type VersionInfo, booleanParser, buildApplication, buildChoiceParser, buildCommand, buildRouteMap, formatMessageForArgumentScannerError, generateHelpTextForAllCommands, looseBooleanParser, numberParser, proposeCompletionsForApplication as proposeCompletions, run, text_en };
package/dist/index.d.ts CHANGED
@@ -94,9 +94,15 @@ interface DocumentationKeywords {
94
94
  /**
95
95
  * Keyword to be included when flags or arguments have a default value.
96
96
  *
97
- * Defaults to `"default"`.
97
+ * Defaults to `"default ="`.
98
98
  */
99
99
  readonly default: string;
100
+ /**
101
+ * Keyword to be included when flags are variadic and have a defined separator.
102
+ *
103
+ * Defaults to `"separator ="`.
104
+ */
105
+ readonly separator: string;
100
106
  }
101
107
  /**
102
108
  * Section header strings used to build help text.
@@ -658,7 +664,7 @@ interface BaseEnumFlagParameter<T extends string> extends BaseFlagParameter {
658
664
  readonly default?: T;
659
665
  readonly optional?: boolean;
660
666
  readonly hidden?: boolean;
661
- readonly variadic?: boolean;
667
+ readonly variadic?: boolean | string;
662
668
  }
663
669
  interface RequiredEnumFlagParameter<T extends string> extends BaseEnumFlagParameter<T> {
664
670
  /**
@@ -704,8 +710,12 @@ interface OptionalVariadicEnumFlagParameter<T extends string> extends BaseEnumFl
704
710
  readonly hidden?: false;
705
711
  /**
706
712
  * Parameter extends array and must be set as variadic.
713
+ * Also supports using an arbitrary string as a separator for individual inputs.
714
+ * For example, `variadic: ","` will scan `--flag a,b,c` as `["a", "b", "c"]`.
715
+ * If no separator is provided, the default behavior is to parse the input as a single string.
716
+ * The separator cannot be the empty string or contain any whitespace.
707
717
  */
708
- readonly variadic: true;
718
+ readonly variadic: true | string;
709
719
  }
710
720
  interface RequiredVariadicEnumFlagParameter<T extends string> extends BaseEnumFlagParameter<T> {
711
721
  /**
@@ -723,8 +733,12 @@ interface RequiredVariadicEnumFlagParameter<T extends string> extends BaseEnumFl
723
733
  readonly hidden?: false;
724
734
  /**
725
735
  * Parameter extends array and must be set as variadic.
736
+ * Also supports using an arbitrary string as a separator for individual inputs.
737
+ * For example, `variadic: ","` will scan `--flag a,b,c` as `["a", "b", "c"]`.
738
+ * If no separator is provided, the default behavior is to parse the input as a single string.
739
+ * The separator cannot be the empty string or contain any whitespace.
726
740
  */
727
- readonly variadic: true;
741
+ readonly variadic: true | string;
728
742
  }
729
743
  interface BaseParsedFlagParameter<T, CONTEXT extends CommandContext> extends ParsedParameter<T, CONTEXT>, BaseFlagParameter {
730
744
  /**
@@ -740,7 +754,7 @@ interface BaseParsedFlagParameter<T, CONTEXT extends CommandContext> extends Par
740
754
  */
741
755
  readonly inferEmpty?: boolean;
742
756
  readonly optional?: boolean;
743
- readonly variadic?: boolean;
757
+ readonly variadic?: boolean | string;
744
758
  readonly hidden?: boolean;
745
759
  }
746
760
  type RequiredParsedFlagParameter<T, CONTEXT extends CommandContext> = BaseParsedFlagParameter<T, CONTEXT> & {
@@ -795,8 +809,12 @@ interface OptionalVariadicParsedFlagParameter<T, CONTEXT extends CommandContext>
795
809
  readonly optional: true;
796
810
  /**
797
811
  * Parameter extends array and must be set as variadic.
812
+ * Also supports using an arbitrary string as a separator for individual inputs.
813
+ * For example, `variadic: ","` will scan `--flag a,b,c` as `["a", "b", "c"]`.
814
+ * If no separator is provided, the default behavior is to parse the input as a single string.
815
+ * The separator cannot be the empty string or contain any whitespace.
798
816
  */
799
- readonly variadic: true;
817
+ readonly variadic: true | string;
800
818
  /**
801
819
  * Default values are not supported for variadic parameters.
802
820
  */
@@ -810,8 +828,12 @@ interface RequiredVariadicParsedFlagParameter<T, CONTEXT extends CommandContext>
810
828
  readonly optional?: false;
811
829
  /**
812
830
  * Parameter extends array and must be set as variadic.
831
+ * Also supports using an arbitrary string as a separator for individual inputs.
832
+ * For example, `variadic: ","` will scan `--flag a,b,c` as `["a", "b", "c"]`.
833
+ * If no separator is provided, the default behavior is to parse the input as a single string.
834
+ * The separator cannot be the empty string or contain any whitespace.
813
835
  */
814
- readonly variadic: true;
836
+ readonly variadic: true | string;
815
837
  /**
816
838
  * Default values are not supported for variadic parameters.
817
839
  */
@@ -827,10 +849,9 @@ type TypedFlagParameter<T, CONTEXT extends CommandContext = CommandContext> = un
827
849
  type FlagParameter<CONTEXT extends CommandContext> = BooleanFlagParameter | CounterFlagParameter | BaseEnumFlagParameter<string> | BaseParsedFlagParameter<unknown, CONTEXT>;
828
850
  /**
829
851
  * Definition of flags for each named parameter.
830
- * Required properties may vary depending on the type argument `T`.
831
852
  */
832
853
  type FlagParametersForType<T, CONTEXT extends CommandContext = CommandContext> = {
833
- readonly [K in keyof T]: TypedFlagParameter<T[K], CONTEXT>;
854
+ readonly [K in keyof T]-?: TypedFlagParameter<T[K], CONTEXT>;
834
855
  };
835
856
  /**
836
857
  * Definition of flags for each named parameter.
@@ -858,6 +879,9 @@ type UppercaseLetter = Capitalize<LowercaseLetter>;
858
879
  type ReservedAlias = "h";
859
880
  type AvailableAlias = Exclude<LowercaseLetter | UppercaseLetter, ReservedAlias>;
860
881
  type Aliases<T> = Readonly<Partial<Record<AvailableAlias, T>>>;
882
+ /**
883
+ * Root constraint for all flag type parameters.
884
+ */
861
885
  type BaseFlags = Readonly<Record<string, unknown>>;
862
886
  interface TypedCommandFlagParameters_<FLAGS extends BaseFlags, CONTEXT extends CommandContext> {
863
887
  /**
@@ -869,7 +893,9 @@ interface TypedCommandFlagParameters_<FLAGS extends BaseFlags, CONTEXT extends C
869
893
  */
870
894
  readonly aliases?: Aliases<keyof FLAGS & string>;
871
895
  }
872
- type TypedCommandFlagParameters<FLAGS extends BaseFlags, CONTEXT extends CommandContext> = Record<string, never> extends FLAGS ? Partial<TypedCommandFlagParameters_<FLAGS, CONTEXT>> : TypedCommandFlagParameters_<FLAGS, CONTEXT>;
896
+ type TypedCommandFlagParameters<FLAGS extends BaseFlags, CONTEXT extends CommandContext> = [
897
+ keyof FLAGS
898
+ ] extends [never] ? Partial<TypedCommandFlagParameters_<FLAGS, CONTEXT>> : TypedCommandFlagParameters_<FLAGS, CONTEXT>;
873
899
  interface TypedCommandPositionalParameters_<ARGS extends BaseArgs, CONTEXT extends CommandContext> {
874
900
  /**
875
901
  * Typed definitions for all positional parameters.
@@ -939,6 +965,10 @@ interface PositionalParameterTuple<T> {
939
965
  readonly kind: "tuple";
940
966
  readonly parameters: T;
941
967
  }
968
+ /**
969
+ * Root constraint for all positional argument type parameters.
970
+ * This is used to ensure that positional parameters are always defined as an array or tuple.
971
+ */
942
972
  type BaseArgs = readonly unknown[];
943
973
  /**
944
974
  * Definition of all positional parameters.
@@ -1338,7 +1368,7 @@ type CommandBuilderArguments<FLAGS extends BaseFlags, ARGS extends BaseArgs, CON
1338
1368
  /**
1339
1369
  * Build command from loader or local function as action with associated parameters and documentation.
1340
1370
  */
1341
- declare function buildCommand<const FLAGS extends Readonly<Partial<Record<keyof FLAGS, unknown>>>, const ARGS extends BaseArgs, const CONTEXT extends CommandContext = CommandContext>(builderArgs: CommandBuilderArguments<FLAGS, ARGS, CONTEXT>): Command<CONTEXT>;
1371
+ declare function buildCommand<const FLAGS extends Readonly<Partial<Record<keyof FLAGS, unknown>>> = NonNullable<unknown>, const ARGS extends BaseArgs = [], const CONTEXT extends CommandContext = CommandContext>(builderArgs: CommandBuilderArguments<FLAGS, ARGS, CONTEXT>): Command<CONTEXT>;
1342
1372
 
1343
1373
  /**
1344
1374
  * Help documentation for route map.
@@ -1392,4 +1422,4 @@ declare function buildRouteMap<R extends string, CONTEXT extends CommandContext
1392
1422
 
1393
1423
  declare function run<CONTEXT extends CommandContext>(app: Application<CONTEXT>, inputs: readonly string[], context: StricliDynamicCommandContext<CONTEXT>): Promise<void>;
1394
1424
 
1395
- export { AliasNotFoundError, type Aliases, type Application, type ApplicationConfiguration, type ApplicationContext, type ApplicationErrorFormatting, type ApplicationText, ArgumentParseError, ArgumentScannerError, type Command, type CommandBuilderArguments, type CommandContext, type CommandInfo, type CompletionConfiguration, type DisplayCaseStyle, type DocumentationBriefs, type DocumentationConfiguration, type DocumentationHeaders, type DocumentationKeywords, type DocumentedCommand, EnumValidationError, type EnvironmentVariableName, ExitCode, FlagNotFoundError, type FlagParametersForType, type InputCompletion, type InputParser, InvalidNegatedFlagSyntaxError, type PartialApplicationConfiguration, type RouteMap, type RouteMapBuilderArguments, type ScannerCaseStyle, type ScannerConfiguration, type StricliCommandContextBuilder, type StricliDynamicCommandContext, type StricliProcess, type TypedCommandFlagParameters, type TypedCommandParameters, type TypedCommandPositionalParameters, type TypedFlagParameter, type TypedPositionalParameter, type TypedPositionalParameters, UnexpectedFlagError, UnexpectedPositionalError, UnsatisfiedFlagError, UnsatisfiedPositionalError, type VersionInfo, booleanParser, buildApplication, buildChoiceParser, buildCommand, buildRouteMap, formatMessageForArgumentScannerError, generateHelpTextForAllCommands, looseBooleanParser, numberParser, proposeCompletionsForApplication as proposeCompletions, run, text_en };
1425
+ export { AliasNotFoundError, type Aliases, type Application, type ApplicationConfiguration, type ApplicationContext, type ApplicationErrorFormatting, type ApplicationText, ArgumentParseError, ArgumentScannerError, type BaseArgs, type BaseFlags, type Command, type CommandBuilderArguments, type CommandContext, type CommandFunction, type CommandFunctionLoader, type CommandInfo, type CommandModule, type CompletionConfiguration, type DisplayCaseStyle, type DocumentationBriefs, type DocumentationConfiguration, type DocumentationHeaders, type DocumentationKeywords, type DocumentedCommand, EnumValidationError, type EnvironmentVariableName, ExitCode, FlagNotFoundError, type FlagParametersForType, type InputCompletion, type InputParser, InvalidNegatedFlagSyntaxError, type PartialApplicationConfiguration, type RouteMap, type RouteMapBuilderArguments, type ScannerCaseStyle, type ScannerConfiguration, type StricliCommandContextBuilder, type StricliDynamicCommandContext, type StricliProcess, type TypedCommandFlagParameters, type TypedCommandParameters, type TypedCommandPositionalParameters, type TypedFlagParameter, type TypedPositionalParameter, type TypedPositionalParameters, UnexpectedFlagError, UnexpectedPositionalError, UnsatisfiedFlagError, UnsatisfiedPositionalError, type VersionInfo, booleanParser, buildApplication, buildChoiceParser, buildCommand, buildRouteMap, formatMessageForArgumentScannerError, generateHelpTextForAllCommands, looseBooleanParser, numberParser, proposeCompletionsForApplication as proposeCompletions, run, text_en };
package/dist/index.js CHANGED
@@ -1,23 +1,23 @@
1
- function K(e,t){let n=e.env?.[t];return typeof n=="string"&&n!=="0"}var b={UnknownCommand:-5,InvalidArgument:-4,ContextLoadError:-3,CommandLoadError:-2,InternalError:-1,Success:0,CommandRunError:1};function I(e){return e.replace(/-./g,t=>t[1].toUpperCase())}function A(e){return Array.from(e).map((t,n)=>{let a=t.toUpperCase(),r=t.toLowerCase();return n===0||a!==t||a===r?t:`-${r}`}).join("")}function ve(e){let t=new Map;return{get:(...n)=>t.get(n.join(","))??e,set:(n,...a)=>{t.set(a.join(","),n)}}}function Xe(e,t,n){let{threshold:a,weights:r}=n;if(e===t)return 0;let i=Math.abs(e.length-t.length);if(typeof a=="number"&&i>a)return 1/0;let o=ve(1/0);o.set(0,-1,-1);for(let s=0;s<t.length;++s)o.set((s+1)*r.insertion,-1,s);for(let s=0;s<e.length;++s)o.set((s+1)*r.deletion,s,-1);let d=-1/0;for(let s=0;s<e.length;++s){let u=1/0;for(let l=0;l<=t.length-1;++l){let p=e[s]===t[l]?0:1,c=[o.get(s-1,l)+r.deletion,o.get(s,l-1)+r.insertion,o.get(s-1,l-1)+p*r.substitution];e[s]===t[l-1]&&e[s-1]===t[l]&&c.push(o.get(s-2,l-2)+p*r.transposition);let f=Math.min(...c);o.set(f,s,l),f<u&&(u=f)}if(u>a){if(d>a)return 1/0;d=u}else d=-1/0}let m=o.get(e.length-1,t.length-1);return m>a?1/0:m}function we(e,t,n){let a=e[1]-t[1];if(a!==0)return a;let r=e[0].startsWith(n),i=t[0].startsWith(n);return r&&!i?-1:!r&&i?1:e[0].localeCompare(t[0])}function D(e,t,n){let a=t.map(i=>[i,Xe(e,i,n)]).filter(([,i])=>i<=n.threshold),r=Math.min(...a.map(([,i])=>i));return a.filter(([,i])=>i===r).sort((i,o)=>we(i,o,e)).map(([i])=>i)}var x=class extends Error{};function q(e){return e instanceof Error?e.stack??String(e):String(e)}function $e(e,t){let n=[],a=Math.max(e.length,t.length);for(let r=0;r<a;++r)n[r]=Math.max(e[r],t[r]);return n}function $(e,t){if(e.length===0)return[];let n=Array(Math.max(...e.map(r=>r.length))).fill(0,0),a=e.reduce((r,i)=>{let o=i.map(d=>d.length);return $e(r,o)},n);return e.map(r=>{let i=(r[0]??"").padEnd(a[0]);return r.slice(1).reduce((o,d,m,s)=>{let u=s.length===m+1?d:d.padEnd(a[m+1]);return[...o,t?.[m]??" ",u]},[i]).join("").trimEnd()})}function V(e,t){if(e.length<=1)return e[0]??"";if(e.length===2)return e.join(` ${t.conjunction} `);let n=e.slice(0,e.length-1).join(", ");return t.serialComma&&(n+=","),[n,t.conjunction,e[e.length-1]].join(" ")}function Le(e,t){return e.reduce((n,a)=>{let r=t(a),i=n[r]??[];return i.push(a),n[r]=i,n},{})}function me(e,t){return Le(e,n=>n[t])}async function z(e){let t=await Promise.allSettled(e),n=me(t,"status");return n.rejected&&n.rejected.length>0?{status:"rejected",reasons:n.rejected.map(a=>a.reason)}:{status:"fulfilled",value:n.fulfilled?.map(a=>a.value)??[]}}var ke=e=>{switch(e.toLowerCase()){case"true":return!0;case"false":return!1}throw new SyntaxError(`Cannot convert ${e} to a boolean`)},Ie=new Set(["true","t","yes","y","on","1"]),De=new Set(["false","f","no","n","off","0"]),re=e=>{let t=e.toLowerCase();if(Ie.has(t))return!0;if(De.has(t))return!1;throw new SyntaxError(`Cannot convert ${e} to a boolean`)};var oe=e=>{let t=Number(e);if(Number.isNaN(t))throw new SyntaxError(`Cannot convert ${e} to a number`);return t};var h=class extends x{_brand};function se(e,t){let n=e.constructor.name,a=t[n];return a?a(e):e.message}function Me(e,t,n){return Object.fromEntries(Object.entries(t).map(([a,r])=>{let i=r,o=e[i];if(!o){let d=v(i,n);throw new L(d,[],a)}return[a,[i,o]]}))}var L=class extends h{input;corrections;aliasName;constructor(t,n,a){let r=`No flag registered for --${t}`;if(a)r+=` (aliased from -${a})`;else if(n.length>0){let i=V(n.map(o=>`--${o}`),{kind:"conjunctive",conjunction:"or",serialComma:!0});r+=`, did you mean ${i}?`}super(r),this.input=t,this.corrections=n,this.aliasName=a}},G=class extends h{input;constructor(t){super(`No alias registered for -${t}`),this.input=t}};function ae(e,t){return e.placeholder?e.placeholder:typeof t=="number"?`arg${t}`:"args"}function v(e,t){return t==="allow-kebab-for-camel"?A(e):e}var j=class extends h{externalFlagNameOrPlaceholder;input;exception;constructor(t,n,a){super(`Failed to parse "${n}" for ${t}: ${a instanceof Error?a.message:String(a)}`),this.externalFlagNameOrPlaceholder=t,this.input=n,this.exception=a}};function M(e,t,n,a){try{return t.parse.call(a,n)}catch(r){throw new j(e,n,r)}}var W=class extends h{externalFlagName;input;values;constructor(t,n,a,r){let i=`Expected "${n}" to be one of (${a.join("|")})`;if(r.length>0){let o=V(r.map(d=>`"${d}"`),{kind:"conjunctive",conjunction:"or",serialComma:!0});i+=`, did you mean ${o}?`}super(i),this.externalFlagName=t,this.input=n,this.values=a}},X=class extends h{externalFlagName;nextFlagName;constructor(t,n){let a=`Expected input for flag --${t}`;n&&(a+=` but encountered --${n} instead`),super(a),this.externalFlagName=t,this.nextFlagName=n}},H=class extends h{expectedCount;input;constructor(t,n){super(`Too many arguments, expected ${t} but encountered "${n}"`),this.expectedCount=t,this.input=n}},_=class extends h{placeholder;limit;constructor(t,n){let a;n?(a=`Expected at least ${n[0]} argument(s) for ${t}`,n[1]===0?a+=" but found none":a+=` but only found ${n[1]}`):a=`Expected argument for ${t}`,super(a),this.placeholder=t,this.limit=n}};function de(e){if(e.startsWith("no")&&e.length>2){if(e[2]==="-")return e.slice(4);let t=e[2],n=t.toUpperCase();return t!==n?void 0:t.toLowerCase()+e.slice(3)}}function pe(e,t,n){let a=e,r=t[a];if(!r){let o=de(a);if(o&&(r=t[o],r&&r.kind=="boolean"))return{namedFlag:[o,r],negated:!0}}let i=I(e);if(n.caseStyle==="allow-kebab-for-camel"&&!r){if(r=t[i],r)return{namedFlag:[i,r]};let o=de(i);if(o&&(r=t[o],r&&r.kind=="boolean"))return{namedFlag:[o,r],negated:!0}}if(!r){if(i in t)throw new L(e,[i]);let o=A(e);if(o in t)throw new L(e,[o]);let d=D(a,Object.keys(t),n.distanceOptions);throw new L(e,d)}return{namedFlag:[a,r]}}function ue(e){return e.namedFlag[1].kind==="boolean"||e.namedFlag[1].kind==="counter"}var ce=/^-([a-z]+)$/i,Ge=/^--([a-z][a-z-]+)$/i;function je(e,t,n,a){let r=ce.exec(e);if(r){let o=r[1];return Array.from(o).map(d=>{let m=d,s=n[m];if(!s)throw new G(m);return{namedFlag:s}})}let i=Ge.exec(e);if(i){let o=i[1];return[pe(o,t,a)]}return[]}var Ue=/^--([a-z][a-z-.\d_]+)=(.+)$/i,qe=/^-([a-z])=(.+)$/i,J=class extends h{externalFlagName;valueText;constructor(t,n){super(`Cannot negate flag --${t} and pass "${n}" as value`),this.externalFlagName=t,this.valueText=n}};function Ve(e,t,n,a){let r=Ue.exec(e);if(r){let o=r[1],{namedFlag:d,negated:m}=pe(o,t,a),s=r[2];if(m)throw new J(o,s);return[d,s]}let i=qe.exec(e);if(i){let o=i[1],d=n[o];if(!d)throw new G(o);let m=i[2];return[d,m]}}async function We(e,t,n,a,r){if(!n){if("default"in t&&typeof t.default<"u")return t.kind==="boolean"||t.kind==="enum"?t.default:M(e,t,t.default,r);if(t.optional)return;if(t.kind==="boolean")return!1;if(t.kind==="counter")return 0;throw new X(e)}if(t.kind==="counter")return n.reduce((o,d)=>{try{return o+oe.call(r,d)}catch(m){throw new j(e,d,m)}},0);if("variadic"in t&&t.variadic){if(t.kind==="enum"){for(let o of n)if(!t.values.includes(o)){let d=D(o,t.values,a.distanceOptions);throw new W(e,o,t.values,d)}return n}return Promise.all(n.map(o=>M(e,t,o,r)))}let i=n[0];if(t.kind==="boolean")try{return re.call(r,i)}catch(o){throw new j(e,i,o)}if(t.kind==="enum"){if(!t.values.includes(i)){let o=D(i,t.values,a.distanceOptions);throw new W(e,i,t.values,o)}return i}return M(e,t,i,r)}var Y=class extends h{externalFlagName;previousInput;input;constructor(t,n,a){super(`Too many arguments for --${t}, encountered "${a}" after "${n}"`),this.externalFlagName=t,this.previousInput=n,this.input=a}};function fe(e){return e.kind==="counter"?!0:"variadic"in e?!!e.variadic:!1}function B(e,t,n,a){let r=e.get(n[0])??[];if(r.length>0&&!fe(n[1])){let i=v(n[0],t);throw new Y(i,r[0],a)}e.set(n[0],[...r,a])}function ie(e,t,n){if(t.get(n)){let r=e[n];return!fe(r)}return!1}function Q(e,t){let{flags:n={},aliases:a={},positional:r={kind:"tuple",parameters:[]}}=e,i=Me(n,a,t.caseStyle),o=[],d=new Map,m=0,s,u=!1;return{next:l=>{if(!u&&t.allowArgumentEscapeSequence&&l==="--"){if(s)if(s[1].kind==="parsed"&&s[1].inferEmpty)B(d,t.caseStyle,s,""),s=void 0;else{let p=v(s[0],t.caseStyle);throw new X(p)}u=!0;return}if(!u){let p=Ve(l,n,i,t);if(p){if(s)if(s[1].kind==="parsed"&&s[1].inferEmpty)B(d,t.caseStyle,s,""),s=void 0;else{let f=v(s[0],t.caseStyle),T=v(p[0][0],t.caseStyle);throw new X(f,T)}B(d,t.caseStyle,...p);return}let c=je(l,n,i,t);if(c.length>0){if(s)if(s[1].kind==="parsed"&&s[1].inferEmpty)B(d,t.caseStyle,s,""),s=void 0;else{let f=v(s[0],t.caseStyle),T=v(c[0].namedFlag[0],t.caseStyle);throw new X(f,T)}if(c.every(ue))for(let f of c)f.namedFlag[1].kind==="boolean"?B(d,t.caseStyle,f.namedFlag,f.negated?"false":"true"):B(d,t.caseStyle,f.namedFlag,"1");else if(c.length>1){let f=c.find(E=>!ue(E)),T=v(f.namedFlag[0],t.caseStyle);throw new X(T)}else s=c[0].namedFlag;return}}if(s)B(d,t.caseStyle,s,l),s=void 0;else{if(r.kind==="tuple"){if(m>=r.parameters.length)throw new H(r.parameters.length,l)}else if(typeof r.maximum=="number"&&m>=r.maximum)throw new H(r.maximum,l);o[m]=l,++m}},parseArguments:async l=>{let p=[],c;r.kind==="array"?(typeof r.minimum=="number"&&m<r.minimum&&p.push(new _(ae(r.parameter),[r.minimum,m])),c=z(o.map(async(g,C)=>{let y=ae(r.parameter,C+1);return M(y,r.parameter,g,l)}))):c=z(r.parameters.map(async(g,C)=>{let y=ae(g,C+1),N=o[C];if(typeof N!="string"){if(typeof g.default=="string")return M(y,g,g.default,l);if(g.optional)return;throw new _(y)}return M(y,g,N,l)})),s&&s[1].kind==="parsed"&&s[1].inferEmpty&&(B(d,t.caseStyle,s,""),s=void 0);let f=z(Object.entries(n).map(async g=>{let[C,y]=g,N=v(C,t.caseStyle);if(s&&s[0]===C)throw new X(N);let P=d.get(C),w=await We(N,y,P,t,l);return[C,w]})),[T,E]=await Promise.all([c,f]);if(T.status==="rejected")for(let g of T.reasons)p.push(g);if(E.status==="rejected")for(let g of E.reasons)p.push(g);if(p.length>0)return{success:!1,errors:p};if(T.status==="rejected")throw new x("Unknown failure while scanning positional arguments");if(E.status==="rejected")throw new x("Unknown failure while scanning flag arguments");return{success:!0,arguments:[Object.fromEntries(E.value),...T.value]}},proposeCompletions:async({partial:l,completionConfig:p,text:c,context:f,includeVersionFlag:T})=>{if(s){let F=s[1],g;return F.kind==="enum"?g=F.values:F.proposeCompletions?g=await F.proposeCompletions.call(f,l):g=[],g.map(C=>({kind:"argument:value",completion:C,brief:F.brief})).filter(({completion:C})=>C.startsWith(l))}let E=[];if(!u){let F=ce.exec(l);if(p.includeAliases){if(l===""||l==="-"){let g=Object.entries(a).filter(C=>!ie(n,d,C[1]));for(let[C]of g){let y=i[C];y&&E.push({kind:"argument:flag",completion:`-${C}`,brief:y[1].brief})}}else if(F){let g=Array.from(F[1]);if(g.includes("h"))return[];if(T&&g.includes("v"))return[];let C=new Map(d);for(let P of g){let w=i[P];if(!w)throw new G(P);B(C,t.caseStyle,w,w[1].kind==="boolean"?"true":"1")}let y=g[g.length-1];if(y){let P=i[y];P&&E.push({kind:"argument:flag",completion:l,brief:P[1].brief})}let N=Object.entries(a).filter(P=>!ie(n,C,P[1]));for(let[P]of N){let w=i[P];w&&E.push({kind:"argument:flag",completion:`${l}${P}`,brief:w[1].brief})}}}if(l===""||l==="-"||l.startsWith("--")){t.allowArgumentEscapeSequence&&E.push({kind:"argument:flag",completion:"--",brief:c.briefs.argumentEscapeSequence});let g=Object.entries(n).filter(([y])=>!ie(n,d,y));t.caseStyle==="allow-kebab-for-camel"&&(g=g.map(([y,N])=>[A(y),N]));let C=g.map(([y,N])=>[`--${y}`,N]).filter(([y])=>y.startsWith(l));E.push(...C.map(([y,N])=>({kind:"argument:flag",completion:y,brief:N.brief})))}}if(r.kind==="array"){if(r.parameter.proposeCompletions&&(typeof r.maximum!="number"||m<r.maximum)){let F=await r.parameter.proposeCompletions.call(f,l);E.push(...F.map(g=>({kind:"argument:value",completion:g,brief:r.parameter.brief})))}}else{let F=r.parameters[m];if(F?.proposeCompletions){let g=await F.proposeCompletions.call(f,l);E.push(...g.map(C=>({kind:"argument:value",completion:C,brief:F.brief})))}}return E.filter(({completion:F})=>F.startsWith(l))}}}function ge(e,t,n){let a=t==="allow-kebab-for-camel"?"convert-camel-to-kebab":t,r=e.getAllEntries();return n.includeHiddenRoutes||(r=r.filter(i=>!i.hidden)),r.flatMap(i=>{let o=i.name[a];return n.includeAliases?[o,...i.aliases]:[o]})}var Ce={headers:{usage:"USAGE",aliases:"ALIASES",commands:"COMMANDS",flags:"FLAGS",arguments:"ARGUMENTS"},keywords:{default:"default ="},briefs:{help:"Print help information and exit",helpAll:"Print help information (including hidden commands/flags) and exit",version:"Print version information and exit",argumentEscapeSequence:"All subsequent inputs should be interpreted as arguments"},noCommandRegisteredForInput:({input:e,corrections:t})=>{let n=`No command registered for \`${e}\``;if(t.length>0){let a=V(t,{kind:"conjunctive",conjunction:"or",serialComma:!0});return`${n}, did you mean ${a}?`}else return n},noTextAvailableForLocale:({requestedLocale:e,defaultLocale:t})=>`Application does not support "${e}" locale, defaulting to "${t}"`,exceptionWhileParsingArguments:e=>e instanceof h?se(e,{}):`Unable to parse arguments, ${q(e)}`,exceptionWhileLoadingCommandFunction:e=>`Unable to load command function, ${q(e)}`,exceptionWhileLoadingCommandContext:e=>`Unable to load command context, ${q(e)}`,exceptionWhileRunningCommand:e=>`Command failed, ${q(e)}`,commandErrorResult:e=>e.message,currentVersionIsNotLatest:({currentVersion:e,latestVersion:t,upgradeCommand:n})=>n?`Latest available version is ${t} (currently running ${e}), upgrade with "${n}"`:`Latest available version is ${t} (currently running ${e})`};function ye(e){if(e.startsWith("en"))return Ce}function S(e,t,n){return!n.disableAnsiColor&&!K(e,"STRICLI_NO_COLOR")&&(t.getColorDepth?.(e.env)??1)>=4}async function xe({loader:e,parameters:t},{context:n,inputs:a,scannerConfig:r,errorFormatting:i,documentationConfig:o,determineExitCode:d}){let m=e(),s;try{let l=Q(t,r);for(let c of a)l.next(c);let p=await l.parseArguments(n);if(p.success)s=p.arguments;else{let c=S(n.process,n.process.stderr,o);for(let f of p.errors){let T=i.exceptionWhileParsingArguments(f,c);n.process.stderr.write(c?`\x1B[1m\x1B[31m${T}\x1B[39m\x1B[22m
1
+ function K(e,t){let n=e.env?.[t];return typeof n=="string"&&n!=="0"}var N={UnknownCommand:-5,InvalidArgument:-4,ContextLoadError:-3,CommandLoadError:-2,InternalError:-1,Success:0,CommandRunError:1};function I(e){return e.replace(/-./g,t=>t[1].toUpperCase())}function F(e){return Array.from(e).map((t,n)=>{let a=t.toUpperCase(),r=t.toLowerCase();return n===0||a!==t||a===r?t:`-${r}`}).join("")}function we(e){let t=new Map;return{get:(...n)=>t.get(n.join(","))??e,set:(n,...a)=>{t.set(a.join(","),n)}}}function Xe(e,t,n){let{threshold:a,weights:r}=n;if(e===t)return 0;let i=Math.abs(e.length-t.length);if(typeof a=="number"&&i>a)return 1/0;let o=we(1/0);o.set(0,-1,-1);for(let s=0;s<t.length;++s)o.set((s+1)*r.insertion,-1,s);for(let s=0;s<e.length;++s)o.set((s+1)*r.deletion,s,-1);let d=-1/0;for(let s=0;s<e.length;++s){let u=1/0;for(let l=0;l<=t.length-1;++l){let p=e[s]===t[l]?0:1,c=[o.get(s-1,l)+r.deletion,o.get(s,l-1)+r.insertion,o.get(s-1,l-1)+p*r.substitution];e[s]===t[l-1]&&e[s-1]===t[l]&&c.push(o.get(s-2,l-2)+p*r.transposition);let f=Math.min(...c);o.set(f,s,l),f<u&&(u=f)}if(u>a){if(d>a)return 1/0;d=u}else d=-1/0}let m=o.get(e.length-1,t.length-1);return m>a?1/0:m}function $e(e,t,n){let a=e[1]-t[1];if(a!==0)return a;let r=e[0].startsWith(n),i=t[0].startsWith(n);return r&&!i?-1:!r&&i?1:e[0].localeCompare(t[0])}function M(e,t,n){let a=t.map(i=>[i,Xe(e,i,n)]).filter(([,i])=>i<=n.threshold),r=Math.min(...a.map(([,i])=>i));return a.filter(([,i])=>i===r).sort((i,o)=>$e(i,o,e)).map(([i])=>i)}var C=class extends Error{};function q(e){return e instanceof Error?e.stack??String(e):String(e)}function Le(e,t){let n=[],a=Math.max(e.length,t.length);for(let r=0;r<a;++r)n[r]=Math.max(e[r],t[r]);return n}function $(e,t){if(e.length===0)return[];let n=Array(Math.max(...e.map(r=>r.length))).fill(0,0),a=e.reduce((r,i)=>{let o=i.map(d=>d.length);return Le(r,o)},n);return e.map(r=>{let i=(r[0]??"").padEnd(a[0]);return r.slice(1).reduce((o,d,m,s)=>{let u=s.length===m+1?d:d.padEnd(a[m+1]);return[...o,t?.[m]??" ",u]},[i]).join("").trimEnd()})}function V(e,t){if(e.length<=1)return e[0]??"";if(e.length===2)return e.join(` ${t.conjunction} `);let n=e.slice(0,e.length-1).join(", ");return t.serialComma&&(n+=","),[n,t.conjunction,e[e.length-1]].join(" ")}function ke(e,t){return e.reduce((n,a)=>{let r=t(a),i=n[r]??[];return i.push(a),n[r]=i,n},{})}function me(e,t){return ke(e,n=>n[t])}async function z(e){let t=await Promise.allSettled(e),n=me(t,"status");return n.rejected&&n.rejected.length>0?{status:"rejected",reasons:n.rejected.map(a=>a.reason)}:{status:"fulfilled",value:n.fulfilled?.map(a=>a.value)??[]}}var Ie=e=>{switch(e.toLowerCase()){case"true":return!0;case"false":return!1}throw new SyntaxError(`Cannot convert ${e} to a boolean`)},Me=new Set(["true","t","yes","y","on","1"]),De=new Set(["false","f","no","n","off","0"]),re=e=>{let t=e.toLowerCase();if(Me.has(t))return!0;if(De.has(t))return!1;throw new SyntaxError(`Cannot convert ${e} to a boolean`)};var oe=e=>{let t=Number(e);if(Number.isNaN(t))throw new SyntaxError(`Cannot convert ${e} to a number`);return t};var A=class extends C{_brand};function se(e,t){let n=e.constructor.name,a=t[n];return a?a(e):e.message}function Ge(e,t,n){return Object.fromEntries(Object.entries(t).map(([a,r])=>{let i=r,o=e[i];if(!o){let d=B(i,n);throw new L(d,[],a)}return[a,[i,o]]}))}var L=class extends A{input;corrections;aliasName;constructor(t,n,a){let r=`No flag registered for --${t}`;if(a)r+=` (aliased from -${a})`;else if(n.length>0){let i=V(n.map(o=>`--${o}`),{kind:"conjunctive",conjunction:"or",serialComma:!0});r+=`, did you mean ${i}?`}super(r),this.input=t,this.corrections=n,this.aliasName=a}},G=class extends A{input;constructor(t){super(`No alias registered for -${t}`),this.input=t}};function ae(e,t){return e.placeholder?e.placeholder:typeof t=="number"?`arg${t}`:"args"}function B(e,t){return t==="allow-kebab-for-camel"?F(e):e}var j=class extends A{externalFlagNameOrPlaceholder;input;exception;constructor(t,n,a){super(`Failed to parse "${n}" for ${t}: ${a instanceof Error?a.message:String(a)}`),this.externalFlagNameOrPlaceholder=t,this.input=n,this.exception=a}};function D(e,t,n,a){try{return t.parse.call(a,n)}catch(r){throw new j(e,n,r)}}var W=class extends A{externalFlagName;input;values;constructor(t,n,a,r){let i=`Expected "${n}" to be one of (${a.join("|")})`;if(r.length>0){let o=V(r.map(d=>`"${d}"`),{kind:"conjunctive",conjunction:"or",serialComma:!0});i+=`, did you mean ${o}?`}super(i),this.externalFlagName=t,this.input=n,this.values=a}},w=class extends A{externalFlagName;nextFlagName;constructor(t,n){let a=`Expected input for flag --${t}`;n&&(a+=` but encountered --${n} instead`),super(a),this.externalFlagName=t,this.nextFlagName=n}},H=class extends A{expectedCount;input;constructor(t,n){super(`Too many arguments, expected ${t} but encountered "${n}"`),this.expectedCount=t,this.input=n}},_=class extends A{placeholder;limit;constructor(t,n){let a;n?(a=`Expected at least ${n[0]} argument(s) for ${t}`,n[1]===0?a+=" but found none":a+=` but only found ${n[1]}`):a=`Expected argument for ${t}`,super(a),this.placeholder=t,this.limit=n}};function de(e){if(e.startsWith("no")&&e.length>2){if(e[2]==="-")return e.slice(4);let t=e[2],n=t.toUpperCase();return t!==n?void 0:t.toLowerCase()+e.slice(3)}}function pe(e,t,n){let a=e,r=t[a];if(!r){let o=de(a);if(o&&(r=t[o],r&&r.kind=="boolean"))return{namedFlag:[o,r],negated:!0}}let i=I(e);if(n.caseStyle==="allow-kebab-for-camel"&&!r){if(r=t[i],r)return{namedFlag:[i,r]};let o=de(i);if(o&&(r=t[o],r&&r.kind=="boolean"))return{namedFlag:[o,r],negated:!0}}if(!r){if(i in t)throw new L(e,[i]);let o=F(e);if(o in t)throw new L(e,[o]);let d=M(a,Object.keys(t),n.distanceOptions);throw new L(e,d)}return{namedFlag:[a,r]}}function ue(e){return e.namedFlag[1].kind==="boolean"||e.namedFlag[1].kind==="counter"}var ce=/^-([a-z]+)$/i,je=/^--([a-z][a-z-.\d_]+)$/i;function Ue(e,t,n,a){let r=ce.exec(e);if(r){let o=r[1];return Array.from(o).map(d=>{let m=d,s=n[m];if(!s)throw new G(m);return{namedFlag:s}})}let i=je.exec(e);if(i){let o=i[1];return[pe(o,t,a)]}return[]}var qe=/^--([a-z][a-z-.\d_]+)=(.+)$/i,Ve=/^-([a-z])=(.+)$/i,J=class extends A{externalFlagName;valueText;constructor(t,n){super(`Cannot negate flag --${t} and pass "${n}" as value`),this.externalFlagName=t,this.valueText=n}};function We(e,t,n,a){let r=qe.exec(e);if(r){let o=r[1],{namedFlag:d,negated:m}=pe(o,t,a),s=r[2];if(m)throw new J(o,s);return[d,s]}let i=Ve.exec(e);if(i){let o=i[1],d=n[o];if(!d)throw new G(o);let m=i[2];return[d,m]}}async function He(e,t,n,a,r){if(!n){if("default"in t&&typeof t.default<"u")return t.kind==="boolean"||t.kind==="enum"?t.default:D(e,t,t.default,r);if(t.optional)return;if(t.kind==="boolean")return!1;if(t.kind==="counter")return 0;throw new w(e)}if(t.kind==="counter")return n.reduce((o,d)=>{try{return o+oe.call(r,d)}catch(m){throw new j(e,d,m)}},0);if("variadic"in t&&t.variadic){if(t.kind==="enum"){for(let o of n)if(!t.values.includes(o)){let d=M(o,t.values,a.distanceOptions);throw new W(e,o,t.values,d)}return n}return Promise.all(n.map(o=>D(e,t,o,r)))}let i=n[0];if(t.kind==="boolean")try{return re.call(r,i)}catch(o){throw new j(e,i,o)}if(t.kind==="enum"){if(!t.values.includes(i)){let o=M(i,t.values,a.distanceOptions);throw new W(e,i,t.values,o)}return i}return D(e,t,i,r)}var Y=class extends A{externalFlagName;previousInput;input;constructor(t,n,a){super(`Too many arguments for --${t}, encountered "${a}" after "${n}"`),this.externalFlagName=t,this.previousInput=n,this.input=a}};function fe(e){return e.kind==="counter"?!0:"variadic"in e?!!e.variadic:!1}function v(e,t,[n,a],r){let i=e.get(n)??[];if(i.length>0&&!fe(a)){let o=B(n,t);throw new Y(o,i[0],r)}if("variadic"in a&&typeof a.variadic=="string"){let o=r.split(a.variadic);e.set(n,[...i,...o])}else e.set(n,[...i,r])}function ie(e,t,n){if(t.get(n)){let r=e[n];return!fe(r)}return!1}function Q(e,t){let{flags:n={},aliases:a={},positional:r={kind:"tuple",parameters:[]}}=e,i=Ge(n,a,t.caseStyle),o=[],d=new Map,m=0,s,u=!1;return{next:l=>{if(!u&&t.allowArgumentEscapeSequence&&l==="--"){if(s)if(s[1].kind==="parsed"&&s[1].inferEmpty)v(d,t.caseStyle,s,""),s=void 0;else{let p=B(s[0],t.caseStyle);throw new w(p)}u=!0;return}if(!u){let p=We(l,n,i,t);if(p){if(s)if(s[1].kind==="parsed"&&s[1].inferEmpty)v(d,t.caseStyle,s,""),s=void 0;else{let f=B(s[0],t.caseStyle),T=B(p[0][0],t.caseStyle);throw new w(f,T)}v(d,t.caseStyle,...p);return}let c=Ue(l,n,i,t);if(c.length>0){if(s)if(s[1].kind==="parsed"&&s[1].inferEmpty)v(d,t.caseStyle,s,""),s=void 0;else{let f=B(s[0],t.caseStyle),T=B(c[0].namedFlag[0],t.caseStyle);throw new w(f,T)}if(c.every(ue))for(let f of c)f.namedFlag[1].kind==="boolean"?v(d,t.caseStyle,f.namedFlag,f.negated?"false":"true"):v(d,t.caseStyle,f.namedFlag,"1");else if(c.length>1){let f=c.find(E=>!ue(E)),T=B(f.namedFlag[0],t.caseStyle);throw new w(T)}else s=c[0].namedFlag;return}}if(s)v(d,t.caseStyle,s,l),s=void 0;else{if(r.kind==="tuple"){if(m>=r.parameters.length)throw new H(r.parameters.length,l)}else if(typeof r.maximum=="number"&&m>=r.maximum)throw new H(r.maximum,l);o[m]=l,++m}},parseArguments:async l=>{let p=[],c;r.kind==="array"?(typeof r.minimum=="number"&&m<r.minimum&&p.push(new _(ae(r.parameter),[r.minimum,m])),c=z(o.map(async(g,x)=>{let y=ae(r.parameter,x+1);return D(y,r.parameter,g,l)}))):c=z(r.parameters.map(async(g,x)=>{let y=ae(g,x+1),h=o[x];if(typeof h!="string"){if(typeof g.default=="string")return D(y,g,g.default,l);if(g.optional)return;throw new _(y)}return D(y,g,h,l)})),s&&s[1].kind==="parsed"&&s[1].inferEmpty&&(v(d,t.caseStyle,s,""),s=void 0);let f=z(Object.entries(n).map(async g=>{let[x,y]=g,h=B(x,t.caseStyle);if(s&&s[0]===x)throw new w(h);let b=d.get(x),X=await He(h,y,b,t,l);return[x,X]})),[T,E]=await Promise.all([c,f]);if(T.status==="rejected")for(let g of T.reasons)p.push(g);if(E.status==="rejected")for(let g of E.reasons)p.push(g);if(p.length>0)return{success:!1,errors:p};if(T.status==="rejected")throw new C("Unknown failure while scanning positional arguments");if(E.status==="rejected")throw new C("Unknown failure while scanning flag arguments");return{success:!0,arguments:[Object.fromEntries(E.value),...T.value]}},proposeCompletions:async({partial:l,completionConfig:p,text:c,context:f,includeVersionFlag:T})=>{if(s)return ge(s[1],f,l);let E=[];if(!u){let S=ce.exec(l);if(p.includeAliases){if(l===""||l==="-"){let g=Object.entries(a).filter(x=>!ie(n,d,x[1]));for(let[x]of g){let y=i[x];y&&E.push({kind:"argument:flag",completion:`-${x}`,brief:y[1].brief})}}else if(S){let g=Array.from(S[1]);if(g.includes("h"))return[];if(T&&g.includes("v"))return[];let x=new Map(d);for(let b of g){let X=i[b];if(!X)throw new G(b);v(x,t.caseStyle,X,X[1].kind==="boolean"?"true":"1")}let y=g[g.length-1];if(y){let b=i[y];b&&E.push({kind:"argument:flag",completion:l,brief:b[1].brief})}let h=Object.entries(a).filter(b=>!ie(n,x,b[1]));for(let[b]of h){let X=i[b];X&&E.push({kind:"argument:flag",completion:`${l}${b}`,brief:X[1].brief})}}}if(l===""||l==="-"||l.startsWith("--")){t.allowArgumentEscapeSequence&&E.push({kind:"argument:flag",completion:"--",brief:c.briefs.argumentEscapeSequence});let g=Object.entries(n).filter(([y])=>!ie(n,d,y));t.caseStyle==="allow-kebab-for-camel"&&(g=g.map(([y,h])=>[F(y),h]));let x=g.map(([y,h])=>[`--${y}`,h]).filter(([y])=>y.startsWith(l));E.push(...x.map(([y,h])=>({kind:"argument:flag",completion:y,brief:h.brief})))}}if(r.kind==="array"){if(r.parameter.proposeCompletions&&(typeof r.maximum!="number"||m<r.maximum)){let S=await r.parameter.proposeCompletions.call(f,l);E.push(...S.map(g=>({kind:"argument:value",completion:g,brief:r.parameter.brief})))}}else{let S=r.parameters[m];if(S?.proposeCompletions){let g=await S.proposeCompletions.call(f,l);E.push(...g.map(x=>({kind:"argument:value",completion:x,brief:S.brief})))}}return E.filter(({completion:S})=>S.startsWith(l))}}}async function ge(e,t,n){if(typeof e.variadic=="string"&&n.endsWith(e.variadic))return ge(e,t,"");let a;return e.kind==="enum"?a=e.values:e.proposeCompletions?a=await e.proposeCompletions.call(t,n):a=[],a.map(r=>({kind:"argument:value",completion:r,brief:e.brief})).filter(({completion:r})=>r.startsWith(n))}function Ce(e,t,n){let a=t==="allow-kebab-for-camel"?"convert-camel-to-kebab":t,r=e.getAllEntries();return n.includeHiddenRoutes||(r=r.filter(i=>!i.hidden)),r.flatMap(i=>{let o=i.name[a];return n.includeAliases?[o,...i.aliases]:[o]})}var ye={headers:{usage:"USAGE",aliases:"ALIASES",commands:"COMMANDS",flags:"FLAGS",arguments:"ARGUMENTS"},keywords:{default:"default =",separator:"separator ="},briefs:{help:"Print help information and exit",helpAll:"Print help information (including hidden commands/flags) and exit",version:"Print version information and exit",argumentEscapeSequence:"All subsequent inputs should be interpreted as arguments"},noCommandRegisteredForInput:({input:e,corrections:t})=>{let n=`No command registered for \`${e}\``;if(t.length>0){let a=V(t,{kind:"conjunctive",conjunction:"or",serialComma:!0});return`${n}, did you mean ${a}?`}else return n},noTextAvailableForLocale:({requestedLocale:e,defaultLocale:t})=>`Application does not support "${e}" locale, defaulting to "${t}"`,exceptionWhileParsingArguments:e=>e instanceof A?se(e,{}):`Unable to parse arguments, ${q(e)}`,exceptionWhileLoadingCommandFunction:e=>`Unable to load command function, ${q(e)}`,exceptionWhileLoadingCommandContext:e=>`Unable to load command context, ${q(e)}`,exceptionWhileRunningCommand:e=>`Command failed, ${q(e)}`,commandErrorResult:e=>e.message,currentVersionIsNotLatest:({currentVersion:e,latestVersion:t,upgradeCommand:n})=>n?`Latest available version is ${t} (currently running ${e}), upgrade with "${n}"`:`Latest available version is ${t} (currently running ${e})`};function xe(e){if(e.startsWith("en"))return ye}function P(e,t,n){return!n.disableAnsiColor&&!K(e,"STRICLI_NO_COLOR")&&(t.getColorDepth?.(e.env)??1)>=4}async function Te({loader:e,parameters:t},{context:n,inputs:a,scannerConfig:r,errorFormatting:i,documentationConfig:o,determineExitCode:d}){let m=e(),s;try{let l=Q(t,r);for(let c of a)l.next(c);let p=await l.parseArguments(n);if(p.success)s=p.arguments;else{let c=P(n.process,n.process.stderr,o);for(let f of p.errors){let T=i.exceptionWhileParsingArguments(f,c);n.process.stderr.write(c?`\x1B[1m\x1B[31m${T}\x1B[39m\x1B[22m
2
2
  `:`${T}
3
- `)}return b.InvalidArgument}}catch(l){let p=S(n.process,n.process.stderr,o),c=i.exceptionWhileParsingArguments(l,p);return n.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
3
+ `)}return N.InvalidArgument}}catch(l){let p=P(n.process,n.process.stderr,o),c=i.exceptionWhileParsingArguments(l,p);return n.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
4
4
  `:`${c}
5
- `),b.InvalidArgument}let u;try{let l=await m;typeof l=="function"?u=l:u=l.default}catch(l){let p=S(n.process,n.process.stderr,o),c=i.exceptionWhileLoadingCommandFunction(l,p);return n.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
5
+ `),N.InvalidArgument}let u;try{let l=await m;typeof l=="function"?u=l:u=l.default}catch(l){let p=P(n.process,n.process.stderr,o),c=i.exceptionWhileLoadingCommandFunction(l,p);return n.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
6
6
  `:`${c}
7
- `),b.CommandLoadError}try{let l=await u.call(n,...s);if(l instanceof Error){let p=S(n.process,n.process.stderr,o),c=i.commandErrorResult(l,p);return n.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
7
+ `),N.CommandLoadError}try{let l=await u.call(n,...s);if(l instanceof Error){let p=P(n.process,n.process.stderr,o),c=i.commandErrorResult(l,p);return n.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
8
8
  `:`${c}
9
- `),d?d(l):b.CommandRunError}}catch(l){let p=S(n.process,n.process.stderr,o),c=i.exceptionWhileRunningCommand(l,p);return n.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
9
+ `),d?d(l):N.CommandRunError}}catch(l){let p=P(n.process,n.process.stderr,o),c=i.exceptionWhileRunningCommand(l,p);return n.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
10
10
  `:`${c}
11
- `),d?d(l):b.CommandRunError}return b.Success}var R=Symbol("RouteMap");var O=Symbol("Command");function Z(e,t,n){let a=[...n],r=[],i,o=e,d,m=!0,s=!1;return{next:u=>{if(u==="--help"||u==="-h"){s=!0,d||(d=o);return}else if(u==="--helpAll"||u==="--help-all"||u==="-H"){s="all",d||(d=o);return}if(d){r.push(u);return}if(o.kind===O){d=o,r.push(u);return}let l=I(u),p=u,c=o.getRoutingTargetForInput(p);if(t.caseStyle==="allow-kebab-for-camel"&&!c&&(c=o.getRoutingTargetForInput(l),c&&(p=l)),!c){let f=o.getDefaultCommand();if(f){m=!1,i=[o,""],r.push(u),o=f;return}return{input:u,routeMap:o}}m=!1,i=[o,u],o=c,a.push(u)},finish:()=>{if(d=d??o,d.kind===R&&!s){let l=d.getDefaultCommand();l&&(i=[d,""],d=l,m=!1)}let u=i?i[0].getOtherAliasesForInput(i[1],t.caseStyle):{original:[],"convert-camel-to-kebab":[]};return{target:d,unprocessedInputs:r,helpRequested:s,prefix:a,rootLevel:m,aliases:u}}}}async function Te({root:e,defaultText:t,config:n},a,r){let i=t;if(r.locale){let l=n.localization.loadText(r.locale);if(l)i=l;else{let p=S(r.process,r.process.stderr,n.documentation),c=i.noTextAvailableForLocale({requestedLocale:r.locale,defaultLocale:n.localization.defaultLocale,ansiColor:p});r.process.stderr.write(p?`\x1B[1m\x1B[33m${c}\x1B[39m\x1B[22m
11
+ `),d?d(l):N.CommandRunError}return N.Success}var R=Symbol("RouteMap");var O=Symbol("Command");function Z(e,t,n){let a=[...n],r=[],i,o=e,d,m=!0,s=!1;return{next:u=>{if(u==="--help"||u==="-h"){s=!0,d||(d=o);return}else if(u==="--helpAll"||u==="--help-all"||u==="-H"){s="all",d||(d=o);return}if(d){r.push(u);return}if(o.kind===O){d=o,r.push(u);return}let l=I(u),p=u,c=o.getRoutingTargetForInput(p);if(t.caseStyle==="allow-kebab-for-camel"&&!c&&(c=o.getRoutingTargetForInput(l),c&&(p=l)),!c){let f=o.getDefaultCommand();if(f){m=!1,i=[o,""],r.push(u),o=f;return}return{input:u,routeMap:o}}m=!1,i=[o,u],o=c,a.push(u)},finish:()=>{if(d=d??o,d.kind===R&&!s){let l=d.getDefaultCommand();l&&(i=[d,""],d=l,m=!1)}let u=i?i[0].getOtherAliasesForInput(i[1],t.caseStyle):{original:[],"convert-camel-to-kebab":[]};return{target:d,unprocessedInputs:r,helpRequested:s,prefix:a,rootLevel:m,aliases:u}}}}async function Fe({root:e,defaultText:t,config:n},a,r){let i=t;if(r.locale){let l=n.localization.loadText(r.locale);if(l)i=l;else{let p=P(r.process,r.process.stderr,n.documentation),c=i.noTextAvailableForLocale({requestedLocale:r.locale,defaultLocale:n.localization.defaultLocale,ansiColor:p});r.process.stderr.write(p?`\x1B[1m\x1B[33m${c}\x1B[39m\x1B[22m
12
12
  `:`${c}
13
- `)}}if(n.versionInfo?.getLatestVersion&&!K(r.process,"STRICLI_SKIP_VERSION_CHECK")){let l;"currentVersion"in n.versionInfo?l=n.versionInfo.currentVersion:l=await n.versionInfo.getCurrentVersion.call(r);let p=await n.versionInfo.getLatestVersion.call(r,l);if(p&&l!==p){let c=S(r.process,r.process.stderr,n.documentation),f=i.currentVersionIsNotLatest({currentVersion:l,latestVersion:p,upgradeCommand:n.versionInfo.upgradeCommand,ansiColor:c});r.process.stderr.write(c?`\x1B[1m\x1B[33m${f}\x1B[39m\x1B[22m
13
+ `)}}if(n.versionInfo?.getLatestVersion&&!K(r.process,"STRICLI_SKIP_VERSION_CHECK")){let l;"currentVersion"in n.versionInfo?l=n.versionInfo.currentVersion:l=await n.versionInfo.getCurrentVersion.call(r);let p=await n.versionInfo.getLatestVersion.call(r,l);if(p&&l!==p){let c=P(r.process,r.process.stderr,n.documentation),f=i.currentVersionIsNotLatest({currentVersion:l,latestVersion:p,upgradeCommand:n.versionInfo.upgradeCommand,ansiColor:c});r.process.stderr.write(c?`\x1B[1m\x1B[33m${f}\x1B[39m\x1B[22m
14
14
  `:`${f}
15
15
  `)}}let o=a.slice();if(n.versionInfo&&(o[0]==="--version"||o[0]==="-v")){let l;return"currentVersion"in n.versionInfo?l=n.versionInfo.currentVersion:l=await n.versionInfo.getCurrentVersion.call(r),r.process.stdout.write(l+`
16
- `),b.Success}let d=Z(e,n.scanner,[n.name]),m;for(;o.length>0&&!m;){let l=o.shift();m=d.next(l)}if(m){let l=ge(m.routeMap,n.scanner.caseStyle,n.completion),p=D(m.input,l,n.scanner.distanceOptions).map(T=>`\`${T}\``),c=S(r.process,r.process.stderr,n.documentation),f=i.noCommandRegisteredForInput({input:m.input,corrections:p,ansiColor:c});return r.process.stderr.write(c?`\x1B[1m\x1B[31m${f}\x1B[39m\x1B[22m
16
+ `),N.Success}let d=Z(e,n.scanner,[n.name]),m;for(;o.length>0&&!m;){let l=o.shift();m=d.next(l)}if(m){let l=Ce(m.routeMap,n.scanner.caseStyle,n.completion),p=M(m.input,l,n.scanner.distanceOptions).map(T=>`\`${T}\``),c=P(r.process,r.process.stderr,n.documentation),f=i.noCommandRegisteredForInput({input:m.input,corrections:p,ansiColor:c});return r.process.stderr.write(c?`\x1B[1m\x1B[31m${f}\x1B[39m\x1B[22m
17
17
  `:`${f}
18
- `),b.UnknownCommand}let s=d.finish();if(s.helpRequested||s.target.kind===R){let l=S(r.process,r.process.stdout,n.documentation);return r.process.stdout.write(s.target.formatHelp({prefix:s.prefix,includeVersionFlag:!!n.versionInfo&&s.rootLevel,includeArgumentEscapeSequenceFlag:n.scanner.allowArgumentEscapeSequence,includeHelpAllFlag:s.helpRequested==="all"||n.documentation.alwaysShowHelpAllFlag,includeHidden:s.helpRequested==="all",config:n.documentation,aliases:s.aliases[n.documentation.caseStyle],text:i,ansiColor:l})),b.Success}let u;if("forCommand"in r)try{u=await r.forCommand({prefix:s.prefix})}catch(l){let p=S(r.process,r.process.stderr,n.documentation),c=i.exceptionWhileLoadingCommandContext(l,p);return r.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m`:c),b.ContextLoadError}else u=r;return xe(s.target,{context:u,inputs:s.unprocessedInputs,scannerConfig:n.scanner,documentationConfig:n.documentation,errorFormatting:i,determineExitCode:n.determineExitCode})}function U(e,t){return t==="convert-camel-to-kebab"?A(e):e}function Fe(e,t){return t==="convert-camel-to-kebab"?`no-${A(e)}`:`no${e[0].toUpperCase()}${e.slice(1)}`}function Ae(e){let t=e.scanner?.caseStyle??"original",n;if(e.documentation?.caseStyle){if(t==="original"&&e.documentation.caseStyle==="convert-camel-to-kebab")throw new x("Cannot convert route and flag names on display but scan as original");n=e.documentation.caseStyle}else t==="allow-kebab-for-camel"?n="convert-camel-to-kebab":n=t;let a={caseStyle:t,allowArgumentEscapeSequence:e.scanner?.allowArgumentEscapeSequence??!1,distanceOptions:e.scanner?.distanceOptions??{threshold:7,weights:{insertion:1,deletion:3,substitution:2,transposition:0}}},r={alwaysShowHelpAllFlag:e.documentation?.alwaysShowHelpAllFlag??!1,useAliasInUsageLine:e.documentation?.useAliasInUsageLine??!1,onlyRequiredInUsageLine:e.documentation?.onlyRequiredInUsageLine??!1,caseStyle:n,disableAnsiColor:e.documentation?.disableAnsiColor??!1},i={includeAliases:e.completion?.includeAliases??r.useAliasInUsageLine,includeHiddenRoutes:e.completion?.includeHiddenRoutes??!1,...e.completion};return{...e,scanner:a,completion:i,documentation:r,localization:{defaultLocale:"en",loadText:ye,...e.localization}}}function He(e,t){let n=Ae(t);if(e.kind===O&&n.versionInfo){if(e.usesFlag("version"))throw new x("Unable to use command with flag --version as root when version info is supplied");if(e.usesFlag("v"))throw new x("Unable to use command with alias -v as root when version info is supplied")}let a=n.localization.loadText(n.localization.defaultLocale);if(!a)throw new x(`No text available for the default locale "${n.localization.defaultLocale}"`);return{root:e,config:n,defaultText:a}}function*Ee(e,t,n){for(let a of e.getAllEntries()){if(a.hidden)continue;let r=a.name[n],i=[...t,r];a.target.kind===R?yield*Ee(a.target,i,n):yield[i,a.target,a.aliases]}}function _e({root:e,defaultText:t,config:n},a){let r=t;if(a){let o=n.localization.loadText(a);if(o)r=o;else throw new x(`Application does not support "${a}" locale`)}let i=[];return e.kind===O?i.push([[n.name],e,[]]):i.push(...Ee(e,[n.name],n.documentation.caseStyle)),i.map(([o,d,m])=>[o.join(" "),d.formatHelp({prefix:o,config:n.documentation,includeVersionFlag:!!n.versionInfo&&o.length===1,includeArgumentEscapeSequenceFlag:n.scanner.allowArgumentEscapeSequence,includeHelpAllFlag:n.documentation.alwaysShowHelpAllFlag,includeHidden:!1,aliases:m,text:r,ansiColor:!1})])}async function he({parameters:e},t){try{let n=Q(e,t.scannerConfig);for(let a of t.inputs)n.next(a);return await n.proposeCompletions(t)}catch{return[]}}async function Ne(e,{partial:t,scannerConfig:n,completionConfig:a}){let r=e.getAllEntries();a.includeHiddenRoutes||(r=r.filter(o=>!o.hidden));let i=n.caseStyle==="allow-kebab-for-camel"?"convert-camel-to-kebab":n.caseStyle;return r.flatMap(o=>{let d=o.target.kind===O?"routing-target:command":"routing-target:route-map",m=o.target.brief,s={kind:d,completion:o.name[i],brief:m};return a.includeAliases?[s,...o.aliases.map(u=>({kind:d,completion:u,brief:m}))]:[s]}).filter(({completion:o})=>o.startsWith(t))}async function Ke({root:e,config:t,defaultText:n},a,r){if(a.length===0)return[];let i=Z(e,t.scanner,[]),o=a.slice(0,-1),d;for(;o.length>0&&!d;){let l=o.shift();d=i.next(l)}if(d)return[];let m=i.finish();if(m.helpRequested)return[];let s;if("forCommand"in r)try{s=await r.forCommand({prefix:m.prefix})}catch{return[]}else s=r;let u=a[a.length-1];return m.target.kind===R?Ne(m.target,{context:s,partial:u,scannerConfig:t.scanner,completionConfig:t.completion}):he(m.target,{context:s,inputs:m.unprocessedInputs,partial:u,scannerConfig:t.scanner,completionConfig:t.completion,text:n,includeVersionFlag:!!t.versionInfo&&m.rootLevel})}function ze(e,t){return e.includes(t)}function Je(e){return t=>{if(!ze(e,t))throw new SyntaxError(`${t} is not one of (${e.join("|")})`);return t}}function le(e){return"default"in e&&typeof e.default<"u"}function k(e){return e.optional??le(e)}function be(e){return`(${e})`}function Pe(e){return`[${e}]`}function Se(e){return`${e}...`}function Ye(e){return`<${e}>`}function Qe(e){return`[<${e}>]`}function Ze(e){return`<${e}>...`}function ee(e,t){let n=Object.entries(e.flags??{}).filter(([,i])=>!(i.hidden||t.config.onlyRequiredInUsageLine&&k(i))).map(([i,o])=>{let d=t.config.caseStyle==="convert-camel-to-kebab"?`--${A(i)}`:`--${i}`;if(e.aliases&&t.config.useAliasInUsageLine){let s=Object.entries(e.aliases).filter(u=>u[1]===i);s.length===1&&s[0]&&(d=`-${s[0][0]}`)}if(o.kind==="boolean")return[o,d];if(o.kind==="enum"&&typeof o.placeholder!="string")return[o,`${d} ${o.values.join("|")}`];let m=o.placeholder??"value";return[o,`${d} ${m}`]}).map(([i,o])=>i.kind==="parsed"&&i.variadic?k(i)?Se(Pe(o)):Se(be(o)):k(i)?Pe(o):be(o)),a=[],r=e.positional;if(r)if(r.kind==="array")a=[Ze(r.parameter.placeholder??"args")];else{let i=r.parameters;t.config.onlyRequiredInUsageLine&&(i=i.filter(o=>!o.optional&&typeof o.default>"u")),a=i.map((o,d)=>{let m=o.placeholder??`arg${d+1}`;return o.optional||typeof o.default<"u"?Qe(m):Ye(m)})}return[...t.prefix,...n,...a].join(" ")}function ne(e,t,n){let{keywords:a,briefs:r}=n.text,i=Object.entries(e).filter(([,m])=>!(m.hidden&&!n.includeHidden)),o=i.some(([,m])=>k(m)),d=i.map(([m,s])=>{let u=Object.entries(t).filter(f=>f[1]===m).map(([f])=>`-${f}`),l="--"+U(m,n.config.caseStyle);if(s.kind==="boolean"&&s.default!==!1){let f=Fe(m,n.config.caseStyle);l=`${l}/--${f}`}k(s)?l=`[${l}]`:o&&(l=` ${l}`),s.kind==="parsed"&&s.variadic&&(l=`${l}...`);let p=[];if(s.kind==="enum"){let f=s.values.join("|");p.push(f)}if(le(s)){let f=n.ansiColor?`\x1B[90m${a.default}\x1B[39m`:a.default;p.push(`${f} ${s.default===""?'""':String(s.default)}`)}let c=p.length>0?`[${p.join(", ")}]`:void 0;return{aliases:u.join(" "),flagName:l,brief:s.brief,suffix:c,hidden:s.hidden}});if(d.push({aliases:"-h",flagName:o?" --help":"--help",brief:r.help}),n.includeHelpAllFlag){let m=U("helpAll",n.config.caseStyle);d.push({aliases:"-H",flagName:o?` --${m}`:`--${m}`,brief:r.helpAll,hidden:!n.config.alwaysShowHelpAllFlag})}return n.includeVersionFlag&&d.push({aliases:"-v",flagName:o?" --version":"--version",brief:r.version}),n.includeArgumentEscapeSequenceFlag&&d.push({aliases:"",flagName:o?" --":"--",brief:r.argumentEscapeSequence}),$(d.map(m=>n.ansiColor?[m.hidden?`\x1B[90m${m.aliases}\x1B[39m`:`\x1B[97m${m.aliases}\x1B[39m`,m.hidden?`\x1B[90m${m.flagName}\x1B[39m`:`\x1B[97m${m.flagName}\x1B[39m`,m.hidden?`\x1B[90m${m.brief}\x1B[39m`:`\x1B[03m${m.brief}\x1B[23m`,m.suffix??""]:[m.aliases,m.flagName,m.brief,m.suffix??""]),[" "," "," "])}function*te(e){if(yield e.config.useAliasInUsageLine?"-h":"--help",e.includeHelpAllFlag){let t=U("helpAll",e.config.caseStyle);yield e.config.useAliasInUsageLine?"-H":`--${t}`}e.includeVersionFlag&&(yield e.config.useAliasInUsageLine?"-v":"--version")}function Re(e,t){if(e.kind==="array"){let r=e.parameter.placeholder??"args",i=t.ansiColor?`\x1B[97m${r}...\x1B[39m`:`${r}...`,o=t.ansiColor?`\x1B[3m${e.parameter.brief}\x1B[23m`:e.parameter.brief;return $([[i,o]],[" "])}let{keywords:n}=t.text,a=e.parameters.some(r=>r.optional);return $(e.parameters.map((r,i)=>{let o=r.placeholder??`arg${i+1}`,d;return r.optional?o=`[${o}]`:a&&(o=` ${o}`),r.default&&(d=`[${t.ansiColor?`\x1B[90m${n.default}\x1B[39m`:n.default} ${r.default}]`),[t.ansiColor?`\x1B[97m${o}\x1B[39m`:o,t.ansiColor?`\x1B[3m${r.brief}\x1B[23m`:r.brief,d??""]}),[" "," "])}function*Oe(e,t,n){let{brief:a,fullDescription:r,customUsage:i}=t,{headers:o}=n.text,d=n.prefix.join(" ");if(yield n.ansiColor?`\x1B[1m${o.usage}\x1B[22m`:o.usage,i)for(let s of i)if(typeof s=="string")yield` ${d} ${s}`;else{let u=n.ansiColor?`\x1B[3m${s.brief}\x1B[23m`:s.brief;yield` ${d} ${s.input}
19
- ${u}`}else yield` ${ee(e,n)}`;for(let s of te(n))yield` ${d} ${s}`;if(yield"",yield r??a,n.aliases&&n.aliases.length>0){let s=n.prefix.slice(0,-1).join(" ");yield"",yield n.ansiColor?`\x1B[1m${o.aliases}\x1B[22m`:o.aliases;for(let u of n.aliases)yield` ${s} ${u}`}yield"",yield n.ansiColor?`\x1B[1m${o.flags}\x1B[22m`:o.flags;for(let s of ne(e.flags??{},e.aliases??{},n))yield` ${s}`;let m=e.positional??{kind:"tuple",parameters:[]};if(m.kind==="array"||m.parameters.length>0){yield"",yield n.ansiColor?`\x1B[1m${o.arguments}\x1B[22m`:o.arguments;for(let s of Re(m,n))yield` ${s}`}}function en(e,t){for(let n of t)if(n in e)throw new x(`Unable to use reserved flag --${n}`)}function nn(e,t){for(let n of t)if(n in e)throw new x(`Unable to use reserved alias -${n}`)}function*tn(e){yield`no-${A(e)}`,yield`no${e[0].toUpperCase()}${e.slice(1)}`}function rn(e){let t=Object.entries(e).filter(([,n])=>n.kind==="boolean"&&!n.optional);for(let[n]of t)for(let a of tn(n))if(a in e)throw new x(`Unable to allow negation for --${n} as it conflicts with --${a}`)}function on(e){let{flags:t={},aliases:n={}}=e.parameters;en(t,["help","helpAll","help-all"]),nn(n,["h","H"]),rn(t);let a;return"func"in e?a=async()=>e.func:a=e.loader,{kind:O,loader:a,parameters:e.parameters,get brief(){return e.docs.brief},formatUsageLine:r=>ee(e.parameters,r),formatHelp:r=>[...Oe(e.parameters,e.docs,r)].join(`
18
+ `),N.UnknownCommand}let s=d.finish();if(s.helpRequested||s.target.kind===R){let l=P(r.process,r.process.stdout,n.documentation);return r.process.stdout.write(s.target.formatHelp({prefix:s.prefix,includeVersionFlag:!!n.versionInfo&&s.rootLevel,includeArgumentEscapeSequenceFlag:n.scanner.allowArgumentEscapeSequence,includeHelpAllFlag:s.helpRequested==="all"||n.documentation.alwaysShowHelpAllFlag,includeHidden:s.helpRequested==="all",config:n.documentation,aliases:s.aliases[n.documentation.caseStyle],text:i,ansiColor:l})),N.Success}let u;if("forCommand"in r)try{u=await r.forCommand({prefix:s.prefix})}catch(l){let p=P(r.process,r.process.stderr,n.documentation),c=i.exceptionWhileLoadingCommandContext(l,p);return r.process.stderr.write(p?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m`:c),N.ContextLoadError}else u=r;return Te(s.target,{context:u,inputs:s.unprocessedInputs,scannerConfig:n.scanner,documentationConfig:n.documentation,errorFormatting:i,determineExitCode:n.determineExitCode})}function U(e,t){return t==="convert-camel-to-kebab"?F(e):e}function Ee(e,t){return t==="convert-camel-to-kebab"?`no-${F(e)}`:`no${e[0].toUpperCase()}${e.slice(1)}`}function Ae(e){let t=e.scanner?.caseStyle??"original",n;if(e.documentation?.caseStyle){if(t==="original"&&e.documentation.caseStyle==="convert-camel-to-kebab")throw new C("Cannot convert route and flag names on display but scan as original");n=e.documentation.caseStyle}else t==="allow-kebab-for-camel"?n="convert-camel-to-kebab":n=t;let a={caseStyle:t,allowArgumentEscapeSequence:e.scanner?.allowArgumentEscapeSequence??!1,distanceOptions:e.scanner?.distanceOptions??{threshold:7,weights:{insertion:1,deletion:3,substitution:2,transposition:0}}},r={alwaysShowHelpAllFlag:e.documentation?.alwaysShowHelpAllFlag??!1,useAliasInUsageLine:e.documentation?.useAliasInUsageLine??!1,onlyRequiredInUsageLine:e.documentation?.onlyRequiredInUsageLine??!1,caseStyle:n,disableAnsiColor:e.documentation?.disableAnsiColor??!1},i={includeAliases:e.completion?.includeAliases??r.useAliasInUsageLine,includeHiddenRoutes:e.completion?.includeHiddenRoutes??!1,...e.completion};return{...e,scanner:a,completion:i,documentation:r,localization:{defaultLocale:"en",loadText:xe,...e.localization}}}function _e(e,t){let n=Ae(t);if(e.kind===O&&n.versionInfo){if(e.usesFlag("version"))throw new C("Unable to use command with flag --version as root when version info is supplied");if(e.usesFlag("v"))throw new C("Unable to use command with alias -v as root when version info is supplied")}let a=n.localization.loadText(n.localization.defaultLocale);if(!a)throw new C(`No text available for the default locale "${n.localization.defaultLocale}"`);return{root:e,config:n,defaultText:a}}function*he(e,t,n){for(let a of e.getAllEntries()){if(a.hidden)continue;let r=a.name[n],i=[...t,r];a.target.kind===R?yield*he(a.target,i,n):yield[i,a.target,a.aliases]}}function Ke({root:e,defaultText:t,config:n},a){let r=t;if(a){let o=n.localization.loadText(a);if(o)r=o;else throw new C(`Application does not support "${a}" locale`)}let i=[];return e.kind===O?i.push([[n.name],e,[]]):i.push(...he(e,[n.name],n.documentation.caseStyle)),i.map(([o,d,m])=>[o.join(" "),d.formatHelp({prefix:o,config:n.documentation,includeVersionFlag:!!n.versionInfo&&o.length===1,includeArgumentEscapeSequenceFlag:n.scanner.allowArgumentEscapeSequence,includeHelpAllFlag:n.documentation.alwaysShowHelpAllFlag,includeHidden:!1,aliases:m,text:r,ansiColor:!1})])}async function Ne({parameters:e},t){try{let n=Q(e,t.scannerConfig);for(let a of t.inputs)n.next(a);return await n.proposeCompletions(t)}catch{return[]}}async function be(e,{partial:t,scannerConfig:n,completionConfig:a}){let r=e.getAllEntries();a.includeHiddenRoutes||(r=r.filter(o=>!o.hidden));let i=n.caseStyle==="allow-kebab-for-camel"?"convert-camel-to-kebab":n.caseStyle;return r.flatMap(o=>{let d=o.target.kind===O?"routing-target:command":"routing-target:route-map",m=o.target.brief,s={kind:d,completion:o.name[i],brief:m};return a.includeAliases?[s,...o.aliases.map(u=>({kind:d,completion:u,brief:m}))]:[s]}).filter(({completion:o})=>o.startsWith(t))}async function ze({root:e,config:t,defaultText:n},a,r){if(a.length===0)return[];let i=Z(e,t.scanner,[]),o=a.slice(0,-1),d;for(;o.length>0&&!d;){let l=o.shift();d=i.next(l)}if(d)return[];let m=i.finish();if(m.helpRequested)return[];let s;if("forCommand"in r)try{s=await r.forCommand({prefix:m.prefix})}catch{return[]}else s=r;let u=a[a.length-1];return m.target.kind===R?be(m.target,{context:s,partial:u,scannerConfig:t.scanner,completionConfig:t.completion}):Ne(m.target,{context:s,inputs:m.unprocessedInputs,partial:u,scannerConfig:t.scanner,completionConfig:t.completion,text:n,includeVersionFlag:!!t.versionInfo&&m.rootLevel})}function Je(e,t){return e.includes(t)}function Ye(e){return t=>{if(!Je(e,t))throw new SyntaxError(`${t} is not one of (${e.join("|")})`);return t}}function le(e){return"default"in e&&typeof e.default<"u"}function k(e){return e.optional??le(e)}function Pe(e){return`(${e})`}function Se(e){return`[${e}]`}function Re(e){return`${e}...`}function Qe(e){return`<${e}>`}function Ze(e){return`[<${e}>]`}function en(e){return`<${e}>...`}function ee(e,t){let n=Object.entries(e.flags??{}).filter(([,i])=>!(i.hidden||t.config.onlyRequiredInUsageLine&&k(i))).map(([i,o])=>{let d=t.config.caseStyle==="convert-camel-to-kebab"?`--${F(i)}`:`--${i}`;if(e.aliases&&t.config.useAliasInUsageLine){let s=Object.entries(e.aliases).filter(u=>u[1]===i);s.length===1&&s[0]&&(d=`-${s[0][0]}`)}if(o.kind==="boolean")return[o,d];if(o.kind==="enum"&&typeof o.placeholder!="string")return[o,`${d} ${o.values.join("|")}`];let m=o.placeholder??"value";return[o,`${d} ${m}`]}).map(([i,o])=>i.kind==="parsed"&&i.variadic?k(i)?Re(Se(o)):Re(Pe(o)):k(i)?Se(o):Pe(o)),a=[],r=e.positional;if(r)if(r.kind==="array")a=[en(r.parameter.placeholder??"args")];else{let i=r.parameters;t.config.onlyRequiredInUsageLine&&(i=i.filter(o=>!o.optional&&typeof o.default>"u")),a=i.map((o,d)=>{let m=o.placeholder??`arg${d+1}`;return o.optional||typeof o.default<"u"?Ze(m):Qe(m)})}return[...t.prefix,...n,...a].join(" ")}function ne(e,t,n){let{keywords:a,briefs:r}=n.text,i=Object.entries(e).filter(([,m])=>!(m.hidden&&!n.includeHidden)),o=i.some(([,m])=>k(m)),d=i.map(([m,s])=>{let u=Object.entries(t).filter(f=>f[1]===m).map(([f])=>`-${f}`),l="--"+U(m,n.config.caseStyle);if(s.kind==="boolean"&&s.default!==!1){let f=Ee(m,n.config.caseStyle);l=`${l}/--${f}`}k(s)?l=`[${l}]`:o&&(l=` ${l}`),s.kind==="parsed"&&s.variadic&&(l=`${l}...`);let p=[];if(s.kind==="enum"){let f=s.values.join("|");p.push(f)}if(le(s)){let f=n.ansiColor?`\x1B[90m${a.default}\x1B[39m`:a.default;p.push(`${f} ${s.default===""?'""':String(s.default)}`)}if("variadic"in s&&typeof s.variadic=="string"){let f=n.ansiColor?`\x1B[90m${a.separator}\x1B[39m`:a.separator;p.push(`${f} ${s.variadic}`)}let c=p.length>0?`[${p.join(", ")}]`:void 0;return{aliases:u.join(" "),flagName:l,brief:s.brief,suffix:c,hidden:s.hidden}});if(d.push({aliases:"-h",flagName:o?" --help":"--help",brief:r.help}),n.includeHelpAllFlag){let m=U("helpAll",n.config.caseStyle);d.push({aliases:"-H",flagName:o?` --${m}`:`--${m}`,brief:r.helpAll,hidden:!n.config.alwaysShowHelpAllFlag})}return n.includeVersionFlag&&d.push({aliases:"-v",flagName:o?" --version":"--version",brief:r.version}),n.includeArgumentEscapeSequenceFlag&&d.push({aliases:"",flagName:o?" --":"--",brief:r.argumentEscapeSequence}),$(d.map(m=>n.ansiColor?[m.hidden?`\x1B[90m${m.aliases}\x1B[39m`:`\x1B[97m${m.aliases}\x1B[39m`,m.hidden?`\x1B[90m${m.flagName}\x1B[39m`:`\x1B[97m${m.flagName}\x1B[39m`,m.hidden?`\x1B[90m${m.brief}\x1B[39m`:`\x1B[03m${m.brief}\x1B[23m`,m.suffix??""]:[m.aliases,m.flagName,m.brief,m.suffix??""]),[" "," "," "])}function*te(e){if(yield e.config.useAliasInUsageLine?"-h":"--help",e.includeHelpAllFlag){let t=U("helpAll",e.config.caseStyle);yield e.config.useAliasInUsageLine?"-H":`--${t}`}e.includeVersionFlag&&(yield e.config.useAliasInUsageLine?"-v":"--version")}function Oe(e,t){if(e.kind==="array"){let r=e.parameter.placeholder??"args",i=t.ansiColor?`\x1B[97m${r}...\x1B[39m`:`${r}...`,o=t.ansiColor?`\x1B[3m${e.parameter.brief}\x1B[23m`:e.parameter.brief;return $([[i,o]],[" "])}let{keywords:n}=t.text,a=e.parameters.some(r=>r.optional);return $(e.parameters.map((r,i)=>{let o=r.placeholder??`arg${i+1}`,d;return r.optional?o=`[${o}]`:a&&(o=` ${o}`),r.default&&(d=`[${t.ansiColor?`\x1B[90m${n.default}\x1B[39m`:n.default} ${r.default}]`),[t.ansiColor?`\x1B[97m${o}\x1B[39m`:o,t.ansiColor?`\x1B[3m${r.brief}\x1B[23m`:r.brief,d??""]}),[" "," "])}function*ve(e,t,n){let{brief:a,fullDescription:r,customUsage:i}=t,{headers:o}=n.text,d=n.prefix.join(" ");if(yield n.ansiColor?`\x1B[1m${o.usage}\x1B[22m`:o.usage,i)for(let s of i)if(typeof s=="string")yield` ${d} ${s}`;else{let u=n.ansiColor?`\x1B[3m${s.brief}\x1B[23m`:s.brief;yield` ${d} ${s.input}
19
+ ${u}`}else yield` ${ee(e,n)}`;for(let s of te(n))yield` ${d} ${s}`;if(yield"",yield r??a,n.aliases&&n.aliases.length>0){let s=n.prefix.slice(0,-1).join(" ");yield"",yield n.ansiColor?`\x1B[1m${o.aliases}\x1B[22m`:o.aliases;for(let u of n.aliases)yield` ${s} ${u}`}yield"",yield n.ansiColor?`\x1B[1m${o.flags}\x1B[22m`:o.flags;for(let s of ne(e.flags??{},e.aliases??{},n))yield` ${s}`;let m=e.positional??{kind:"tuple",parameters:[]};if(m.kind==="array"||m.parameters.length>0){yield"",yield n.ansiColor?`\x1B[1m${o.arguments}\x1B[22m`:o.arguments;for(let s of Oe(m,n))yield` ${s}`}}function nn(e,t){for(let n of t)if(n in e)throw new C(`Unable to use reserved flag --${n}`)}function tn(e,t){for(let n of t)if(n in e)throw new C(`Unable to use reserved alias -${n}`)}function*rn(e){yield`no-${F(e)}`,yield`no${e[0].toUpperCase()}${e.slice(1)}`}function on(e){let t=Object.entries(e).filter(([,n])=>n.kind==="boolean"&&!n.optional);for(let[n]of t)for(let a of rn(n))if(a in e)throw new C(`Unable to allow negation for --${n} as it conflicts with --${a}`)}function an(e){for(let[t,n]of Object.entries(e))if("variadic"in n&&typeof n.variadic=="string"){if(n.variadic.length<1)throw new C(`Unable to use "" as variadic separator for --${t} as it is empty`);if(/\s/.test(n.variadic))throw new C(`Unable to use "${n.variadic}" as variadic separator for --${t} as it contains whitespace`)}}function sn(e){let{flags:t={},aliases:n={}}=e.parameters;nn(t,["help","helpAll","help-all"]),tn(n,["h","H"]),on(t),an(t);let a;return"func"in e?a=async()=>e.func:a=e.loader,{kind:O,loader:a,parameters:e.parameters,get brief(){return e.docs.brief},formatUsageLine:r=>ee(e.parameters,r),formatHelp:r=>[...ve(e.parameters,e.docs,r)].join(`
20
20
  `)+`
21
- `,usesFlag:r=>r in t||r in n}}function*Be(e,t,n){let{brief:a,fullDescription:r,hideRoute:i}=t,{headers:o}=n.text;yield n.ansiColor?`\x1B[1m${o.usage}\x1B[22m`:o.usage;for(let[l,p]of Object.entries(e))if(!i||!i[l]||n.includeHidden){let c=n.config.caseStyle==="convert-camel-to-kebab"?A(l):l;yield` ${p.formatUsageLine({...n,prefix:[...n.prefix,c]})}`}let d=n.prefix.join(" ");for(let l of te(n))yield` ${d} ${l}`;if(yield"",yield r??a,n.aliases&&n.aliases.length>0){let l=n.prefix.slice(0,-1).join(" ");yield"",yield n.ansiColor?`\x1B[1m${o.aliases}\x1B[22m`:o.aliases;for(let p of n.aliases)yield` ${l} ${p}`}yield"",yield n.ansiColor?`\x1B[1m${o.flags}\x1B[22m`:o.flags;for(let l of ne({},{},n))yield` ${l}`;yield"",yield n.ansiColor?`\x1B[1m${o.commands}\x1B[22m`:o.commands;let s=Object.entries(e).filter(([l])=>!i||!i[l]||n.includeHidden).map(([l,p])=>({routeName:U(l,n.config.caseStyle),brief:p.brief,hidden:i&&i[l]})),u=$(s.map(l=>n.ansiColor?[l.hidden?`\x1B[90m${l.routeName}\x1B[39m`:`\x1B[97m${l.routeName}\x1B[39m`,l.hidden?`\x1B[90m${l.brief}\x1B[39m`:`\x1B[03m${l.brief}\x1B[23m`]:[l.routeName,l.brief]),[" "]);for(let l of u)yield` ${l}`}function an({routes:e,defaultCommand:t,docs:n,aliases:a}){if(Object.entries(e).length===0)throw new x("Route map must contain at least one route");let r=a??{},i=new Map;for(let[m,s]of Object.entries(r)){if(m in e)throw new x(`Cannot use "${m}" as an alias when a route with that name already exists`);let u=i.get(s)??[];i.set(s,[...u,m])}let o=t?e[t]:void 0;if(o&&o.kind===R)throw new x(`Cannot use "${t}" as the default command because it is not a Command`);let d=m=>{if(m in r)return r[m];if(m in e)return m};return{kind:R,get brief(){return n.brief},formatUsageLine(m){let s=this.getAllEntries().filter(u=>!u.hidden).map(u=>u.name[m.config.caseStyle]);return`${m.prefix.join(" ")} ${s.join("|")} ...`},formatHelp:m=>[...Be(e,n,m)].join(`
21
+ `,usesFlag:r=>r in t||r in n}}function*Be(e,t,n){let{brief:a,fullDescription:r,hideRoute:i}=t,{headers:o}=n.text;yield n.ansiColor?`\x1B[1m${o.usage}\x1B[22m`:o.usage;for(let[l,p]of Object.entries(e))if(!i||!i[l]||n.includeHidden){let c=n.config.caseStyle==="convert-camel-to-kebab"?F(l):l;yield` ${p.formatUsageLine({...n,prefix:[...n.prefix,c]})}`}let d=n.prefix.join(" ");for(let l of te(n))yield` ${d} ${l}`;if(yield"",yield r??a,n.aliases&&n.aliases.length>0){let l=n.prefix.slice(0,-1).join(" ");yield"",yield n.ansiColor?`\x1B[1m${o.aliases}\x1B[22m`:o.aliases;for(let p of n.aliases)yield` ${l} ${p}`}yield"",yield n.ansiColor?`\x1B[1m${o.flags}\x1B[22m`:o.flags;for(let l of ne({},{},n))yield` ${l}`;yield"",yield n.ansiColor?`\x1B[1m${o.commands}\x1B[22m`:o.commands;let s=Object.entries(e).filter(([l])=>!i||!i[l]||n.includeHidden).map(([l,p])=>({routeName:U(l,n.config.caseStyle),brief:p.brief,hidden:i&&i[l]})),u=$(s.map(l=>n.ansiColor?[l.hidden?`\x1B[90m${l.routeName}\x1B[39m`:`\x1B[97m${l.routeName}\x1B[39m`,l.hidden?`\x1B[90m${l.brief}\x1B[39m`:`\x1B[03m${l.brief}\x1B[23m`]:[l.routeName,l.brief]),[" "]);for(let l of u)yield` ${l}`}function ln({routes:e,defaultCommand:t,docs:n,aliases:a}){if(Object.entries(e).length===0)throw new C("Route map must contain at least one route");let r=a??{},i=new Map;for(let[m,s]of Object.entries(r)){if(m in e)throw new C(`Cannot use "${m}" as an alias when a route with that name already exists`);let u=i.get(s)??[];i.set(s,[...u,m])}let o=t?e[t]:void 0;if(o&&o.kind===R)throw new C(`Cannot use "${t}" as the default command because it is not a Command`);let d=m=>{if(m in r)return r[m];if(m in e)return m};return{kind:R,get brief(){return n.brief},formatUsageLine(m){let s=this.getAllEntries().filter(u=>!u.hidden).map(u=>u.name[m.config.caseStyle]);return`${m.prefix.join(" ")} ${s.join("|")} ...`},formatHelp:m=>[...Be(e,n,m)].join(`
22
22
  `)+`
23
- `,getDefaultCommand:()=>o,getOtherAliasesForInput:(m,s)=>{if(t){if(m===t)return{original:[""],"convert-camel-to-kebab":[""]};if(m==="")return{original:[t],"convert-camel-to-kebab":[t]}}let u=I(m),l=d(m);if(!l&&s==="allow-kebab-for-camel"&&(l=d(u)),!l)return{original:[],"convert-camel-to-kebab":[]};let p=[l,...i.get(l)??[]].filter(c=>c!==m&&c!==u);return{original:p,"convert-camel-to-kebab":p.map(A)}},getRoutingTargetForInput:m=>{let s=m in r?r[m]:m;return e[s]},getAllEntries(){let m=n.hideRoute;return Object.entries(e).map(([s,u])=>({name:{original:s,"convert-camel-to-kebab":A(s)},target:u,aliases:i.get(s)??[],hidden:m?.[s]??!1}))}}}async function zt(e,t,n){let a=await Te(e,t,n);n.process.exitCode=a}export{G as AliasNotFoundError,j as ArgumentParseError,h as ArgumentScannerError,W as EnumValidationError,b as ExitCode,L as FlagNotFoundError,J as InvalidNegatedFlagSyntaxError,Y as UnexpectedFlagError,H as UnexpectedPositionalError,X as UnsatisfiedFlagError,_ as UnsatisfiedPositionalError,ke as booleanParser,He as buildApplication,Je as buildChoiceParser,on as buildCommand,an as buildRouteMap,se as formatMessageForArgumentScannerError,_e as generateHelpTextForAllCommands,re as looseBooleanParser,oe as numberParser,Ke as proposeCompletions,zt as run,Ce as text_en};
23
+ `,getDefaultCommand:()=>o,getOtherAliasesForInput:(m,s)=>{if(t){if(m===t)return{original:[""],"convert-camel-to-kebab":[""]};if(m==="")return{original:[t],"convert-camel-to-kebab":[t]}}let u=I(m),l=d(m);if(!l&&s==="allow-kebab-for-camel"&&(l=d(u)),!l)return{original:[],"convert-camel-to-kebab":[]};let p=[l,...i.get(l)??[]].filter(c=>c!==m&&c!==u);return{original:p,"convert-camel-to-kebab":p.map(F)}},getRoutingTargetForInput:m=>{let s=m in r?r[m]:m;return e[s]},getAllEntries(){let m=n.hideRoute;return Object.entries(e).map(([s,u])=>({name:{original:s,"convert-camel-to-kebab":F(s)},target:u,aliases:i.get(s)??[],hidden:m?.[s]??!1}))}}}async function Yt(e,t,n){let a=await Fe(e,t,n);n.process.exitCode=a}export{G as AliasNotFoundError,j as ArgumentParseError,A as ArgumentScannerError,W as EnumValidationError,N as ExitCode,L as FlagNotFoundError,J as InvalidNegatedFlagSyntaxError,Y as UnexpectedFlagError,H as UnexpectedPositionalError,w as UnsatisfiedFlagError,_ as UnsatisfiedPositionalError,Ie as booleanParser,_e as buildApplication,Ye as buildChoiceParser,sn as buildCommand,ln as buildRouteMap,se as formatMessageForArgumentScannerError,Ke as generateHelpTextForAllCommands,re as looseBooleanParser,oe as numberParser,ze as proposeCompletions,Yt as run,ye as text_en};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stricli/core",
3
- "version": "1.1.2",
3
+ "version": "1.2.0",
4
4
  "description": "Build complex CLIs with type safety and no dependencies",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {