Skip to content

Commit 098828c

Browse files
🤖 Merge PR DefinitelyTyped#72200 fix(node): export parseArgs options config types by @JoshuaKGoldberg
Co-authored-by: René <[email protected]>
1 parent d2addc5 commit 098828c

File tree

2 files changed

+55
-6
lines changed

2 files changed

+55
-6
lines changed

‎types/node/test/util.ts‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,49 @@ const errorMap: Map<number, [string, string]> = util.getSystemErrorMap();
420420
result.values.alpha; // true
421421
}
422422

423+
{
424+
let optionConfig: util.ParseArgsOptionDescriptor;
425+
426+
optionConfig = {
427+
type: "boolean",
428+
};
429+
430+
optionConfig = {
431+
default: "default",
432+
multiple: false,
433+
short: "s",
434+
type: "string",
435+
};
436+
437+
optionConfig = {
438+
default: ["a", "b", "c"],
439+
multiple: true,
440+
type: "string",
441+
};
442+
443+
util.parseArgs({
444+
options: {
445+
longOption: optionConfig,
446+
},
447+
});
448+
449+
let optionsConfig: util.ParseArgsOptionsConfig;
450+
451+
optionsConfig = {};
452+
453+
optionsConfig = {
454+
longOption: optionConfig,
455+
};
456+
457+
util.parseArgs(optionsConfig);
458+
}
459+
460+
{
461+
let argsType: util.ParseArgsOptionsType;
462+
argsType = "boolean";
463+
argsType = "string";
464+
}
465+
423466
{
424467
const controller: AbortController = util.transferableAbortController();
425468
const signal: AbortSignal = util.transferableAbortSignal(controller.signal);

‎types/node/util.d.ts‎

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1561,11 +1561,17 @@ declare module "util" {
15611561
* @return The parsed command line arguments:
15621562
*/
15631563
export function parseArgs<T extends ParseArgsConfig>(config?: T): ParsedResults<T>;
1564-
interface ParseArgsOptionConfig {
1564+
1565+
/**
1566+
* Type of argument used in {@link parseArgs}.
1567+
*/
1568+
export type ParseArgsOptionsType = "boolean" | "string";
1569+
1570+
export interface ParseArgsOptionDescriptor {
15651571
/**
15661572
* Type of argument.
15671573
*/
1568-
type: "string" | "boolean";
1574+
type: ParseArgsOptionsType;
15691575
/**
15701576
* Whether this option can be provided multiple times.
15711577
* If `true`, all values will be collected in an array.
@@ -1586,8 +1592,8 @@ declare module "util" {
15861592
*/
15871593
default?: string | boolean | string[] | boolean[] | undefined;
15881594
}
1589-
interface ParseArgsOptionsConfig {
1590-
[longOption: string]: ParseArgsOptionConfig;
1595+
export interface ParseArgsOptionsConfig {
1596+
[longOption: string]: ParseArgsOptionDescriptor;
15911597
}
15921598
export interface ParseArgsConfig {
15931599
/**
@@ -1639,7 +1645,7 @@ declare module "util" {
16391645
: T extends true ? IfTrue
16401646
: IfFalse;
16411647

1642-
type ExtractOptionValue<T extends ParseArgsConfig, O extends ParseArgsOptionConfig> = IfDefaultsTrue<
1648+
type ExtractOptionValue<T extends ParseArgsConfig, O extends ParseArgsOptionDescriptor> = IfDefaultsTrue<
16431649
T["strict"],
16441650
O["type"] extends "string" ? string : O["type"] extends "boolean" ? boolean : string | boolean,
16451651
string | boolean
@@ -1672,7 +1678,7 @@ declare module "util" {
16721678

16731679
type PreciseTokenForOptions<
16741680
K extends string,
1675-
O extends ParseArgsOptionConfig,
1681+
O extends ParseArgsOptionDescriptor,
16761682
> = O["type"] extends "string" ? {
16771683
kind: "option";
16781684
index: number;

0 commit comments

Comments
 (0)