@cli-forge/parser 0.10.1 → 0.12.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.
Files changed (134) hide show
  1. package/LICENSE.md +5 -0
  2. package/README.md +202 -6
  3. package/dist/index.js.map +1 -0
  4. package/dist/lib/config-files/configuration-loader.js.map +1 -0
  5. package/dist/lib/config-files/index.d.ts +3 -0
  6. package/dist/lib/config-files/index.js +7 -0
  7. package/dist/lib/config-files/index.js.map +1 -0
  8. package/{src → dist}/lib/config-files/json-file-loader.d.ts +1 -1
  9. package/{src → dist}/lib/config-files/json-file-loader.js +2 -2
  10. package/dist/lib/config-files/json-file-loader.js.map +1 -0
  11. package/{src → dist}/lib/config-files/package-json-loader.d.ts +1 -1
  12. package/{src → dist}/lib/config-files/package-json-loader.js +2 -2
  13. package/dist/lib/config-files/package-json-loader.js.map +1 -0
  14. package/dist/lib/config-files/utils.js.map +1 -0
  15. package/dist/lib/helpers.js.map +1 -0
  16. package/dist/lib/option-types/array.js.map +1 -0
  17. package/dist/lib/option-types/boolean.js.map +1 -0
  18. package/{src → dist}/lib/option-types/common.d.ts +1 -1
  19. package/dist/lib/option-types/common.js.map +1 -0
  20. package/dist/lib/option-types/index.d.ts +15 -0
  21. package/{src → dist}/lib/option-types/index.js +1 -0
  22. package/dist/lib/option-types/index.js.map +1 -0
  23. package/dist/lib/option-types/number.js.map +1 -0
  24. package/dist/lib/option-types/object.d.ts +75 -0
  25. package/dist/lib/option-types/object.js.map +1 -0
  26. package/dist/lib/option-types/option-config-to-type.d.ts +9 -0
  27. package/dist/lib/option-types/option-config-to-type.js.map +1 -0
  28. package/dist/lib/option-types/option-config.d.ts +24 -0
  29. package/dist/lib/option-types/option-config.js.map +1 -0
  30. package/dist/lib/option-types/string.js.map +1 -0
  31. package/dist/lib/option-types/type-resolution.d.ts +132 -0
  32. package/dist/lib/option-types/type-resolution.js +7 -0
  33. package/dist/lib/option-types/type-resolution.js.map +1 -0
  34. package/dist/lib/parser.d.ts +218 -0
  35. package/{src → dist}/lib/parser.js +84 -13
  36. package/dist/lib/parser.js.map +1 -0
  37. package/dist/lib/parsers/array.js.map +1 -0
  38. package/dist/lib/parsers/boolean.js.map +1 -0
  39. package/dist/lib/parsers/number.js.map +1 -0
  40. package/{src → dist}/lib/parsers/object.d.ts +1 -1
  41. package/{src → dist}/lib/parsers/object.js +22 -1
  42. package/dist/lib/parsers/object.js.map +1 -0
  43. package/dist/lib/parsers/parser-map.js.map +1 -0
  44. package/dist/lib/parsers/string.js.map +1 -0
  45. package/dist/lib/parsers/typings.d.ts +11 -0
  46. package/dist/lib/parsers/typings.js.map +1 -0
  47. package/dist/lib/utils/case-transformations.js.map +1 -0
  48. package/dist/lib/utils/chain.d.ts +331 -0
  49. package/dist/lib/utils/chain.js.map +1 -0
  50. package/dist/lib/utils/flags.js.map +1 -0
  51. package/dist/lib/utils/get-configured-key.d.ts +3 -0
  52. package/dist/lib/utils/get-configured-key.js.map +1 -0
  53. package/dist/lib/utils/read-default-value.d.ts +2 -0
  54. package/{src → dist}/lib/utils/read-default-value.js +2 -0
  55. package/dist/lib/utils/read-default-value.js.map +1 -0
  56. package/package.json +18 -6
  57. package/src/lib/config-files/README.md +10 -0
  58. package/src/index.js.map +0 -1
  59. package/src/lib/config-files/configuration-loader.js.map +0 -1
  60. package/src/lib/config-files/index.d.ts +0 -3
  61. package/src/lib/config-files/index.js +0 -7
  62. package/src/lib/config-files/index.js.map +0 -1
  63. package/src/lib/config-files/json-file-loader.js.map +0 -1
  64. package/src/lib/config-files/package-json-loader.js.map +0 -1
  65. package/src/lib/config-files/utils.js.map +0 -1
  66. package/src/lib/helpers.js.map +0 -1
  67. package/src/lib/option-types/array.js.map +0 -1
  68. package/src/lib/option-types/boolean.js.map +0 -1
  69. package/src/lib/option-types/common.js.map +0 -1
  70. package/src/lib/option-types/index.d.ts +0 -14
  71. package/src/lib/option-types/index.js.map +0 -1
  72. package/src/lib/option-types/number.js.map +0 -1
  73. package/src/lib/option-types/object.d.ts +0 -10
  74. package/src/lib/option-types/object.js.map +0 -1
  75. package/src/lib/option-types/option-config-to-type.d.ts +0 -26
  76. package/src/lib/option-types/option-config-to-type.js.map +0 -1
  77. package/src/lib/option-types/option-config.d.ts +0 -15
  78. package/src/lib/option-types/option-config.js.map +0 -1
  79. package/src/lib/option-types/string.js.map +0 -1
  80. package/src/lib/parser.d.ts +0 -269
  81. package/src/lib/parser.js.map +0 -1
  82. package/src/lib/parsers/array.js.map +0 -1
  83. package/src/lib/parsers/boolean.js.map +0 -1
  84. package/src/lib/parsers/number.js.map +0 -1
  85. package/src/lib/parsers/object.js.map +0 -1
  86. package/src/lib/parsers/parser-map.js.map +0 -1
  87. package/src/lib/parsers/string.js.map +0 -1
  88. package/src/lib/parsers/typings.d.ts +0 -11
  89. package/src/lib/parsers/typings.js.map +0 -1
  90. package/src/lib/utils/case-transformations.js.map +0 -1
  91. package/src/lib/utils/chain.d.ts +0 -397
  92. package/src/lib/utils/chain.js.map +0 -1
  93. package/src/lib/utils/flags.js.map +0 -1
  94. package/src/lib/utils/get-configured-key.d.ts +0 -3
  95. package/src/lib/utils/get-configured-key.js.map +0 -1
  96. package/src/lib/utils/read-default-value.d.ts +0 -2
  97. package/src/lib/utils/read-default-value.js.map +0 -1
  98. /package/{src → dist}/index.d.ts +0 -0
  99. /package/{src → dist}/index.js +0 -0
  100. /package/{src → dist}/lib/config-files/configuration-loader.d.ts +0 -0
  101. /package/{src → dist}/lib/config-files/configuration-loader.js +0 -0
  102. /package/{src → dist}/lib/config-files/utils.d.ts +0 -0
  103. /package/{src → dist}/lib/config-files/utils.js +0 -0
  104. /package/{src → dist}/lib/helpers.d.ts +0 -0
  105. /package/{src → dist}/lib/helpers.js +0 -0
  106. /package/{src → dist}/lib/option-types/array.d.ts +0 -0
  107. /package/{src → dist}/lib/option-types/array.js +0 -0
  108. /package/{src → dist}/lib/option-types/boolean.d.ts +0 -0
  109. /package/{src → dist}/lib/option-types/boolean.js +0 -0
  110. /package/{src → dist}/lib/option-types/common.js +0 -0
  111. /package/{src → dist}/lib/option-types/number.d.ts +0 -0
  112. /package/{src → dist}/lib/option-types/number.js +0 -0
  113. /package/{src → dist}/lib/option-types/object.js +0 -0
  114. /package/{src → dist}/lib/option-types/option-config-to-type.js +0 -0
  115. /package/{src → dist}/lib/option-types/option-config.js +0 -0
  116. /package/{src → dist}/lib/option-types/string.d.ts +0 -0
  117. /package/{src → dist}/lib/option-types/string.js +0 -0
  118. /package/{src → dist}/lib/parsers/array.d.ts +0 -0
  119. /package/{src → dist}/lib/parsers/array.js +0 -0
  120. /package/{src → dist}/lib/parsers/boolean.d.ts +0 -0
  121. /package/{src → dist}/lib/parsers/boolean.js +0 -0
  122. /package/{src → dist}/lib/parsers/number.d.ts +0 -0
  123. /package/{src → dist}/lib/parsers/number.js +0 -0
  124. /package/{src → dist}/lib/parsers/parser-map.d.ts +0 -0
  125. /package/{src → dist}/lib/parsers/parser-map.js +0 -0
  126. /package/{src → dist}/lib/parsers/string.d.ts +0 -0
  127. /package/{src → dist}/lib/parsers/string.js +0 -0
  128. /package/{src → dist}/lib/parsers/typings.js +0 -0
  129. /package/{src → dist}/lib/utils/case-transformations.d.ts +0 -0
  130. /package/{src → dist}/lib/utils/case-transformations.js +0 -0
  131. /package/{src → dist}/lib/utils/chain.js +0 -0
  132. /package/{src → dist}/lib/utils/flags.d.ts +0 -0
  133. /package/{src → dist}/lib/utils/flags.js +0 -0
  134. /package/{src → dist}/lib/utils/get-configured-key.js +0 -0
