@clerc/core 1.0.0-beta.2 → 1.0.0-beta.3
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 +36 -9
- package/dist/index.js +6 -6
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
import { ErrorHandler as ErrorHandler$1 } from "lite-emit";
|
|
2
2
|
|
|
3
|
+
//#region ../parser/src/flag-types.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Creates a Choices type function that validates the input against allowed values.
|
|
7
|
+
* The display name will be formatted as "value1 | value2 | ..." for help output.
|
|
8
|
+
*
|
|
9
|
+
* @param values - Array of allowed string values
|
|
10
|
+
* @returns A FlagTypeFunction that validates and returns the input value
|
|
11
|
+
* @throws {Error} If the value is not in the allowed values list
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const format = Choices(['json', 'yaml', 'xml']);
|
|
16
|
+
* // Help output will show: json | yaml | xml
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
declare function Choices<T extends string>(...values: T[]): FlagTypeFunction<T>;
|
|
20
|
+
//#endregion
|
|
3
21
|
//#region ../utils/src/types/type-fest.d.ts
|
|
4
22
|
type LiteralUnion<LiteralType, BaseType> = LiteralType | (BaseType & Record<never, never>);
|
|
5
23
|
type Prettify<T> = { [K in keyof T]: T[K] } & {};
|
|
@@ -25,7 +43,13 @@ type FlagDefaultValue<T = unknown> = T | (() => T);
|
|
|
25
43
|
*
|
|
26
44
|
* @template T The target type.
|
|
27
45
|
*/
|
|
28
|
-
type FlagTypeFunction<T = unknown> = (value: string) => T
|
|
46
|
+
type FlagTypeFunction<T = unknown> = ((value: string) => T) & {
|
|
47
|
+
/**
|
|
48
|
+
* Optional display name for the type, useful in help output.
|
|
49
|
+
* If provided, this will be shown instead of the function name.
|
|
50
|
+
*/
|
|
51
|
+
displayName?: string;
|
|
52
|
+
};
|
|
29
53
|
/**
|
|
30
54
|
* A callback function to conditionally stop parsing.
|
|
31
55
|
* When it returns true, parsing stops and remaining arguments are preserved in `ignored`.
|
|
@@ -122,10 +146,13 @@ declare const DOUBLE_DASH = "--";
|
|
|
122
146
|
type ErrorHandler = (error: unknown) => void;
|
|
123
147
|
//#endregion
|
|
124
148
|
//#region src/types/flag.d.ts
|
|
125
|
-
|
|
149
|
+
interface FlagCustomOptions {}
|
|
150
|
+
type ClercFlagOptions = FlagOptions & FlagCustomOptions;
|
|
151
|
+
type ClercGlobalFlagDefinitionValue = ClercFlagOptions | FlagType;
|
|
152
|
+
type ClercFlagOptionsWithDescription = ClercFlagOptions & {
|
|
126
153
|
description: string;
|
|
127
154
|
};
|
|
128
|
-
type ClercFlagsDefinition = Record<string,
|
|
155
|
+
type ClercFlagsDefinition = Record<string, ClercFlagOptionsWithDescription>;
|
|
129
156
|
//#endregion
|
|
130
157
|
//#region src/types/parameters.d.ts
|
|
131
158
|
type InferParameter<T extends string> = T extends `<${infer Name extends string}...>` | `[${infer Name extends string}...]` ? Record<CamelCase<Name>, string[]> : T extends `<${infer Name extends string}>` ? Record<CamelCase<Name>, string> : T extends `[${infer Name extends string}]` ? Record<CamelCase<Name>, string | undefined> : never;
|
|
@@ -197,9 +224,9 @@ interface CreateOptions {
|
|
|
197
224
|
description?: string;
|
|
198
225
|
version?: string;
|
|
199
226
|
}
|
|
200
|
-
interface ParseOptions {
|
|
227
|
+
interface ParseOptions<Run extends boolean = true> {
|
|
201
228
|
argv?: string[];
|
|
202
|
-
run?:
|
|
229
|
+
run?: Run;
|
|
203
230
|
}
|
|
204
231
|
declare class Clerc<Commands extends CommandsRecord = {}, GlobalFlags extends ClercFlagsDefinition = {}> {
|
|
205
232
|
#private;
|
|
@@ -219,11 +246,11 @@ declare class Clerc<Commands extends CommandsRecord = {}, GlobalFlags extends Cl
|
|
|
219
246
|
errorHandler(handler: ErrorHandler$1): this;
|
|
220
247
|
command<Name$1 extends string, Parameters extends string[] = [], Flags extends ClercFlagsDefinition = {}>(command: CommandWithHandler<Name$1, [...Parameters], Flags>): Clerc<Commands & Record<string, CommandWithHandler<Name$1, Parameters, Flags>>, GlobalFlags>;
|
|
221
248
|
command<Name$1 extends string, Parameters extends string[] = [], Flags extends ClercFlagsDefinition = {}>(name: Name$1 extends keyof Commands ? ["COMMAND ALREADY EXISTS"] : Name$1, description: string, options?: CommandOptions<[...Parameters], Flags>): Clerc<Commands & Record<Name$1, Command<Name$1, Parameters, Flags>>, GlobalFlags>;
|
|
222
|
-
globalFlag<Name$1 extends string, Flag extends
|
|
249
|
+
globalFlag<Name$1 extends string, Flag extends ClercGlobalFlagDefinitionValue>(name: Name$1, description: string, options: Flag): Clerc<Commands, GlobalFlags & Record<Name$1, Flag>>;
|
|
223
250
|
interceptor(interceptor: Interceptor<Command, GlobalFlags>): this;
|
|
224
251
|
on<Name$1 extends LiteralUnion<keyof Commands, string>>(name: Name$1, handler: CommandHandler<Commands[Name$1], GlobalFlags>): this;
|
|
225
|
-
run(): void
|
|
226
|
-
parse(argvOrOptions?: string[] | ParseOptions): this;
|
|
252
|
+
run(): Promise<void>;
|
|
253
|
+
parse<Run extends boolean = true>(argvOrOptions?: string[] | ParseOptions<Run>): Run extends true ? Promise<void> : this;
|
|
227
254
|
}
|
|
228
255
|
//#endregion
|
|
229
256
|
//#region src/commands.d.ts
|
|
@@ -256,4 +283,4 @@ declare function createStopAtFirstParameter(): IgnoreFunction;
|
|
|
256
283
|
//#region src/plugin.d.ts
|
|
257
284
|
declare const definePlugin: (plugin: Plugin) => Plugin;
|
|
258
285
|
//#endregion
|
|
259
|
-
export { BaseContext, Clerc, ClercFlagOptions, ClercFlagsDefinition, Command, CommandCustomOptions, CommandHandler, CommandHandlerContext, CommandOptions, CommandWithHandler, CommandsMap, CommandsRecord, DOUBLE_DASH, ErrorHandler, InferParameters, Interceptor, InterceptorContext, InterceptorHandler, InterceptorNext, InterceptorObject, InvalidCommandError, InvalidParametersError, KNOWN_FLAG, MakeEmitterEvents, MissingRequiredMetadataError, NoCommandSpecifiedError, NoSuchCommandError, PARAMETER, Plugin, UNKNOWN_FLAG, createStopAtFirstParameter, defineCommand, definePlugin, resolveCommand };
|
|
286
|
+
export { BaseContext, Choices, Clerc, ClercFlagOptions, ClercFlagOptionsWithDescription, ClercFlagsDefinition, ClercGlobalFlagDefinitionValue, Command, CommandCustomOptions, CommandHandler, CommandHandlerContext, CommandOptions, CommandWithHandler, CommandsMap, CommandsRecord, DOUBLE_DASH, ErrorHandler, FlagCustomOptions, InferParameters, Interceptor, InterceptorContext, InterceptorHandler, InterceptorNext, InterceptorObject, InvalidCommandError, InvalidParametersError, KNOWN_FLAG, MakeEmitterEvents, MissingRequiredMetadataError, NoCommandSpecifiedError, NoSuchCommandError, PARAMETER, Plugin, UNKNOWN_FLAG, createStopAtFirstParameter, defineCommand, definePlugin, resolveCommand };
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DOUBLE_DASH, DOUBLE_DASH as DOUBLE_DASH$1, KNOWN_FLAG, PARAMETER, PARAMETER as PARAMETER$1, UNKNOWN_FLAG, parse } from "@clerc/parser";
|
|
1
|
+
import { Choices, DOUBLE_DASH, DOUBLE_DASH as DOUBLE_DASH$1, KNOWN_FLAG, PARAMETER, PARAMETER as PARAMETER$1, UNKNOWN_FLAG, parse } from "@clerc/parser";
|
|
2
2
|
import { camelCase, toArray } from "@clerc/utils";
|
|
3
3
|
import { LiteEmit } from "lite-emit";
|
|
4
4
|
|
|
@@ -198,7 +198,7 @@ var Clerc = class Clerc {
|
|
|
198
198
|
#callWithErrorHandler(fn) {
|
|
199
199
|
try {
|
|
200
200
|
const result = fn();
|
|
201
|
-
if (result instanceof Promise) result.catch((error) => {
|
|
201
|
+
if (result instanceof Promise) return result.catch((error) => {
|
|
202
202
|
this.#handleError(error);
|
|
203
203
|
});
|
|
204
204
|
return result;
|
|
@@ -257,7 +257,7 @@ var Clerc = class Clerc {
|
|
|
257
257
|
ignore
|
|
258
258
|
}));
|
|
259
259
|
}
|
|
260
|
-
run() {
|
|
260
|
+
async run() {
|
|
261
261
|
const parametersToResolve = getParametersToResolve(this.#argv);
|
|
262
262
|
const [command, calledAs] = resolveCommand(this.#commands, parametersToResolve);
|
|
263
263
|
const argvToPass = command && calledAs.length > 0 ? this.#argv.slice(calledAs.split(" ").length) : this.#argv;
|
|
@@ -288,14 +288,14 @@ var Clerc = class Clerc {
|
|
|
288
288
|
}
|
|
289
289
|
};
|
|
290
290
|
const composedInterceptor = compose([...this.#interceptors, emitInterceptor]);
|
|
291
|
-
this.#callWithErrorHandler(() => composedInterceptor(context));
|
|
291
|
+
return this.#callWithErrorHandler(() => composedInterceptor(context));
|
|
292
292
|
}
|
|
293
293
|
parse(argvOrOptions = platformArgv) {
|
|
294
294
|
this.#callWithErrorHandler(() => this.#validate());
|
|
295
295
|
if (Array.isArray(argvOrOptions)) argvOrOptions = { argv: argvOrOptions };
|
|
296
296
|
const { argv = platformArgv, run = true } = argvOrOptions;
|
|
297
297
|
this.#argv = argv;
|
|
298
|
-
if (run) this.run();
|
|
298
|
+
if (run) return this.run();
|
|
299
299
|
return this;
|
|
300
300
|
}
|
|
301
301
|
};
|
|
@@ -322,4 +322,4 @@ function createStopAtFirstParameter() {
|
|
|
322
322
|
const definePlugin = (plugin) => plugin;
|
|
323
323
|
|
|
324
324
|
//#endregion
|
|
325
|
-
export { Clerc, DOUBLE_DASH, InvalidCommandError, InvalidParametersError, KNOWN_FLAG, MissingRequiredMetadataError, NoCommandSpecifiedError, NoSuchCommandError, PARAMETER, UNKNOWN_FLAG, createStopAtFirstParameter, defineCommand, definePlugin, resolveCommand };
|
|
325
|
+
export { Choices, Clerc, DOUBLE_DASH, InvalidCommandError, InvalidParametersError, KNOWN_FLAG, MissingRequiredMetadataError, NoCommandSpecifiedError, NoSuchCommandError, PARAMETER, UNKNOWN_FLAG, createStopAtFirstParameter, defineCommand, definePlugin, resolveCommand };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clerc/core",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.3",
|
|
4
4
|
"author": "Ray <i@mk1.io> (https://github.com/so1ve)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Clerc core",
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"lite-emit": "^3.1.0",
|
|
48
|
-
"@clerc/parser": "^1.0.0-beta.
|
|
49
|
-
"@clerc/utils": "1.0.0-beta.
|
|
48
|
+
"@clerc/parser": "^1.0.0-beta.3",
|
|
49
|
+
"@clerc/utils": "1.0.0-beta.3"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"is-platform": "^1.0.0"
|