cleye 2.1.1 → 2.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 +10 -10
- package/dist/index.d.cts +11 -0
- package/dist/index.d.mts +11 -0
- package/dist/index.mjs +10 -10
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`}}
|
|
3
|
-
`}}
|
|
4
|
-
`):e.usage}}:void 0;if(t.name){const r=[],
|
|
5
|
-
`)}}}}
|
|
6
|
-
`)),r)return{id:"examples",type:"section",data:{title:"Examples:",body:r}}}
|
|
7
|
-
`:"")+(r?this.indentText({text:this.render(r),spaces:
|
|
8
|
-
`}table({tableData:e,tableOptions:r,tableBreakpoints:
|
|
9
|
-
`);if("type"in e&&this[e.type]){const r=this[e.type];if(typeof r=="function")return r.call(this,e.data)}throw new Error(`Invalid node type: ${JSON.stringify(e)}`)}}const
|
|
10
|
-
`),
|
|
1
|
+
"use strict";var M=Object.defineProperty;var o=(t,e)=>M(t,"name",{value:e,configurable:!0});var R=require("type-flag"),D=require("tty"),N=require("terminal-columns");const b=new Uint32Array(65536),U=o((t,e)=>{const r=t.length,a=e.length,n=1<<r-1;let s=-1,i=0,f=r,l=r;for(;l--;)b[t.charCodeAt(l)]|=1<<l;for(l=0;l<a;l++){let h=b[e.charCodeAt(l)];const u=h|i;h|=(h&s)+s^s,i|=~(h|s),s&=h,i&n&&f++,s&n&&f--,i=i<<1|1,s=s<<1|~(u|i),i&=u}for(l=r;l--;)b[t.charCodeAt(l)]=0;return f},"myers_32"),L=o((t,e)=>{const r=e.length,a=t.length,n=[],s=[],i=Math.ceil(r/32),f=Math.ceil(a/32);for(let c=0;c<i;c++)s[c]=-1,n[c]=0;let l=0;for(;l<f-1;l++){let c=0,g=-1;const m=l*32,y=Math.min(32,a)+m;for(let d=m;d<y;d++)b[t.charCodeAt(d)]|=1<<d;for(let d=0;d<r;d++){const v=b[e.charCodeAt(d)],w=s[d/32|0]>>>d&1,p=n[d/32|0]>>>d&1,q=v|c,F=((v|p)&g)+g^g|v|p;let x=c|~(F|g),j=g&F;x>>>31^w&&(s[d/32|0]^=1<<d),j>>>31^p&&(n[d/32|0]^=1<<d),x=x<<1|w,j=j<<1|p,g=j|~(q|x),c=x&q}for(let d=m;d<y;d++)b[t.charCodeAt(d)]=0}let h=0,u=-1;const $=l*32,C=Math.min(32,a-$)+$;for(let c=$;c<C;c++)b[t.charCodeAt(c)]|=1<<c;let E=a;for(let c=0;c<r;c++){const g=b[e.charCodeAt(c)],m=s[c/32|0]>>>c&1,y=n[c/32|0]>>>c&1,d=g|h,v=((g|y)&u)+u^u|g|y;let w=h|~(v|u),p=u&v;E+=w>>>a-1&1,E-=p>>>a-1&1,w>>>31^m&&(s[c/32|0]^=1<<c),p>>>31^y&&(n[c/32|0]^=1<<c),w=w<<1|m,p=p<<1|y,u=p|~(d|w),h=w&d}for(let c=$;c<C;c++)b[t.charCodeAt(c)]=0;return E},"myers_x"),k=o((t,e)=>{if(t.length<e.length){const r=e;e=t,t=r}return e.length===0?t.length:t.length<=32?U(t,e):L(t,e)},"distance"),T=o((t,e)=>{let r=1/0,a=0;for(let n=0;n<e.length;n++){const s=k(t,e[n]);s<r&&(r=s,a=n)}return e[a]},"closest"),H=o(t=>t.replaceAll(/[\W_]([a-z\d])?/gi,(e,r)=>r?r.toUpperCase():""),"camelCase"),V=o(t=>t.replaceAll(/\B([A-Z])/g,"-$1").toLowerCase(),"kebabCase"),J={"> 80":[{width:"content-width",paddingLeft:2,paddingRight:8},{width:"auto"}],"> 40":[{width:"auto",paddingLeft:2,paddingRight:8,preprocess:o(t=>t.trim(),"preprocess")},{width:"100%",paddingLeft:2,paddingBottom:1}],"> 0":{stdoutColumns:1e3,columns:[{width:"content-width",paddingLeft:2,paddingRight:8},{width:"content-width"}]}};function W(t){let e=!1;return{type:"table",data:{tableData:Object.keys(t).sort((n,s)=>n.localeCompare(s)).map(n=>{const s=t[n],i="alias"in s;return i&&(e=!0),{name:n,flag:s,flagFormatted:`--${V(n)}`,aliasesEnabled:e,aliasFormatted:i?`-${s.alias}`:void 0}}).map(n=>(n.aliasesEnabled=e,[{type:"flagName",data:n},{type:"flagDescription",data:n}])),tableBreakpoints:J}}}o(W,"renderFlags");const B=o(t=>!t||(t.version??(t.help?t.help.version:void 0)),"getVersion"),P=o(t=>{const e="parent"in t&&t.parent?.name;return(e?`${e} `:"")+t.name},"getName");function z(t){const e=[];t.name&&e.push(P(t));const r=B(t)??("parent"in t&&B(t.parent));if(r&&e.push(`v${r}`),e.length!==0)return{id:"name",type:"text",data:`${e.join(" ")}
|
|
2
|
+
`}}o(z,"getNameAndVersion");function K(t){const{help:e}=t;if(!(!e||!e.description))return{id:"description",type:"text",data:`${e.description}
|
|
3
|
+
`}}o(K,"getDescription");function Z(t){const e=t.help||{};if("usage"in e)return e.usage?{id:"usage",type:"section",data:{title:"Usage:",body:Array.isArray(e.usage)?e.usage.join(`
|
|
4
|
+
`):e.usage}}:void 0;if(t.name){const r=[],a=[P(t)];if(t.flags&&Object.keys(t.flags).length>0&&a.push("[flags...]"),t.parameters&&t.parameters.length>0){const{parameters:n}=t,s=n.indexOf("--"),i=s!==-1&&n.slice(s+1).some(f=>f.startsWith("<"));a.push(n.map(f=>f!=="--"?f:i?"--":"[--]").join(" "))}if(a.length>1&&r.push(a.join(" ")),"commands"in t&&t.commands?.length&&r.push(`${t.name} <command>`),r.length>0)return{id:"usage",type:"section",data:{title:"Usage:",body:r.join(`
|
|
5
|
+
`)}}}}o(Z,"getUsage");function G(t){return!("commands"in t)||!t.commands?.length?void 0:{id:"commands",type:"section",data:{title:"Commands:",body:{type:"table",data:{tableData:t.commands.map(a=>{const{help:n}=a.options;return[a.options.name,typeof n=="object"&&n.description||""]}),tableOptions:[{width:"content-width",paddingLeft:2,paddingRight:8}]}},indentBody:0}}}o(G,"getCommands");function Q(t){if(!(!t.flags||Object.keys(t.flags).length===0))return{id:"flags",type:"section",data:{title:"Flags:",body:W(t.flags),indentBody:0}}}o(Q,"getFlags");function X(t){const{help:e}=t;if(!e||!e.examples||e.examples.length===0)return;let{examples:r}=e;if(Array.isArray(r)&&(r=r.join(`
|
|
6
|
+
`)),r)return{id:"examples",type:"section",data:{title:"Examples:",body:r}}}o(X,"getExamples");function Y(t){if(!("alias"in t)||!t.alias)return;const{alias:e}=t;return{id:"aliases",type:"section",data:{title:"Aliases:",body:Array.isArray(e)?e.join(", "):e}}}o(Y,"getAliases");const ee=o(t=>[z,K,Z,G,Q,X,Y].map(e=>e(t)).filter(Boolean),"generateHelp"),te=D.WriteStream.prototype.hasColors();class re{static{o(this,"Renderers")}text(e){return e}bold(e){return te?`\x1B[1m${e}\x1B[22m`:e.toLocaleUpperCase()}indentText({text:e,spaces:r}){return e.replaceAll(/^/gm," ".repeat(r))}heading(e){return this.bold(e)}section({title:e,body:r,indentBody:a=2}){return`${(e?`${this.heading(e)}
|
|
7
|
+
`:"")+(r?this.indentText({text:this.render(r),spaces:a}):"")}
|
|
8
|
+
`}table({tableData:e,tableOptions:r,tableBreakpoints:a}){return N.terminalColumns(e.map(n=>n.map(s=>this.render(s))),a?N.breakpoints(a):r)}flagParameter(e){return e===Boolean?"":e===String?"<string>":e===Number?"<number>":Array.isArray(e)?this.flagParameter(e[0]):"<value>"}flagOperator(e){return" "}flagName(e){const{flag:r,flagFormatted:a,aliasesEnabled:n,aliasFormatted:s}=e;let i="";if(s?i+=`${s}, `:n&&(i+=" "),i+=a,"placeholder"in r&&typeof r.placeholder=="string")i+=`${this.flagOperator(e)}${r.placeholder}`;else{const f=this.flagParameter("type"in r?r.type:r);f&&(i+=`${this.flagOperator(e)}${f}`)}return i}flagDefault(e){return JSON.stringify(e)}flagDescription({flag:e}){let r="description"in e?e.description??"":"";if("default"in e){let{default:a}=e;typeof a=="function"&&(a=a()),a&&(r+=` (default: ${this.flagDefault(a)})`)}return r}render(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.map(r=>this.render(r)).join(`
|
|
9
|
+
`);if("type"in e&&this[e.type]){const r=this[e.type];if(typeof r=="function")return r.call(this,e.data)}throw new Error(`Invalid node type: ${JSON.stringify(e)}`)}}const O=o(t=>t.length>0&&!t.includes(" "),"isValidScriptName"),{stringify:A}=JSON,ne=/[|\\{}()[\]^$+*?.]/;function S(t){const e=[];let r,a;for(const n of t){if(a)throw new Error(`Invalid parameter: Spread parameter ${A(a)} must be last`);const s=n[0],i=n.at(-1);let f;if(s==="<"&&i===">"&&(f=!0,r))throw new Error(`Invalid parameter: Required parameter ${A(n)} cannot come after optional parameter ${A(r)}`);if(s==="["&&i==="]"&&(f=!1,r=n),f===void 0)throw new Error(`Invalid parameter: ${A(n)}. Must be wrapped in <> (required parameter) or [] (optional parameter)`);let l=n.slice(1,-1);const h=l.slice(-3)==="...";h&&(a=n,l=l.slice(0,-3));const u=l.match(ne);if(u)throw new Error(`Invalid parameter: ${A(n)}. Invalid character found ${A(u[0])}`);e.push({name:l,required:f,spread:h})}return e}o(S,"parseParameters");function I(t,e,r,a){for(let n=0;n<e.length;n+=1){const{name:s,required:i,spread:f}=e[n],l=H(s);if(l in t)throw new Error(`Invalid parameter: ${A(s)} is used more than once.`);const h=f?r.slice(n):r[n];if(f&&(n=e.length),i&&(!h||f&&h.length===0))return console.error(`Error: Missing required parameter ${A(s)}
|
|
10
|
+
`),a(),process.exit(1);t[l]=h}}o(I,"mapParametersToArguments");function ae(t){return t!==!1}o(ae,"helpEnabled");const se=o(t=>{const e=[];for(const[r,a]of Object.entries(t))if(e.push(r),a&&typeof a=="object"&&"alias"in a){const{alias:n}=a;typeof n=="string"&&n?e.push(n):Array.isArray(n)&&e.push(...n.filter(Boolean))}return e},"getKnownFlagNames"),ie=o((t,e)=>{if(t.length<3||e.length===0)return;const r=T(t,e);return k(t,r)<=2?r:void 0},"findClosestFlag"),oe=o((t,e)=>{const r=Object.keys(t);if(r.length!==0){for(const a of r){const n=ie(a,e),s=n?` (did you mean --${n}?)`:"";console.error(`Error: Unknown flag --${a}${s}`)}process.exit(1)}},"handleUnknownFlags");function _(t,e,r,a){const n={...e.flags},s=e.version&&!("version"in n);s&&(n.version={type:Boolean,description:"Show version"});const{help:i}=e,f=ae(i);f&&!("help"in n)&&(n.help={type:Boolean,alias:"h",description:"Show help"});const l=R.typeFlag(n,a,{ignore:e.ignoreArgv}),h=o(()=>{console.log(e.version)},"showVersion");if(s&&l.flags.version===!0)return h(),process.exit(0);const u=new re,$=f&&i?.render?i.render:m=>u.render(m),C=o(m=>{const y=ee({...e,...m?{help:m}:{},flags:n});console.log($(y,u))},"showHelp");if(f&&l.flags.help===!0)return C(),process.exit(0);if((e.strictFlags??e.parent?.strictFlags)&&oe(l.unknownFlags,se(n)),e.parameters){let{parameters:m}=e,y=l._;const d=m.indexOf("--"),v=m.slice(d+1),w=Object.create(null);let p=[];d>-1&&v.length>0&&(m=m.slice(0,d),p=l._["--"],y=y.slice(0,-p.length||void 0)),I(w,S(m),y,C),d>-1&&v.length>0&&I(w,S(v),p,C),Object.assign(l._,w)}const c={...l,showVersion:h,showHelp:C},g={command:t,...c};if(typeof r=="function"){const m=r(c);if(m&&"then"in m)return Object.assign(Promise.resolve(m),g)}return g}o(_,"cliBase");function le(t,e){const r=new Map;for(const a of e){const n=[a.options.name],{alias:s}=a.options;s&&(Array.isArray(s)?n.push(...s):n.push(s));for(const i of n){if(r.has(i))throw new Error(`Duplicate command name found: ${A(i)}`);r.set(i,a)}}return r.get(t)}o(le,"getCommand");function ce(t,e,r=process.argv.slice(2)){if(!t)throw new Error("Options is required");if("name"in t&&(!t.name||!O(t.name)))throw new Error(`Invalid script name: ${A(t.name)}`);const a=r[0];if(t.commands&&a&&O(a)){const n=le(a,t.commands);if(n)return _(n.options.name,{...n.options,parent:t},n.callback,r.slice(1))}return _(void 0,t,e,r)}o(ce,"cli");function de(t,e){if(!t)throw new Error("Command options are required");const{name:r}=t;if(r===void 0)throw new Error("Command name is required");if(!O(r))throw new Error(`Invalid command name ${JSON.stringify(r)}. Command names must be one word.`);return{options:t,callback:e}}o(de,"command"),exports.cli=ce,exports.command=de;
|
package/dist/index.d.cts
CHANGED
|
@@ -32,6 +32,12 @@ type CommandOptions<Parameters = string[]> = {
|
|
|
32
32
|
* Which argv elements to ignore from parsing
|
|
33
33
|
*/
|
|
34
34
|
ignoreArgv?: IgnoreFunction;
|
|
35
|
+
/**
|
|
36
|
+
* When enabled, prints an error and exits if unknown flags are passed.
|
|
37
|
+
* Suggests the closest matching flag name when possible.
|
|
38
|
+
* Inherits from parent CLI if not specified.
|
|
39
|
+
*/
|
|
40
|
+
strictFlags?: boolean;
|
|
35
41
|
};
|
|
36
42
|
declare function command<Options extends CommandOptions<[...Parameters]>, Parameters extends string[]>(options: Readonly<Options> & CommandOptions<[...Parameters]>, callback?: CallbackFunction<ParseArgv<Options, Parameters>>): Command<Options, ParseArgv<Options, Parameters, Options['name']>>;
|
|
37
43
|
type Command<Options extends CommandOptions = CommandOptions, ParsedType = any> = {
|
|
@@ -178,6 +184,11 @@ type CliOptions<Commands = Command[], Parameters extends string[] = string[]> =
|
|
|
178
184
|
* Which argv elements to ignore from parsing
|
|
179
185
|
*/
|
|
180
186
|
ignoreArgv?: IgnoreFunction;
|
|
187
|
+
/**
|
|
188
|
+
* When enabled, prints an error and exits if unknown flags are passed.
|
|
189
|
+
* Suggests the closest matching flag name when possible.
|
|
190
|
+
*/
|
|
191
|
+
strictFlags?: boolean;
|
|
181
192
|
};
|
|
182
193
|
type AlphabetLowercase = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z';
|
|
183
194
|
type Numeric = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
|
package/dist/index.d.mts
CHANGED
|
@@ -32,6 +32,12 @@ type CommandOptions<Parameters = string[]> = {
|
|
|
32
32
|
* Which argv elements to ignore from parsing
|
|
33
33
|
*/
|
|
34
34
|
ignoreArgv?: IgnoreFunction;
|
|
35
|
+
/**
|
|
36
|
+
* When enabled, prints an error and exits if unknown flags are passed.
|
|
37
|
+
* Suggests the closest matching flag name when possible.
|
|
38
|
+
* Inherits from parent CLI if not specified.
|
|
39
|
+
*/
|
|
40
|
+
strictFlags?: boolean;
|
|
35
41
|
};
|
|
36
42
|
declare function command<Options extends CommandOptions<[...Parameters]>, Parameters extends string[]>(options: Readonly<Options> & CommandOptions<[...Parameters]>, callback?: CallbackFunction<ParseArgv<Options, Parameters>>): Command<Options, ParseArgv<Options, Parameters, Options['name']>>;
|
|
37
43
|
type Command<Options extends CommandOptions = CommandOptions, ParsedType = any> = {
|
|
@@ -178,6 +184,11 @@ type CliOptions<Commands = Command[], Parameters extends string[] = string[]> =
|
|
|
178
184
|
* Which argv elements to ignore from parsing
|
|
179
185
|
*/
|
|
180
186
|
ignoreArgv?: IgnoreFunction;
|
|
187
|
+
/**
|
|
188
|
+
* When enabled, prints an error and exits if unknown flags are passed.
|
|
189
|
+
* Suggests the closest matching flag name when possible.
|
|
190
|
+
*/
|
|
191
|
+
strictFlags?: boolean;
|
|
181
192
|
};
|
|
182
193
|
type AlphabetLowercase = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z';
|
|
183
194
|
type Numeric = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
|
package/dist/index.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
var
|
|
2
|
-
`}}
|
|
3
|
-
`}}
|
|
4
|
-
`):e.usage}}:void 0;if(t.name){const r=[],
|
|
5
|
-
`)}}}}
|
|
6
|
-
`)),r)return{id:"examples",type:"section",data:{title:"Examples:",body:r}}}
|
|
7
|
-
`:"")+(r?this.indentText({text:this.render(r),spaces:
|
|
8
|
-
`}table({tableData:e,tableOptions:r,tableBreakpoints:
|
|
9
|
-
`);if("type"in e&&this[e.type]){const r=this[e.type];if(typeof r=="function")return r.call(this,e.data)}throw new Error(`Invalid node type: ${JSON.stringify(e)}`)}}const
|
|
10
|
-
`),
|
|
1
|
+
var _=Object.defineProperty;var o=(t,e)=>_(t,"name",{value:e,configurable:!0});import{typeFlag as M}from"type-flag";import R from"tty";import{terminalColumns as D,breakpoints as U}from"terminal-columns";const b=new Uint32Array(65536),L=o((t,e)=>{const r=t.length,a=e.length,n=1<<r-1;let s=-1,i=0,d=r,l=r;for(;l--;)b[t.charCodeAt(l)]|=1<<l;for(l=0;l<a;l++){let h=b[e.charCodeAt(l)];const u=h|i;h|=(h&s)+s^s,i|=~(h|s),s&=h,i&n&&d++,s&n&&d--,i=i<<1|1,s=s<<1|~(u|i),i&=u}for(l=r;l--;)b[t.charCodeAt(l)]=0;return d},"myers_32"),T=o((t,e)=>{const r=e.length,a=t.length,n=[],s=[],i=Math.ceil(r/32),d=Math.ceil(a/32);for(let c=0;c<i;c++)s[c]=-1,n[c]=0;let l=0;for(;l<d-1;l++){let c=0,g=-1;const m=l*32,y=Math.min(32,a)+m;for(let f=m;f<y;f++)b[t.charCodeAt(f)]|=1<<f;for(let f=0;f<r;f++){const v=b[e.charCodeAt(f)],w=s[f/32|0]>>>f&1,p=n[f/32|0]>>>f&1,N=v|c,q=((v|p)&g)+g^g|v|p;let x=c|~(q|g),j=g&q;x>>>31^w&&(s[f/32|0]^=1<<f),j>>>31^p&&(n[f/32|0]^=1<<f),x=x<<1|w,j=j<<1|p,g=j|~(N|x),c=x&N}for(let f=m;f<y;f++)b[t.charCodeAt(f)]=0}let h=0,u=-1;const C=l*32,$=Math.min(32,a-C)+C;for(let c=C;c<$;c++)b[t.charCodeAt(c)]|=1<<c;let E=a;for(let c=0;c<r;c++){const g=b[e.charCodeAt(c)],m=s[c/32|0]>>>c&1,y=n[c/32|0]>>>c&1,f=g|h,v=((g|y)&u)+u^u|g|y;let w=h|~(v|u),p=u&v;E+=w>>>a-1&1,E-=p>>>a-1&1,w>>>31^m&&(s[c/32|0]^=1<<c),p>>>31^y&&(n[c/32|0]^=1<<c),w=w<<1|m,p=p<<1|y,u=p|~(f|w),h=w&f}for(let c=C;c<$;c++)b[t.charCodeAt(c)]=0;return E},"myers_x"),F=o((t,e)=>{if(t.length<e.length){const r=e;e=t,t=r}return e.length===0?t.length:t.length<=32?L(t,e):T(t,e)},"distance"),H=o((t,e)=>{let r=1/0,a=0;for(let n=0;n<e.length;n++){const s=F(t,e[n]);s<r&&(r=s,a=n)}return e[a]},"closest"),V=o(t=>t.replaceAll(/[\W_]([a-z\d])?/gi,(e,r)=>r?r.toUpperCase():""),"camelCase"),J=o(t=>t.replaceAll(/\B([A-Z])/g,"-$1").toLowerCase(),"kebabCase"),W={"> 80":[{width:"content-width",paddingLeft:2,paddingRight:8},{width:"auto"}],"> 40":[{width:"auto",paddingLeft:2,paddingRight:8,preprocess:o(t=>t.trim(),"preprocess")},{width:"100%",paddingLeft:2,paddingBottom:1}],"> 0":{stdoutColumns:1e3,columns:[{width:"content-width",paddingLeft:2,paddingRight:8},{width:"content-width"}]}};function z(t){let e=!1;return{type:"table",data:{tableData:Object.keys(t).sort((n,s)=>n.localeCompare(s)).map(n=>{const s=t[n],i="alias"in s;return i&&(e=!0),{name:n,flag:s,flagFormatted:`--${J(n)}`,aliasesEnabled:e,aliasFormatted:i?`-${s.alias}`:void 0}}).map(n=>(n.aliasesEnabled=e,[{type:"flagName",data:n},{type:"flagDescription",data:n}])),tableBreakpoints:W}}}o(z,"renderFlags");const k=o(t=>!t||(t.version??(t.help?t.help.version:void 0)),"getVersion"),B=o(t=>{const e="parent"in t&&t.parent?.name;return(e?`${e} `:"")+t.name},"getName");function K(t){const e=[];t.name&&e.push(B(t));const r=k(t)??("parent"in t&&k(t.parent));if(r&&e.push(`v${r}`),e.length!==0)return{id:"name",type:"text",data:`${e.join(" ")}
|
|
2
|
+
`}}o(K,"getNameAndVersion");function Z(t){const{help:e}=t;if(!(!e||!e.description))return{id:"description",type:"text",data:`${e.description}
|
|
3
|
+
`}}o(Z,"getDescription");function G(t){const e=t.help||{};if("usage"in e)return e.usage?{id:"usage",type:"section",data:{title:"Usage:",body:Array.isArray(e.usage)?e.usage.join(`
|
|
4
|
+
`):e.usage}}:void 0;if(t.name){const r=[],a=[B(t)];if(t.flags&&Object.keys(t.flags).length>0&&a.push("[flags...]"),t.parameters&&t.parameters.length>0){const{parameters:n}=t,s=n.indexOf("--"),i=s!==-1&&n.slice(s+1).some(d=>d.startsWith("<"));a.push(n.map(d=>d!=="--"?d:i?"--":"[--]").join(" "))}if(a.length>1&&r.push(a.join(" ")),"commands"in t&&t.commands?.length&&r.push(`${t.name} <command>`),r.length>0)return{id:"usage",type:"section",data:{title:"Usage:",body:r.join(`
|
|
5
|
+
`)}}}}o(G,"getUsage");function Q(t){return!("commands"in t)||!t.commands?.length?void 0:{id:"commands",type:"section",data:{title:"Commands:",body:{type:"table",data:{tableData:t.commands.map(a=>{const{help:n}=a.options;return[a.options.name,typeof n=="object"&&n.description||""]}),tableOptions:[{width:"content-width",paddingLeft:2,paddingRight:8}]}},indentBody:0}}}o(Q,"getCommands");function X(t){if(!(!t.flags||Object.keys(t.flags).length===0))return{id:"flags",type:"section",data:{title:"Flags:",body:z(t.flags),indentBody:0}}}o(X,"getFlags");function Y(t){const{help:e}=t;if(!e||!e.examples||e.examples.length===0)return;let{examples:r}=e;if(Array.isArray(r)&&(r=r.join(`
|
|
6
|
+
`)),r)return{id:"examples",type:"section",data:{title:"Examples:",body:r}}}o(Y,"getExamples");function ee(t){if(!("alias"in t)||!t.alias)return;const{alias:e}=t;return{id:"aliases",type:"section",data:{title:"Aliases:",body:Array.isArray(e)?e.join(", "):e}}}o(ee,"getAliases");const te=o(t=>[K,Z,G,Q,X,Y,ee].map(e=>e(t)).filter(Boolean),"generateHelp"),re=R.WriteStream.prototype.hasColors();class ne{static{o(this,"Renderers")}text(e){return e}bold(e){return re?`\x1B[1m${e}\x1B[22m`:e.toLocaleUpperCase()}indentText({text:e,spaces:r}){return e.replaceAll(/^/gm," ".repeat(r))}heading(e){return this.bold(e)}section({title:e,body:r,indentBody:a=2}){return`${(e?`${this.heading(e)}
|
|
7
|
+
`:"")+(r?this.indentText({text:this.render(r),spaces:a}):"")}
|
|
8
|
+
`}table({tableData:e,tableOptions:r,tableBreakpoints:a}){return D(e.map(n=>n.map(s=>this.render(s))),a?U(a):r)}flagParameter(e){return e===Boolean?"":e===String?"<string>":e===Number?"<number>":Array.isArray(e)?this.flagParameter(e[0]):"<value>"}flagOperator(e){return" "}flagName(e){const{flag:r,flagFormatted:a,aliasesEnabled:n,aliasFormatted:s}=e;let i="";if(s?i+=`${s}, `:n&&(i+=" "),i+=a,"placeholder"in r&&typeof r.placeholder=="string")i+=`${this.flagOperator(e)}${r.placeholder}`;else{const d=this.flagParameter("type"in r?r.type:r);d&&(i+=`${this.flagOperator(e)}${d}`)}return i}flagDefault(e){return JSON.stringify(e)}flagDescription({flag:e}){let r="description"in e?e.description??"":"";if("default"in e){let{default:a}=e;typeof a=="function"&&(a=a()),a&&(r+=` (default: ${this.flagDefault(a)})`)}return r}render(e){if(typeof e=="string")return e;if(Array.isArray(e))return e.map(r=>this.render(r)).join(`
|
|
9
|
+
`);if("type"in e&&this[e.type]){const r=this[e.type];if(typeof r=="function")return r.call(this,e.data)}throw new Error(`Invalid node type: ${JSON.stringify(e)}`)}}const O=o(t=>t.length>0&&!t.includes(" "),"isValidScriptName"),{stringify:A}=JSON,ae=/[|\\{}()[\]^$+*?.]/;function P(t){const e=[];let r,a;for(const n of t){if(a)throw new Error(`Invalid parameter: Spread parameter ${A(a)} must be last`);const s=n[0],i=n.at(-1);let d;if(s==="<"&&i===">"&&(d=!0,r))throw new Error(`Invalid parameter: Required parameter ${A(n)} cannot come after optional parameter ${A(r)}`);if(s==="["&&i==="]"&&(d=!1,r=n),d===void 0)throw new Error(`Invalid parameter: ${A(n)}. Must be wrapped in <> (required parameter) or [] (optional parameter)`);let l=n.slice(1,-1);const h=l.slice(-3)==="...";h&&(a=n,l=l.slice(0,-3));const u=l.match(ae);if(u)throw new Error(`Invalid parameter: ${A(n)}. Invalid character found ${A(u[0])}`);e.push({name:l,required:d,spread:h})}return e}o(P,"parseParameters");function S(t,e,r,a){for(let n=0;n<e.length;n+=1){const{name:s,required:i,spread:d}=e[n],l=V(s);if(l in t)throw new Error(`Invalid parameter: ${A(s)} is used more than once.`);const h=d?r.slice(n):r[n];if(d&&(n=e.length),i&&(!h||d&&h.length===0))return console.error(`Error: Missing required parameter ${A(s)}
|
|
10
|
+
`),a(),process.exit(1);t[l]=h}}o(S,"mapParametersToArguments");function se(t){return t!==!1}o(se,"helpEnabled");const ie=o(t=>{const e=[];for(const[r,a]of Object.entries(t))if(e.push(r),a&&typeof a=="object"&&"alias"in a){const{alias:n}=a;typeof n=="string"&&n?e.push(n):Array.isArray(n)&&e.push(...n.filter(Boolean))}return e},"getKnownFlagNames"),oe=o((t,e)=>{if(t.length<3||e.length===0)return;const r=H(t,e);return F(t,r)<=2?r:void 0},"findClosestFlag"),le=o((t,e)=>{const r=Object.keys(t);if(r.length!==0){for(const a of r){const n=oe(a,e),s=n?` (did you mean --${n}?)`:"";console.error(`Error: Unknown flag --${a}${s}`)}process.exit(1)}},"handleUnknownFlags");function I(t,e,r,a){const n={...e.flags},s=e.version&&!("version"in n);s&&(n.version={type:Boolean,description:"Show version"});const{help:i}=e,d=se(i);d&&!("help"in n)&&(n.help={type:Boolean,alias:"h",description:"Show help"});const l=M(n,a,{ignore:e.ignoreArgv}),h=o(()=>{console.log(e.version)},"showVersion");if(s&&l.flags.version===!0)return h(),process.exit(0);const u=new ne,C=d&&i?.render?i.render:m=>u.render(m),$=o(m=>{const y=te({...e,...m?{help:m}:{},flags:n});console.log(C(y,u))},"showHelp");if(d&&l.flags.help===!0)return $(),process.exit(0);if((e.strictFlags??e.parent?.strictFlags)&&le(l.unknownFlags,ie(n)),e.parameters){let{parameters:m}=e,y=l._;const f=m.indexOf("--"),v=m.slice(f+1),w=Object.create(null);let p=[];f>-1&&v.length>0&&(m=m.slice(0,f),p=l._["--"],y=y.slice(0,-p.length||void 0)),S(w,P(m),y,$),f>-1&&v.length>0&&S(w,P(v),p,$),Object.assign(l._,w)}const c={...l,showVersion:h,showHelp:$},g={command:t,...c};if(typeof r=="function"){const m=r(c);if(m&&"then"in m)return Object.assign(Promise.resolve(m),g)}return g}o(I,"cliBase");function ce(t,e){const r=new Map;for(const a of e){const n=[a.options.name],{alias:s}=a.options;s&&(Array.isArray(s)?n.push(...s):n.push(s));for(const i of n){if(r.has(i))throw new Error(`Duplicate command name found: ${A(i)}`);r.set(i,a)}}return r.get(t)}o(ce,"getCommand");function fe(t,e,r=process.argv.slice(2)){if(!t)throw new Error("Options is required");if("name"in t&&(!t.name||!O(t.name)))throw new Error(`Invalid script name: ${A(t.name)}`);const a=r[0];if(t.commands&&a&&O(a)){const n=ce(a,t.commands);if(n)return I(n.options.name,{...n.options,parent:t},n.callback,r.slice(1))}return I(void 0,t,e,r)}o(fe,"cli");function de(t,e){if(!t)throw new Error("Command options are required");const{name:r}=t;if(r===void 0)throw new Error("Command name is required");if(!O(r))throw new Error(`Invalid command name ${JSON.stringify(r)}. Command names must be one word.`);return{options:t,callback:e}}o(de,"command");export{fe as cli,de as command};
|