@@ -0,0 +1,218 @@
1
+ import { OptionConfigToType, ResolveProperties } from './option-types/option-config-to-type';
2
+ import { MakeUndefinedPropertiesOptional, WithAdditionalProperties, WithOptional } from './option-types/type-resolution';
3
+ import { InternalOptionConfig, ObjectOptionConfig, StringOptionConfig, NumberOptionConfig, BooleanOptionConfig, ArrayOptionConfig, OptionConfig } from './option-types';
4
+ import { Parser, ParserContext } from './parsers/typings';
5
+ import { ConfigurationProvider } from './config-files/configuration-loader';
6
+ /**
7
+ * Defines the option configuration passed to {@link ArgvParser.env}.
8
+ */
9
+ export type EnvOptionConfig = {
10
+ prefix?: string;
11
+ reflect?: boolean;
12
+ populate?: boolean;
13
+ };
14
+ /**
15
+ * Base type for parsed arguments.
16
+ */
17
+ export type ParsedArgs<T = never> = [T] extends [never] ? {
18
+ /**
19
+ * Contains any unmatched arguments as originally passed to the parser.
20
+ */
21
+ unmatched: string[];
22
+ /**
23
+ * Contains any arguments passed after `--`, which halts parsing of flags.
24
+ */
25
+ '--'?: string[];
26
+ } : {
27
+ /**
28
+ * Contains any unmatched arguments as originally passed to the parser.
29
+ */
30
+ unmatched: string[];
31
+ /**
32
+ * Contains any arguments passed after `--`, which halts parsing of flags.
33
+ */
34
+ '--'?: string[];
35
+ } & T;
36
+ /**
37
+ * Extra options for the parser
38
+ */
39
+ export type ParserOptions<T extends ParsedArgs = ParsedArgs> = {
40
+ /**
41
+ * Can be used to implement custom parser types.
42
+ */
43
+ extraParsers?: Record<string, Parser<any>>;
44
+ /**
45
+ * Can be used to implement custom handling for unmatched arguments.
46
+ * @returns true if the argument was handled, false if it was not
47
+ */
48
+ unmatchedParser?: (arg: string, tokens: string[], parser: ArgvParser<T>) => boolean;
49
+ };
50
+ export interface ReadonlyArgvParser<TArgs extends ParsedArgs> {
51
+ configuredOptions: Readonly<{
52
+ [key in keyof TArgs]: InternalOptionConfig;
53
+ }>;
54
+ configuredPositionals: readonly Readonly<InternalOptionConfig>[];
55
+ options: Readonly<Required<ParserOptions<TArgs>>>;
56
+ }
57
+ /**
58
+ * The main parser class. This class is used to configure and parse arguments.
59
+ *
60
+ * {@link parser} is a small helper function to create a new parser instance.
61
+ */
62
+ export declare class ArgvParser<TArgs extends ParsedArgs = {
63
+ unmatched: string[];
64
+ }> implements ReadonlyArgvParser<TArgs> {
65
+ /**
66
+ * The configured options for the parser.
67
+ */
68
+ configuredOptions: {
69
+ [key in keyof TArgs]: InternalOptionConfig;
70
+ };
71
+ /**
72
+ * The configured positional arguments for the parser
73
+ */
74
+ configuredPositionals: InternalOptionConfig[];
75
+ /**
76
+ * The configured conflicts for the parser. If an option is set, and a conflicting option is also set, an error will be thrown.
77
+ */
78
+ configuredConflicts: Record<string, Set<string>>;
79
+ /**
80
+ * The configured implies for the parser. If an option is set, the implied option must also be set.
81
+ */
82
+ configuredImplies: Record<string, Set<string>>;
83
+ /**
84
+ * The configuration for the parser itself
85
+ */
86
+ options: Required<ParserOptions<TArgs>>;
87
+ /**
88
+ * The parsers used to parse individual option types.
89
+ */
90
+ parserMap: Record<string, Parser<any>>;
91
+ private configuredConfigurationProviders;
92
+ /**
93
+ * If set, options can be populated from environment variables of the form `${envPrefix}_${optionName}`.
94
+ */
95
+ private envPrefix?;
96
+ private shouldReadFromEnv?;
97
+ private shouldReflectEnv?;
98
+ /**
99
+ * Creates a new parser. Normally using {@link parser} is preferred.
100
+ * @param options
101
+ */
102
+ constructor(options?: ParserOptions<TArgs>);
103
+ /**
104
+ * Registers a new option with the parser.
105
+ * @param name The name of the option
106
+ * @param config The configuration for the option. See {@link UnknownOptionConfig}
107
+ * @returns Updated parser instance with the new option registered.
108
+ */
109
+ option<TOption extends string, TCoerce, const TProps extends Record<string, {
110
+ type: string;
111
+ }>, TAdditionalProps extends false | 'string' | 'number' | 'boolean' = false>(name: TOption, config: ObjectOptionConfig<TCoerce, TProps, TAdditionalProps>): ArgvParser<TArgs & MakeUndefinedPropertiesOptional<{
112
+ [key in TOption]: WithOptional<unknown extends TCoerce ? WithAdditionalProperties<ResolveProperties<TProps>, TAdditionalProps> : TCoerce, ObjectOptionConfig<TCoerce, TProps, TAdditionalProps>>;
113
+ }>>;
114
+ option<TOption extends string, const TConfig extends StringOptionConfig<any, any>>(name: TOption, config: TConfig): ArgvParser<TArgs & MakeUndefinedPropertiesOptional<{
115
+ [key in TOption]: OptionConfigToType<TConfig>;
116
+ }>>;
117
+ option<TOption extends string, const TConfig extends NumberOptionConfig<any, any>>(name: TOption, config: TConfig): ArgvParser<TArgs & MakeUndefinedPropertiesOptional<{
118
+ [key in TOption]: OptionConfigToType<TConfig>;
119
+ }>>;
120
+ option<TOption extends string, const TConfig extends BooleanOptionConfig<any, any>>(name: TOption, config: TConfig): ArgvParser<TArgs & {
121
+ [key in TOption]: OptionConfigToType<TConfig>;
122
+ }>;
123
+ option<TOption extends string, const TConfig extends ArrayOptionConfig<any, any>>(name: TOption, config: TConfig): ArgvParser<TArgs & MakeUndefinedPropertiesOptional<{
124
+ [key in TOption]: OptionConfigToType<TConfig>;
125
+ }>>;
126
+ option<TOption extends string, const TOptionConfig extends OptionConfig<any, any, any, any>>(name: TOption, config: TOptionConfig): ArgvParser<TArgs & MakeUndefinedPropertiesOptional<{
127
+ [key in TOption]: OptionConfigToType<TOptionConfig>;
128
+ }>>;
129
+ /**
130
+ * Registers a new positional argument with the parser.
131
+ * @param name The name of the positional argument
132
+ * @param config The configuration for the positional argument. See {@link UnknownOptionConfig}
133
+ * @returns Updated parser instance with the new positional argument registered.
134
+ */
135
+ positional<TOption extends string, TCoerce, const TProps extends Record<string, {
136
+ type: string;
137
+ }>, TAdditionalProps extends false | 'string' | 'number' | 'boolean' = false>(name: TOption, config: ObjectOptionConfig<TCoerce, TProps, TAdditionalProps>): ArgvParser<TArgs & MakeUndefinedPropertiesOptional<{
138
+ [key in TOption]: WithOptional<unknown extends TCoerce ? WithAdditionalProperties<ResolveProperties<TProps>, TAdditionalProps> : TCoerce, ObjectOptionConfig<TCoerce, TProps, TAdditionalProps>>;
139
+ }>>;
140
+ positional<TOption extends string, const TConfig extends StringOptionConfig<any, any>>(name: TOption, config: TConfig): ArgvParser<TArgs & MakeUndefinedPropertiesOptional<{
141
+ [key in TOption]: OptionConfigToType<TConfig>;
142
+ }>>;
143
+ positional<TOption extends string, const TConfig extends NumberOptionConfig<any, any>>(name: TOption, config: TConfig): ArgvParser<TArgs & MakeUndefinedPropertiesOptional<{
144
+ [key in TOption]: OptionConfigToType<TConfig>;
145
+ }>>;
146
+ positional<TOption extends string, const TConfig extends BooleanOptionConfig<any, any>>(name: TOption, config: TConfig): ArgvParser<TArgs & MakeUndefinedPropertiesOptional<{
147
+ [key in TOption]: OptionConfigToType<TConfig>;
148
+ }>>;
149
+ positional<TOption extends string, const TConfig extends ArrayOptionConfig<any, any>>(name: TOption, config: TConfig): ArgvParser<TArgs & MakeUndefinedPropertiesOptional<{
150
+ [key in TOption]: OptionConfigToType<TConfig>;
151
+ }>>;
152
+ positional<TOption extends string, const TOptionConfig extends OptionConfig<any, any, any, any>>(name: TOption, config: TOptionConfig): ArgvParser<TArgs & MakeUndefinedPropertiesOptional<{
153
+ [key in TOption]: OptionConfigToType<TOptionConfig>;
154
+ }>>;
155
+ /**
156
+ * Enables environment variable population for options.
157
+ * @param envPrefix Prefix for environment variables. The full environment variable name will be `${envPrefix}_${optionName}`.
158
+ */
159
+ env(envPrefix?: string): typeof this;
160
+ env(options: EnvOptionConfig): typeof this;
161
+ /**
162
+ * Registers a configuration provider to read configuration from.
163
+ * @param provider The configuration provider to register.
164
+ */
165
+ config(provider: ConfigurationProvider<TArgs>): this;
166
+ /**
167
+ * Parses an array of arguments into a structured object.
168
+ * @param argv The array of arguments to parse
169
+ * @returns The parsed arguments
170
+ */
171
+ parse(argv?: string[]): TArgs;
172
+ private normalizeOptions;
173
+ private validateAndNormalizeResults;
174
+ private readFromEnv;
175
+ private reflectEnv;
176
+ private cachedConfigKey;
177
+ private cachedConfig;
178
+ private getEnvKey;
179
+ private readFromConfig;
180
+ /**
181
+ * Registers that a set of options cannot be provided at the same time.
182
+ * @param options The options that cannot be provided together.
183
+ */
184
+ conflicts(...options: [string, string, ...string[]]): this;
185
+ /**
186
+ * Registers that the presence of one option implies the presence of one or more other options.
187
+ * @param options The options that imply the other option.
188
+ */
189
+ implies(option: string, ...options: string[]): this;
190
+ /**
191
+ * Used to combine two parsers into a single parser. Mutates `this`, but returns with updated typings
192
+ * @param parser The parser to augment the current parser with.
193
+ * @returns The updated parser instance.
194
+ */
195
+ augment<TAugment extends ParsedArgs>(parser: ArgvParser<TAugment>): ArgvParser<TArgs & TAugment>;
196
+ clone(parserOptions?: ParserOptions<TArgs>): ArgvParser<TArgs>;
197
+ asReadonly(): ReadonlyArgvParser<TArgs>;
198
+ }
199
+ /**
200
+ * Small helper function to create a new parser instance.
201
+ * @param opts see {@link ParserOptions}
202
+ * @returns new parser, see {@link ArgvParser}
203
+ */
204
+ export declare function parser(opts?: ParserOptions): ArgvParser<{
205
+ /**
206
+ * Contains any unmatched arguments as originally passed to the parser.
207
+ */
208
+ unmatched: string[];
209
+ /**
210
+ * Contains any arguments passed after `--`, which halts parsing of flags.
211
+ */
212
+ '--'?: string[];
213
+ }>;
214
+ export declare function tryParseValue(parser: Parser<InternalOptionConfig>, input: ParserContext<InternalOptionConfig>): any;
215
+ export declare class ValidationFailedError<T> extends AggregateError {
216
+ partialArgV: Partial<T>;
217
+ constructor(errors: Error[], message: string, partialArgV: Partial<T>);
218
+ }
@@ -65,12 +65,7 @@ class ArgvParser {
65
65
  ...this.options.extraParsers,
66
66
  };
