@clerc/core 0.30.0 → 0.30.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -298,7 +298,6 @@ interface ParseOptions {
298
298
  argv?: string[];
299
299
  run?: boolean;
300
300
  }
301
- type PossibleInputKind = string | number | boolean | Dict<any>;
302
301
  interface HandlerContext<C extends CommandRecord = CommandRecord, N extends keyof C = keyof C> {
303
302
  name?: LiteralUnion<N, string>;
304
303
  called?: string | RootType;
@@ -568,9 +567,9 @@ declare const resolveRootCommands: (commands: CommandRecord) => Command<string,
568
567
  declare function resolveParametersBeforeFlag(argv: string[]): string[];
569
568
  declare const resolveArgv: () => string[];
570
569
  declare function compose(inspectors: Inspector[]): (getCtx: () => InspectorContext) => void;
571
- declare const isInvalidName: (name: CommandType) => boolean;
570
+ declare const isValidName: (name: CommandType) => boolean;
572
571
  declare const withBrackets: (s: string, isOptional?: boolean) => string;
573
572
  declare const formatCommandName: (name: string | string[] | RootType) => string;
574
573
  declare const detectLocale: () => string;
575
574
 
576
- export { Clerc, Command, CommandAlias, CommandCustomProperties, CommandExistsError, CommandNameConflictError, CommandOptions, CommandRecord, CommandType, CommandWithHandler, DescriptionNotSetError, FallbackType, Flag, FlagOptions, Flags, Handler, HandlerContext, HandlerInCommand, I18N, Inspector, InspectorContext, InspectorFn, InspectorObject, InvalidCommandNameError, LocaleNotCalledFirstError, Locales, MakeEventMap, NameNotSetError, NoCommandGivenError, NoSuchCommandError, ParseOptions, Plugin, PossibleInputKind, Root, RootType, TranslateFn, VersionNotSetError, compose, defineCommand, defineHandler, defineInspector, definePlugin, detectLocale, formatCommandName, isInvalidName, resolveArgv, resolveCommand, resolveCommandStrict, resolveFlattenCommands, resolveParametersBeforeFlag, resolveRootCommands, resolveSubcommandsByParent, withBrackets };
575
+ export { Clerc, Command, CommandAlias, CommandCustomProperties, CommandExistsError, CommandNameConflictError, CommandOptions, CommandRecord, CommandType, CommandWithHandler, DescriptionNotSetError, FallbackType, Flag, FlagOptions, Flags, Handler, HandlerContext, HandlerInCommand, I18N, Inspector, InspectorContext, InspectorFn, InspectorObject, InvalidCommandNameError, LocaleNotCalledFirstError, Locales, MakeEventMap, NameNotSetError, NoCommandGivenError, NoSuchCommandError, ParseOptions, Plugin, Root, RootType, TranslateFn, VersionNotSetError, compose, defineCommand, defineHandler, defineInspector, definePlugin, detectLocale, formatCommandName, isValidName, resolveArgv, resolveCommand, resolveCommandStrict, resolveFlattenCommands, resolveParametersBeforeFlag, resolveRootCommands, resolveSubcommandsByParent, withBrackets };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{format as st}from"node:util";class Bt{constructor(){this.listenerMap={},this.wildcardListeners=new Set}on(e,s){return e==="*"?(this.wildcardListeners.add(s),this):(this.listenerMap[e]||(this.listenerMap[e]=new Set),this.listenerMap[e].add(s),this)}emit(e,...s){return this.listenerMap[e]&&(this.wildcardListeners.forEach(r=>r(e,...s)),this.listenerMap[e].forEach(r=>r(...s))),this}off(e,s){var r,o;return e==="**"?(this.listenerMap={},this.wildcardListeners.clear(),this):e==="*"?(s?this.wildcardListeners.delete(s):this.wildcardListeners.clear(),this):(s?(r=this.listenerMap[e])==null||r.delete(s):(o=this.listenerMap[e])==null||o.clear(),this)}}const bt="known-flag",Wt="unknown-flag",xt="argument",{stringify:k}=JSON,Dt=/\B([A-Z])/g,Ot=t=>t.replace(Dt,"-$1").toLowerCase(),{hasOwnProperty:It}=Object.prototype,L=(t,e)=>It.call(t,e),$t=t=>Array.isArray(t),rt=t=>typeof t=="function"?[t,!1]:$t(t)?[t[0],!0]:rt(t.type),Rt=(t,e)=>t===Boolean?e!=="false":e,Pt=(t,e)=>typeof e=="boolean"?e:t===Number&&e===""?Number.NaN:t(e),jt=/[\s.:=]/,Tt=t=>{const e=`Flag name ${k(t)}`;if(t.length===0)throw new Error(`${e} cannot be empty`);if(t.length===1)throw new Error(`${e} must be longer than a character`);const s=t.match(jt);if(s)throw new Error(`${e} cannot contain ${k(s==null?void 0:s[0])}`)},Gt=t=>{const e={},s=(r,o)=>{if(L(e,r))throw new Error(`Duplicate flags named ${k(r)}`);e[r]=o};for(const r in t){if(!L(t,r))continue;Tt(r);const o=t[r],n=[[],...rt(o),o];s(r,n);const i=Ot(r);if(r!==i&&s(i,n),"alias"in o&&typeof o.alias=="string"){const{alias:c}=o,a=`Flag alias ${k(c)} for flag ${k(r)}`;if(c.length===0)throw new Error(`${a} cannot be empty`);if(c.length>1)throw new Error(`${a} must be a single character`);s(c,n)}}return e},qt=(t,e)=>{const s={};for(const r in t){if(!L(t,r))continue;const[o,,n,i]=e[r];if(o.length===0&&"default"in i){let{default:c}=i;typeof c=="function"&&(c=c()),s[r]=c}else s[r]=n?o:o.pop()}return s},R="--",Ht=/[.:=]/,Vt=/^-{1,2}\w/,Jt=t=>{if(!Vt.test(t))return;const e=!t.startsWith(R);let s=t.slice(e?1:2),r;const o=s.match(Ht);if(o){const{index:n}=o;r=s.slice(n+1),s=s.slice(0,n)}return[s,r,e]},Ut=(t,{onFlag:e,onArgument:s})=>{let r;const o=(n,i)=>{if(typeof r!="function")return!0;r(n,i),r=void 0};for(let n=0;n<t.length;n+=1){const i=t[n];if(i===R){o();const a=t.slice(n+1);s==null||s(a,[n],!0);break}const c=Jt(i);if(c){if(o(),!e)continue;const[a,u,p]=c;if(p)for(let d=0;d<a.length;d+=1){o();const E=d===a.length-1;r=e(a[d],E?u:void 0,[n,d+1,E])}else r=e(a,u,[n])}else o(i,[n])&&(s==null||s([i],[n]))}o()},zt=(t,e)=>{for(const[s,r,o]of e.reverse()){if(r){const n=t[s];let i=n.slice(0,r);if(o||(i+=n.slice(r+1)),i!=="-"){t[s]=i;continue}}t.splice(s,1)}},Kt=(t,e=process.argv.slice(2),{ignore:s}={})=>{const r=[],o=Gt(t),n={},i=[];return i[R]=[],Ut(e,{onFlag(c,a,u){const p=L(o,c);if(!(s!=null&&s(p?bt:Wt,c,a))){if(p){const[d,E]=o[c],v=Rt(E,a),$=(et,A)=>{r.push(u),A&&r.push(A),d.push(Pt(E,et||""))};return v===void 0?$:$(v)}L(n,c)||(n[c]=[]),n[c].push(a===void 0?!0:a),r.push(u)}},onArgument(c,a,u){s!=null&&s(xt,e[a[0]])||(i.push(...c),u?(i[R]=c,e.splice(a[0])):r.push(a))}}),zt(e,r),{flags:qt(t,o),unknownFlags:n,_:i}};function T(t){return t!==null&&typeof t=="object"}function G(t,e,s=".",r){if(!T(e))return G(t,{},s,r);const o=Object.assign({},e);for(const n in t){if(n==="__proto__"||n==="constructor")continue;const i=t[n];i!=null&&(r&&r(o,n,i,s)||(Array.isArray(i)&&Array.isArray(o[n])?o[n]=[...i,...o[n]]:T(i)&&T(o[n])?o[n]=G(i,o[n],(s?`${s}.`:"")+n.toString(),r):o[n]=i))}return o}function Zt(t){return(...e)=>e.reduce((s,r)=>G(s,r,"",t),{})}const Qt=Zt(),P=t=>Array.isArray(t)?t:[t],Xt=t=>t.replace(/[-_ ](\w)/g,(e,s)=>s.toUpperCase()),nt=(t,e)=>e.length!==t.length?!1:t.every((s,r)=>s===e[r]),ot=(t,e)=>e.length>t.length?!1:nt(t.slice(0,e.length),e);class it extends Error{constructor(e,s){super(s("core.commandExists",e)),this.commandName=e}}class at extends Error{constructor(e,s){super(s("core.noSuchCommand",e)),this.commandName=e}}class ct extends Error{constructor(e){super(e("core.noCommandGiven"))}}class lt extends Error{constructor(e,s,r){super(r("core.commandNameConflict",e,s)),this.n1=e,this.n2=s}}class ut extends Error{constructor(e){super(e("core.nameNotSet"))}}class ht extends Error{constructor(e){super(e("core.descriptionNotSet"))}}class ft extends Error{constructor(e){super(e("core.versionNotSet"))}}class dt extends Error{constructor(e,s){super(s("core.badNameFormat",e)),this.commandName=e}}class q extends Error{constructor(e){super(e("core.localeMustBeCalledFirst"))}}const pt=typeof Deno!="undefined",Yt=typeof process!="undefined"&&!pt,te=process.versions.electron&&!process.defaultApp;function mt(t,e,s,r){if(s.alias){const o=P(s.alias);for(const n of o){if(n in e)throw new lt(e[n].name,s.name,r);t.set(typeof n=="symbol"?n:n.split(" "),{...s,__isAlias:!0})}}}function H(t,e){const s=new Map;t[h]&&(s.set(h,t[h]),mt(s,t,t[h],e));for(const r of Object.values(t))mt(s,t,r,e),s.set(r.name.split(" "),r);return s}function wt(t,e,s){if(e===h)return[t[h],h];const r=P(e),o=H(t,s);let n,i;return o.forEach((c,a)=>{if(a===h){n=t[h],i=h;return}ot(r,a)&&(!i||i===h||a.length>i.length)&&(n=c,i=a)}),[n,i]}function ee(t,e,s){if(e===h)return[t[h],h];const r=P(e),o=H(t,s);let n,i;return o.forEach((c,a)=>{a===h||i===h||nt(r,a)&&(n=c,i=a)}),[n,i]}function gt(t,e,s=1/0){const r=e===""?[]:Array.isArray(e)?e:e.split(" ");return Object.values(t).filter(o=>{const n=o.name.split(" ");return ot(n,r)&&n.length-r.length<=s})}const se=t=>gt(t,"",1);function Ct(t){const e=[];for(const s of t){if(s.startsWith("-"))break;e.push(s)}return e}const V=()=>Yt?process.argv.slice(te?1:2):pt?Deno.args:[];function Et(t){const e={pre:[],normal:[],post:[]};for(const r of t){const o=typeof r=="object"?r:{fn:r},{enforce:n,fn:i}=o;n==="post"||n==="pre"?e[n].push(i):e.normal.push(i)}const s=[...e.pre,...e.normal,...e.post];return r=>{return o(0);function o(n){const i=s[n];return i(r(),o.bind(null,n+1))}}}const vt=t=>typeof t=="string"&&(t.startsWith(" ")||t.endsWith(" ")),re=(t,e)=>e?`[${t}]`:`<${t}>`,ne="<Root>",_t=t=>Array.isArray(t)?t.join(" "):typeof t=="string"?t:ne,yt=()=>process.env.CLERC_LOCALE?process.env.CLERC_LOCALE:Intl.DateTimeFormat().resolvedOptions().locale,{stringify:F}=JSON;function J(t){const e=[];let s,r;for(const o of t){if(r)throw new Error(`Invalid parameter: Spread parameter ${F(r)} must be last`);const n=o[0],i=o[o.length-1];let c;if(n==="<"&&i===">"&&(c=!0,s))throw new Error(`Invalid parameter: Required parameter ${F(o)} cannot come after optional parameter ${F(s)}`);if(n==="["&&i==="]"&&(c=!1,s=o),c===void 0)throw new Error(`Invalid parameter: ${F(o)}. Must be wrapped in <> (required parameter) or [] (optional parameter)`);let a=o.slice(1,-1);const u=a.slice(-3)==="...";u&&(r=o,a=a.slice(0,-3)),e.push({name:a,required:c,spread:u})}return e}function U(t,e,s){for(let r=0;r<e.length;r+=1){const{name:o,required:n,spread:i}=e[r],c=Xt(o);if(c in t)throw new Error(`Invalid parameter: ${F(o)} is used more than once.`);const a=i?s.slice(r):s[r];if(i&&(r=e.length),n&&(!a||i&&a.length===0))throw new Error(`Missing required parameter ${F(o)}`);t[c]=a}}const oe={en:{"core.commandExists":'Command "%s" exists.',"core.noSuchCommand":"No such command: %s.","core.noCommandGiven":"No command given.","core.commandNameConflict":"Command name %s conflicts with %s. Maybe caused by alias.","core.nameNotSet":"Name not set.","core.descriptionNotSet":"Description not set.","core.versionNotSet":"Version not set.","core.badNameFormat":"Bad name format: %s.","core.localeMustBeCalledFirst":"locale() or fallbackLocale() must be called at first.","core.cliParseMustBeCalled":"cli.parse() must be called."},"zh-CN":{"core.commandExists":'\u547D\u4EE4 "%s" \u5DF2\u5B58\u5728\u3002',"core.noSuchCommand":"\u627E\u4E0D\u5230\u547D\u4EE4: %s\u3002","core.noCommandGiven":"\u6CA1\u6709\u8F93\u5165\u547D\u4EE4\u3002","core.commandNameConflict":"\u547D\u4EE4\u540D\u79F0 %s \u548C %s \u51B2\u7A81\u3002 \u53EF\u80FD\u662F\u7531\u4E8E\u522B\u540D\u5BFC\u81F4\u7684\u3002","core.nameNotSet":"\u672A\u8BBE\u7F6ECLI\u540D\u79F0\u3002","core.descriptionNotSet":"\u672A\u8BBE\u7F6ECLI\u63CF\u8FF0\u3002","core.versionNotSet":"\u672A\u8BBE\u7F6ECLI\u7248\u672C\u3002","core.badNameFormat":"\u9519\u8BEF\u7684\u547D\u4EE4\u540D\u5B57\u683C\u5F0F: %s\u3002","core.localeMustBeCalledFirst":"locale() \u6216 fallbackLocale() \u5FC5\u987B\u5728\u6700\u5F00\u59CB\u8C03\u7528\u3002","core.cliParseMustBeCalled":"cli.parse() \u5FC5\u987B\u88AB\u8C03\u7528\u3002"}};var z=(t,e,s)=>{if(!e.has(t))throw TypeError("Cannot "+s)},l=(t,e,s)=>(z(t,e,"read from private field"),s?s.call(t):e.get(t)),f=(t,e,s)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,s)},m=(t,e,s,r)=>(z(t,e,"write to private field"),r?r.call(t,s):e.set(t,s),s),w=(t,e,s)=>(z(t,e,"access private method"),s),_,y,M,B,b,j,S,W,x,D,O,I,N,K,Mt,Z,Nt,Q,Ft,g,C,X,St,Y,At,tt,kt;const h=Symbol.for("Clerc.Root"),Lt=class{constructor(t,e,s){f(this,K),f(this,Z),f(this,Q),f(this,g),f(this,X),f(this,Y),f(this,tt),f(this,_,""),f(this,y,""),f(this,M,""),f(this,B,[]),f(this,b,{}),f(this,j,new Bt),f(this,S,new Set),f(this,W,void 0),f(this,x,[]),f(this,D,!1),f(this,O,"en"),f(this,I,"en"),f(this,N,{}),this.i18n={add:r=>{m(this,N,Qt(l(this,N),r))},t:(r,...o)=>{const n=l(this,N)[l(this,I)]||l(this,N)[l(this,O)],i=l(this,N)[l(this,O)];return n[r]?st(n[r],...o):i[r]?st(i[r],...o):void 0}},m(this,_,t||l(this,_)),m(this,y,e||l(this,y)),m(this,M,s||l(this,M)),m(this,I,yt()),w(this,Q,Ft).call(this)}get _name(){return l(this,_)}get _description(){return l(this,y)}get _version(){return l(this,M)}get _inspectors(){return l(this,B)}get _commands(){return l(this,b)}static create(t,e,s){return new Lt(t,e,s)}name(t){return w(this,g,C).call(this),m(this,_,t),this}description(t){return w(this,g,C).call(this),m(this,y,t),this}version(t){return w(this,g,C).call(this),m(this,M,t),this}locale(t){if(l(this,D))throw new q(this.i18n.t);return m(this,I,t),this}fallbackLocale(t){if(l(this,D))throw new q(this.i18n.t);return m(this,O,t),this}errorHandler(t){return l(this,x).push(t),this}command(t,e,s={}){w(this,g,C).call(this);const{t:r}=this.i18n,n=(d=>!(typeof d=="string"||d===h))(t),i=n?t.name:t;if(vt(i))throw new dt(i,r);const{handler:c=void 0,...a}=n?t:{name:i,description:e,...s},u=[a.name],p=a.alias?P(a.alias):[];a.alias&&u.push(...p);for(const d of u)if(l(this,S).has(d))throw new it(_t(d),r);return l(this,b)[i]=a,l(this,S).add(a.name),p.forEach(d=>l(this,S).add(d)),n&&c&&this.on(t.name,c),this}on(t,e){return l(this,j).on(t,e),this}use(t){return w(this,g,C).call(this),t.setup(this)}inspector(t){return w(this,g,C).call(this),l(this,B).push(t),this}parse(t=V()){w(this,g,C).call(this);const{argv:e,run:s}=Array.isArray(t)?{argv:t,run:!0}:{argv:V(),...t};return m(this,W,e),w(this,X,St).call(this),s&&this.runMatchedCommand(),this}runMatchedCommand(){try{w(this,tt,kt).call(this)}catch(t){if(l(this,x).length>0)l(this,x).forEach(e=>e(t));else throw t}return this}};let ie=Lt;_=new WeakMap,y=new WeakMap,M=new WeakMap,B=new WeakMap,b=new WeakMap,j=new WeakMap,S=new WeakMap,W=new WeakMap,x=new WeakMap,D=new WeakMap,O=new WeakMap,I=new WeakMap,N=new WeakMap,K=new WeakSet,Mt=function(){return l(this,S).has(h)},Z=new WeakSet,Nt=function(){return Object.prototype.hasOwnProperty.call(this._commands,h)},Q=new WeakSet,Ft=function(){this.i18n.add(oe)},g=new WeakSet,C=function(){m(this,D,!0)},X=new WeakSet,St=function(){const{t}=this.i18n;if(!l(this,_))throw new ut(t);if(!l(this,y))throw new ht(t);if(!l(this,M))throw new ft(t)},Y=new WeakSet,At=function(t){const e=l(this,W),[s,r]=t(),o=!!s,n=Kt((s==null?void 0:s.flags)||{},[...e]),{_:i,flags:c,unknownFlags:a}=n;let u=!o||s.name===h?i:i.slice(s.name.split(" ").length),p=(s==null?void 0:s.parameters)||[];const d=p.indexOf("--"),E=p.slice(d+1)||[],v=Object.create(null);if(d>-1&&E.length>0){p=p.slice(0,d);const A=i["--"];u=u.slice(0,-A.length||void 0),U(v,J(p),u),U(v,J(E),A)}else U(v,J(p),u);const $={...c,...a};return{name:s==null?void 0:s.name,called:Array.isArray(r)?r.join(" "):r,resolved:o,hasRootOrAlias:l(this,K,Mt),hasRoot:l(this,Z,Nt),raw:{...n,parameters:u,mergedFlags:$},parameters:v,flags:c,unknownFlags:a,cli:this}},tt=new WeakSet,kt=function(){w(this,g,C).call(this);const{t}=this.i18n,e=l(this,W);if(!e)throw new Error(t("core.cliParseMustBeCalled"));const s=Ct(e),r=s.join(" "),o=()=>wt(l(this,b),s,t),n=()=>w(this,Y,At).call(this,o),i={enforce:"post",fn:()=>{const[u]=o(),p=n();if(!u)throw r?new at(r,t):new ct(t);l(this,j).emit(u.name,p)}},c=[...l(this,B),i];Et(c)(n)};const ae=t=>t,ce=(t,e,s)=>s,le=(t,e)=>e,ue=(t,e)=>({...t,handler:e});export{ie as Clerc,it as CommandExistsError,lt as CommandNameConflictError,ht as DescriptionNotSetError,dt as InvalidCommandNameError,q as LocaleNotCalledFirstError,ut as NameNotSetError,ct as NoCommandGivenError,at as NoSuchCommandError,h as Root,ft as VersionNotSetError,Et as compose,ue as defineCommand,ce as defineHandler,le as defineInspector,ae as definePlugin,yt as detectLocale,_t as formatCommandName,vt as isInvalidName,V as resolveArgv,wt as resolveCommand,ee as resolveCommandStrict,H as resolveFlattenCommands,Ct as resolveParametersBeforeFlag,se as resolveRootCommands,gt as resolveSubcommandsByParent,re as withBrackets};
1
+ import{format as it}from"node:util";class Ot{constructor(){this.listenerMap={},this.wildcardListeners=new Set}on(e,s){return e==="*"?(this.wildcardListeners.add(s),this):(this.listenerMap[e]||(this.listenerMap[e]=new Set),this.listenerMap[e].add(s),this)}emit(e,...s){return this.listenerMap[e]&&(this.wildcardListeners.forEach(r=>r(e,...s)),this.listenerMap[e].forEach(r=>r(...s))),this}off(e,s){var r,o;return e==="**"?(this.listenerMap={},this.wildcardListeners.clear(),this):e==="*"?(s?this.wildcardListeners.delete(s):this.wildcardListeners.clear(),this):(s?(r=this.listenerMap[e])==null||r.delete(s):(o=this.listenerMap[e])==null||o.clear(),this)}}const It="known-flag",$t="unknown-flag",Rt="argument",{stringify:k}=JSON,Pt=/\B([A-Z])/g,jt=t=>t.replace(Pt,"-$1").toLowerCase(),{hasOwnProperty:Tt}=Object.prototype,L=(t,e)=>Tt.call(t,e),Gt=t=>Array.isArray(t),at=t=>typeof t=="function"?[t,!1]:Gt(t)?[t[0],!0]:at(t.type),Ht=(t,e)=>t===Boolean?e!=="false":e,qt=(t,e)=>typeof e=="boolean"?e:t===Number&&e===""?Number.NaN:t(e),Vt=/[\s.:=]/,Jt=t=>{const e=`Flag name ${k(t)}`;if(t.length===0)throw new Error(`${e} cannot be empty`);if(t.length===1)throw new Error(`${e} must be longer than a character`);const s=t.match(Vt);if(s)throw new Error(`${e} cannot contain ${k(s==null?void 0:s[0])}`)},Ut=t=>{const e={},s=(r,o)=>{if(L(e,r))throw new Error(`Duplicate flags named ${k(r)}`);e[r]=o};for(const r in t){if(!L(t,r))continue;Jt(r);const o=t[r],n=[[],...at(o),o];s(r,n);const i=jt(r);if(r!==i&&s(i,n),"alias"in o&&typeof o.alias=="string"){const{alias:c}=o,a=`Flag alias ${k(c)} for flag ${k(r)}`;if(c.length===0)throw new Error(`${a} cannot be empty`);if(c.length>1)throw new Error(`${a} must be a single character`);s(c,n)}}return e},zt=(t,e)=>{const s={};for(const r in t){if(!L(t,r))continue;const[o,,n,i]=e[r];if(o.length===0&&"default"in i){let{default:c}=i;typeof c=="function"&&(c=c()),s[r]=c}else s[r]=n?o:o.pop()}return s},P="--",Kt=/[.:=]/,Zt=/^-{1,2}\w/,Qt=t=>{if(!Zt.test(t))return;const e=!t.startsWith(P);let s=t.slice(e?1:2),r;const o=s.match(Kt);if(o){const{index:n}=o;r=s.slice(n+1),s=s.slice(0,n)}return[s,r,e]},Xt=(t,{onFlag:e,onArgument:s})=>{let r;const o=(n,i)=>{if(typeof r!="function")return!0;r(n,i),r=void 0};for(let n=0;n<t.length;n+=1){const i=t[n];if(i===P){o();const a=t.slice(n+1);s==null||s(a,[n],!0);break}const c=Qt(i);if(c){if(o(),!e)continue;const[a,u,p]=c;if(p)for(let d=0;d<a.length;d+=1){o();const C=d===a.length-1;r=e(a[d],C?u:void 0,[n,d+1,C])}else r=e(a,u,[n])}else o(i,[n])&&(s==null||s([i],[n]))}o()},Yt=(t,e)=>{for(const[s,r,o]of e.reverse()){if(r){const n=t[s];let i=n.slice(0,r);if(o||(i+=n.slice(r+1)),i!=="-"){t[s]=i;continue}}t.splice(s,1)}},te=(t,e=process.argv.slice(2),{ignore:s}={})=>{const r=[],o=Ut(t),n={},i=[];return i[P]=[],Xt(e,{onFlag(c,a,u){const p=L(o,c);if(!(s!=null&&s(p?It:$t,c,a))){if(p){const[d,C]=o[c],_=Ht(C,a),R=(ot,A)=>{r.push(u),A&&r.push(A),d.push(qt(C,ot||""))};return _===void 0?R:R(_)}L(n,c)||(n[c]=[]),n[c].push(a===void 0?!0:a),r.push(u)}},onArgument(c,a,u){s!=null&&s(Rt,e[a[0]])||(i.push(...c),u?(i[P]=c,e.splice(a[0])):r.push(a))}}),Yt(e,r),{flags:zt(t,o),unknownFlags:n,_:i}};function H(t){return t!==null&&typeof t=="object"}function q(t,e,s=".",r){if(!H(e))return q(t,{},s,r);const o=Object.assign({},e);for(const n in t){if(n==="__proto__"||n==="constructor")continue;const i=t[n];i!=null&&(r&&r(o,n,i,s)||(Array.isArray(i)&&Array.isArray(o[n])?o[n]=[...i,...o[n]]:H(i)&&H(o[n])?o[n]=q(i,o[n],(s?`${s}.`:"")+n.toString(),r):o[n]=i))}return o}function ee(t){return(...e)=>e.reduce((s,r)=>q(s,r,"",t),{})}const se=ee(),j=t=>Array.isArray(t)?t:[t],re=t=>t.replace(/[-_ ](\w)/g,(e,s)=>s.toUpperCase()),ct=(t,e)=>e.length!==t.length?!1:t.every((s,r)=>s===e[r]),lt=(t,e)=>e.length>t.length?!1:ct(t.slice(0,e.length),e),B=JSON.stringify;class ut extends Error{constructor(e,s){super(s("core.commandExists",B(e))),this.commandName=e}}class ht extends Error{constructor(e,s){super(s("core.noSuchCommand",B(e))),this.commandName=e}}class ft extends Error{constructor(e){super(e("core.noCommandGiven"))}}class dt extends Error{constructor(e,s,r){super(r("core.commandNameConflict",B(e),B(s))),this.n1=e,this.n2=s}}class pt extends Error{constructor(e){super(e("core.nameNotSet"))}}class mt extends Error{constructor(e){super(e("core.descriptionNotSet"))}}class wt extends Error{constructor(e){super(e("core.versionNotSet"))}}class gt extends Error{constructor(e,s){super(s("core.badNameFormat",B(e))),this.commandName=e}}class V extends Error{constructor(e){super(e("core.localeMustBeCalledFirst"))}}const Et=typeof Deno!="undefined",ne=typeof process!="undefined"&&!Et,oe=process.versions.electron&&!process.defaultApp;function Ct(t,e,s,r){if(s.alias){const o=j(s.alias);for(const n of o){if(n in e)throw new dt(e[n].name,s.name,r);t.set(typeof n=="symbol"?n:n.split(" "),{...s,__isAlias:!0})}}}function J(t,e){const s=new Map;t[f]&&(s.set(f,t[f]),Ct(s,t,t[f],e));for(const r of Object.values(t))Ct(s,t,r,e),s.set(r.name.split(" "),r);return s}function _t(t,e,s){if(e===f)return[t[f],f];const r=j(e),o=J(t,s);let n,i;return o.forEach((c,a)=>{if(a===f){n=t[f],i=f;return}lt(r,a)&&(!i||i===f||a.length>i.length)&&(n=c,i=a)}),[n,i]}function ie(t,e,s){if(e===f)return[t[f],f];const r=j(e),o=J(t,s);let n,i;return o.forEach((c,a)=>{a===f||i===f||ct(r,a)&&(n=c,i=a)}),[n,i]}function vt(t,e,s=1/0){const r=e===""?[]:Array.isArray(e)?e:e.split(" ");return Object.values(t).filter(o=>{const n=o.name.split(" ");return lt(n,r)&&n.length-r.length<=s})}const ae=t=>vt(t,"",1);function yt(t){const e=[];for(const s of t){if(s.startsWith("-"))break;e.push(s)}return e}const U=()=>ne?process.argv.slice(oe?1:2):Et?Deno.args:[];function Nt(t){const e={pre:[],normal:[],post:[]};for(const r of t){const o=typeof r=="object"?r:{fn:r},{enforce:n,fn:i}=o;n==="post"||n==="pre"?e[n].push(i):e.normal.push(i)}const s=[...e.pre,...e.normal,...e.post];return r=>{return o(0);function o(n){const i=s[n];return i(r(),o.bind(null,n+1))}}}const ce=/\s\s+/,Mt=t=>t===f?!0:!(t.startsWith(" ")||t.endsWith(" "))&&!ce.test(t),le=(t,e)=>e?`[${t}]`:`<${t}>`,ue="<Root>",St=t=>Array.isArray(t)?t.join(" "):typeof t=="string"?t:ue,Ft=()=>process.env.CLERC_LOCALE?process.env.CLERC_LOCALE:Intl.DateTimeFormat().resolvedOptions().locale,{stringify:S}=JSON;function z(t){const e=[];let s,r;for(const o of t){if(r)throw new Error(`Invalid parameter: Spread parameter ${S(r)} must be last`);const n=o[0],i=o[o.length-1];let c;if(n==="<"&&i===">"&&(c=!0,s))throw new Error(`Invalid parameter: Required parameter ${S(o)} cannot come after optional parameter ${S(s)}`);if(n==="["&&i==="]"&&(c=!1,s=o),c===void 0)throw new Error(`Invalid parameter: ${S(o)}. Must be wrapped in <> (required parameter) or [] (optional parameter)`);let a=o.slice(1,-1);const u=a.slice(-3)==="...";u&&(r=o,a=a.slice(0,-3)),e.push({name:a,required:c,spread:u})}return e}function K(t,e,s){for(let r=0;r<e.length;r+=1){const{name:o,required:n,spread:i}=e[r],c=re(o);if(c in t)throw new Error(`Invalid parameter: ${S(o)} is used more than once.`);const a=i?s.slice(r):s[r];if(i&&(r=e.length),n&&(!a||i&&a.length===0))throw new Error(`Missing required parameter ${S(o)}`);t[c]=a}}const he={en:{"core.commandExists":'Command "%s" exists.',"core.noSuchCommand":"No such command: %s.","core.noCommandGiven":"No command given.","core.commandNameConflict":"Command name %s conflicts with %s. Maybe caused by alias.","core.nameNotSet":"Name not set.","core.descriptionNotSet":"Description not set.","core.versionNotSet":"Version not set.","core.badNameFormat":"Bad name format: %s.","core.localeMustBeCalledFirst":"locale() or fallbackLocale() must be called at first.","core.cliParseMustBeCalled":"cli.parse() must be called."},"zh-CN":{"core.commandExists":'\u547D\u4EE4 "%s" \u5DF2\u5B58\u5728\u3002',"core.noSuchCommand":"\u627E\u4E0D\u5230\u547D\u4EE4: %s\u3002","core.noCommandGiven":"\u6CA1\u6709\u8F93\u5165\u547D\u4EE4\u3002","core.commandNameConflict":"\u547D\u4EE4\u540D\u79F0 %s \u548C %s \u51B2\u7A81\u3002 \u53EF\u80FD\u662F\u7531\u4E8E\u522B\u540D\u5BFC\u81F4\u7684\u3002","core.nameNotSet":"\u672A\u8BBE\u7F6ECLI\u540D\u79F0\u3002","core.descriptionNotSet":"\u672A\u8BBE\u7F6ECLI\u63CF\u8FF0\u3002","core.versionNotSet":"\u672A\u8BBE\u7F6ECLI\u7248\u672C\u3002","core.badNameFormat":"\u9519\u8BEF\u7684\u547D\u4EE4\u540D\u5B57\u683C\u5F0F: %s\u3002","core.localeMustBeCalledFirst":"locale() \u6216 fallbackLocale() \u5FC5\u987B\u5728\u6700\u5F00\u59CB\u8C03\u7528\u3002","core.cliParseMustBeCalled":"cli.parse() \u5FC5\u987B\u88AB\u8C03\u7528\u3002"}};var Z=(t,e,s)=>{if(!e.has(t))throw TypeError("Cannot "+s)},l=(t,e,s)=>(Z(t,e,"read from private field"),s?s.call(t):e.get(t)),h=(t,e,s)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,s)},w=(t,e,s,r)=>(Z(t,e,"write to private field"),r?r.call(t,s):e.set(t,s),s),m=(t,e,s)=>(Z(t,e,"access private method"),s),v,y,N,W,b,T,F,x,D,O,I,$,M,Q,At,X,kt,Y,Lt,g,E,tt,Bt,et,Wt,st,bt,G,rt,nt,xt;const f=Symbol.for("Clerc.Root"),Dt=class{constructor(t,e,s){h(this,Q),h(this,X),h(this,Y),h(this,g),h(this,tt),h(this,et),h(this,st),h(this,G),h(this,nt),h(this,v,""),h(this,y,""),h(this,N,""),h(this,W,[]),h(this,b,{}),h(this,T,new Ot),h(this,F,new Set),h(this,x,void 0),h(this,D,[]),h(this,O,!1),h(this,I,"en"),h(this,$,"en"),h(this,M,{}),this.i18n={add:r=>{w(this,M,se(l(this,M),r))},t:(r,...o)=>{const n=l(this,M)[l(this,$)]||l(this,M)[l(this,I)],i=l(this,M)[l(this,I)];return n[r]?it(n[r],...o):i[r]?it(i[r],...o):void 0}},w(this,v,t||l(this,v)),w(this,y,e||l(this,y)),w(this,N,s||l(this,N)),w(this,$,Ft()),m(this,Y,Lt).call(this)}get _name(){return l(this,v)}get _description(){return l(this,y)}get _version(){return l(this,N)}get _inspectors(){return l(this,W)}get _commands(){return l(this,b)}static create(t,e,s){return new Dt(t,e,s)}name(t){return m(this,g,E).call(this),w(this,v,t),this}description(t){return m(this,g,E).call(this),w(this,y,t),this}version(t){return m(this,g,E).call(this),w(this,N,t),this}locale(t){if(l(this,O))throw new V(this.i18n.t);return w(this,$,t),this}fallbackLocale(t){if(l(this,O))throw new V(this.i18n.t);return w(this,I,t),this}errorHandler(t){return l(this,D).push(t),this}command(t,e,s={}){return m(this,G,rt).call(this,()=>m(this,tt,Bt).call(this,t,e,s)),this}on(t,e){return l(this,T).on(t,e),this}use(t){return m(this,g,E).call(this),t.setup(this)}inspector(t){return m(this,g,E).call(this),l(this,W).push(t),this}parse(t=U()){m(this,g,E).call(this);const{argv:e,run:s}=Array.isArray(t)?{argv:t,run:!0}:{argv:U(),...t};return w(this,x,e),m(this,et,Wt).call(this),s&&this.runMatchedCommand(),this}runMatchedCommand(){return m(this,G,rt).call(this,()=>m(this,nt,xt).call(this)),this}};let fe=Dt;v=new WeakMap,y=new WeakMap,N=new WeakMap,W=new WeakMap,b=new WeakMap,T=new WeakMap,F=new WeakMap,x=new WeakMap,D=new WeakMap,O=new WeakMap,I=new WeakMap,$=new WeakMap,M=new WeakMap,Q=new WeakSet,At=function(){return l(this,F).has(f)},X=new WeakSet,kt=function(){return Object.prototype.hasOwnProperty.call(this._commands,f)},Y=new WeakSet,Lt=function(){this.i18n.add(he)},g=new WeakSet,E=function(){w(this,O,!0)},tt=new WeakSet,Bt=function(t,e,s={}){m(this,g,E).call(this);const{t:r}=this.i18n,n=(d=>!(typeof d=="string"||d===f))(t),i=n?t.name:t;if(!Mt(i))throw new gt(i,r);const{handler:c=void 0,...a}=n?t:{name:i,description:e,...s},u=[a.name],p=a.alias?j(a.alias):[];a.alias&&u.push(...p);for(const d of u)if(l(this,F).has(d))throw new ut(St(d),r);return l(this,b)[i]=a,l(this,F).add(a.name),p.forEach(d=>l(this,F).add(d)),n&&c&&this.on(t.name,c),this},et=new WeakSet,Wt=function(){const{t}=this.i18n;if(!l(this,v))throw new pt(t);if(!l(this,y))throw new mt(t);if(!l(this,N))throw new wt(t)},st=new WeakSet,bt=function(t){const e=l(this,x),[s,r]=t(),o=!!s,n=te((s==null?void 0:s.flags)||{},[...e]),{_:i,flags:c,unknownFlags:a}=n;let u=!o||s.name===f?i:i.slice(s.name.split(" ").length),p=(s==null?void 0:s.parameters)||[];const d=p.indexOf("--"),C=p.slice(d+1)||[],_=Object.create(null);if(d>-1&&C.length>0){p=p.slice(0,d);const A=i["--"];u=u.slice(0,-A.length||void 0),K(_,z(p),u),K(_,z(C),A)}else K(_,z(p),u);const R={...c,...a};return{name:s==null?void 0:s.name,called:Array.isArray(r)?r.join(" "):r,resolved:o,hasRootOrAlias:l(this,Q,At),hasRoot:l(this,X,kt),raw:{...n,parameters:u,mergedFlags:R},parameters:_,flags:c,unknownFlags:a,cli:this}},G=new WeakSet,rt=function(t){try{t()}catch(e){if(l(this,D).length>0)l(this,D).forEach(s=>s(e));else throw e}},nt=new WeakSet,xt=function(){m(this,g,E).call(this);const{t}=this.i18n,e=l(this,x);if(!e)throw new Error(t("core.cliParseMustBeCalled"));const s=yt(e),r=s.join(" "),o=()=>_t(l(this,b),s,t),n=()=>m(this,st,bt).call(this,o),i={enforce:"post",fn:()=>{const[u]=o(),p=n();if(!u)throw r?new ht(r,t):new ft(t);l(this,T).emit(u.name,p)}},c=[...l(this,W),i];Nt(c)(n)};const de=t=>t,pe=(t,e,s)=>s,me=(t,e)=>e,we=(t,e)=>({...t,handler:e});export{fe as Clerc,ut as CommandExistsError,dt as CommandNameConflictError,mt as DescriptionNotSetError,gt as InvalidCommandNameError,V as LocaleNotCalledFirstError,pt as NameNotSetError,ft as NoCommandGivenError,ht as NoSuchCommandError,f as Root,wt as VersionNotSetError,Nt as compose,we as defineCommand,pe as defineHandler,me as defineInspector,de as definePlugin,Ft as detectLocale,St as formatCommandName,Mt as isValidName,U as resolveArgv,_t as resolveCommand,ie as resolveCommandStrict,J as resolveFlattenCommands,yt as resolveParametersBeforeFlag,ae as resolveRootCommands,vt as resolveSubcommandsByParent,le as withBrackets};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@clerc/core",
3
- "version": "0.30.0",
4
- "author": "Ray <nn_201312@163.com> (https://github.com/so1ve)",
3
+ "version": "0.30.1",
4
+ "author": "Ray <i@mk1.io> (https://github.com/so1ve)",
5
5
  "description": "Clerc core",
6
6
  "keywords": [
7
7
  "cli",
@@ -52,7 +52,7 @@
52
52
  "lite-emit": "^1.4.0",
53
53
  "type-fest": "^3.5.3",
54
54
  "type-flag": "^3.0.0",
55
- "@clerc/utils": "0.30.0"
55
+ "@clerc/utils": "0.30.1"
56
56
  },
57
57
  "scripts": {
58
58
  "build": "puild --minify",