@clerc/parser 1.0.0-beta.13 → 1.0.0-beta.15
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 +15 -6
- package/dist/index.js +9 -2
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
declare class InvalidSchemaError extends Error {
|
|
3
3
|
constructor(message: string);
|
|
4
4
|
}
|
|
5
|
+
declare class MissingRequiredFlagError extends Error {
|
|
6
|
+
constructor(name: string);
|
|
7
|
+
}
|
|
5
8
|
//#endregion
|
|
6
9
|
//#region src/flag-types.d.ts
|
|
7
10
|
/**
|
|
@@ -28,7 +31,9 @@ type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
|
28
31
|
type MaybeArray<T> = T | T[];
|
|
29
32
|
//#endregion
|
|
30
33
|
//#region src/types.d.ts
|
|
31
|
-
type FlagDefaultValue<T = unknown> = T | (() => T)
|
|
34
|
+
type FlagDefaultValue<T = unknown> = T | ((() => T) & {
|
|
35
|
+
display?: string;
|
|
36
|
+
});
|
|
32
37
|
/**
|
|
33
38
|
* Defines how a string input is converted to the target type T.
|
|
34
39
|
*
|
|
@@ -39,7 +44,7 @@ type FlagTypeFunction<T = unknown> = ((value: string) => T) & {
|
|
|
39
44
|
* Optional display name for the type, useful in help output.
|
|
40
45
|
* If provided, this will be shown instead of the function name.
|
|
41
46
|
*/
|
|
42
|
-
|
|
47
|
+
display?: string;
|
|
43
48
|
};
|
|
44
49
|
/**
|
|
45
50
|
* A callback function to conditionally stop parsing.
|
|
@@ -62,6 +67,8 @@ interface BaseFlagOptions<T extends FlagType = FlagType> {
|
|
|
62
67
|
alias?: MaybeArray<string>;
|
|
63
68
|
/** The default value of the flag. */
|
|
64
69
|
default?: unknown;
|
|
70
|
+
/** Whether the flag is required. */
|
|
71
|
+
required?: boolean;
|
|
65
72
|
}
|
|
66
73
|
type FlagOptions = (BaseFlagOptions<BooleanConstructor> & {
|
|
67
74
|
/**
|
|
@@ -132,13 +139,15 @@ type IsTypeAny<T extends FlagDefinitionValue> = IsAny<T> extends true ? true : T
|
|
|
132
139
|
} ? IsAny<Type> extends true ? true : false : false;
|
|
133
140
|
type _InferFlags<T extends FlagsDefinition> = { [K in keyof T]: IsTypeAny<T[K]> extends true ? any : T[K] extends readonly [BooleanConstructor] | {
|
|
134
141
|
type: readonly [BooleanConstructor];
|
|
135
|
-
} ? number : T[K] extends ObjectConstructor | {
|
|
142
|
+
} ? number | InferFlagDefault<T[K], never> : T[K] extends ObjectConstructor | {
|
|
136
143
|
type: ObjectConstructor;
|
|
137
|
-
} ? ObjectInputType : T[K] extends readonly [FlagType<infer U>] | {
|
|
144
|
+
} ? ObjectInputType | InferFlagDefault<T[K], never> : T[K] extends readonly [FlagType<infer U>] | {
|
|
138
145
|
type: readonly [FlagType<infer U>];
|
|
139
146
|
} ? U[] | InferFlagDefault<T[K], never> : T[K] extends FlagType<infer U> | {
|
|
140
147
|
type: FlagType<infer U>;
|
|
141
|
-
} ? U | InferFlagDefault<T[K], [U] extends [boolean] ? never :
|
|
148
|
+
} ? U | InferFlagDefault<T[K], [U] extends [boolean] ? never : T[K] extends {
|
|
149
|
+
required: true;
|
|
150
|
+
} ? never : undefined> : never };
|
|
142
151
|
/**
|
|
143
152
|
* An advanced utility type that infers the exact type of the `flags` object in the parsed result,
|
|
144
153
|
* based on the provided `flags` configuration object T.
|
|
@@ -160,4 +169,4 @@ declare function createParser<T extends FlagsDefinition>(options?: ParserOptions
|
|
|
160
169
|
};
|
|
161
170
|
declare const parse: <T extends FlagsDefinition>(args: string[], options?: ParserOptions<T>) => ParsedResult<InferFlags<T>>;
|
|
162
171
|
//#endregion
|
|
163
|
-
export { BaseFlagOptions, Choices, DOUBLE_DASH, FlagDefaultValue, FlagDefinitionValue, FlagOptions, FlagType, FlagTypeFunction, FlagsDefinition, IgnoreFunction, InferFlags, InvalidSchemaError, KNOWN_FLAG, ObjectInputType, PARAMETER, ParsedResult, ParserOptions, RawInputType, UNKNOWN_FLAG, createParser, parse };
|
|
172
|
+
export { BaseFlagOptions, Choices, DOUBLE_DASH, FlagDefaultValue, FlagDefinitionValue, FlagOptions, FlagType, FlagTypeFunction, FlagsDefinition, IgnoreFunction, InferFlags, InvalidSchemaError, KNOWN_FLAG, MissingRequiredFlagError, ObjectInputType, PARAMETER, ParsedResult, ParserOptions, RawInputType, UNKNOWN_FLAG, createParser, parse };
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,12 @@ var InvalidSchemaError = class extends Error {
|
|
|
5
5
|
this.name = "InvalidSchemaError";
|
|
6
6
|
}
|
|
7
7
|
};
|
|
8
|
+
var MissingRequiredFlagError = class extends Error {
|
|
9
|
+
constructor(name) {
|
|
10
|
+
super(`Missing required flag: ${name}`);
|
|
11
|
+
this.name = "MissingRequiredFlagError";
|
|
12
|
+
}
|
|
13
|
+
};
|
|
8
14
|
|
|
9
15
|
//#endregion
|
|
10
16
|
//#region src/flag-types.ts
|
|
@@ -27,7 +33,7 @@ function Choices(...values) {
|
|
|
27
33
|
if (!values.includes(value)) throw new Error(`Invalid value: ${value}. Must be one of: ${values.join(", ")}`);
|
|
28
34
|
return value;
|
|
29
35
|
});
|
|
30
|
-
fn.
|
|
36
|
+
fn.display = values.join(" | ");
|
|
31
37
|
return fn;
|
|
32
38
|
}
|
|
33
39
|
|
|
@@ -333,6 +339,7 @@ function createParser(options = {}) {
|
|
|
333
339
|
else if (Array.isArray(config.type)) result.flags[key] = isArrayOfType(config.type, Boolean) ? 0 : [];
|
|
334
340
|
else if (config.type === Object) result.flags[key] = {};
|
|
335
341
|
else if (config.type === Boolean) result.flags[key] = false;
|
|
342
|
+
else if (config.required) throw new MissingRequiredFlagError(key);
|
|
336
343
|
}
|
|
337
344
|
return result;
|
|
338
345
|
};
|
|
@@ -341,4 +348,4 @@ function createParser(options = {}) {
|
|
|
341
348
|
const parse = (args, options = {}) => createParser(options).parse(args);
|
|
342
349
|
|
|
343
350
|
//#endregion
|
|
344
|
-
export { Choices, DOUBLE_DASH, InvalidSchemaError, KNOWN_FLAG, PARAMETER, UNKNOWN_FLAG, createParser, parse };
|
|
351
|
+
export { Choices, DOUBLE_DASH, InvalidSchemaError, KNOWN_FLAG, MissingRequiredFlagError, PARAMETER, UNKNOWN_FLAG, createParser, parse };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clerc/parser",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.15",
|
|
4
4
|
"author": "Ray <i@mk1.io> (https://github.com/so1ve)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Clerc parser",
|
|
@@ -56,6 +56,6 @@
|
|
|
56
56
|
"nopt": "^9.0.0",
|
|
57
57
|
"type-flag": "^4.0.3",
|
|
58
58
|
"yargs-parser": "^22.0.0",
|
|
59
|
-
"@clerc/utils": "1.0.0-beta.
|
|
59
|
+
"@clerc/utils": "1.0.0-beta.15"
|
|
60
60
|
}
|
|
61
61
|
}
|