@jakubmazanec/args 2.0.18-next.9db8be45 → 2.0.18-next.fa06a28e

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../source/internals/expandArguments.ts"],
4
- "sourcesContent": ["import {type Argv} from '../Argv.js';\nimport {isShortOptionsGroup} from './isShortOptionsGroup.js';\n\n/**\n * Converts short options group in a provided list of arguments into separate short options.\n *\n * @param argv Arguments.\n * @return Arguments that contain no short options group\n */\nexport function expandArguments(argv: Argv): Argv {\n let expandedArguments = [];\n\n for (let arg of argv) {\n if (isShortOptionsGroup(arg)) {\n expandedArguments.push(...[...arg].slice(1).map((value) => `-${value}`));\n } else {\n expandedArguments.push(arg);\n }\n }\n\n return expandedArguments;\n}\n"],
5
- "mappings": ";AACA,SAAQ,2BAA0B;AAQ3B,gBAAS,gBAAgB,MAAkB;AAChD,MAAI,oBAAoB,CAAC;AAEzB,WAAS,OAAO,MAAM;AACpB,QAAI,oBAAoB,GAAG,GAAG;AAC5B,wBAAkB,KAAK,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK,EAAE,CAAC;AAAA,IACzE,OAAO;AACL,wBAAkB,KAAK,GAAG;AAAA,IAC5B;AAAA,EACF;AAEA,SAAO;AACT;",
4
+ "sourcesContent": ["import {type Argv} from '../Argv.js';\nimport {isShortOptionsGroup} from './isShortOptionsGroup.js';\n\n/**\n * Converts short options group in a provided list of arguments into separate short options.\n *\n * @param argv Arguments.\n * @return Arguments that contain no short options group\n */\nexport function expandArguments(argv: Argv): Argv {\n let expandedArguments = [];\n\n for (let arg of argv) {\n if (isShortOptionsGroup(arg)) {\n // eslint-disable-next-line @typescript-eslint/no-misused-spread -- ok in the context of strings that are arguments\n expandedArguments.push(...[...arg].slice(1).map((value) => `-${value}`));\n } else {\n expandedArguments.push(arg);\n }\n }\n\n return expandedArguments;\n}\n"],
5
+ "mappings": ";AACA,SAAQ,2BAA0B;AAQ3B,gBAAS,gBAAgB,MAAkB;AAChD,MAAI,oBAAoB,CAAC;AAEzB,WAAS,OAAO,MAAM;AACpB,QAAI,oBAAoB,GAAG,GAAG;AAE5B,wBAAkB,KAAK,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK,EAAE,CAAC;AAAA,IACzE,OAAO;AACL,wBAAkB,KAAK,GAAG;AAAA,IAC5B;AAAA,EACF;AAEA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -120,7 +120,7 @@ export function parseArguments(argv, parserConfig) {
120
120
  );
121
121
  optionScope = null;
122
122
  }
