@stricli/core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/dist/index.cjs +22 -0
- package/dist/index.d.cts +1389 -0
- package/dist/index.d.ts +1389 -0
- package/dist/index.js +22 -0
- package/package.json +79 -0
package/README.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `@stricli/core`
|
|
2
|
+
|
|
3
|
+
> Build complex CLIs with type safety and no dependencies
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@stricli/core)
|
|
6
|
+
[](https://www.npmjs.com/package/@stricli/core)
|
|
7
|
+
[](https://www.npmjs.com/package/@stricli/core)
|
|
8
|
+
|
|
9
|
+
👉 See **https://bloomberg.github.io/stricli/packages/core** for documentation on this package.
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
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 cn={};Ue(cn,{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:()=>Y,numberParser:()=>Z,proposeCompletions:()=>Oe,run:()=>pn,text_en:()=>me});module.exports=Ve(cn);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 p=1/0;for(let l=0;l<=t.length-1;++l){let u=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)+u*r.substitution];e[s]===t[l-1]&&e[s-1]===t[l]&&c.push(o.get(s-2,l-2)+u*r.transposition);let f=Math.min(...c);o.set(f,s,l),f<p&&(p=f)}if(p>a){if(d>a)return 1/0;d=p}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 p=s.length===m+1?d:d.padEnd(a[m+1]);return[...o,t?.[m]??" ",p]},[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 Q(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`)},Y=e=>{switch(e.toLowerCase()){case"true":case"yes":case"y":return!0;case"false":case"no":case"n":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 Je(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 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 w(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,Qe=/^--([a-z][a-z-]+)$/i;function Ye(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=Qe.exec(e);if(i){let o=i[1];return[ge(o,t,a)]}return[]}var Ze=/^--([a-z][a-z-]+)=(.+)$/i,en=/^-([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 nn(e,t,n,a){let r=Ze.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=en.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 tn(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 Y.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=w(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=Je(n,a,t.caseStyle),o=[],d=new Map,m=0,s,p=!1;return{next:l=>{if(!p&&t.allowArgumentEscapeSequence&&l==="--"){if(s)if(s[1].kind==="parsed"&&s[1].inferEmpty)v(d,t.caseStyle,s,""),s=void 0;else{let u=w(s[0],t.caseStyle);throw new O(u)}p=!0;return}if(!p){let u=nn(l,n,i,t);if(u){if(s)if(s[1].kind==="parsed"&&s[1].inferEmpty)v(d,t.caseStyle,s,""),s=void 0;else{let f=w(s[0],t.caseStyle),T=w(u[0][0],t.caseStyle);throw new O(f,T)}v(d,t.caseStyle,...u);return}let c=Ye(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=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"?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=w(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 u=[],c;r.kind==="array"?(typeof r.minimum=="number"&&m<r.minimum&&u.push(new V(se(r.parameter),[r.minimum,m])),c=Q(o.map(async(g,C)=>{let y=se(r.parameter,C+1);return j(y,r.parameter,g,l)}))):c=Q(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=Q(Object.entries(n).map(async g=>{let[C,y]=g,b=w(C,t.caseStyle);if(s&&s[0]===C)throw new O(b);let P=d.get(C),X=await tn(b,y,P,t,l);return[C,X]})),[T,E]=await Promise.all([c,f]);if(T.status==="rejected")for(let g of T.reasons)u.push(g);if(E.status==="rejected")for(let g of E.reasons)u.push(g);if(u.length>0)return{success:!1,errors:u};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:u,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(!p){let F=Ce.exec(l);if(u.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 X=i[P];if(!X)throw new k(P);v(C,t.caseStyle,X,X[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 X=i[P];X&&E.push({kind:"argument:flag",completion:`${l}${P}`,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,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 u=await l.parseArguments(n);if(u.success)s=u.arguments;else{let c=S(n.process,n.process.stderr,o);for(let f of u.errors){let T=i.exceptionWhileParsingArguments(f,c);n.process.stderr.write(c?`\x1B[1m\x1B[31m${T}\x1B[39m\x1B[22m
|
|
2
|
+
`:`${T}
|
|
3
|
+
`)}return N.InvalidArgument}}catch(l){let u=S(n.process,n.process.stderr,o),c=i.exceptionWhileParsingArguments(l,u);return n.process.stderr.write(u?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
|
|
4
|
+
`:`${c}
|
|
5
|
+
`),N.InvalidArgument}let p;try{let l=await m;typeof l=="function"?p=l:p=l.default}catch(l){let u=S(n.process,n.process.stderr,o),c=i.exceptionWhileLoadingCommandFunction(l,u);return n.process.stderr.write(u?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
|
|
6
|
+
`:`${c}
|
|
7
|
+
`),N.CommandLoadError}try{let l=await p.call(n,...s);if(l instanceof Error){let u=S(n.process,n.process.stderr,o),c=i.commandErrorResult(l,u);return n.process.stderr.write(u?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
|
|
8
|
+
`:`${c}
|
|
9
|
+
`),d?d(l):N.CommandRunError}}catch(l){let u=S(n.process,n.process.stderr,o),c=i.exceptionWhileRunningCommand(l,u);return n.process.stderr.write(u?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m
|
|
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:p=>{if(p==="--help"||p==="-h"){s=!0,d||(d=o);return}else if(p==="--helpAll"||p==="--help-all"||p==="-H"){s="all",d||(d=o);return}if(d){r.push(p);return}if(o.kind===B){d=o,r.push(p);return}let l=M(p),u=p,c=o.getRoutingTargetForInput(u);if(t.caseStyle==="allow-kebab-for-camel"&&!c&&(c=o.getRoutingTargetForInput(l),c&&(u=l)),!c){let f=o.getDefaultCommand();if(f){m=!1,i=[o,""],r.push(p),o=f;return}return{input:p,routeMap:o}}m=!1,i=[o,p],o=c,a.push(p)},finish:()=>{if(d=d??o,d.kind===R&&!s){let l=d.getDefaultCommand();l&&(i=[d,""],d=l,m=!1)}let p=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:p}}}}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 u=S(r.process,r.process.stderr,n.documentation),c=i.noTextAvailableForLocale({requestedLocale:r.locale,defaultLocale:n.localization.defaultLocale,ansiColor:u});r.process.stderr.write(u?`\x1B[1m\x1B[33m${c}\x1B[39m\x1B[22m
|
|
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 u=await n.versionInfo.getLatestVersion.call(r,l);if(u&&l!==u){let c=S(r.process,r.process.stderr,n.documentation),f=i.currentVersionIsNotLatest({currentVersion:l,latestVersion:u,upgradeCommand:n.versionInfo.upgradeCommand,ansiColor:c});r.process.stderr.write(c?`\x1B[1m\x1B[33m${f}\x1B[39m\x1B[22m
|
|
14
|
+
`:`${f}
|
|
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),u=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:u,ansiColor:c});return r.process.stderr.write(c?`\x1B[1m\x1B[31m${f}\x1B[39m\x1B[22m
|
|
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 p;if("forCommand"in r)try{p=await r.forCommand({prefix:s.prefix})}catch(l){let u=S(r.process,r.process.stderr,n.documentation),c=i.exceptionWhileLoadingCommandContext(l,u);return r.process.stderr.write(u?`\x1B[1m\x1B[31m${c}\x1B[39m\x1B[22m`:c),N.ContextLoadError}else p=r;return Fe(s.target,{context:p,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(p=>({kind:d,completion:p,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 p=a[a.length-1];return m.target.kind===R?Re(m.target,{context:s,partial:p,scannerConfig:t.scanner,completionConfig:t.completion}):Se(m.target,{context:s,inputs:m.unprocessedInputs,partial:p,scannerConfig:t.scanner,completionConfig:t.completion,text:n,includeVersionFlag:!!t.versionInfo&&m.rootLevel})}function rn(e,t){return e.includes(t)}function Be(e){return t=>{if(!rn(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 we(e){return`[${e}]`}function Xe(e){return`${e}...`}function on(e){return`<${e}>`}function an(e){return`[<${e}>]`}function sn(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(p=>p[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)?Xe(we(o)):Xe(ve(o)):D(i)?we(o):ve(o)),a=[],r=e.positional;if(r)if(r.kind==="array")a=[sn(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"?an(m):on(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 p=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 u=[];if(s.kind==="enum"){let f=s.values.join("|");u.push(f)}if(de(s)){let f=n.ansiColor?`\x1B[90m${a.default}\x1B[39m`:a.default;u.push(`${f} ${s.default===""?'""':String(s.default)}`)}let c=u.length>0?`[${u.join(", ")}]`:void 0;return{aliases:p.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)yield` ${d} ${s}`;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 p of n.aliases)yield` ${s} ${p}`}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 ln(e,t){for(let n of t)if(n in e)throw new x(`Unable to use reserved flag --${n}`)}function mn(e,t){for(let n of t)if(n in e)throw new x(`Unable to use reserved alias -${n}`)}function*dn(e){yield`no-${A(e)}`,yield`no${e[0].toUpperCase()}${e.slice(1)}`}function un(e){let t=Object.entries(e).filter(([,n])=>n.kind==="boolean"&&!n.optional);for(let[n]of t)for(let a of dn(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;ln(t,["help","helpAll","help-all"]),mn(n,["h","H"]),un(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(`
|
|
19
|
+
`)+`
|
|
20
|
+
`,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,u]of Object.entries(e))if(!i||!i[l]||n.includeHidden){let c=n.config.caseStyle==="convert-camel-to-kebab"?A(l):l;yield` ${u.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 u of n.aliases)yield` ${l} ${u}`}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,u])=>({routeName:W(l,n.config.caseStyle),brief:u.brief,hidden:i&&i[l]})),p=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 p)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 p=i.get(s)??[];i.set(s,[...p,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(p=>!p.hidden).map(p=>p.name[m.config.caseStyle]);return`${m.prefix.join(" ")} ${s.join("|")} ...`},formatHelp:m=>[...Ie(e,n,m)].join(`
|
|
21
|
+
`)+`
|
|
22
|
+
`,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 p=M(m),l=d(m);if(!l&&s==="allow-kebab-for-camel"&&(l=d(p)),!l)return{original:[],"convert-camel-to-kebab":[]};let u=[l,...i.get(l)??[]].filter(c=>c!==m&&c!==p);return{original:u,"convert-camel-to-kebab":u.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,p])=>({name:{original:s,"convert-camel-to-kebab":A(s)},target:p,aliases:i.get(s)??[],hidden:m?.[s]??!1}))}}}async function pn(e,t,n){let a=await Ae(e,t,n);n.process.exit?.(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});
|