Socket
Socket
Sign inDemoInstall

@commander-js/extra-typings

Package Overview
Dependencies
Maintainers
2
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@commander-js/extra-typings - npm Package Compare versions

Comparing version 10.0.2 to 10.0.3

100

index.d.ts

@@ -32,19 +32,35 @@

type InferArgumentType<Value extends string, DefaultT, CoerceT> =
type InferArgumentType<Value extends string, DefaultT, CoerceT, ChoicesT> =
[CoerceT] extends [undefined]
? InferVariadic<Value, string> | DefaultT
: CoerceT | DefaultT;
? InferVariadic<Value, [ChoicesT] extends [undefined] ? string : ChoicesT> | DefaultT
: ([ChoicesT] extends [undefined]
? CoerceT | DefaultT
: CoerceT | DefaultT | ChoicesT
)
// Special handling for optional variadic argument, won't be undefined as implementation returns [].
type InferArgumentOptionalType<Value extends string, DefaultT, CoerceT> =
type InferArgumentOptionalType<Value extends string, DefaultT, CoerceT, ChoicesT> =
Value extends `${string}...`
? InferArgumentType<Value, [DefaultT] extends [undefined] ? never : DefaultT, CoerceT>
: InferArgumentType<Value, DefaultT, CoerceT>
type InferArgument<S extends string, DefaultT = undefined, CoerceT = undefined> =
? InferArgumentType<Value, [DefaultT] extends [undefined] ? never : DefaultT, CoerceT, ChoicesT>
: InferArgumentType<Value, DefaultT, CoerceT, ChoicesT>
// ArgRequired comes from .argRequired()/.argOptional(), and ArgRequiredFromUsage is implied by usage <required>/[optional]
type ResolveRequired<ArgRequired extends boolean|undefined, ArgRequiredFromUsage extends boolean> =
ArgRequired extends undefined
? ArgRequiredFromUsage
: ArgRequired;
type InferArgumentTypeResolvedRequired<Value extends string, DefaultT, CoerceT, ArgRequired extends boolean, ChoicesT> =
ArgRequired extends true
? InferArgumentType<Value, never, CoerceT, ChoicesT>
: InferArgumentOptionalType<Value, DefaultT, CoerceT, ChoicesT>;
// Resolve whether argument required, and strip []/<> from around value.
type InferArgument<S extends string, DefaultT = undefined, CoerceT = undefined, ArgRequired extends boolean|undefined = undefined, ChoicesT = undefined> =
S extends `<${infer Value}>`
? InferArgumentType<Value, never, CoerceT>
? InferArgumentTypeResolvedRequired<Value, DefaultT, CoerceT, ResolveRequired<ArgRequired, true>, ChoicesT>
: S extends `[${infer Value}]`
? InferArgumentOptionalType<Value, DefaultT, CoerceT>
: InferArgumentType<S, never, CoerceT>; // the implementation fallback is treat as <required>
? InferArgumentTypeResolvedRequired<Value, DefaultT, CoerceT, ResolveRequired<ArgRequired, false>, ChoicesT>
: InferArgumentTypeResolvedRequired<S, DefaultT, CoerceT, ResolveRequired<ArgRequired, true>, ChoicesT>; // the implementation fallback is treat as <required>

@@ -61,7 +77,2 @@ type InferArguments<S extends string> =

type NullableCopy<T, U> =
U extends undefined
? T | undefined
: T;
type FlagsToFlag<Flags extends string> =

@@ -143,19 +154,19 @@ Flags extends `${string},${infer LongFlag}`