123
- } else if (optionScope && optionScope.config.type === "boolean" && !optionScope.config.multiple && (isFalseString(arg) || isTrueString(arg))) {
123
+ } else if (optionScope?.config.type === "boolean" && !optionScope.config.multiple && (isFalseString(arg) || isTrueString(arg))) {
124
124
  optionScope.captureArg(arg);
125
125
  if (optionScope.isComplete()) {
126
126
  commitOptionScope(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../source/parseArguments.ts"],
4
- "sourcesContent": ["import {type Arguments} from './Arguments.js';\nimport {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 Argv} from './Argv.js';\nimport {\n castValue,\n Checker,\n CommandScope,\n commandToArguments,\n createOptionShortNameMap,\n expandArguments,\n isFalseString,\n isLongOption,\n isOptionLike,\n isShortOption,\n isTrueString,\n type NormalizedCommandsConfig,\n OptionScope,\n} from './internals.js';\nimport {type ParameterConfig} from './ParameterConfig.js';\nimport {type ParserConfig} from './ParserConfig.js';\nimport {ParsingError} from './ParsingError.js';\n\n/* eslint-disable no-param-reassign -- we need to add properties to the `parsedOption` object */\nfunction commitOptionScope(optionScope: OptionScope, parsedOptions: Record<string, unknown>) {\n let optionValue = optionScope.getValue();\n\n parsedOptions[optionScope.name] = optionValue;\n\n if (optionScope.config.validate) {\n optionScope.config.validate(parsedOptions[optionScope.name] as never); // type assertion needed to make TypeScript happy\n }\n}\n/* eslint-enable no-param-reassign */\n\n/**\n * Parses a list of command line arguments into an arguments object. Based on provided parser config, raw arguments can be parsed as commands, options and parameters.\n *\n * @param argv Raw arguments to be parsed.\n * @param parserConfig Parser configuration.\n * @return Parsed arguments.\n *\n */\nexport function parseArguments<const O extends ParserConfig>(\n argv: Argv,\n parserConfig: O,\n): Arguments<O> {\n // create separate configs for commands, parameters and options\n let commandsConfig = parserConfig.commands ?? [];\n let parametersConfig = parserConfig.parameters ?? [];\n let optionsConfig = parserConfig.options ?? {};\n\n // check if parser config is valid\n let checker = new Checker();\n\n checker.checkCommandsConfig(commandsConfig);\n checker.checkParametersConfig(parametersConfig);\n checker.checkOptionsConfig(optionsConfig);\n\n // normalize some configs\n let normalizedCommandsConfig: NormalizedCommandsConfig = commandsConfig.map((command) => ({\n command: command.toLowerCase(),\n args: commandToArguments(command.toLowerCase()),\n }));\n let commandFirstArguments = new Set(\n normalizedCommandsConfig.map((commandConfig) => commandConfig.args[0]),\n );\n let optionShortNameMap =\n parserConfig.options ? createOptionShortNameMap(parserConfig.options) : {};\n\n // variables for keeping track of the parsing\n let parsedCommand: string | undefined;\n let parsedParameters: unknown[] = [];\n let parsedOptions: Record<string, unknown> = {};\n let parsedUnknownOptions: Record<string, unknown> = {};\n let restArgs: string[] = [];\n let optionScope: OptionScope | null = null;\n let commandScope: CommandScope | null = null;\n\n //\n let args = expandArguments(argv);\n\n for (let [i, arg] of args.entries()) {\n // extract rest arguments\n if (arg === '--') {\n restArgs.push(...args.slice(i + 1));\n\n break;\n }\n\n try {\n if (isOptionLike(arg)) {\n // first let's handle options\n\n if (optionScope) {\n commitOptionScope(\n optionScope,\n optionsConfig[optionScope.name] ? parsedOptions : parsedUnknownOptions,\n );\n }\n\n // if there is still unhandled `commandScope`, let's handle its args as parameters...\n if (commandScope) {\n let unhandledArgs = commandScope.getArgs();\n\n for (let unhandledArg of unhandledArgs) {\n if (parserConfig.allowUnknownParameters) {\n // let's handle other parameter\n parsedParameters.push(unhandledArg);\n } else {\n checker.addError(\n new ParsingError('UNKNOWN_PARAMETER', {messageParameters: [unhandledArg]}),\n );\n }\n }\n\n commandScope = null;\n }\n\n let optionName = arg;\n let optionValue;\n\n // Extract option name and value\n if (optionName.includes('=')) {\n let result = optionName.split('=', 2);\n\n if (result[0] && result[1]) {\n [optionName, optionValue] = result;\n }\n }\n\n if (isShortOption(optionName)) {\n let fullOptionName = optionShortNameMap[optionName.slice(1)];\n\n if (typeof fullOptionName === 'string') {\n optionName = fullOptionName;\n }\n } else if (isLongOption(optionName)) {\n optionName = optionName.slice(2);\n }\n\n let newOptionScope = new OptionScope(\n optionName,\n optionsConfig,\n parserConfig.allowUnknownOptions,\n );\n\n if (parsedOptions[newOptionScope.name] !== undefined) {\n if (newOptionScope.config.multiple) {\n newOptionScope.previousParsedValue = parsedOptions[newOptionScope.name];\n } else if (newOptionScope.config.type === 'number' && newOptionScope.config.count) {\n newOptionScope.previousParsedValue = parsedOptions[newOptionScope.name];\n }\n }\n\n if (optionValue !== undefined) {\n newOptionScope.captureArg(optionValue);\n }\n\n if (newOptionScope.isComplete()) {\n commitOptionScope(\n newOptionScope,\n optionsConfig[newOptionScope.name] ? parsedOptions : parsedUnknownOptions,\n );\n\n optionScope = null;\n } else {\n optionScope = newOptionScope;\n }\n } else if (\n optionScope &&\n !(optionScope.config.type === 'boolean' && !optionScope.config.multiple)\n ) {\n // let's handle adding more values to previous option, but not if it's signle boolean option\n\n optionScope.captureArg(arg);\n\n if (optionScope.isComplete()) {\n commitOptionScope(\n optionScope,\n optionsConfig[optionScope.name] ? parsedOptions : parsedUnknownOptions,\n );\n\n optionScope = null;\n }\n } else if (\n optionScope &&\n optionScope.config.type === 'boolean' &&\n !optionScope.config.multiple &&\n (isFalseString(arg) || isTrueString(arg))\n ) {\n // we're adding value to a single boolean option only if the value is \"false\" or \"true\" string\n optionScope.captureArg(arg);\n\n if (optionScope.isComplete()) {\n commitOptionScope(\n optionScope,\n optionsConfig[optionScope.name] ? parsedOptions : parsedUnknownOptions,\n );\n\n optionScope = null;\n }\n } else if (commandScope) {\n // let's handle rest of the command\n\n commandScope.captureArg(arg);\n\n if (commandScope.isComplete()) {\n parsedCommand = commandScope.getValue();\n commandScope = null;\n } else if (commandScope.isDone()) {\n let unhandledArgs = commandScope.getArgs();\n\n for (let unhandledArg of unhandledArgs) {\n if (parserConfig.allowUnknownParameters) {\n // let's handle other parameter\n parsedParameters.push(unhandledArg);\n } else {\n checker.addError(\n new ParsingError('UNKNOWN_PARAMETER', {messageParameters: [unhandledArg]}),\n );\n }\n }\n\n commandScope = null;\n }\n } else if (parsedCommand === undefined && commandFirstArguments.has(arg.toLowerCase())) {\n // let's handle command\n\n let newCommandScope = new CommandScope(arg, normalizedCommandsConfig);\n\n if (newCommandScope.isComplete()) {\n parsedCommand = newCommandScope.getValue();\n commandScope = null;\n } else {\n commandScope = newCommandScope;\n }\n } else if (parametersConfig[parsedParameters.length]) {\n // let's handle configured parameter\n let parameterConfig = parametersConfig[parsedParameters.length] as ParameterConfig;\n let parameterValue = castValue(arg, parameterConfig.type);\n\n if (\n parameterConfig.type !== 'boolean' &&\n parameterConfig.choices !== undefined &&\n !parameterConfig.choices.includes(parameterValue as never) // during runtime `parameterValue` has correct type\n ) {\n throw new ParsingError('INVALID_PARAMETER', {\n messageParameters: [\n parameterValue,\n parameterConfig.label ?? parsedParameters.length,\n parameterConfig.choices.map((choice) => `\"${choice}\"`).join(', '),\n ],\n });\n }\n\n parsedParameters.push(parameterValue);\n\n if (parameterConfig.validate) {\n parameterConfig.validate(parameterValue as never); // during runtime `parameterValue` has correct type\n }\n } else if (parserConfig.allowUnknownParameters) {\n // let's handle other parameter\n parsedParameters.push(arg);\n } else {\n throw new ParsingError('UNKNOWN_PARAMETER', {messageParameters: [arg]});\n }\n } catch (error: unknown) {\n optionScope = null;\n commandScope = null;\n\n checker.addError(error as Error);\n }\n }\n\n try {\n if (optionScope) {\n commitOptionScope(\n optionScope,\n optionsConfig[optionScope.name] ? parsedOptions : parsedUnknownOptions,\n );\n }\n\n // if there is still unhandled `commandScope`, let's handle its args as parameters...\n if (commandScope) {\n let unhandledArgs = commandScope.getArgs();\n\n for (let unhandledArg of unhandledArgs) {\n if (parserConfig.allowUnknownParameters) {\n // let's handle other parameter\n parsedParameters.push(unhandledArg);\n } else {\n checker.addError(\n new ParsingError('UNKNOWN_PARAMETER', {messageParameters: [unhandledArg]}),\n );\n }\n }\n }\n\n // if there are missing parsed parameters, add undefined\n for (let [i] of parametersConfig.entries()) {\n if (parsedParameters[i] === undefined) {\n parsedParameters[i] = undefined;\n }\n }\n\n // handle default option values...\n for (let [optionName, optionConfig] of Object.entries(optionsConfig)) {\n if (parsedOptions[optionName] === undefined && optionConfig.defaultValue !== undefined) {\n parsedOptions[optionName] = optionConfig.defaultValue;\n } else if (parsedOptions[optionName] === undefined) {\n parsedOptions[optionName] = undefined;\n }\n }\n\n // handle default parameters values...\n for (let [i, parameterConfig] of parametersConfig.entries()) {\n if (parsedParameters[i] === undefined && parameterConfig.defaultValue !== undefined) {\n parsedParameters[i] = parameterConfig.defaultValue;\n }\n }\n } catch (error: unknown) {\n checker.addError(error as Error);\n }\n\n checker.checkParsedParameters(parametersConfig, parsedParameters);\n checker.checkParsedOptions(optionsConfig, parsedOptions);\n\n return {\n command: (normalizedCommandsConfig.length ? parsedCommand : null) as ArgumentsCommand<O>,\n parameters: (parametersConfig.length || parserConfig.allowUnknownParameters ?\n parsedParameters\n : null) as ArgumentsParameters<O>,\n options: (Object.keys(optionsConfig).length ? parsedOptions : null) as ArgumentsOptions<O>,\n unknownOptions: (parserConfig.allowUnknownOptions ? parsedUnknownOptions : (\n null\n )) as ArgumentsUnknownOptions<O>,\n rest: restArgs,\n errors: checker.errors,\n };\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {type Arguments} from './Arguments.js';\nimport {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 Argv} from './Argv.js';\nimport {\n castValue,\n Checker,\n CommandScope,\n commandToArguments,\n createOptionShortNameMap,\n expandArguments,\n isFalseString,\n isLongOption,\n isOptionLike,\n isShortOption,\n isTrueString,\n type NormalizedCommandsConfig,\n OptionScope,\n} from './internals.js';\nimport {type ParameterConfig} from './ParameterConfig.js';\nimport {type ParserConfig} from './ParserConfig.js';\nimport {ParsingError} from './ParsingError.js';\n\nfunction commitOptionScope(optionScope: OptionScope, parsedOptions: Record<string, unknown>) {\n let optionValue = optionScope.getValue();\n\n parsedOptions[optionScope.name] = optionValue;\n\n if (optionScope.config.validate) {\n optionScope.config.validate(parsedOptions[optionScope.name] as never); // type assertion needed to make TypeScript happy\n }\n}\n\n/**\n * Parses a list of command line arguments into an arguments object. Based on provided parser config, raw arguments can be parsed as commands, options and parameters.\n *\n * @param argv Raw arguments to be parsed.\n * @param parserConfig Parser configuration.\n * @return Parsed arguments.\n *\n */\nexport function parseArguments<const O extends ParserConfig>(\n argv: Argv,\n parserConfig: O,\n): Arguments<O> {\n // create separate configs for commands, parameters and options\n let commandsConfig = parserConfig.commands ?? [];\n let parametersConfig = parserConfig.parameters ?? [];\n let optionsConfig = parserConfig.options ?? {};\n\n // check if parser config is valid\n let checker = new Checker();\n\n checker.checkCommandsConfig(commandsConfig);\n checker.checkParametersConfig(parametersConfig);\n checker.checkOptionsConfig(optionsConfig);\n\n // normalize some configs\n let normalizedCommandsConfig: NormalizedCommandsConfig = commandsConfig.map((command) => ({\n command: command.toLowerCase(),\n args: commandToArguments(command.toLowerCase()),\n }));\n let commandFirstArguments = new Set(\n normalizedCommandsConfig.map((commandConfig) => commandConfig.args[0]),\n );\n let optionShortNameMap =\n parserConfig.options ? createOptionShortNameMap(parserConfig.options) : {};\n\n // variables for keeping track of the parsing\n let parsedCommand: string | undefined;\n let parsedParameters: unknown[] = [];\n let parsedOptions: Record<string, unknown> = {};\n let parsedUnknownOptions: Record<string, unknown> = {};\n let restArgs: string[] = [];\n let optionScope: OptionScope | null = null;\n let commandScope: CommandScope | null = null;\n\n //\n let args = expandArguments(argv);\n\n for (let [i, arg] of args.entries()) {\n // extract rest arguments\n if (arg === '--') {\n restArgs.push(...args.slice(i + 1));\n\n break;\n }\n\n try {\n if (isOptionLike(arg)) {\n // first let's handle options\n\n if (optionScope) {\n commitOptionScope(\n optionScope,\n optionsConfig[optionScope.name] ? parsedOptions : parsedUnknownOptions,\n );\n }\n\n // if there is still unhandled `commandScope`, let's handle its args as parameters...\n if (commandScope) {\n let unhandledArgs = commandScope.getArgs();\n\n for (let unhandledArg of unhandledArgs) {\n if (parserConfig.allowUnknownParameters) {\n // let's handle other parameter\n parsedParameters.push(unhandledArg);\n } else {\n checker.addError(\n new ParsingError('UNKNOWN_PARAMETER', {messageParameters: [unhandledArg]}),\n );\n }\n }\n\n commandScope = null;\n }\n\n let optionName = arg;\n let optionValue;\n\n // Extract option name and value\n if (optionName.includes('=')) {\n let result = optionName.split('=', 2);\n\n if (result[0] && result[1]) {\n [optionName, optionValue] = result;\n }\n }\n\n if (isShortOption(optionName)) {\n let fullOptionName = optionShortNameMap[optionName.slice(1)];\n\n if (typeof fullOptionName === 'string') {\n optionName = fullOptionName;\n }\n } else if (isLongOption(optionName)) {\n optionName = optionName.slice(2);\n }\n\n let newOptionScope = new OptionScope(\n optionName,\n optionsConfig,\n parserConfig.allowUnknownOptions,\n );\n\n if (parsedOptions[newOptionScope.name] !== undefined) {\n if (newOptionScope.config.multiple) {\n newOptionScope.previousParsedValue = parsedOptions[newOptionScope.name];\n } else if (newOptionScope.config.type === 'number' && newOptionScope.config.count) {\n newOptionScope.previousParsedValue = parsedOptions[newOptionScope.name];\n }\n }\n\n if (optionValue !== undefined) {\n newOptionScope.captureArg(optionValue);\n }\n\n if (newOptionScope.isComplete()) {\n commitOptionScope(\n newOptionScope,\n optionsConfig[newOptionScope.name] ? parsedOptions : parsedUnknownOptions,\n );\n\n optionScope = null;\n } else {\n optionScope = newOptionScope;\n }\n } else if (\n optionScope &&\n !(optionScope.config.type === 'boolean' && !optionScope.config.multiple)\n ) {\n // let's handle adding more values to previous option, but not if it's signle boolean option\n\n optionScope.captureArg(arg);\n\n if (optionScope.isComplete()) {\n commitOptionScope(\n optionScope,\n optionsConfig[optionScope.name] ? parsedOptions : parsedUnknownOptions,\n );\n\n optionScope = null;\n }\n } else if (\n optionScope?.config.type === 'boolean' &&\n !optionScope.config.multiple &&\n (isFalseString(arg) || isTrueString(arg))\n ) {\n // we're adding value to a single boolean option only if the value is \"false\" or \"true\" string\n optionScope.captureArg(arg);\n\n if (optionScope.isComplete()) {\n commitOptionScope(\n optionScope,\n optionsConfig[optionScope.name] ? parsedOptions : parsedUnknownOptions,\n );\n\n optionScope = null;\n }\n } else if (commandScope) {\n // let's handle rest of the command\n\n commandScope.captureArg(arg);\n\n if (commandScope.isComplete()) {\n parsedCommand = commandScope.getValue();\n commandScope = null;\n } else if (commandScope.isDone()) {\n let unhandledArgs = commandScope.getArgs();\n\n for (let unhandledArg of unhandledArgs) {\n if (parserConfig.allowUnknownParameters) {\n // let's handle other parameter\n parsedParameters.push(unhandledArg);\n } else {\n checker.addError(\n new ParsingError('UNKNOWN_PARAMETER', {messageParameters: [unhandledArg]}),\n );\n }\n }\n\n commandScope = null;\n }\n } else if (parsedCommand === undefined && commandFirstArguments.has(arg.toLowerCase())) {\n // let's handle command\n\n let newCommandScope = new CommandScope(arg, normalizedCommandsConfig);\n\n if (newCommandScope.isComplete()) {\n parsedCommand = newCommandScope.getValue();\n commandScope = null;\n } else {\n commandScope = newCommandScope;\n }\n } else if (parametersConfig[parsedParameters.length]) {\n // let's handle configured parameter\n let parameterConfig = parametersConfig[parsedParameters.length] as ParameterConfig;\n let parameterValue = castValue(arg, parameterConfig.type);\n\n if (\n parameterConfig.type !== 'boolean' &&\n parameterConfig.choices !== undefined &&\n !parameterConfig.choices.includes(parameterValue as never) // during runtime `parameterValue` has correct type\n ) {\n throw new ParsingError('INVALID_PARAMETER', {\n messageParameters: [\n parameterValue,\n parameterConfig.label ?? parsedParameters.length,\n parameterConfig.choices.map((choice) => `\"${choice}\"`).join(', '),\n ],\n });\n }\n\n parsedParameters.push(parameterValue);\n\n if (parameterConfig.validate) {\n parameterConfig.validate(parameterValue as never); // during runtime `parameterValue` has correct type\n }\n } else if (parserConfig.allowUnknownParameters) {\n // let's handle other parameter\n parsedParameters.push(arg);\n } else {\n throw new ParsingError('UNKNOWN_PARAMETER', {messageParameters: [arg]});\n }\n } catch (error: unknown) {\n optionScope = null;\n commandScope = null;\n\n checker.addError(error as Error);\n }\n }\n\n try {\n if (optionScope) {\n commitOptionScope(\n optionScope,\n optionsConfig[optionScope.name] ? parsedOptions : parsedUnknownOptions,\n );\n }\n\n // if there is still unhandled `commandScope`, let's handle its args as parameters...\n if (commandScope) {\n let unhandledArgs = commandScope.getArgs();\n\n for (let unhandledArg of unhandledArgs) {\n if (parserConfig.allowUnknownParameters) {\n // let's handle other parameter\n parsedParameters.push(unhandledArg);\n } else {\n checker.addError(\n new ParsingError('UNKNOWN_PARAMETER', {messageParameters: [unhandledArg]}),\n );\n }\n }\n }\n\n // if there are missing parsed parameters, add undefined\n for (let [i] of parametersConfig.entries()) {\n if (parsedParameters[i] === undefined) {\n parsedParameters[i] = undefined;\n }\n }\n\n // handle default option values...\n for (let [optionName, optionConfig] of Object.entries(optionsConfig)) {\n if (parsedOptions[optionName] === undefined && optionConfig.defaultValue !== undefined) {\n parsedOptions[optionName] = optionConfig.defaultValue;\n } else if (parsedOptions[optionName] === undefined) {\n parsedOptions[optionName] = undefined;\n }\n }\n\n // handle default parameters values...\n for (let [i, parameterConfig] of parametersConfig.entries()) {\n if (parsedParameters[i] === undefined && parameterConfig.defaultValue !== undefined) {\n parsedParameters[i] = parameterConfig.defaultValue;\n }\n }\n } catch (error: unknown) {\n checker.addError(error as Error);\n }\n\n checker.checkParsedParameters(parametersConfig, parsedParameters);\n checker.checkParsedOptions(optionsConfig, parsedOptions);\n\n return {\n command: (normalizedCommandsConfig.length ? parsedCommand : null) as ArgumentsCommand<O>,\n parameters: (parametersConfig.length || parserConfig.allowUnknownParameters ?\n parsedParameters\n : null) as ArgumentsParameters<O>,\n options: (Object.keys(optionsConfig).length ? parsedOptions : null) as ArgumentsOptions<O>,\n unknownOptions: (parserConfig.allowUnknownOptions ? parsedUnknownOptions : (\n null\n )) as ArgumentsUnknownOptions<O>,\n rest: restArgs,\n errors: checker.errors,\n };\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jakubmazanec/args",
3
- "version": "2.0.18-next.9db8be45",
3
+ "version": "2.0.18-next.fa06a28e",
4
4
  "description": "TypeScript-first library for parsing command line arguments.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -27,12 +27,12 @@
27
27
  "typecheck": "tsc --project tsconfig.typecheck.json"
28
28
  },
29
29
  "dependencies": {
30
- "@jakubmazanec/error": "3.0.18-next.9db8be45",
31
- "@jakubmazanec/ts-utils": "3.0.19-next.9db8be45",
30
+ "@jakubmazanec/error": "3.0.18-next.fa06a28e",
31
+ "@jakubmazanec/ts-utils": "3.0.19-next.fa06a28e",
32
32
  "lodash": "^4.17.21"
33
33
  },
34
34
  "devDependencies": {
35
- "@jakubmazanec/eslint-config": "4.1.13-next.9db8be45",
35
+ "@jakubmazanec/eslint-config": "5.0.0-next.fa06a28e",
36
36
  "@types/lodash": "^4.17.21",
37
37
  "@types/node": "^24.0.4",
38
38
  "@vitest/coverage-v8": "^4.0.14",
@@ -12,6 +12,7 @@ export function expandArguments(argv: Argv): Argv {
12
12
 
13
13
  for (let arg of argv) {
14
14
  if (isShortOptionsGroup(arg)) {
15
+ // eslint-disable-next-line @typescript-eslint/no-misused-spread -- ok in the context of strings that are arguments
15
16
  expandedArguments.push(...[...arg].slice(1).map((value) => `-${value}`));
16
17
  } else {
17
18
  expandedArguments.push(arg);
@@ -23,7 +23,6 @@ import {type ParameterConfig} from './ParameterConfig.js';
23
23
  import {type ParserConfig} from './ParserConfig.js';
24
24
  import {ParsingError} from './ParsingError.js';
25
25
 
26
- /* eslint-disable no-param-reassign -- we need to add properties to the `parsedOption` object */
27
26
  function commitOptionScope(optionScope: OptionScope, parsedOptions: Record<string, unknown>) {
28
27
  let optionValue = optionScope.getValue();
29
28
 
@@ -33,7 +32,6 @@ function commitOptionScope(optionScope: OptionScope, parsedOptions: Record<strin
33
32
  optionScope.config.validate(parsedOptions[optionScope.name] as never); // type assertion needed to make TypeScript happy
34
33
  }
35
34
  }
36
- /* eslint-enable no-param-reassign */
37
35
 
38
36
  /**
39
37
  * Parses a list of command line arguments into an arguments object. Based on provided parser config, raw arguments can be parsed as commands, options and parameters.
@@ -186,8 +184,7 @@ export function parseArguments<const O extends ParserConfig>(
186
184
  optionScope = null;
187
185
  }
188
186
  } else if (
189
- optionScope &&
190
- optionScope.config.type === 'boolean' &&
187
+ optionScope?.config.type === 'boolean' &&
191
188
  !optionScope.config.multiple &&
192
189
  (isFalseString(arg) || isTrueString(arg))
193
190
  ) {