import {Opts as MinimistOptions} from 'minimist'; export type OptionType = 'string' | 'boolean' | 'number' | 'array' | 'string-array' | 'boolean-array' | 'number-array'; export interface BaseOption< TypeOptionType extends OptionType, DefaultOptionType > { /** * The data type the option should be parsed to. */ readonly type?: TypeOptionType; /** * An alias/list of aliases for the option. */ readonly alias?: string | ReadonlyArray; /** * The default value for the option. */ readonly default?: DefaultOptionType; } export type StringOption = BaseOption<'string', string>; export type BooleanOption = BaseOption<'boolean', boolean>; export type NumberOption = BaseOption<'number', number>; export type DefaultArrayOption = BaseOption<'array', ReadonlyArray>; export type StringArrayOption = BaseOption<'string-array', ReadonlyArray>; export type BooleanArrayOption = BaseOption<'boolean-array', ReadonlyArray>; export type NumberArrayOption = BaseOption<'number-array', ReadonlyArray>; type MinimistOption = NonNullable< | MinimistOptions['stopEarly'] | MinimistOptions['unknown'] | MinimistOptions['--'] >; export type Options = { [key: string]: | OptionType | StringOption | BooleanOption | NumberOption | DefaultArrayOption | StringArrayOption | BooleanArrayOption | NumberArrayOption | MinimistOption; // Workaround for https://github.com/microsoft/TypeScript/issues/17867 }; /** * Write options for [minimist](https://npmjs.org/package/minimist) in a comfortable way. Support string, boolean, number and array options. */ export default function buildOptions(options?: Options): MinimistOptions;