// Fill in appropriate PresetT value if undefined.
type InferOptionTypes<Options, Flag extends string, Value extends string, ValueT, PresetT, DefaultT, CoerceT, Mandatory extends boolean> =
type InferOptionTypes<Options, Flag extends string, Value extends string, ValueT, PresetT, DefaultT, CoerceT, Mandatory extends boolean, ChoicesT> =
InferOptionsNegateCombo<Options, Flag, ConvertFlagToName<Flag>,
CoerceValueType<CoerceT, InferVariadic<Value, ValueT>>,
NegatePresetType<Flag, CoercePresetType<CoerceT, PresetT>>,
NegateDefaultType<Flag, DefaultT>,
IsAlwaysDefined<DefaultT, Mandatory>>;
CoerceValueType<CoerceT, [ChoicesT] extends [undefined] ? InferVariadic<Value, ValueT> : InferVariadic<Value, ChoicesT>>,
NegatePresetType<Flag, CoercePresetType<CoerceT, PresetT>>,
NegateDefaultType<Flag, DefaultT>,
IsAlwaysDefined<DefaultT, Mandatory>>;
type InferOptionsFlag<Options, Flags extends string, Value extends string, ValueT, PresetT, DefaultT, CoerceT, Mandatory extends boolean> =
InferOptionTypes<Options, FlagsToFlag<Trim<Flags>>, Trim<Value>, ValueT, PresetT, DefaultT, CoerceT, Mandatory>;
type InferOptionsFlag<Options, Flags extends string, Value extends string, ValueT, PresetT, DefaultT, CoerceT, Mandatory extends boolean, ChoicesT> =
InferOptionTypes<Options, FlagsToFlag<Trim<Flags>>, Trim<Value>, ValueT, PresetT, DefaultT, CoerceT, Mandatory, ChoicesT>;
// Split up Usage into Flags and Value
type InferOptions<Options, Usage extends string, DefaultT, CoerceT, Mandatory extends boolean, PresetT = undefined> =
type InferOptions<Options, Usage extends string, DefaultT, CoerceT, Mandatory extends boolean, PresetT = undefined, ChoicesT = undefined> =
Usage extends `${infer Flags} <${infer Value}>`
? InferOptionsFlag<Options, Flags, Value, string, never, DefaultT, CoerceT, Mandatory>
? InferOptionsFlag<Options, Flags, Value, string, never, DefaultT, CoerceT, Mandatory, ChoicesT>
: Usage extends `${infer Flags} [${infer Value}]`
? InferOptionsFlag<Options, Flags, Value, string, PresetT, DefaultT, CoerceT, Mandatory>
: InferOptionsFlag<Options, Usage, '', never, PresetT, DefaultT, CoerceT, Mandatory>;
? InferOptionsFlag<Options, Flags, Value, string, PresetT, DefaultT, CoerceT, Mandatory, ChoicesT>
: InferOptionsFlag<Options, Usage, '', never, PresetT, DefaultT, CoerceT, Mandatory, ChoicesT>;

@@ -203,3 +214,3 @@ export type CommandUnknownOpts = Command<unknown[], OptionValues>;

