@jakubmazanec/args 2.0.0-unstable.e1ae458 → 2.0.0
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/build/Arguments.js +2 -0
- package/build/Arguments.js.map +7 -0
- package/build/ArgumentsCommand.js +2 -0
- package/build/ArgumentsCommand.js.map +7 -0
- package/{dist → build}/ArgumentsOptions.d.ts +1 -1
- package/build/ArgumentsOptions.js +2 -0
- package/build/ArgumentsOptions.js.map +7 -0
- package/{dist → build}/ArgumentsParameters.d.ts +10 -20
- package/build/ArgumentsParameters.js +2 -0
- package/build/ArgumentsParameters.js.map +7 -0
- package/build/ArgumentsUnknownOptions.js +2 -0
- package/build/ArgumentsUnknownOptions.js.map +7 -0
- package/build/Argv.js +2 -0
- package/build/Argv.js.map +7 -0
- package/build/CommandConfig.js +2 -0
- package/build/CommandConfig.js.map +7 -0
- package/build/CommandsConfig.js +2 -0
- package/build/CommandsConfig.js.map +7 -0
- package/build/LongOptionName.js +2 -0
- package/build/LongOptionName.js.map +7 -0
- package/build/OptionConfig.js +2 -0
- package/build/OptionConfig.js.map +7 -0
- package/build/OptionsConfig.js +2 -0
- package/build/OptionsConfig.js.map +7 -0
- package/build/ParameterConfig.js +2 -0
- package/build/ParameterConfig.js.map +7 -0
- package/build/ParametersConfig.js +2 -0
- package/build/ParametersConfig.js.map +7 -0
- package/build/ParserConfig.js +2 -0
- package/build/ParserConfig.js.map +7 -0
- package/build/ParsingError.js +9 -0
- package/build/ParsingError.js.map +7 -0
- package/build/ShortOptionName.js +2 -0
- package/build/ShortOptionName.js.map +7 -0
- package/build/ValidationError.js +14 -0
- package/build/ValidationError.js.map +7 -0
- package/build/internals/Checker.js +98 -0
- package/build/internals/Checker.js.map +7 -0
- package/build/internals/CommandScope.js +44 -0
- package/build/internals/CommandScope.js.map +7 -0
- package/build/internals/NormalizedCommandConfig.js +2 -0
- package/build/internals/NormalizedCommandConfig.js.map +7 -0
- package/build/internals/NormalizedCommandsConfig.js +2 -0
- package/build/internals/NormalizedCommandsConfig.js.map +7 -0
- package/build/internals/OptionScope.js +69 -0
- package/build/internals/OptionScope.js.map +7 -0
- package/build/internals/castValue.js +17 -0
- package/build/internals/castValue.js.map +7 -0
- package/build/internals/commandToArguments.js +14 -0
- package/build/internals/commandToArguments.js.map +7 -0
- package/build/internals/createOptionShortNameMap.js +11 -0
- package/build/internals/createOptionShortNameMap.js.map +7 -0
- package/build/internals/expandArguments.js +14 -0
- package/build/internals/expandArguments.js.map +7 -0
- package/build/internals/isCommand.js +6 -0
- package/build/internals/isCommand.js.map +7 -0
- package/build/internals/isFalseString.js +6 -0
- package/build/internals/isFalseString.js.map +7 -0
- package/build/internals/isLongOption.js +6 -0
- package/build/internals/isLongOption.js.map +7 -0
- package/build/internals/isOptionLike.js +6 -0
- package/build/internals/isOptionLike.js.map +7 -0
- package/build/internals/isShortOption.js +6 -0
- package/build/internals/isShortOption.js.map +7 -0
- package/build/internals/isShortOptionsGroup.js +6 -0
- package/build/internals/isShortOptionsGroup.js.map +7 -0
- package/build/internals/isTrueString.js +6 -0
- package/build/internals/isTrueString.js.map +7 -0
- package/build/internals.js +18 -0
- package/build/internals.js.map +7 -0
- package/build/main.js +20 -0
- package/build/main.js.map +7 -0
- package/build/parseArguments.js +236 -0
- package/build/parseArguments.js.map +7 -0
- package/package.json +25 -14
- package/{src → source}/ArgumentsCommand.ts +3 -4
- package/source/ArgumentsOptions.ts +82 -0
- package/source/ArgumentsParameters.ts +149 -0
- package/source/ArgumentsUnknownOptions.ts +5 -0
- package/{src → source}/internals/Checker.ts +6 -6
- package/{src → source}/internals/OptionScope.ts +1 -1
- package/{src → source}/internals/castValue.ts +13 -12
- package/{src → source}/internals/commandToArguments.ts +4 -6
- package/{src → source}/parseArguments.ts +18 -28
- package/dist/Arguments.js +0 -5
- package/dist/Arguments.js.map +0 -1
- package/dist/ArgumentsCommand.js +0 -3
- package/dist/ArgumentsCommand.js.map +0 -1
- package/dist/ArgumentsOptions.js +0 -3
- package/dist/ArgumentsOptions.js.map +0 -1
- package/dist/ArgumentsParameters.js +0 -3
- package/dist/ArgumentsParameters.js.map +0 -1
- package/dist/ArgumentsUnknownOptions.js +0 -3
- package/dist/ArgumentsUnknownOptions.js.map +0 -1
- package/dist/Argv.js +0 -3
- package/dist/Argv.js.map +0 -1
- package/dist/CommandConfig.js +0 -3
- package/dist/CommandConfig.js.map +0 -1
- package/dist/CommandsConfig.js +0 -3
- package/dist/CommandsConfig.js.map +0 -1
- package/dist/LongOptionName.js +0 -3
- package/dist/LongOptionName.js.map +0 -1
- package/dist/OptionConfig.js +0 -3
- package/dist/OptionConfig.js.map +0 -1
- package/dist/OptionsConfig.js +0 -3
- package/dist/OptionsConfig.js.map +0 -1
- package/dist/ParameterConfig.js +0 -3
- package/dist/ParameterConfig.js.map +0 -1
- package/dist/ParametersConfig.js +0 -3
- package/dist/ParametersConfig.js.map +0 -1
- package/dist/ParserConfig.js +0 -3
- package/dist/ParserConfig.js.map +0 -1
- package/dist/ParsingError.js +0 -11
- package/dist/ParsingError.js.map +0 -1
- package/dist/ShortOptionName.js +0 -3
- package/dist/ShortOptionName.js.map +0 -1
- package/dist/ValidationError.js +0 -16
- package/dist/ValidationError.js.map +0 -1
- package/dist/internals/Checker.js +0 -115
- package/dist/internals/Checker.js.map +0 -1
- package/dist/internals/CommandScope.js +0 -48
- package/dist/internals/CommandScope.js.map +0 -1
- package/dist/internals/NormalizedCommandConfig.js +0 -3
- package/dist/internals/NormalizedCommandConfig.js.map +0 -1
- package/dist/internals/NormalizedCommandsConfig.js +0 -3
- package/dist/internals/NormalizedCommandsConfig.js.map +0 -1
- package/dist/internals/OptionScope.js +0 -87
- package/dist/internals/OptionScope.js.map +0 -1
- package/dist/internals/castValue.js +0 -25
- package/dist/internals/castValue.js.map +0 -1
- package/dist/internals/commandToArguments.js +0 -21
- package/dist/internals/commandToArguments.js.map +0 -1
- package/dist/internals/createOptionShortNameMap.js +0 -16
- package/dist/internals/createOptionShortNameMap.js.map +0 -1
- package/dist/internals/expandArguments.js +0 -21
- package/dist/internals/expandArguments.js.map +0 -1
- package/dist/internals/isCommand.js +0 -11
- package/dist/internals/isCommand.js.map +0 -1
- package/dist/internals/isFalseString.js +0 -10
- package/dist/internals/isFalseString.js.map +0 -1
- package/dist/internals/isLongOption.js +0 -11
- package/dist/internals/isLongOption.js.map +0 -1
- package/dist/internals/isOptionLike.js +0 -11
- package/dist/internals/isOptionLike.js.map +0 -1
- package/dist/internals/isShortOption.js +0 -11
- package/dist/internals/isShortOption.js.map +0 -1
- package/dist/internals/isShortOptionsGroup.js +0 -11
- package/dist/internals/isShortOptionsGroup.js.map +0 -1
- package/dist/internals/isTrueString.js +0 -10
- package/dist/internals/isTrueString.js.map +0 -1
- package/dist/internals.js +0 -18
- package/dist/internals.js.map +0 -1
- package/dist/main.js +0 -20
- package/dist/main.js.map +0 -1
- package/dist/parseArguments.js +0 -244
- package/dist/parseArguments.js.map +0 -1
- package/src/ArgumentsOptions.ts +0 -89
- package/src/ArgumentsParameters.ts +0 -158
- package/src/ArgumentsUnknownOptions.ts +0 -6
- /package/{dist → build}/Arguments.d.ts +0 -0
- /package/{dist → build}/ArgumentsCommand.d.ts +0 -0
- /package/{dist → build}/ArgumentsUnknownOptions.d.ts +0 -0
- /package/{dist → build}/Argv.d.ts +0 -0
- /package/{dist → build}/CommandConfig.d.ts +0 -0
- /package/{dist → build}/CommandsConfig.d.ts +0 -0
- /package/{dist → build}/LongOptionName.d.ts +0 -0
- /package/{dist → build}/OptionConfig.d.ts +0 -0
- /package/{dist → build}/OptionsConfig.d.ts +0 -0
- /package/{dist → build}/ParameterConfig.d.ts +0 -0
- /package/{dist → build}/ParametersConfig.d.ts +0 -0
- /package/{dist → build}/ParserConfig.d.ts +0 -0
- /package/{dist → build}/ParsingError.d.ts +0 -0
- /package/{dist → build}/ShortOptionName.d.ts +0 -0
- /package/{dist → build}/ValidationError.d.ts +0 -0
- /package/{dist → build}/internals/Checker.d.ts +0 -0
- /package/{dist → build}/internals/CommandScope.d.ts +0 -0
- /package/{dist → build}/internals/NormalizedCommandConfig.d.ts +0 -0
- /package/{dist → build}/internals/NormalizedCommandsConfig.d.ts +0 -0
- /package/{dist → build}/internals/OptionScope.d.ts +0 -0
- /package/{dist → build}/internals/castValue.d.ts +0 -0
- /package/{dist → build}/internals/commandToArguments.d.ts +0 -0
- /package/{dist → build}/internals/createOptionShortNameMap.d.ts +0 -0
- /package/{dist → build}/internals/expandArguments.d.ts +0 -0
- /package/{dist → build}/internals/isCommand.d.ts +0 -0
- /package/{dist → build}/internals/isFalseString.d.ts +0 -0
- /package/{dist → build}/internals/isLongOption.d.ts +0 -0
- /package/{dist → build}/internals/isOptionLike.d.ts +0 -0
- /package/{dist → build}/internals/isShortOption.d.ts +0 -0
- /package/{dist → build}/internals/isShortOptionsGroup.d.ts +0 -0
- /package/{dist → build}/internals/isTrueString.d.ts +0 -0
- /package/{dist → build}/internals.d.ts +0 -0
- /package/{dist → build}/main.d.ts +0 -0
- /package/{dist → build}/parseArguments.d.ts +0 -0
- /package/{src → source}/Arguments.ts +0 -0
- /package/{src → source}/Argv.ts +0 -0
- /package/{src → source}/CommandConfig.ts +0 -0
- /package/{src → source}/CommandsConfig.ts +0 -0
- /package/{src → source}/LongOptionName.ts +0 -0
- /package/{src → source}/OptionConfig.ts +0 -0
- /package/{src → source}/OptionsConfig.ts +0 -0
- /package/{src → source}/ParameterConfig.ts +0 -0
- /package/{src → source}/ParametersConfig.ts +0 -0
- /package/{src → source}/ParserConfig.ts +0 -0
- /package/{src → source}/ParsingError.ts +0 -0
- /package/{src → source}/ShortOptionName.ts +0 -0
- /package/{src → source}/ValidationError.ts +0 -0
- /package/{src → source}/internals/CommandScope.ts +0 -0
- /package/{src → source}/internals/NormalizedCommandConfig.ts +0 -0
- /package/{src → source}/internals/NormalizedCommandsConfig.ts +0 -0
- /package/{src → source}/internals/createOptionShortNameMap.ts +0 -0
- /package/{src → source}/internals/expandArguments.ts +0 -0
- /package/{src → source}/internals/isCommand.ts +0 -0
- /package/{src → source}/internals/isFalseString.ts +0 -0
- /package/{src → source}/internals/isLongOption.ts +0 -0
- /package/{src → source}/internals/isOptionLike.ts +0 -0
- /package/{src → source}/internals/isShortOption.ts +0 -0
- /package/{src → source}/internals/isShortOptionsGroup.ts +0 -0
- /package/{src → source}/internals/isTrueString.ts +0 -0
- /package/{src → source}/internals.ts +0 -0
- /package/{src → source}/main.ts +0 -0
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import {type ParserConfig} from './ParserConfig.js';
|
|
2
2
|
|
|
3
3
|
/** Parsed command. */
|
|
4
|
-
export type ArgumentsCommand<O extends ParserConfig> =
|
|
5
|
-
? null
|
|
6
|
-
: O['commands'] extends undefined
|
|
7
|
-
? null
|
|
4
|
+
export type ArgumentsCommand<O extends ParserConfig> =
|
|
5
|
+
Omit<O, 'commands'> extends O ? null
|
|
6
|
+
: O['commands'] extends undefined ? null
|
|
8
7
|
: Lowercase<NonNullable<O['commands']>[number]> | undefined;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import {type TupleToUnion} from '@jakubmazanec/ts-utils';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
type BooleanOptionConfig,
|
|
5
|
+
type BooleansOptionConfig,
|
|
6
|
+
type CountOptionConfig,
|
|
7
|
+
type NumberOptionConfig,
|
|
8
|
+
type NumbersOptionConfig,
|
|
9
|
+
type OptionConfig,
|
|
10
|
+
type StringOptionConfig,
|
|
11
|
+
type StringsOptionConfig,
|
|
12
|
+
} from './OptionConfig.js';
|
|
13
|
+
import {type OptionsConfig} from './OptionsConfig.js';
|
|
14
|
+
import {type ParserConfig} from './ParserConfig.js';
|
|
15
|
+
|
|
16
|
+
type BooleanOptionConfigToArgumentsOption<O extends BooleanOptionConfig | BooleansOptionConfig> =
|
|
17
|
+
O extends BooleanOptionConfig ?
|
|
18
|
+
O['defaultValue'] extends boolean ?
|
|
19
|
+
boolean
|
|
20
|
+
: boolean | undefined
|
|
21
|
+
: O extends BooleansOptionConfig ?
|
|
22
|
+
O['defaultValue'] extends readonly boolean[] ?
|
|
23
|
+
boolean[]
|
|
24
|
+
: boolean[] | undefined
|
|
25
|
+
: never;
|
|
26
|
+
|
|
27
|
+
type NumberOptionConfigToArgumentsOption<
|
|
28
|
+
O extends CountOptionConfig | NumberOptionConfig | NumbersOptionConfig,
|
|
29
|
+
> =
|
|
30
|
+
O extends NumbersOptionConfig ?
|
|
31
|
+
O['choices'] extends readonly number[] ?
|
|
32
|
+
O['defaultValue'] extends readonly number[] ?
|
|
33
|
+
Array<TupleToUnion<O['choices']>>
|
|
34
|
+
: Array<TupleToUnion<O['choices']>> | undefined
|
|
35
|
+
: O['defaultValue'] extends readonly number[] ? number[]
|
|
36
|
+
: number[] | undefined
|
|
37
|
+
: O extends NumberOptionConfig ?
|
|
38
|
+
O['choices'] extends readonly number[] ?
|
|
39
|
+
O['defaultValue'] extends number ?
|
|
40
|
+
TupleToUnion<O['choices']>
|
|
41
|
+
: TupleToUnion<O['choices']> | undefined
|
|
42
|
+
: O['defaultValue'] extends number ? number
|
|
43
|
+
: number | undefined
|
|
44
|
+
: O extends CountOptionConfig ?
|
|
45
|
+
O['defaultValue'] extends number ?
|
|
46
|
+
number
|
|
47
|
+
: number | undefined
|
|
48
|
+
: never;
|
|
49
|
+
|
|
50
|
+
type StringOptionConfigToArgumentsOption<O extends StringOptionConfig | StringsOptionConfig> =
|
|
51
|
+
O extends StringsOptionConfig ?
|
|
52
|
+
O['choices'] extends readonly string[] ?
|
|
53
|
+
O['defaultValue'] extends readonly string[] ?
|
|
54
|
+
Array<TupleToUnion<O['choices']>>
|
|
55
|
+
: Array<TupleToUnion<O['choices']>> | undefined
|
|
56
|
+
: O['defaultValue'] extends readonly string[] ? string[]
|
|
57
|
+
: string[] | undefined
|
|
58
|
+
: O extends StringOptionConfig ?
|
|
59
|
+
O['choices'] extends readonly string[] ?
|
|
60
|
+
O['defaultValue'] extends string ?
|
|
61
|
+
TupleToUnion<O['choices']>
|
|
62
|
+
: TupleToUnion<O['choices']> | undefined
|
|
63
|
+
: O['defaultValue'] extends string ? string
|
|
64
|
+
: string | undefined
|
|
65
|
+
: never;
|
|
66
|
+
|
|
67
|
+
type OptionConfigToArgumentOption<O extends OptionConfig> =
|
|
68
|
+
O extends BooleanOptionConfig | BooleansOptionConfig ? BooleanOptionConfigToArgumentsOption<O>
|
|
69
|
+
: O extends CountOptionConfig | NumberOptionConfig | NumbersOptionConfig ?
|
|
70
|
+
NumberOptionConfigToArgumentsOption<O>
|
|
71
|
+
: O extends StringOptionConfig | StringsOptionConfig ? StringOptionConfigToArgumentsOption<O>
|
|
72
|
+
: never;
|
|
73
|
+
|
|
74
|
+
type OptionsConfigToArgumentsOptions<O extends OptionsConfig> = {
|
|
75
|
+
[K in keyof O]: OptionConfigToArgumentOption<O[K]>;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
/** Parsed options. */
|
|
79
|
+
export type ArgumentsOptions<O extends ParserConfig> =
|
|
80
|
+
Omit<O, 'options'> extends O ? null
|
|
81
|
+
: O['options'] extends undefined ? null
|
|
82
|
+
: OptionsConfigToArgumentsOptions<NonNullable<O['options']>>;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import {type TupleToUnion} from '@jakubmazanec/ts-utils';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
type BooleanParameterConfig,
|
|
5
|
+
type NumberParameterConfig,
|
|
6
|
+
type ParameterConfig,
|
|
7
|
+
type StringParameterConfig,
|
|
8
|
+
} from './ParameterConfig.js';
|
|
9
|
+
import {type ParametersConfig} from './ParametersConfig.js';
|
|
10
|
+
import {type ParserConfig} from './ParserConfig.js';
|
|
11
|
+
|
|
12
|
+
type NumberParameterConfigToArgumentsParameter<O extends NumberParameterConfig> =
|
|
13
|
+
O['choices'] extends readonly number[] ?
|
|
14
|
+
O['defaultValue'] extends number ?
|
|
15
|
+
TupleToUnion<O['choices']>
|
|
16
|
+
: TupleToUnion<O['choices']> | undefined
|
|
17
|
+
: O['defaultValue'] extends number ? number
|
|
18
|
+
: number | undefined;
|
|
19
|
+
|
|
20
|
+
type StringParameterConfigToArgumentsParameter<O extends StringParameterConfig> =
|
|
21
|
+
O['choices'] extends readonly string[] ?
|
|
22
|
+
O['defaultValue'] extends string ?
|
|
23
|
+
TupleToUnion<O['choices']>
|
|
24
|
+
: TupleToUnion<O['choices']> | undefined
|
|
25
|
+
: O['defaultValue'] extends string ? string
|
|
26
|
+
: string | undefined;
|
|
27
|
+
|
|
28
|
+
type BooleanParameterConfigToArgumentsParameter<O extends BooleanParameterConfig> =
|
|
29
|
+
O['defaultValue'] extends boolean ? boolean : boolean | undefined;
|
|
30
|
+
|
|
31
|
+
type ParameterConfigToArgumentsParameter<O extends ParameterConfig> =
|
|
32
|
+
O extends NumberParameterConfig ? NumberParameterConfigToArgumentsParameter<O>
|
|
33
|
+
: O extends StringParameterConfig ? StringParameterConfigToArgumentsParameter<O>
|
|
34
|
+
: O extends BooleanParameterConfig ? BooleanParameterConfigToArgumentsParameter<O>
|
|
35
|
+
: never;
|
|
36
|
+
|
|
37
|
+
type ParametersConfigToArgumentsParameters<O extends ParametersConfig> =
|
|
38
|
+
O extends (
|
|
39
|
+
readonly [
|
|
40
|
+
ParameterConfig,
|
|
41
|
+
ParameterConfig,
|
|
42
|
+
ParameterConfig,
|
|
43
|
+
ParameterConfig,
|
|
44
|
+
ParameterConfig,
|
|
45
|
+
ParameterConfig,
|
|
46
|
+
]
|
|
47
|
+
) ?
|
|
48
|
+
readonly [
|
|
49
|
+
ParameterConfigToArgumentsParameter<O[0]>,
|
|
50
|
+
ParameterConfigToArgumentsParameter<O[1]>,
|
|
51
|
+
ParameterConfigToArgumentsParameter<O[2]>,
|
|
52
|
+
ParameterConfigToArgumentsParameter<O[3]>,
|
|
53
|
+
ParameterConfigToArgumentsParameter<O[4]>,
|
|
54
|
+
ParameterConfigToArgumentsParameter<O[5]>,
|
|
55
|
+
]
|
|
56
|
+
: O extends (
|
|
57
|
+
readonly [ParameterConfig, ParameterConfig, ParameterConfig, ParameterConfig, ParameterConfig]
|
|
58
|
+
) ?
|
|
59
|
+
readonly [
|
|
60
|
+
ParameterConfigToArgumentsParameter<O[0]>,
|
|
61
|
+
ParameterConfigToArgumentsParameter<O[1]>,
|
|
62
|
+
ParameterConfigToArgumentsParameter<O[2]>,
|
|
63
|
+
ParameterConfigToArgumentsParameter<O[3]>,
|
|
64
|
+
ParameterConfigToArgumentsParameter<O[4]>,
|
|
65
|
+
]
|
|
66
|
+
: O extends readonly [ParameterConfig, ParameterConfig, ParameterConfig, ParameterConfig] ?
|
|
67
|
+
readonly [
|
|
68
|
+
ParameterConfigToArgumentsParameter<O[0]>,
|
|
69
|
+
ParameterConfigToArgumentsParameter<O[1]>,
|
|
70
|
+
ParameterConfigToArgumentsParameter<O[2]>,
|
|
71
|
+
ParameterConfigToArgumentsParameter<O[3]>,
|
|
72
|
+
]
|
|
73
|
+
: O extends readonly [ParameterConfig, ParameterConfig, ParameterConfig] ?
|
|
74
|
+
readonly [
|
|
75
|
+
ParameterConfigToArgumentsParameter<O[0]>,
|
|
76
|
+
ParameterConfigToArgumentsParameter<O[1]>,
|
|
77
|
+
ParameterConfigToArgumentsParameter<O[2]>,
|
|
78
|
+
]
|
|
79
|
+
: O extends readonly [ParameterConfig, ParameterConfig] ?
|
|
80
|
+
readonly [ParameterConfigToArgumentsParameter<O[0]>, ParameterConfigToArgumentsParameter<O[1]>]
|
|
81
|
+
: O extends readonly [ParameterConfig] ? readonly [ParameterConfigToArgumentsParameter<O[0]>]
|
|
82
|
+
: never;
|
|
83
|
+
|
|
84
|
+
type ParametersConfigToVariadicArgumentsParameters<O extends ParametersConfig> =
|
|
85
|
+
O extends (
|
|
86
|
+
readonly [
|
|
87
|
+
ParameterConfig,
|
|
88
|
+
ParameterConfig,
|
|
89
|
+
ParameterConfig,
|
|
90
|
+
ParameterConfig,
|
|
91
|
+
ParameterConfig,
|
|
92
|
+
ParameterConfig,
|
|
93
|
+
]
|
|
94
|
+
) ?
|
|
95
|
+
readonly [
|
|
96
|
+
ParameterConfigToArgumentsParameter<O[0]>,
|
|
97
|
+
ParameterConfigToArgumentsParameter<O[1]>,
|
|
98
|
+
ParameterConfigToArgumentsParameter<O[2]>,
|
|
99
|
+
ParameterConfigToArgumentsParameter<O[3]>,
|
|
100
|
+
ParameterConfigToArgumentsParameter<O[4]>,
|
|
101
|
+
ParameterConfigToArgumentsParameter<O[5]>,
|
|
102
|
+
...(readonly string[]),
|
|
103
|
+
]
|
|
104
|
+
: O extends (
|
|
105
|
+
readonly [ParameterConfig, ParameterConfig, ParameterConfig, ParameterConfig, ParameterConfig]
|
|
106
|
+
) ?
|
|
107
|
+
readonly [
|
|
108
|
+
ParameterConfigToArgumentsParameter<O[0]>,
|
|
109
|
+
ParameterConfigToArgumentsParameter<O[1]>,
|
|
110
|
+
ParameterConfigToArgumentsParameter<O[2]>,
|
|
111
|
+
ParameterConfigToArgumentsParameter<O[3]>,
|
|
112
|
+
ParameterConfigToArgumentsParameter<O[4]>,
|
|
113
|
+
...(readonly string[]),
|
|
114
|
+
]
|
|
115
|
+
: O extends readonly [ParameterConfig, ParameterConfig, ParameterConfig, ParameterConfig] ?
|
|
116
|
+
readonly [
|
|
117
|
+
ParameterConfigToArgumentsParameter<O[0]>,
|
|
118
|
+
ParameterConfigToArgumentsParameter<O[1]>,
|
|
119
|
+
ParameterConfigToArgumentsParameter<O[2]>,
|
|
120
|
+
ParameterConfigToArgumentsParameter<O[3]>,
|
|
121
|
+
...(readonly string[]),
|
|
122
|
+
]
|
|
123
|
+
: O extends readonly [ParameterConfig, ParameterConfig, ParameterConfig] ?
|
|
124
|
+
readonly [
|
|
125
|
+
ParameterConfigToArgumentsParameter<O[0]>,
|
|
126
|
+
ParameterConfigToArgumentsParameter<O[1]>,
|
|
127
|
+
ParameterConfigToArgumentsParameter<O[2]>,
|
|
128
|
+
...(readonly string[]),
|
|
129
|
+
]
|
|
130
|
+
: O extends readonly [ParameterConfig, ParameterConfig] ?
|
|
131
|
+
readonly [
|
|
132
|
+
ParameterConfigToArgumentsParameter<O[0]>,
|
|
133
|
+
ParameterConfigToArgumentsParameter<O[1]>,
|
|
134
|
+
...(readonly string[]),
|
|
135
|
+
]
|
|
136
|
+
: O extends readonly [ParameterConfig] ?
|
|
137
|
+
readonly [ParameterConfigToArgumentsParameter<O[0]>, ...(readonly string[])]
|
|
138
|
+
: readonly [...(readonly string[])];
|
|
139
|
+
|
|
140
|
+
/** Parsed parameters. */
|
|
141
|
+
export type ArgumentsParameters<O extends ParserConfig> =
|
|
142
|
+
Omit<O, 'parameters'> extends O ?
|
|
143
|
+
O['allowUnknownParameters'] extends true ?
|
|
144
|
+
[...string[]]
|
|
145
|
+
: null
|
|
146
|
+
: O['parameters'] extends undefined ? null
|
|
147
|
+
: O['allowUnknownParameters'] extends true ?
|
|
148
|
+
ParametersConfigToVariadicArgumentsParameters<NonNullable<O['parameters']>>
|
|
149
|
+
: ParametersConfigToArgumentsParameters<NonNullable<O['parameters']>>;
|
|
@@ -25,7 +25,7 @@ export class Checker {
|
|
|
25
25
|
if (
|
|
26
26
|
parameterConfig.type !== 'boolean' &&
|
|
27
27
|
parameterConfig.choices && // default values and chocies do not contradict each other
|
|
28
|
-
|
|
28
|
+
parameterConfig.defaultValue !== undefined &&
|
|
29
29
|
!parameterConfig.choices.includes(parameterConfig.defaultValue as never)
|
|
30
30
|
) {
|
|
31
31
|
this.addError(
|
|
@@ -44,7 +44,7 @@ export class Checker {
|
|
|
44
44
|
.every(
|
|
45
45
|
(previousParameterConfig) =>
|
|
46
46
|
previousParameterConfig.required === true ||
|
|
47
|
-
|
|
47
|
+
previousParameterConfig.defaultValue !== undefined,
|
|
48
48
|
)
|
|
49
49
|
) {
|
|
50
50
|
this.addError(
|
|
@@ -85,7 +85,7 @@ export class Checker {
|
|
|
85
85
|
(optionConfig.type === 'string' ||
|
|
86
86
|
(optionConfig.type === 'number' && !optionConfig.count)) &&
|
|
87
87
|
optionConfig.choices &&
|
|
88
|
-
|
|
88
|
+
optionConfig.defaultValue !== undefined &&
|
|
89
89
|
!optionConfig.choices.includes(optionConfig.defaultValue as never)
|
|
90
90
|
) {
|
|
91
91
|
this.addError(
|
|
@@ -102,7 +102,7 @@ export class Checker {
|
|
|
102
102
|
let parsedParameter = parsedParameters[i];
|
|
103
103
|
|
|
104
104
|
// required parameters must have value
|
|
105
|
-
if (parameterConfig.required === true &&
|
|
105
|
+
if (parameterConfig.required === true && parsedParameter === undefined) {
|
|
106
106
|
this.addError(
|
|
107
107
|
new ValidationError('MISSING_PARAMETER', {
|
|
108
108
|
messageParameters: [parameterConfig.label ?? i],
|
|
@@ -117,7 +117,7 @@ export class Checker {
|
|
|
117
117
|
let parsedOption = parsedOptions[optionName];
|
|
118
118
|
|
|
119
119
|
// check required
|
|
120
|
-
if (optionConfig.required &&
|
|
120
|
+
if (optionConfig.required && parsedOption === undefined) {
|
|
121
121
|
this.addError(
|
|
122
122
|
new ValidationError('MISSING_OPTION', {
|
|
123
123
|
messageParameters: [optionName],
|
|
@@ -127,7 +127,7 @@ export class Checker {
|
|
|
127
127
|
|
|
128
128
|
// check arity
|
|
129
129
|
if (
|
|
130
|
-
|
|
130
|
+
parsedOption !== undefined &&
|
|
131
131
|
((optionConfig.type === 'string' && optionConfig.multiple) ||
|
|
132
132
|
(optionConfig.type === 'number' && optionConfig.multiple)) &&
|
|
133
133
|
typeof optionConfig.arity === 'number' &&
|
|
@@ -43,7 +43,7 @@ export class OptionScope {
|
|
|
43
43
|
|
|
44
44
|
if (
|
|
45
45
|
((this.config.type === 'number' && !this.config.count) || this.config.type === 'string') &&
|
|
46
|
-
|
|
46
|
+
this.config.choices !== undefined &&
|
|
47
47
|
!this.config.choices.includes(value as never)
|
|
48
48
|
) {
|
|
49
49
|
throw new ParsingError('INVALID_OPTION', {
|
|
@@ -9,28 +9,29 @@ import {isFalseString} from './isFalseString.js';
|
|
|
9
9
|
export function castValue<T extends 'boolean' | 'number' | 'string'>(
|
|
10
10
|
value: string,
|
|
11
11
|
type?: T,
|
|
12
|
-
): T extends 'boolean' ? boolean
|
|
12
|
+
): T extends 'boolean' ? boolean
|
|
13
|
+
: T extends 'number' ? number
|
|
14
|
+
: string {
|
|
13
15
|
switch (type) {
|
|
14
16
|
case 'boolean': {
|
|
15
17
|
let booleanString = String(value).toLowerCase();
|
|
16
18
|
|
|
17
|
-
return !(isFalseString(booleanString) || booleanString === '') as T extends 'boolean'
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
: string;
|
|
19
|
+
return !(isFalseString(booleanString) || booleanString === '') as T extends 'boolean' ?
|
|
20
|
+
boolean
|
|
21
|
+
: T extends 'number' ? number
|
|
22
|
+
: string;
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
case 'number': {
|
|
25
|
-
return Number.parseFloat(value) as T extends 'boolean'
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
? number
|
|
29
|
-
: string;
|
|
26
|
+
return Number.parseFloat(value) as T extends 'boolean' ? boolean
|
|
27
|
+
: T extends 'number' ? number
|
|
28
|
+
: string;
|
|
30
29
|
}
|
|
31
30
|
|
|
32
31
|
default: {
|
|
33
|
-
return String(value) as T extends 'boolean' ? boolean
|
|
32
|
+
return String(value) as T extends 'boolean' ? boolean
|
|
33
|
+
: T extends 'number' ? number
|
|
34
|
+
: string;
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
}
|
|
@@ -9,12 +9,10 @@ export function commandToArguments(value: string): string[] {
|
|
|
9
9
|
let args: string[] = [];
|
|
10
10
|
|
|
11
11
|
for (let [, rawValue] of rawArgs.entries()) {
|
|
12
|
-
if (
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
args.push(rawValue);
|
|
17
|
-
}
|
|
12
|
+
if (rawValue === '' && args.at(-1)) {
|
|
13
|
+
args[args.length - 1] += ' ';
|
|
14
|
+
} else {
|
|
15
|
+
args.push(rawValue);
|
|
18
16
|
}
|
|
19
17
|
}
|
|
20
18
|
|
|
@@ -66,12 +66,11 @@ export function parseArguments<const O extends ParserConfig>(
|
|
|
66
66
|
command: command.toLowerCase(),
|
|
67
67
|
args: commandToArguments(command.toLowerCase()),
|
|
68
68
|
}));
|
|
69
|
-
let commandFirstArguments =
|
|
70
|
-
(commandConfig) => commandConfig.args[0],
|
|
69
|
+
let commandFirstArguments = new Set(
|
|
70
|
+
normalizedCommandsConfig.map((commandConfig) => commandConfig.args[0]),
|
|
71
71
|
);
|
|
72
|
-
let optionShortNameMap =
|
|
73
|
-
? createOptionShortNameMap(parserConfig.options)
|
|
74
|
-
: {};
|
|
72
|
+
let optionShortNameMap =
|
|
73
|
+
parserConfig.options ? createOptionShortNameMap(parserConfig.options) : {};
|
|
75
74
|
|
|
76
75
|
// variables for keeping track of the parsing
|
|
77
76
|
let parsedCommand: string | undefined;
|
|
@@ -151,7 +150,7 @@ export function parseArguments<const O extends ParserConfig>(
|
|
|
151
150
|
parserConfig.allowUnknownOptions,
|
|
152
151
|
);
|
|
153
152
|
|
|
154
|
-
if (
|
|
153
|
+
if (parsedOptions[newOptionScope.name] !== undefined) {
|
|
155
154
|
if (newOptionScope.config.multiple) {
|
|
156
155
|
newOptionScope.previousParsedValue = parsedOptions[newOptionScope.name];
|
|
157
156
|
} else if (newOptionScope.config.type === 'number' && newOptionScope.config.count) {
|
|
@@ -159,7 +158,7 @@ export function parseArguments<const O extends ParserConfig>(
|
|
|
159
158
|
}
|
|
160
159
|
}
|
|
161
160
|
|
|
162
|
-
if (
|
|
161
|
+
if (optionValue !== undefined) {
|
|
163
162
|
newOptionScope.captureArg(optionValue);
|
|
164
163
|
}
|
|
165
164
|
|
|
@@ -230,10 +229,7 @@ export function parseArguments<const O extends ParserConfig>(
|
|
|
230
229
|
|
|
231
230
|
commandScope = null;
|
|
232
231
|
}
|
|
233
|
-
} else if (
|
|
234
|
-
typeof parsedCommand === 'undefined' &&
|
|
235
|
-
commandFirstArguments.includes(arg.toLowerCase())
|
|
236
|
-
) {
|
|
232
|
+
} else if (parsedCommand === undefined && commandFirstArguments.has(arg.toLowerCase())) {
|
|
237
233
|
// let's handle command
|
|
238
234
|
|
|
239
235
|
let newCommandScope = new CommandScope(arg, normalizedCommandsConfig);
|
|
@@ -251,7 +247,7 @@ export function parseArguments<const O extends ParserConfig>(
|
|
|
251
247
|
|
|
252
248
|
if (
|
|
253
249
|
parameterConfig.type !== 'boolean' &&
|
|
254
|
-
|
|
250
|
+
parameterConfig.choices !== undefined &&
|
|
255
251
|
!parameterConfig.choices.includes(parameterValue as never) // during runtime `parameterValue` has correct type
|
|
256
252
|
) {
|
|
257
253
|
throw new ParsingError('INVALID_PARAMETER', {
|
|
@@ -308,29 +304,23 @@ export function parseArguments<const O extends ParserConfig>(
|
|
|
308
304
|
|
|
309
305
|
// if there are missing parsed parameters, add undefined
|
|
310
306
|
for (let [i] of parametersConfig.entries()) {
|
|
311
|
-
if (
|
|
307
|
+
if (parsedParameters[i] === undefined) {
|
|
312
308
|
parsedParameters[i] = undefined;
|
|
313
309
|
}
|
|
314
310
|
}
|
|
315
311
|
|
|
316
312
|
// handle default option values...
|
|
317
313
|
for (let [optionName, optionConfig] of Object.entries(optionsConfig)) {
|
|
318
|
-
if (
|
|
319
|
-
typeof parsedOptions[optionName] === 'undefined' &&
|
|
320
|
-
typeof optionConfig.defaultValue !== 'undefined'
|
|
321
|
-
) {
|
|
314
|
+
if (parsedOptions[optionName] === undefined && optionConfig.defaultValue !== undefined) {
|
|
322
315
|
parsedOptions[optionName] = optionConfig.defaultValue;
|
|
323
|
-
} else if (
|
|
316
|
+
} else if (parsedOptions[optionName] === undefined) {
|
|
324
317
|
parsedOptions[optionName] = undefined;
|
|
325
318
|
}
|
|
326
319
|
}
|
|
327
320
|
|
|
328
321
|
// handle default parameters values...
|
|
329
322
|
for (let [i, parameterConfig] of parametersConfig.entries()) {
|
|
330
|
-
if (
|
|
331
|
-
typeof parsedParameters[i] === 'undefined' &&
|
|
332
|
-
typeof parameterConfig.defaultValue !== 'undefined'
|
|
333
|
-
) {
|
|
323
|
+
if (parsedParameters[i] === undefined && parameterConfig.defaultValue !== undefined) {
|
|
334
324
|
parsedParameters[i] = parameterConfig.defaultValue;
|
|
335
325
|
}
|
|
336
326
|
}
|
|
@@ -343,13 +333,13 @@ export function parseArguments<const O extends ParserConfig>(
|
|
|
343
333
|
|
|
344
334
|
return {
|
|
345
335
|
command: (normalizedCommandsConfig.length ? parsedCommand : null) as ArgumentsCommand<O>,
|
|
346
|
-
parameters: (parametersConfig.length || parserConfig.allowUnknownParameters
|
|
347
|
-
|
|
348
|
-
|
|
336
|
+
parameters: (parametersConfig.length || parserConfig.allowUnknownParameters ?
|
|
337
|
+
parsedParameters
|
|
338
|
+
: null) as ArgumentsParameters<O>,
|
|
349
339
|
options: (Object.keys(optionsConfig).length ? parsedOptions : null) as ArgumentsOptions<O>,
|
|
350
|
-
unknownOptions: (parserConfig.allowUnknownOptions
|
|
351
|
-
|
|
352
|
-
|
|
340
|
+
unknownOptions: (parserConfig.allowUnknownOptions ? parsedUnknownOptions : (
|
|
341
|
+
null
|
|
342
|
+
)) as ArgumentsUnknownOptions<O>,
|
|
353
343
|
rest: restArgs,
|
|
354
344
|
errors: checker.errors,
|
|
355
345
|
};
|
package/dist/Arguments.js
DELETED
package/dist/Arguments.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Arguments.ts"],"sourcesContent":["import {type ArgumentsCommand} from './ArgumentsCommand.js';\nimport {type ArgumentsOptions} from './ArgumentsOptions.js';\nimport {type ArgumentsParameters} from './ArgumentsParameters.js';\nimport {type ArgumentsUnknownOptions} from './ArgumentsUnknownOptions.js';\nimport {type ParserConfig} from './ParserConfig.js';\n\n/**\n * Parsed arguments.\n */\nexport type Arguments<T extends ParserConfig> = {\n /** Parsed command. */\n readonly command: ArgumentsCommand<T>;\n\n /** Parsed parameters. */\n readonly parameters: ArgumentsParameters<T>;\n\n /** Parsed options. */\n readonly options: ArgumentsOptions<T>;\n\n /** Unconfigured options. */\n readonly unknownOptions: ArgumentsUnknownOptions<T>;\n\n /** Arguments that appear after \"--\". */\n readonly rest: string[];\n\n /** Parsing and validation rrors */\n readonly errors: Error[];\n};\n"],"names":[],"mappings":"AAMA;;CAEC,GACD,WAkBE"}
|
package/dist/ArgumentsCommand.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ArgumentsCommand.ts"],"sourcesContent":["import {type ParserConfig} from './ParserConfig.js';\n\n/** Parsed command. */\nexport type ArgumentsCommand<O extends ParserConfig> = Omit<O, 'commands'> extends O\n ? null\n : O['commands'] extends undefined\n ? null\n : Lowercase<NonNullable<O['commands']>[number]> | undefined;\n"],"names":[],"mappings":"AAEA,oBAAoB,GACpB,WAI8D"}
|
package/dist/ArgumentsOptions.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ArgumentsOptions.ts"],"sourcesContent":["import {type TupleToUnion} from '@jakubmazanec/ts-utils';\n\nimport {\n type CountOptionConfig,\n type BooleansOptionConfig,\n type NumbersOptionConfig,\n type StringsOptionConfig,\n type OptionConfig,\n type BooleanOptionConfig,\n type NumberOptionConfig,\n type StringOptionConfig,\n} from './OptionConfig.js';\nimport {type OptionsConfig} from './OptionsConfig.js';\nimport {type ParserConfig} from './ParserConfig.js';\n\ntype BooleanOptionConfigToArgumentsOption<O extends BooleanOptionConfig | BooleansOptionConfig> =\n O extends BooleanOptionConfig\n ? O['defaultValue'] extends boolean\n ? boolean\n : boolean | undefined\n : O extends BooleansOptionConfig\n ? O['defaultValue'] extends readonly boolean[]\n ? boolean[]\n : boolean[] | undefined\n : never;\n\ntype NumberOptionConfigToArgumentsOption<\n O extends CountOptionConfig | NumberOptionConfig | NumbersOptionConfig,\n> = O extends NumbersOptionConfig\n ? O['choices'] extends readonly number[]\n ? O['defaultValue'] extends readonly number[]\n ? Array<TupleToUnion<O['choices']>>\n : Array<TupleToUnion<O['choices']>> | undefined\n : O['defaultValue'] extends readonly number[]\n ? number[]\n : number[] | undefined\n : O extends NumberOptionConfig\n ? O['choices'] extends readonly number[]\n ? O['defaultValue'] extends number\n ? TupleToUnion<O['choices']>\n : TupleToUnion<O['choices']> | undefined\n : O['defaultValue'] extends number\n ? number\n : number | undefined\n : O extends CountOptionConfig\n ? O['defaultValue'] extends number\n ? number\n : number | undefined\n : never;\n\ntype StringOptionConfigToArgumentsOption<O extends StringOptionConfig | StringsOptionConfig> =\n O extends StringsOptionConfig\n ? O['choices'] extends readonly string[]\n ? O['defaultValue'] extends readonly string[]\n ? Array<TupleToUnion<O['choices']>>\n : Array<TupleToUnion<O['choices']>> | undefined\n : O['defaultValue'] extends readonly string[]\n ? string[]\n : string[] | undefined\n : O extends StringOptionConfig\n ? O['choices'] extends readonly string[]\n ? O['defaultValue'] extends string\n ? TupleToUnion<O['choices']>\n : TupleToUnion<O['choices']> | undefined\n : O['defaultValue'] extends string\n ? string\n : string | undefined\n : never;\n\ntype OptionConfigToArgumentOption<O extends OptionConfig> = O extends\n | BooleanOptionConfig\n | BooleansOptionConfig\n ? BooleanOptionConfigToArgumentsOption<O>\n : O extends CountOptionConfig | NumberOptionConfig | NumbersOptionConfig\n ? NumberOptionConfigToArgumentsOption<O>\n : O extends StringOptionConfig | StringsOptionConfig\n ? StringOptionConfigToArgumentsOption<O>\n : never;\n\ntype OptionsConfigToArgumentsOptions<O extends OptionsConfig> = {\n [K in keyof O]: OptionConfigToArgumentOption<O[K]>;\n};\n\n/** Parsed options. */\nexport type ArgumentsOptions<O extends ParserConfig> = Omit<O, 'options'> extends O\n ? null\n : O['options'] extends undefined\n ? null\n : OptionsConfigToArgumentsOptions<NonNullable<O['options']>>;\n"],"names":[],"mappings":"AAmFA,oBAAoB,GACpB,WAI+D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ArgumentsParameters.ts"],"sourcesContent":["import {type TupleToUnion} from '@jakubmazanec/ts-utils';\n\nimport {\n type ParameterConfig,\n type BooleanParameterConfig,\n type NumberParameterConfig,\n type StringParameterConfig,\n} from './ParameterConfig.js';\nimport {type ParametersConfig} from './ParametersConfig.js';\nimport {type ParserConfig} from './ParserConfig.js';\n\ntype NumberParameterConfigToArgumentsParameter<O extends NumberParameterConfig> =\n O['choices'] extends readonly number[]\n ? O['defaultValue'] extends number\n ? TupleToUnion<O['choices']>\n : TupleToUnion<O['choices']> | undefined\n : O['defaultValue'] extends number\n ? number\n : number | undefined;\n\ntype StringParameterConfigToArgumentsParameter<O extends StringParameterConfig> =\n O['choices'] extends readonly string[]\n ? O['defaultValue'] extends string\n ? TupleToUnion<O['choices']>\n : TupleToUnion<O['choices']> | undefined\n : O['defaultValue'] extends string\n ? string\n : string | undefined;\n\ntype BooleanParameterConfigToArgumentsParameter<O extends BooleanParameterConfig> =\n O['defaultValue'] extends boolean ? boolean : boolean | undefined;\n\ntype ParameterConfigToArgumentsParameter<O extends ParameterConfig> =\n O extends NumberParameterConfig\n ? NumberParameterConfigToArgumentsParameter<O>\n : O extends StringParameterConfig\n ? StringParameterConfigToArgumentsParameter<O>\n : O extends BooleanParameterConfig\n ? BooleanParameterConfigToArgumentsParameter<O>\n : never;\n\ntype ParametersConfigToArgumentsParameters<O extends ParametersConfig> = O extends readonly [\n ParameterConfig,\n ParameterConfig,\n ParameterConfig,\n ParameterConfig,\n ParameterConfig,\n ParameterConfig,\n]\n ? readonly [\n ParameterConfigToArgumentsParameter<O[0]>,\n ParameterConfigToArgumentsParameter<O[1]>,\n ParameterConfigToArgumentsParameter<O[2]>,\n ParameterConfigToArgumentsParameter<O[3]>,\n ParameterConfigToArgumentsParameter<O[4]>,\n ParameterConfigToArgumentsParameter<O[5]>,\n ]\n : O extends readonly [\n ParameterConfig,\n ParameterConfig,\n ParameterConfig,\n ParameterConfig,\n ParameterConfig,\n ]\n ? readonly [\n ParameterConfigToArgumentsParameter<O[0]>,\n ParameterConfigToArgumentsParameter<O[1]>,\n ParameterConfigToArgumentsParameter<O[2]>,\n ParameterConfigToArgumentsParameter<O[3]>,\n ParameterConfigToArgumentsParameter<O[4]>,\n ]\n : O extends readonly [ParameterConfig, ParameterConfig, ParameterConfig, ParameterConfig]\n ? readonly [\n ParameterConfigToArgumentsParameter<O[0]>,\n ParameterConfigToArgumentsParameter<O[1]>,\n ParameterConfigToArgumentsParameter<O[2]>,\n ParameterConfigToArgumentsParameter<O[3]>,\n ]\n : O extends readonly [ParameterConfig, ParameterConfig, ParameterConfig]\n ? readonly [\n ParameterConfigToArgumentsParameter<O[0]>,\n ParameterConfigToArgumentsParameter<O[1]>,\n ParameterConfigToArgumentsParameter<O[2]>,\n ]\n : O extends readonly [ParameterConfig, ParameterConfig]\n ? readonly [ParameterConfigToArgumentsParameter<O[0]>, ParameterConfigToArgumentsParameter<O[1]>]\n : O extends readonly [ParameterConfig]\n ? readonly [ParameterConfigToArgumentsParameter<O[0]>]\n : never;\n\ntype ParametersConfigToVariadicArgumentsParameters<O extends ParametersConfig> =\n O extends readonly [\n ParameterConfig,\n ParameterConfig,\n ParameterConfig,\n ParameterConfig,\n ParameterConfig,\n ParameterConfig,\n ]\n ? readonly [\n ParameterConfigToArgumentsParameter<O[0]>,\n ParameterConfigToArgumentsParameter<O[1]>,\n ParameterConfigToArgumentsParameter<O[2]>,\n ParameterConfigToArgumentsParameter<O[3]>,\n ParameterConfigToArgumentsParameter<O[4]>,\n ParameterConfigToArgumentsParameter<O[5]>,\n ...(readonly string[]),\n ]\n : O extends readonly [\n ParameterConfig,\n ParameterConfig,\n ParameterConfig,\n ParameterConfig,\n ParameterConfig,\n ]\n ? readonly [\n ParameterConfigToArgumentsParameter<O[0]>,\n ParameterConfigToArgumentsParameter<O[1]>,\n ParameterConfigToArgumentsParameter<O[2]>,\n ParameterConfigToArgumentsParameter<O[3]>,\n ParameterConfigToArgumentsParameter<O[4]>,\n ...(readonly string[]),\n ]\n : O extends readonly [ParameterConfig, ParameterConfig, ParameterConfig, ParameterConfig]\n ? readonly [\n ParameterConfigToArgumentsParameter<O[0]>,\n ParameterConfigToArgumentsParameter<O[1]>,\n ParameterConfigToArgumentsParameter<O[2]>,\n ParameterConfigToArgumentsParameter<O[3]>,\n ...(readonly string[]),\n ]\n : O extends readonly [ParameterConfig, ParameterConfig, ParameterConfig]\n ? readonly [\n ParameterConfigToArgumentsParameter<O[0]>,\n ParameterConfigToArgumentsParameter<O[1]>,\n ParameterConfigToArgumentsParameter<O[2]>,\n ...(readonly string[]),\n ]\n : O extends readonly [ParameterConfig, ParameterConfig]\n ? readonly [\n ParameterConfigToArgumentsParameter<O[0]>,\n ParameterConfigToArgumentsParameter<O[1]>,\n ...(readonly string[]),\n ]\n : O extends readonly [ParameterConfig]\n ? readonly [ParameterConfigToArgumentsParameter<O[0]>, ...(readonly string[])]\n : readonly [...(readonly string[])];\n\n/** Parsed parameters. */\nexport type ArgumentsParameters<O extends ParserConfig> = Omit<O, 'parameters'> extends O\n ? O['allowUnknownParameters'] extends true\n ? [...string[]]\n : null\n : O['parameters'] extends undefined\n ? null\n : O['allowUnknownParameters'] extends true\n ? ParametersConfigToVariadicArgumentsParameters<NonNullable<O['parameters']>>\n : ParametersConfigToArgumentsParameters<NonNullable<O['parameters']>>;\n"],"names":[],"mappings":"AAoJA,uBAAuB,GACvB,WAQwE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ArgumentsUnknownOptions.ts"],"sourcesContent":["import {type ParserConfig} from './ParserConfig.js';\n\n/** Unknown options. Unknown options are always parsed as strings. */\nexport type ArgumentsUnknownOptions<O extends ParserConfig> = O['allowUnknownOptions'] extends true\n ? Record<string, unknown>\n : null;\n"],"names":[],"mappings":"AAEA,mEAAmE,GACnE,WAES"}
|
package/dist/Argv.js
DELETED
package/dist/Argv.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Argv.ts"],"sourcesContent":["/** Unparsed arguments. */\nexport type Argv = string[];\n"],"names":[],"mappings":"AAAA,wBAAwB,GACxB,WAA4B"}
|
package/dist/CommandConfig.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/CommandConfig.ts"],"sourcesContent":["/** Parser's command configuration. */\nexport type CommandConfig = string;\n"],"names":[],"mappings":"AAAA,oCAAoC,GACpC,WAAmC"}
|
package/dist/CommandsConfig.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/CommandsConfig.ts"],"sourcesContent":["import {type CommandConfig} from './CommandConfig.js';\n\n/** Parser's commands configuration. */\nexport type CommandsConfig = readonly [CommandConfig, ...CommandConfig[]];\n"],"names":[],"mappings":"AAEA,qCAAqC,GACrC,WAA0E"}
|
package/dist/LongOptionName.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/LongOptionName.ts"],"sourcesContent":["/** Long option name. */\nexport type LongOptionName = string;\n"],"names":[],"mappings":"AAAA,sBAAsB,GACtB,WAAoC"}
|
package/dist/OptionConfig.js
DELETED
package/dist/OptionConfig.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/OptionConfig.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/sort-type-constituents -- sorting hurts readability in this case */\n\nimport {type ShortOptionName} from './ShortOptionName.js';\n\nexport type BooleanOptionConfig =\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'boolean';\n multiple?: false | undefined;\n count?: false | undefined;\n defaultValue?: undefined;\n required?: false | undefined;\n validate?: ((value: boolean) => void) | undefined;\n }\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'boolean';\n multiple?: false | undefined;\n count?: false | undefined;\n defaultValue: boolean;\n required?: false | undefined;\n validate?: ((value: boolean) => void) | undefined;\n }\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'boolean';\n multiple?: false | undefined;\n count?: false | undefined;\n defaultValue?: undefined;\n required: true;\n validate?: ((value: boolean) => void) | undefined;\n };\n\nexport type BooleansOptionConfig =\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'boolean';\n multiple: true;\n count?: false | undefined;\n defaultValue?: undefined;\n required?: false | undefined;\n arity?: number | undefined;\n validate?: ((value: boolean[]) => void) | undefined;\n }\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'boolean';\n multiple: true;\n count?: false | undefined;\n defaultValue: readonly boolean[];\n required?: false | undefined;\n arity?: number | undefined;\n validate?: ((value: boolean[]) => void) | undefined;\n }\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'boolean';\n multiple: true;\n count?: false | undefined;\n defaultValue?: undefined;\n required: true;\n arity?: number | undefined;\n validate?: ((value: boolean[]) => void) | undefined;\n };\n\nexport type NumberOptionConfig =\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'number';\n multiple?: false | undefined;\n count?: false | undefined;\n defaultValue?: undefined;\n required?: false | undefined;\n choices?: readonly number[] | undefined;\n validate?: ((value: number) => void) | undefined;\n }\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'number';\n multiple?: false | undefined;\n count?: false | undefined;\n defaultValue: number;\n required?: false | undefined;\n choices?: readonly number[] | undefined;\n validate?: ((value: number) => void) | undefined;\n }\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'number';\n multiple?: false | undefined;\n count?: false | undefined;\n defaultValue?: undefined;\n required: true;\n choices?: readonly number[] | undefined;\n validate?: ((value: number) => void) | undefined;\n };\n\nexport type NumbersOptionConfig =\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'number';\n multiple: true;\n count?: false | undefined;\n choices?: readonly number[] | undefined;\n defaultValue?: undefined;\n required?: false | undefined;\n arity?: number | undefined;\n validate?: ((value: number[]) => void) | undefined;\n }\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'number';\n multiple: true;\n count?: false | undefined;\n choices?: readonly number[] | undefined;\n defaultValue: readonly number[];\n required?: false | undefined;\n arity?: number | undefined;\n validate?: ((value: number[]) => void) | undefined;\n }\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'number';\n multiple: true;\n count?: false | undefined;\n choices?: readonly number[] | undefined;\n defaultValue?: undefined;\n required: true;\n arity?: number | undefined;\n validate?: ((value: number[]) => void) | undefined;\n };\n\nexport type CountOptionConfig =\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'number';\n multiple?: false | undefined;\n count: true;\n defaultValue?: undefined;\n required?: false | undefined;\n validate?: ((value: number) => void) | undefined;\n }\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'number';\n multiple?: false | undefined;\n count: true;\n defaultValue: number;\n required?: false | undefined;\n validate?: ((value: number) => void) | undefined;\n }\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'number';\n multiple?: false | undefined;\n count: true;\n defaultValue?: undefined;\n required: true;\n validate?: ((value: number) => void) | undefined;\n };\n\nexport type StringOptionConfig =\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'string';\n multiple?: false | undefined;\n count?: false | undefined;\n choices?: readonly string[] | undefined;\n defaultValue?: undefined;\n required?: false | undefined;\n validate?: ((value: string) => void) | undefined;\n }\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'string';\n multiple?: false | undefined;\n count?: false | undefined;\n choices?: readonly string[] | undefined;\n defaultValue: string;\n required?: false | undefined;\n validate?: ((value: string) => void) | undefined;\n }\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'string';\n multiple?: false | undefined;\n count?: false | undefined;\n choices?: readonly string[] | undefined;\n defaultValue?: undefined;\n required: true;\n validate?: ((value: string) => void) | undefined;\n };\n\nexport type StringsOptionConfig =\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'string';\n multiple: true;\n count?: false | undefined;\n choices?: readonly string[] | undefined;\n defaultValue?: undefined;\n required?: false | undefined;\n arity?: number | undefined;\n validate?: ((value: string[]) => void) | undefined;\n }\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'string';\n multiple: true;\n count?: false | undefined;\n choices?: readonly string[] | undefined;\n defaultValue: readonly string[];\n required?: false | undefined;\n arity?: number | undefined;\n validate?: ((value: string[]) => void) | undefined;\n }\n | {\n shortName?: ShortOptionName | undefined;\n description?: string | undefined;\n\n type: 'string';\n multiple: true;\n count?: false | undefined;\n choices?: readonly string[] | undefined;\n defaultValue?: undefined;\n required: true;\n arity?: number | undefined;\n validate?: ((value: string[]) => void) | undefined;\n };\n\n/** Parser's option configuration. */\nexport type OptionConfig =\n | BooleanOptionConfig\n | BooleansOptionConfig\n | CountOptionConfig\n | NumberOptionConfig\n | NumbersOptionConfig\n | StringOptionConfig\n | StringsOptionConfig;\n"],"names":[],"mappings":"AAAA,sGAAsG,GA8QtG,mCAAmC,GACnC,WAOwB"}
|
package/dist/OptionsConfig.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/OptionsConfig.ts"],"sourcesContent":["import {type OptionConfig} from './OptionConfig.js';\n\n/** Parser's options configuration. */\nexport type OptionsConfig = Record<string, OptionConfig>;\n"],"names":[],"mappings":"AAEA,oCAAoC,GACpC,WAAyD"}
|
package/dist/ParameterConfig.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ParameterConfig.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/sort-type-constituents -- sorting hurts readability in this case */\n\nexport type BooleanParameterConfig =\n | {\n label?: string | undefined;\n description?: string | undefined;\n\n type: 'boolean';\n defaultValue?: undefined;\n required?: false | undefined;\n validate?: ((value: boolean) => void) | undefined;\n }\n | {\n label?: string | undefined;\n description?: string | undefined;\n\n type: 'boolean';\n defaultValue: boolean;\n required?: false | undefined;\n validate?: ((value: boolean) => void) | undefined;\n }\n | {\n label?: string | undefined;\n description?: string | undefined;\n\n type: 'boolean';\n defaultValue?: undefined;\n required: true;\n validate?: ((value: boolean) => void) | undefined;\n };\n\nexport type NumberParameterConfig =\n | {\n label?: string | undefined;\n description?: string | undefined;\n\n type: 'number';\n defaultValue?: undefined;\n required?: false | undefined;\n choices?: readonly number[] | undefined;\n validate?: ((value: number) => void) | undefined;\n }\n | {\n label?: string | undefined;\n description?: string | undefined;\n\n type: 'number';\n defaultValue: number;\n required?: false | undefined;\n choices?: readonly number[] | undefined;\n validate?: ((value: number) => void) | undefined;\n }\n | {\n label?: string | undefined;\n description?: string | undefined;\n\n type: 'number';\n defaultValue?: undefined;\n required: true;\n choices?: readonly number[] | undefined;\n validate?: ((value: number) => void) | undefined;\n };\n\nexport type StringParameterConfig =\n | {\n label?: string | undefined;\n description?: string | undefined;\n\n type: 'string';\n defaultValue?: undefined;\n required?: false | undefined;\n choices?: readonly string[] | undefined;\n validate?: ((value: string) => void) | undefined;\n }\n | {\n label?: string | undefined;\n description?: string | undefined;\n\n type: 'string';\n defaultValue: string;\n required?: false | undefined;\n choices?: readonly string[] | undefined;\n validate?: ((value: string) => void) | undefined;\n }\n | {\n label?: string | undefined;\n description?: string | undefined;\n\n type: 'string';\n defaultValue?: undefined;\n required: true;\n choices?: readonly string[] | undefined;\n validate?: ((value: string) => void) | undefined;\n };\n\n/** Parser's parameter configuration. */\nexport type ParameterConfig =\n | BooleanParameterConfig\n | NumberParameterConfig\n | StringParameterConfig;\n"],"names":[],"mappings":"AAAA,sGAAsG,GA+FtG,sCAAsC,GACtC,WAG0B"}
|