clerc 0.7.0 → 0.8.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.cjs CHANGED
@@ -53,11 +53,7 @@ class CommandNameConflictError extends Error {
53
53
  }
54
54
  }
55
55
 
56
- function resolveCommand(commands, name) {
57
- if (name === SingleCommand) {
58
- return commands[SingleCommand];
59
- }
60
- const nameArr = utils.mustArray(name);
56
+ function resolveFlattenCommands(commands) {
61
57
  const commandsMap = /* @__PURE__ */ new Map();
62
58
  for (const command of Object.values(commands)) {
63
59
  if (command.alias) {
@@ -66,11 +62,19 @@ function resolveCommand(commands, name) {
66
62
  if (alias in commands) {
67
63
  throw new CommandNameConflictError(commands[alias].name, command.name);
68
64
  }
69
- commandsMap.set(alias.split(" "), command);
65
+ commandsMap.set(alias.split(" "), { ...command, __isAlias: true });
70
66
  }
71
67
  }
72
68
  commandsMap.set(command.name.split(" "), command);
73
69
  }
70
+ return commandsMap;
71
+ }
72
+ function resolveCommand(commands, name) {
73
+ if (name === SingleCommand) {
74
+ return commands[SingleCommand];
75
+ }
76
+ const nameArr = utils.mustArray(name);
77
+ const commandsMap = resolveFlattenCommands(commands);
74
78
  const possibleCommands = [];
75
79
  commandsMap.forEach((v, k) => {
76
80
  if (utils.arrayStartsWith(nameArr, k)) {
@@ -336,8 +340,8 @@ const _Clerc = class {
336
340
  __privateGet(this, _commandEmitter).emit(command.name, handlerContext);
337
341
  };
338
342
  const inspectors = [...__privateGet(this, _inspectors), emitHandler];
339
- const inspector = compose(inspectors);
340
- inspector(getContext);
343
+ const callInspector = compose(inspectors);
344
+ callInspector(getContext);
341
345
  return this;
342
346
  }
343
347
  };
@@ -384,6 +388,7 @@ exports.mapParametersToArguments = mapParametersToArguments;
384
388
  exports.parseParameters = parseParameters;
385
389
  exports.resolveArgv = resolveArgv;
386
390
  exports.resolveCommand = resolveCommand;
391
+ exports.resolveFlattenCommands = resolveFlattenCommands;
387
392
  exports.resolveParametersBeforeFlag = resolveParametersBeforeFlag;
388
393
  exports.resolveRootCommands = resolveRootCommands;
389
394
  exports.resolveSubcommandsByParent = resolveSubcommandsByParent;
package/dist/index.d.ts CHANGED
@@ -76,19 +76,24 @@ type FlagOptions = FlagSchema & {
76
76
  type Flag = FlagOptions & {
77
77
  name: string;
78
78
  };
79
- interface CommandOptions<P extends string[] = string[], A extends MaybeArray<string> = MaybeArray<string>, F extends Dict<FlagOptions> = Dict<FlagOptions>> {
79
+ declare interface CommandCustomProperties {
80
+ }
81
+ interface CommandOptions<P extends string[] = string[], A extends MaybeArray<string> = MaybeArray<string>, F extends Dict<FlagOptions> = Dict<FlagOptions>> extends CommandCustomProperties {
80
82
  alias?: A;
81
83
  parameters?: P;
82
84
  flags?: F;
83
85
  examples?: [string, string][];
84
86
  notes?: string[];
85
87
  }
86
- type Command<N extends string | SingleCommandType = string, D extends string = string, O extends CommandOptions = CommandOptions> = O & {
88
+ type Command<N extends string | SingleCommandType = string, O extends CommandOptions = CommandOptions> = O & {
87
89
  name: N;
88
- description: D;
90
+ description: string;
91
+ };
92
+ type CommandAlias<N extends string | SingleCommandType = string, O extends CommandOptions = CommandOptions> = Command<N, O> & {
93
+ __isAlias?: true;
89
94
  };
90
- type CommandWithHandler<N extends string | SingleCommandType = string, D extends string = string, O extends CommandOptions = CommandOptions> = Command<N, D, O> & {
91
- handler?: HandlerInCommand<Record<N, Command<N, D, O>>, N>;
95
+ type CommandWithHandler<N extends string | SingleCommandType = string, O extends CommandOptions = CommandOptions> = Command<N, O> & {
96
+ handler?: HandlerInCommand<Record<N, Command<N, O>>, N>;
92
97
  };
93
98
  type StripBrackets<Parameter extends string> = (Parameter extends `<${infer ParameterName}>` | `[${infer ParameterName}]` ? (ParameterName extends `${infer SpreadName}...` ? SpreadName : ParameterName) : never);
94
99
  type ParameterType<Parameter extends string> = (Parameter extends `<${infer _ParameterName}...>` | `[${infer _ParameterName}...]` ? string[] : Parameter extends `<${infer _ParameterName}>` ? string : Parameter extends `[${infer _ParameterName}]` ? string | undefined : never);
@@ -105,7 +110,7 @@ interface HandlerContext<C extends CommandRecord = CommandRecord, N extends keyo
105
110
  name?: N;
106
111
  resolved: boolean;
107
112
  isSingleCommand: boolean;
108
- raw: ParsedFlags;
113
+ raw: TypeFlag<NonNullableFlag<C[N]["flags"]>>;
109
114
  parameters: {
110
115
  [Parameter in [...NonNullableParameters<C[N]["parameters"]>][number] as CamelCase<StripBrackets<Parameter>>]: ParameterType<Parameter>;
111
116
  };
@@ -208,8 +213,8 @@ declare class Clerc<C extends CommandRecord = {}> {
208
213
  * })
209
214
  * ```
210
215
  */
211
- command<N extends string | SingleCommandType, D extends string, O extends CommandOptions<[...P], A, F>, P extends string[] = string[], A extends MaybeArray<string> = MaybeArray<string>, F extends Dict<FlagOptions> = Dict<FlagOptions>>(c: CommandWithHandler<N, D, O & CommandOptions<[...P], A, F>>): this & Clerc<C & Record<N, Command<N, D, O>>>;
212
- command<N extends string | SingleCommandType, D extends string, P extends string[], O extends CommandOptions<[...P]>>(name: N, description: D, options: O & CommandOptions<[...P]>): this & Clerc<C & Record<N, Command<N, D, O>>>;
216
+ command<N extends string | SingleCommandType, O extends CommandOptions<[...P], A, F>, P extends string[] = string[], A extends MaybeArray<string> = MaybeArray<string>, F extends Dict<FlagOptions> = Dict<FlagOptions>>(c: CommandWithHandler<N, O & CommandOptions<[...P], A, F>>): this & Clerc<C & Record<N, Command<N, O>>>;
217
+ command<N extends string | SingleCommandType, P extends string[], O extends CommandOptions<[...P]>>(name: N, description: string, options?: O & CommandOptions<[...P]>): this & Clerc<C & Record<N, Command<N, O>>>;
213
218
  /**
214
219
  * Register a handler
215
220
  * @param name
@@ -266,8 +271,8 @@ declare class Clerc<C extends CommandRecord = {}> {
266
271
  declare const definePlugin: <T extends Clerc<{}>, U extends Clerc<{}>>(p: Plugin<T, U>) => Plugin<T, U>;
267
272
  declare const defineHandler: <C extends Clerc<{}>, K extends keyof C["_commands"]>(_cli: C, _key: K, handler: Handler<C["_commands"], K>) => Handler<C["_commands"], K>;
268
273
  declare const defineInspector: <C extends Clerc<{}>>(_cli: C, inspector: Inspector<C["_commands"]>) => Inspector<C["_commands"]>;
269
- declare const defineCommand: <N extends string | typeof SingleCommand, D extends string, P extends string[], O extends CommandOptions<[...P], MaybeArray<string>, Dict<FlagOptions>>>(c: Command<N, D, O>) => Command<N, D, O>;
270
- declare const defineCommandWithHandler: <N extends string | typeof SingleCommand, D extends string, O extends CommandOptions<[...P], A, F>, P extends string[] = string[], A extends MaybeArray<string> = MaybeArray<string>, F extends Dict<FlagOptions> = Dict<FlagOptions>>(c: CommandWithHandler<N, D, O & CommandOptions<[...P], A, F>>) => CommandWithHandler<N, D, O & CommandOptions<[...P], A, F>>;
274
+ declare const defineCommand: <N extends string | typeof SingleCommand, P extends string[], O extends CommandOptions<[...P], MaybeArray<string>, Dict<FlagOptions>>>(c: Command<N, O>) => Command<N, O>;
275
+ declare const defineCommandWithHandler: <N extends string | typeof SingleCommand, O extends CommandOptions<[...P], A, F>, P extends string[] = string[], A extends MaybeArray<string> = MaybeArray<string>, F extends Dict<FlagOptions> = Dict<FlagOptions>>(c: CommandWithHandler<N, O & CommandOptions<[...P], A, F>>) => CommandWithHandler<N, O & CommandOptions<[...P], A, F>>;
271
276
 
272
277
  declare class SingleCommandError extends Error {
273
278
  constructor();
@@ -297,9 +302,10 @@ declare class CommandNameConflictError extends Error {
297
302
  constructor(n1: string, n2: string);
298
303
  }
299
304
 
305
+ declare function resolveFlattenCommands(commands: CommandRecord): Map<string[], CommandAlias<string, CommandOptions<string[], _clerc_utils.MaybeArray<string>, _clerc_utils.Dict<FlagOptions>>>>;
300
306
  declare function resolveCommand(commands: CommandRecord, name: string | string[] | SingleCommandType): Command | undefined;
301
- declare function resolveSubcommandsByParent(commands: CommandRecord, parent: string | string[], depth?: number): Command<string, string, CommandOptions<string[], _clerc_utils.MaybeArray<string>, _clerc_utils.Dict<FlagOptions>>>[];
302
- declare const resolveRootCommands: (commands: CommandRecord) => Command<string, string, CommandOptions<string[], _clerc_utils.MaybeArray<string>, _clerc_utils.Dict<FlagOptions>>>[];
307
+ declare function resolveSubcommandsByParent(commands: CommandRecord, parent: string | string[], depth?: number): Command<string, CommandOptions<string[], _clerc_utils.MaybeArray<string>, _clerc_utils.Dict<FlagOptions>>>[];
308
+ declare const resolveRootCommands: (commands: CommandRecord) => Command<string, CommandOptions<string[], _clerc_utils.MaybeArray<string>, _clerc_utils.Dict<FlagOptions>>>[];
303
309
  declare function resolveParametersBeforeFlag(argv: string[], isSingleCommand: boolean): string[];
304
310
  declare const resolveArgv: () => string[];
305
311
  declare function compose(inspectors: Inspector[]): (getCtx: () => InspectorContext) => void;
@@ -312,4 +318,4 @@ interface ParsedParameter {
312
318
  declare function parseParameters(parameters: string[]): ParsedParameter[];
313
319
  declare function mapParametersToArguments(mapping: Record<string, string | string[]>, parameters: ParsedParameter[], cliArguments: string[]): undefined;
314
320
 
315
- export { Clerc, Command, CommandExistsError, CommandNameConflictError, CommandOptions, CommandRecord, CommandWithHandler, CommonCommandExistsError, FallbackType, Flag, FlagOptions, Handler, HandlerContext, HandlerInCommand, Inspector, InspectorContext, MakeEventMap, MultipleCommandsMatchedError, NoSuchCommandError, ParentCommandExistsError, Plugin, PossibleInputKind, SingleCommand, SingleCommandAliasError, SingleCommandError, SingleCommandType, SubcommandExistsError, compose, defineCommand, defineCommandWithHandler, defineHandler, defineInspector, definePlugin, mapParametersToArguments, parseParameters, resolveArgv, resolveCommand, resolveParametersBeforeFlag, resolveRootCommands, resolveSubcommandsByParent };
321
+ export { Clerc, Command, CommandAlias, CommandCustomProperties, CommandExistsError, CommandNameConflictError, CommandOptions, CommandRecord, CommandWithHandler, CommonCommandExistsError, FallbackType, Flag, FlagOptions, Handler, HandlerContext, HandlerInCommand, Inspector, InspectorContext, MakeEventMap, MultipleCommandsMatchedError, NoSuchCommandError, ParentCommandExistsError, Plugin, PossibleInputKind, SingleCommand, SingleCommandAliasError, SingleCommandError, SingleCommandType, SubcommandExistsError, compose, defineCommand, defineCommandWithHandler, defineHandler, defineInspector, definePlugin, mapParametersToArguments, parseParameters, resolveArgv, resolveCommand, resolveFlattenCommands, resolveParametersBeforeFlag, resolveRootCommands, resolveSubcommandsByParent };
package/dist/index.mjs CHANGED
@@ -49,11 +49,7 @@ class CommandNameConflictError extends Error {
49
49
  }
50
50
  }
51
51
 
52
- function resolveCommand(commands, name) {
53
- if (name === SingleCommand) {
54
- return commands[SingleCommand];
55
- }
56
- const nameArr = mustArray(name);
52
+ function resolveFlattenCommands(commands) {
57
53
  const commandsMap = /* @__PURE__ */ new Map();
58
54
  for (const command of Object.values(commands)) {
59
55
  if (command.alias) {
@@ -62,11 +58,19 @@ function resolveCommand(commands, name) {
62
58
  if (alias in commands) {
63
59
  throw new CommandNameConflictError(commands[alias].name, command.name);
64
60
  }
65
- commandsMap.set(alias.split(" "), command);
61
+ commandsMap.set(alias.split(" "), { ...command, __isAlias: true });
66
62
  }
67
63
  }
68
64
  commandsMap.set(command.name.split(" "), command);
69
65
  }
66
+ return commandsMap;
67
+ }
68
+ function resolveCommand(commands, name) {
69
+ if (name === SingleCommand) {
70
+ return commands[SingleCommand];
71
+ }
72
+ const nameArr = mustArray(name);
73
+ const commandsMap = resolveFlattenCommands(commands);
70
74
  const possibleCommands = [];
71
75
  commandsMap.forEach((v, k) => {
72
76
  if (arrayStartsWith(nameArr, k)) {
@@ -332,8 +336,8 @@ const _Clerc = class {
332
336
  __privateGet(this, _commandEmitter).emit(command.name, handlerContext);
333
337
  };
334
338
  const inspectors = [...__privateGet(this, _inspectors), emitHandler];
335
- const inspector = compose(inspectors);
336
- inspector(getContext);
339
+ const callInspector = compose(inspectors);
340
+ callInspector(getContext);
337
341
  return this;
338
342
  }
339
343
  };
@@ -359,4 +363,4 @@ const defineInspector = (_cli, inspector) => inspector;
359
363
  const defineCommand = (c) => c;
360
364
  const defineCommandWithHandler = (c) => c;
361
365
 
362
- export { Clerc, CommandExistsError, CommandNameConflictError, CommonCommandExistsError, MultipleCommandsMatchedError, NoSuchCommandError, ParentCommandExistsError, SingleCommand, SingleCommandAliasError, SingleCommandError, SubcommandExistsError, compose, defineCommand, defineCommandWithHandler, defineHandler, defineInspector, definePlugin, mapParametersToArguments, parseParameters, resolveArgv, resolveCommand, resolveParametersBeforeFlag, resolveRootCommands, resolveSubcommandsByParent };
366
+ export { Clerc, CommandExistsError, CommandNameConflictError, CommonCommandExistsError, MultipleCommandsMatchedError, NoSuchCommandError, ParentCommandExistsError, SingleCommand, SingleCommandAliasError, SingleCommandError, SubcommandExistsError, compose, defineCommand, defineCommandWithHandler, defineHandler, defineInspector, definePlugin, mapParametersToArguments, parseParameters, resolveArgv, resolveCommand, resolveFlattenCommands, resolveParametersBeforeFlag, resolveRootCommands, resolveSubcommandsByParent };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clerc",
3
- "version": "0.7.0",
3
+ "version": "0.8.1",
4
4
  "author": "Ray <nn_201312@163.com> (https://github.com/so1ve)",
5
5
  "description": "Clerc is a simple and easy-to-use cli framework.",
6
6
  "keywords": [
@@ -39,7 +39,7 @@
39
39
  "access": "public"
40
40
  },
41
41
  "dependencies": {
42
- "@clerc/utils": "0.7.0",
42
+ "@clerc/utils": "npm:@clerc/toolkit@0.8.1",
43
43
  "is-platform": "^0.2.0",
44
44
  "lite-emit": "^1.4.0",
45
45
  "type-flag": "^3.0.0"