export class Argument<Usage extends string = '', ArgType = InferArgument<Usage>> {
export class Argument<Usage extends string = '', DefaultT = undefined, CoerceT = undefined, ArgRequired extends boolean|undefined = undefined, ChoicesT = undefined> {
description: string;

@@ -224,3 +235,3 @@ required: boolean;

*/
default<T>(value: T, description?: string): Argument<string, NonNullable<ArgType> | T>;
default<T>(value: T, description?: string): Argument<Usage, T, CoerceT, ArgRequired, ChoicesT>;

@@ -230,3 +241,3 @@ /**

*/
argParser<T>(fn: (value: string, previous: T) => T): Argument<string, NullableCopy<T, ArgType>>;
argParser<T>(fn: (value: string, previous: T) => T): Argument<Usage, DefaultT, T, ArgRequired, undefined>; // setting ChoicesT to undefined because argParser overwrites choices

@@ -236,3 +247,3 @@ /**

*/
choices(values: readonly string[]): this;
choices<T extends readonly string[]>(values: T): Argument<Usage, DefaultT, undefined, ArgRequired, T[number]>; // setting CoerceT to undefined because choices overrides argParser

@@ -242,3 +253,3 @@ /**

*/
argRequired(): Argument<string, NonNullable<ArgType>>;
argRequired(): Argument<Usage, DefaultT, CoerceT, true, ChoicesT>;

@@ -248,6 +259,6 @@ /**

*/
argOptional(): Argument<string, ArgType | undefined>;
argOptional(): Argument<Usage, DefaultT, CoerceT, false, ChoicesT>;
}
export class Option<Usage extends string = '', PresetT = undefined, DefaultT = undefined, CoerceT = undefined, Mandatory extends boolean = false> {
export class Option<Usage extends string = '', PresetT = undefined, DefaultT = undefined, CoerceT = undefined, Mandatory extends boolean = false, ChoicesT = undefined> {
flags: string;

@@ -275,3 +286,3 @@ description: string;

*/
default<T>(value: T, description?: string): Option<Usage, PresetT, T, CoerceT, Mandatory>;
default<T>(value: T, description?: string): Option<Usage, PresetT, T, CoerceT, Mandatory, ChoicesT>;

@@ -288,3 +299,3 @@ /**

*/
preset<T>(arg: T): Option<Usage, T, DefaultT, CoerceT, Mandatory>;
preset<T>(arg: T): Option<Usage, T, DefaultT, CoerceT, Mandatory, ChoicesT>;

@@ -331,3 +342,3 @@ /**

*/
argParser<T>(fn: (value: string, previous: T) => T): Option<Usage, PresetT, DefaultT, T, Mandatory>;
argParser<T>(fn: (value: string, previous: T) => T): Option<Usage, PresetT, DefaultT, T, Mandatory, undefined>; // setting ChoicesT to undefined because argParser overrides choices

@@ -337,3 +348,3 @@ /**

*/
makeOptionMandatory<M extends boolean = true>(mandatory?: M): Option<Usage, PresetT, DefaultT, CoerceT, M>;
makeOptionMandatory<M extends boolean = true>(mandatory?: M): Option<Usage, PresetT, DefaultT, CoerceT, M, ChoicesT>;

@@ -348,3 +359,3 @@ /**

*/
choices(values: readonly string[]): this;
choices<T extends readonly string[]>(values: T): Option<Usage, PresetT, DefaultT, undefined, Mandatory, T[number]>; // setting CoerceT to undefined becuase choices overrides argParser

@@ -568,3 +579,4 @@ /**

*/
addArgument<S extends string, ArgType>(arg: Argument<S, ArgType>): Command<[...Args, ArgType]>;
addArgument<Usage extends string, DefaultT, CoerceT, ArgRequired extends boolean|undefined, ChoicesT>(
arg: Argument<Usage, DefaultT, CoerceT, ArgRequired, ChoicesT>): Command<[...Args, InferArgument<Usage, DefaultT, CoerceT, ArgRequired, ChoicesT>]>;

@@ -682,3 +694,3 @@

*/
action(fn: (...args: [...Args, Opts, this]) => void): this;
action(fn: (...args: [...Args, Opts, this]) => void | Promise<void>): this;

@@ -767,4 +779,4 @@ /**

*/
addOption<Usage extends string, PresetT, DefaultT, CoerceT, Mandatory extends boolean>(
option: Option<Usage, PresetT, DefaultT, CoerceT, Mandatory>): Command<Args, InferOptions<Opts, Usage, DefaultT, CoerceT, Mandatory, PresetT>>;
addOption<Usage extends string, PresetT, DefaultT, CoerceT, Mandatory extends boolean, ChoicesT>(
option: Option<Usage, PresetT, DefaultT, CoerceT, Mandatory, ChoicesT>): Command<Args, InferOptions<Opts, Usage, DefaultT, CoerceT, Mandatory, PresetT, ChoicesT>>;

@@ -1091,2 +1103,2 @@ /**

export const program: Command;
{
"name": "@commander-js/extra-typings",
"version": "10.0.2",
"version": "10.0.3",
"description": "Infer strong typings for commander options and action handlers",

@@ -5,0 +5,0 @@ "main": "index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc