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 +13 -8
- package/dist/index.d.ts +19 -13
- package/dist/index.mjs +13 -9
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -53,11 +53,7 @@ class CommandNameConflictError extends Error {
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
function
|
|
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
|
|
340
|
-
|
|
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
|
|
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,
|
|
88
|
+
type Command<N extends string | SingleCommandType = string, O extends CommandOptions = CommandOptions> = O & {
|
|
87
89
|
name: N;
|
|
88
|
-
description:
|
|
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,
|
|
91
|
-
handler?: HandlerInCommand<Record<N, Command<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:
|
|
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,
|
|
212
|
-
command<N extends string | SingleCommandType,
|
|
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,
|
|
270
|
-
declare const defineCommandWithHandler: <N extends string | typeof SingleCommand,
|
|
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,
|
|
302
|
-
declare const resolveRootCommands: (commands: CommandRecord) => Command<string,
|
|
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
|
|
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
|
|
336
|
-
|
|
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.
|
|
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.
|
|
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"
|