67
67
  }
68
- /**
69
- * Registers a new option with the parser.
70
- * @param name The name of the option
71
- * @param config The configuration for the option. See {@link OptionConfig}
72
- * @returns Updated parser instance with the new option registered.
73
- */
68
+ // Implementation
74
69
  option(name, config) {
75
70
  const thisAsNewType = this;
76
71
  if (name.includes('-')) {
@@ -87,12 +82,7 @@ class ArgvParser {
87
82
  }
88
83
  return this;
89
84
  }
90
- /**
91
- * Registers a new positional argument with the parser.
92
- * @param name The name of the positional argument
93
- * @param config The configuration for the positional argument. See {@link OptionConfig}
94
- * @returns Updated parser instance with the new positional argument registered.
95
- */
85
+ // Implementation
96
86
  positional(name, config) {
97
87
  return this.option(name, {
98
88
  ...config,
@@ -234,6 +224,18 @@ class ArgvParser {
234
224
  normalized[configuration.key] ??= (0, read_default_value_1.readDefaultValue)(configuration)[0];
235
225
  }
236
226
  }
227
+ // Apply nested defaults for object options (before coerce)
228
+ if (configuration.type === 'object' &&
229
+ normalized[configuration.key] !== undefined) {
230
+ const objectConfig = configuration;
231
+ if (objectConfig.properties) {
232
+ normalized[configuration.key] = applyNestedObjectDefaults(normalized[configuration.key], objectConfig);
233
+ // Now apply coerce after defaults have been applied
234
+ if (configuration.coerce) {
235
+ normalized[configuration.key] = configuration.coerce(normalized[configuration.key]);
236
+ }
237
+ }
238
+ }
237
239
  this.reflectEnv(configuration, normalized[configuration.key]);
238
240
  }
239
241
  return normalized;
@@ -271,6 +273,12 @@ class ArgvParser {
271
273
  const configuration = this.configuredOptions[configurationKey];
272
274
  try {
273
275
  validateOption(configuration, normalized[configuration.key]);
276
+ // Handle nested object properties
277
+ if (configuration.type === 'object' &&
278
+ configuration.properties &&
279
+ normalized[configuration.key] !== undefined) {
280
+ normalized[configuration.key] = normalizeAndValidateObjectProperties(normalized[configuration.key], configuration, configuration.key, errors);
281
+ }
274
282
  if (normalized[configuration.key] !== undefined) {
275
283
  validateConflicts(configuration);
276
284
  validateImplications(configuration);
@@ -427,7 +435,8 @@ function validateOption(optionConfig, value) {
427
435
  return true;
428
436
  };
429
437
  }
430
- if (optionConfig.validate && value !== undefined) {
438
+ if (optionConfig.validate && value != undefined) {
439
+ value;
431
440
  let result;
432
441
  try {
433
442
  result = optionConfig.validate(value);
@@ -458,6 +467,11 @@ function tryParseValue(parser, input) {
458
467
  }
459
468
  try {
460
469
  const val = parser(input);
470
+ // For object types, defer coerce until after nested defaults are applied
471
+ // For other types, apply coerce immediately
472
+ if (input.config.type === 'object') {
473
+ return val;
474
+ }
461
475
  return input.config.coerce?.(val) ?? val;
462
476
  }
463
477
  catch (e) {
@@ -478,4 +492,61 @@ class ValidationFailedError extends AggregateError {
478
492
  }
479
493
  }
480
494
  exports.ValidationFailedError = ValidationFailedError;
495
+ /**
496
+ * Applies default values to nested properties of an object option recursively.
497
+ * This is called during normalization, before coerce is applied.
498
+ * This function is only called when the parent object exists (has at least one property set).
499
+ * @param value The current value of the object
500
+ * @param config The object option configuration
501
+ * @returns The object with defaults applied to nested properties
502
+ */
503
+ function applyNestedObjectDefaults(value, config) {
504
+ const normalized = { ...value };
505
+ for (const propKey in config.properties) {
506
+ const propConfig = config.properties[propKey];
507
+ // Apply defaults for undefined properties
508
+ if (normalized[propKey] === undefined && propConfig.default !== undefined) {
509
+ normalized[propKey] = (0, read_default_value_1.readDefaultValue)(propConfig)[0];
510
+ }
511
+ // Recursively handle nested objects
512
+ if (propConfig.type === 'object' &&
513
+ 'properties' in propConfig &&
514
+ normalized[propKey] !== undefined) {
515
+ normalized[propKey] = applyNestedObjectDefaults(normalized[propKey], propConfig);
516
+ }
517
+ }
518
+ return normalized;
519
+ }
520
+ /**
521
+ * Validates nested properties of an object option recursively.
522
+ * This is called during validation, after defaults have been applied and before coerce.
523
+ * Checks required properties at any depth.
524
+ * @param value The current value of the object
525
+ * @param config The object option configuration
526
+ * @param keyPath The path to this property for error messages
527
+ * @param errors Array to collect validation errors
528
+ * @returns The validated value
529
+ */
530
+ function normalizeAndValidateObjectProperties(value, config, keyPath, errors) {
531
+ // If the object is undefined and not required, skip processing
532
+ if (value === undefined) {
533
+ return value;
534
+ }
535
+ const normalized = { ...value };
536
+ for (const propKey in config.properties) {
537
+ const propConfig = config.properties[propKey];
538
+ const propPath = `${keyPath}.${propKey}`;
539
+ // Validate required properties
540
+ if (propConfig.required && normalized[propKey] === undefined) {
541
+ const e = new Error(`Missing required option ${propPath}`);
542
+ delete e.stack;
543
+ errors.push(e);
544
+ }
545
+ // Recursively handle nested objects
546
+ if (propConfig.type === 'object' && 'properties' in propConfig) {
547
+ normalized[propKey] = normalizeAndValidateObjectProperties(normalized[propKey], propConfig, propPath, errors);
548
+ }
549
+ }
550
+ return normalized;
551
+ }
481
552
  //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/lib/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../src/lib/parsers/array.ts"],"names":[],"mappings":";;;AACA,0CAA4C;AAG5C,MAAM,UAAU,GAAG;IACjB,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;CACA,CAAC;AACX,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE;IAChC,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,OAAO,GAAoC,KAAK,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,IAAI,KAAK,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,GAAG,IAAI,IAAI,CAAC;YACd,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,IAAI,UAAU,EAAE,CAAC;gBACvB,OAAO,GAAG,IAA+B,CAAC;YAC5C,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpB,GAAG,GAAG,EAAE,CAAC;YACX,CAAC;iBAAM,CAAC;gBACN,GAAG,IAAI,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEK,MAAM,WAAW,GAAwC,CAE9D,EACA,MAAM,EACN,MAAM,EACN,OAAO,GACoC,EAAE,EAAE;IAC/C,MAAM,MAAM,GACV,MAAM,CAAC,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAM;QACvB,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAM,CAAC;IACpC,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IACzB,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,IAAA,kBAAU,EAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACpB,MAAM;QACR,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IACD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACrD,CAAC,CAAC;AA1BW,QAAA,WAAW,eA0BtB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../../src/lib/parsers/boolean.ts"],"names":[],"mappings":";;;AACA,0CAA4C;AAGrC,MAAM,aAAa,GAA0C,CAAC,EACnE,MAAM,EACN,YAAY,GACb,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE;QACnB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAA,kBAAU,EAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACpC,CAAC,CAAC;AApBW,QAAA,aAAa,iBAoBxB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../../src/lib/parsers/number.ts"],"names":[],"mappings":";;;AACA,0CAA4C;AAC5C,uCAAyC;AAGlC,MAAM,YAAY,GAAyC,CAAC,EACjE,MAAM,GACP,EAAE,EAAE;IACH,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IAC3B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,sBAAY,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,IAAA,kBAAU,EAAC,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,IAAI,sBAAY,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC,CAAC;AAZW,QAAA,YAAY,gBAYvB"}
@@ -1,3 +1,3 @@
1
1
  import { Internal, ObjectOptionConfig } from '../option-types';
2
2
  import { Parser } from './typings';
3
- export declare const objectParser: Parser<Internal<ObjectOptionConfig>>;
3
+ export declare const objectParser: Parser<Internal<ObjectOptionConfig<any, any, any>>>;
@@ -11,7 +11,28 @@ const objectParser = ({ tokens, config, providedFlag, current, }) => {
11
11
  // We don't care about the first part, as the base parser has already matched the flag.
12
12
  const parts = providedFlag?.split('.').slice(1);
13
13
  if (!parts?.length) {
14
- throw new Error(`${config.key} is configured as an object, but no properties were provided. Pass properties like so: --${config.key}.foo bar --${config.key}.baz qux`);
14
+ // When no dot notation is provided (e.g., just --config), try to parse as JSON string
15
+ const token = tokens.shift();
16
+ if (!token) {
17
+ throw new Error(`${config.key} is configured as an object, but no value was provided. Pass properties like so: --${config.key}.foo bar --${config.key}.baz qux, or provide a JSON string: --${config.key} '{"foo": "bar"}'`);
18
+ }
19
+ try {
20
+ const parsed = JSON.parse(token);
21
+ if (typeof parsed !== 'object' ||
22
+ parsed === null ||
23
+ Array.isArray(parsed)) {
24
+ throw new Error(`Expected ${config.key} to be a JSON object, but got ${typeof parsed}`);
25
+ }
26
+ // Merge parsed JSON with existing values, with JSON taking precedence (last value wins)
27
+ // This matches the behavior of dot notation where later flags override earlier ones
28
+ return { ...current, ...parsed };
29
+ }
30
+ catch (e) {
31
+ if (e instanceof SyntaxError) {
32
+ throw new Error(`Failed to parse ${config.key} as JSON: ${e.message}. Either provide a valid JSON string or use dot notation: --${config.key}.foo bar`);
33
+ }
34
+ throw e;
35
+ }
15
36
  }
16
37
  const { config: propConfig, readValue, setValue } = parsePath(parts);
17
38
  const currentValue = readValue();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../src/lib/parsers/object.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser-map.js","sourceRoot":"","sources":["../../../src/lib/parsers/parser-map.ts"],"names":[],"mappings":";;;AAAA,uCAA0C;AAC1C,qCAAwC;AACxC,qCAAwC;AACxC,mCAAsC;AACtC,qCAAwC;AAG3B,QAAA,SAAS,GAAgC;IACpD,MAAM,EAAE,qBAAY;IACpB,MAAM,EAAE,qBAAY;IACpB,OAAO,EAAE,uBAAa;IACtB,KAAK,EAAE,mBAAW;IAClB,MAAM,EAAE,qBAAY;CACrB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../../src/lib/parsers/string.ts"],"names":[],"mappings":";;;AACA,0CAA4C;AAC5C,uCAAyC;AAGlC,MAAM,YAAY,GAAyC,CAAC,EACjE,MAAM,GACP,EAAE,EAAE;IACH,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IAC3B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,sBAAY,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,IAAA,kBAAU,EAAC,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,IAAI,sBAAY,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAZW,QAAA,YAAY,gBAYvB"}
@@ -0,0 +1,11 @@
1
+ import { UnknownOptionConfig } from '../option-types';
2
+ export type ParserContext<TConfig extends UnknownOptionConfig> = {
3
+ config: TConfig;
4
+ tokens: string[];
5
+ current?: any;
6
+ providedFlag?: string;
7
+ };
8
+ export type Parser<TConfig extends UnknownOptionConfig, T = any> = (input: ParserContext<TConfig>) => T;
9
+ export declare class NoValueError extends Error {
10
+ constructor();
11
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typings.js","sourceRoot":"","sources":["../../../src/lib/parsers/typings.ts"],"names":[],"mappings":";;;AAWA,MAAa,YAAa,SAAQ,KAAK;IACrC;QACE,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC5B,CAAC;CACF;AAJD,oCAIC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"case-transformations.js","sourceRoot":"","sources":["../../../src/lib/utils/case-transformations.ts"],"names":[],"mappings":";;AAAA,sDAEC;AAED,4EA+BC;AAED,8BAIC;AAzCD,SAAgB,qBAAqB,CAAC,GAAW;IAC/C,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,SAAgB,gCAAgC,CAAC,GAAW;IAC1D,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,IAAwB,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1B,CAAC;YACD,WAAW,GAAG,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QACD,oDAAoD;QACpD,IAAI,IAAI,IAAI,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxB,WAAW,GAAG,IAAI,CAAC;YACnB,sCAAsC;QACxC,CAAC;aAAM,IACL,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI;YAC5B,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;YAC3B,WAAW,CAAC,MAAM,GAAG,CAAC,EACtB,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,WAAW,IAAI,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AACvC,CAAC;AAED,SAAgB,SAAS,CAAC,MAA0B,EAAE,GAAW;IAC/D,OAAO,MAAM;QACX,CAAC,CAAC,GAAG,MAAM,IAAI,gCAAgC,CAAC,GAAG,CAAC,EAAE;QACtD,CAAC,CAAC,gCAAgC,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC"}