UNPKG

react-kiwi-dropdown

Version:

A minimal, easy-to-use and highly adjustable dropdown component made with ReactJS.

426 lines (343 loc) 21.7 kB
// Type definitions for yargs 12.0 // Project: https://github.com/chevex/yargs, https://yargs.js.org // Definitions by: Martin Poelstra <https://github.com/poelstra> // Mizunashi Mana <https://github.com/mizunashi-mana> // Jeffery Grajkowski <https://github.com/pushplay> // Jeff Kenney <https://github.com/jeffkenney> // Jimi (Dimitris) Charalampidis <https://github.com/JimiC> // Steffen Viken Valvåg <https://github.com/steffenvv> // Emily Marigold Klassen <https://github.com/forivall> // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 3.0 // The following TSLint rules have been disabled: // unified-signatures: Because there is useful information in the argument names of the overloaded signatures // Convention: // Use 'union types' when: // - parameter types have similar signature type (i.e. 'string | ReadonlyArray<string>') // - parameter names have the same semantic meaning (i.e. ['command', 'commands'] , ['key', 'keys']) // An example for not using 'union types' is the declaration of 'env' where `prefix` and `enable` parameters // have different semantics. On the other hand, in the declaration of 'usage', a `command: string` parameter // has the same semantic meaning with declaring an overload method by using `commands: ReadonlyArray<string>`, // thus it's preferred to use `command: string | ReadonlyArray<string>` // Use parameterless declaration instead of declaring all parameters optional, // when all parameters are optional and more than one declare namespace yargs { // The type parameter T is the expected shape of the parsed options. // Arguments<T> is those options plus _ and $0, and an indexer falling // back to unknown for unknown options. // // For the return type / argv property, we create a mapped type over // Arguments<T> to simplify the inferred type signature in client code. interface Argv<T = {}> { (): { [key in keyof Arguments<T>]: Arguments<T>[key] }; (args: ReadonlyArray<string>, cwd?: string): Argv<T>; // Aliases for previously declared options can inherit the types of those options. alias<K1 extends keyof T, K2 extends string>(shortName: K1, longName: K2 | ReadonlyArray<K2>): Argv<T & { [key in K2]: T[K1] }>; alias<K1 extends keyof T, K2 extends string>(shortName: K2, longName: K1 | ReadonlyArray<K1>): Argv<T & { [key in K2]: T[K1] }>; alias(shortName: string | ReadonlyArray<string>, longName: string | ReadonlyArray<string>): Argv<T>; alias(aliases: { [shortName: string]: string | ReadonlyArray<string> }): Argv<T>; argv: { [key in keyof Arguments<T>]: Arguments<T>[key] }; array<K extends keyof T>(key: K | ReadonlyArray<K>): Argv<Omit<T, K> & { [key in K]: ToArray<T[key]> }>; array<K extends string>(key: K | ReadonlyArray<K>): Argv<T & { [key in K]: Array<string | number> | undefined }>; boolean<K extends keyof T>(key: K | ReadonlyArray<K>): Argv<Omit<T, K> & { [key in K]: boolean | undefined }>; boolean<K extends string>(key: K | ReadonlyArray<K>): Argv<T & { [key in K]: boolean | undefined }>; check(func: (argv: Arguments<T>, aliases: { [alias: string]: string }) => any, global?: boolean): Argv<T>; choices<K extends keyof T, C extends ReadonlyArray<any>>(key: K, values: C): Argv<Omit<T, K> & { [key in K]: C[number] | undefined }>; choices<K extends string, C extends ReadonlyArray<any>>(key: K, values: C): Argv<T & { [key in K]: C[number] | undefined }>; choices<C extends { [key: string]: ReadonlyArray<any> }>(choices: C): Argv<Omit<T, keyof C> & { [key in keyof C]: C[key][number] | undefined }>; coerce<K extends keyof T, V>(key: K | ReadonlyArray<K>, func: (arg: any) => V): Argv<Omit<T, K> & { [key in K]: V | undefined }>; coerce<K extends string, V>(key: K | ReadonlyArray<K>, func: (arg: any) => V): Argv<T & { [key in K]: V | undefined }>; coerce<O extends { [key: string]: (arg: any) => any }>(opts: O): Argv<Omit<T, keyof O> & { [key in keyof O]: ReturnType<O[key]> | undefined }>; command<U>(command: string | ReadonlyArray<string>, description: string, builder?: (args: Argv<T>) => Argv<U>, handler?: (args: Arguments<U>) => void): Argv<T>; command<O extends { [key: string]: Options }>(command: string | ReadonlyArray<string>, description: string, builder?: O, handler?: (args: Arguments<InferredOptionTypes<O>>) => void): Argv<T>; command<U>(command: string | ReadonlyArray<string>, description: string, module: CommandModule<T, U>): Argv<U>; command<U>(command: string | ReadonlyArray<string>, showInHelp: false, builder?: (args: Argv<T>) => Argv<U>, handler?: (args: Arguments<U>) => void): Argv<T>; command<O extends { [key: string]: Options }>(command: string | ReadonlyArray<string>, showInHelp: false, builder?: O, handler?: (args: Arguments<InferredOptionTypes<O>>) => void): Argv<T>; command<U>(command: string | ReadonlyArray<string>, showInHelp: false, module: CommandModule<T, U>): Argv<U>; command<U>(module: CommandModule<T, U>): Argv<U>; // Advanced API commandDir(dir: string, opts?: RequireDirectoryOptions): Argv<T>; completion(): Argv<T>; completion(cmd: string, func?: AsyncCompletionFunction): Argv<T>; completion(cmd: string, func?: SyncCompletionFunction): Argv<T>; completion(cmd: string, description?: string, func?: AsyncCompletionFunction): Argv<T>; completion(cmd: string, description?: string, func?: SyncCompletionFunction): Argv<T>; config(): Argv<T>; config(key: string | ReadonlyArray<string>, description?: string, parseFn?: (configPath: string) => object): Argv<T>; config(key: string | ReadonlyArray<string>, parseFn: (configPath: string) => object): Argv<T>; config(explicitConfigurationObject: object): Argv<T>; conflicts(key: string, value: string | ReadonlyArray<string>): Argv<T>; conflicts(conflicts: { [key: string]: string | ReadonlyArray<string> }): Argv<T>; count<K extends keyof T>(key: K | ReadonlyArray<K>): Argv<Omit<T, K> & { [key in K]: number }>; count<K extends string>(key: K | ReadonlyArray<K>): Argv<T & { [key in K]: number }>; default<K extends keyof T, V>(key: K, value: V, description?: string): Argv<Omit<T, K> & { [key in K]: V }>; default<K extends string, V>(key: K, value: V, description?: string): Argv<T & { [key in K]: V }>; default<D extends { [key: string]: any }>(defaults: D, description?: string): Argv<Omit<T, keyof D> & D>; /** * @deprecated since version 6.6.0 * Use '.demandCommand()' or '.demandOption()' instead */ demand<K extends keyof T>(key: K | ReadonlyArray<K>, msg?: string | true): Argv<Defined<T, K>>; demand<K extends string>(key: K | ReadonlyArray<K>, msg?: string | true): Argv<T & { [key in K]: unknown }>; demand(key: string | ReadonlyArray<string>, required?: boolean): Argv<T>; demand(positionals: number, msg: string): Argv<T>; demand(positionals: number, required?: boolean): Argv<T>; demand(positionals: number, max: number, msg?: string): Argv<T>; demandOption<K extends keyof T>(key: K | ReadonlyArray<K>, msg?: string | true): Argv<Defined<T, K>>; demandOption<K extends string>(key: K | ReadonlyArray<K>, msg?: string | true): Argv<T & { [key in K]: unknown }>; demandOption(key: string | ReadonlyArray<string>, demand?: boolean): Argv<T>; demandCommand(): Argv<T>; demandCommand(min: number, minMsg?: string): Argv<T>; demandCommand(min: number, max?: number, minMsg?: string, maxMsg?: string): Argv<T>; describe(key: string | ReadonlyArray<string>, description: string): Argv<T>; describe(descriptions: { [key: string]: string }): Argv<T>; detectLocale(detect: boolean): Argv<T>; env(): Argv<T>; env(prefix: string): Argv<T>; env(enable: boolean): Argv<T>; epilog(msg: string): Argv<T>; epilogue(msg: string): Argv<T>; example(command: string, description: string): Argv<T>; exit(code: number, err: Error): void; exitProcess(enabled: boolean): Argv<T>; fail(func: (msg: string, err: Error) => any): Argv<T>; getCompletion(args: ReadonlyArray<string>, done: (completions: ReadonlyArray<string>) => void): Argv<T>; global(key: string | ReadonlyArray<string>): Argv<T>; group(key: string | ReadonlyArray<string>, groupName: string): Argv<T>; hide(key: string): Argv<T>; help(): Argv<T>; help(enableExplicit: boolean): Argv<T>; help(option: string, enableExplicit: boolean): Argv<T>; help(option: string, description?: string, enableExplicit?: boolean): Argv<T>; implies(key: string, value: string | ReadonlyArray<string>): Argv<T>; implies(implies: { [key: string]: string | ReadonlyArray<string> }): Argv<T>; locale(): string; locale(loc: string): Argv<T>; middleware(callbacks: MiddlewareFunction<T> | ReadonlyArray<MiddlewareFunction<T>>): Argv<T>; nargs(key: string, count: number): Argv<T>; nargs(nargs: { [key: string]: number }): Argv<T>; normalize<K extends keyof T>(key: K | ReadonlyArray<K>): Argv<Omit<T, K> & { [key in K]: ToString<T[key]> }>; normalize<K extends string>(key: K | ReadonlyArray<K>): Argv<T & { [key in K]: string | undefined }>; number<K extends keyof T>(key: K | ReadonlyArray<K>): Argv<Omit<T, K> & { [key in K]: ToNumber<T[key]> }>; number<K extends string>(key: K | ReadonlyArray<K>): Argv<T & { [key in K]: number | undefined }>; option<K extends keyof T, O extends Options>(key: K, options: O): Argv<Omit<T, K> & { [key in K]: InferredOptionType<O> }>; option<K extends string, O extends Options>(key: K, options: O): Argv<T & { [key in K]: InferredOptionType<O> }>; option<O extends { [key: string]: Options }>(options: O): Argv<Omit<T, keyof O> & InferredOptionTypes<O>>; options<K extends keyof T, O extends Options>(key: K, options: O): Argv<Omit<T, K> & { [key in K]: InferredOptionType<O> }>; options<K extends string, O extends Options>(key: K, options: O): Argv<T & { [key in K]: InferredOptionType<O> }>; options<O extends { [key: string]: Options }>(options: O): Argv<Omit<T, keyof O> & InferredOptionTypes<O>>; parse(): { [key in keyof Arguments<T>]: Arguments<T>[key] }; parse(arg: string | ReadonlyArray<string>, context?: object, parseCallback?: ParseCallback<T>): { [key in keyof Arguments<T>]: Arguments<T>[key] }; parsed: DetailedArguments | false; pkgConf(key: string | ReadonlyArray<string>, cwd?: string): Argv<T>; /** * 'positional' should be called in a command's builder function, and is not * available on the top-level yargs instance. If so, it will throw an error. */ positional<K extends keyof T, O extends PositionalOptions>(key: K, opt: O): Argv<Omit<T, K> & { [key in K]: InferredOptionType<O> }>; positional<K extends string, O extends PositionalOptions>(key: K, opt: O): Argv<T & { [key in K]: InferredOptionType<O> }>; recommendCommands(): Argv<T>; /** * @deprecated since version 6.6.0 * Use '.demandCommand()' or '.demandOption()' instead */ require<K extends keyof T>(key: K | ReadonlyArray<K>, msg?: string | true): Argv<Defined<T, K>>; require(key: string, msg: string): Argv<T>; require(key: string, required: boolean): Argv<T>; require(keys: ReadonlyArray<number>, msg: string): Argv<T>; require(keys: ReadonlyArray<number>, required: boolean): Argv<T>; require(positionals: number, required: boolean): Argv<T>; require(positionals: number, msg: string): Argv<T>; /** * @deprecated since version 6.6.0 * Use '.demandCommand()' or '.demandOption()' instead */ required<K extends keyof T>(key: K | ReadonlyArray<K>, msg?: string | true): Argv<Defined<T, K>>; required(key: string, msg: string): Argv<T>; required(key: string, required: boolean): Argv<T>; required(keys: ReadonlyArray<number>, msg: string): Argv<T>; required(keys: ReadonlyArray<number>, required: boolean): Argv<T>; required(positionals: number, required: boolean): Argv<T>; required(positionals: number, msg: string): Argv<T>; requiresArg(key: string | ReadonlyArray<string>): Argv<T>; /** * @deprecated since version 6.6.0 * Use '.global()' instead */ reset(): Argv<T>; scriptName($0: string): Argv<T>; showCompletionScript(): Argv<T>; showHidden(option?: string | boolean): Argv<T>; showHidden(option: string, description?: string): Argv<T>; showHelp(consoleLevel?: string): Argv<T>; showHelpOnFail(enable: boolean, message?: string): Argv<T>; skipValidation(key: string | ReadonlyArray<string>): Argv<T>; strict(): Argv<T>; strict(enabled: boolean): Argv<T>; string<K extends keyof T>(key: K | ReadonlyArray<K>): Argv<Omit<T, K> & { [key in K]: ToString<T[key]> }>; string<K extends string>(key: K | ReadonlyArray<K>): Argv<T & { [key in K]: string | undefined }>; // Intended to be used with '.wrap()' terminalWidth(): number; updateLocale(obj: { [key: string]: string }): Argv<T>; updateStrings(obj: { [key: string]: string }): Argv<T>; usage(message: string): Argv<T>; usage<U>(command: string | ReadonlyArray<string>, description: string, builder?: (args: Argv<T>) => Argv<U>, handler?: (args: Arguments<U>) => void): Argv<T>; usage<U>(command: string | ReadonlyArray<string>, showInHelp: boolean, builder?: (args: Argv<T>) => Argv<U>, handler?: (args: Arguments<U>) => void): Argv<T>; usage<O extends { [key: string]: Options }>(command: string | ReadonlyArray<string>, description: string, builder?: O, handler?: (args: Arguments<InferredOptionTypes<O>>) => void): Argv<T>; usage<O extends { [key: string]: Options }>(command: string | ReadonlyArray<string>, showInHelp: boolean, builder?: O, handler?: (args: Arguments<InferredOptionTypes<O>>) => void): Argv<T>; version(): Argv<T>; version(version: string): Argv<T>; version(enable: boolean): Argv<T>; version(optionKey: string, version: string): Argv<T>; version(optionKey: string, description: string, version: string): Argv<T>; wrap(columns: number | null): Argv<T>; } type Arguments<T = {}> = T & { /** Non-option arguments */ _: string[]; /** The script name or node command */ $0: string; /** All remaining options */ [argName: string]: unknown; }; interface DetailedArguments { argv: Arguments; error: Error | null; aliases: {[alias: string]: string[]}; newAliases: {[alias: string]: boolean}; configuration: Configuration; } interface Configuration { 'boolean-negation': boolean; 'camel-case-expansion': boolean; 'combine-arrays': boolean; 'dot-notation': boolean; 'duplicate-arguments-array': boolean; 'flatten-duplicate-arrays': boolean; 'negation-prefix': string; 'parse-numbers': boolean; 'populate--': boolean; 'set-placeholder-key': boolean; 'short-option-groups': boolean; } interface RequireDirectoryOptions { recurse?: boolean; extensions?: ReadonlyArray<string>; visit?: (commandObject: any, pathToFile?: string, filename?: string) => any; include?: RegExp | ((pathToFile: string) => boolean); exclude?: RegExp | ((pathToFile: string) => boolean); } interface Options { alias?: string | ReadonlyArray<string>; array?: boolean; boolean?: boolean; choices?: Choices; coerce?: (arg: any) => any; config?: boolean; configParser?: (configPath: string) => object; conflicts?: string | ReadonlyArray<string> | { [key: string]: string | ReadonlyArray<string> }; count?: boolean; default?: any; defaultDescription?: string; /** * @deprecated since version 6.6.0 * Use 'demandOption' instead */ demand?: boolean | string; demandOption?: boolean | string; desc?: string; describe?: string; description?: string; global?: boolean; group?: string; hidden?: boolean; implies?: string | ReadonlyArray<string> | { [key: string]: string | ReadonlyArray<string> }; nargs?: number; normalize?: boolean; number?: boolean; /** * @deprecated since version 6.6.0 * Use 'demandOption' instead */ require?: boolean | string; /** * @deprecated since version 6.6.0 * Use 'demandOption' instead */ required?: boolean | string; requiresArg?: boolean; skipValidation?: boolean; string?: boolean; type?: "array" | "count" | PositionalOptionsType; } interface PositionalOptions { alias?: string | ReadonlyArray<string>; choices?: Choices; coerce?: (arg: any) => any; conflicts?: string | ReadonlyArray<string> | { [key: string]: string | ReadonlyArray<string> }; default?: any; desc?: string; describe?: string; description?: string; implies?: string | ReadonlyArray<string> | { [key: string]: string | ReadonlyArray<string> }; normalize?: boolean; type?: PositionalOptionsType; } /** Remove keys K in T */ type Omit<T, K> = { [key in Exclude<keyof T, K>]: T[key] }; /** Remove undefined as a possible value for keys K in T */ type Defined<T, K extends keyof T> = Omit<T, K> & { [key in K]: Exclude<T[key], undefined> }; /** Convert T to T[] and T | undefined to T[] | undefined */ type ToArray<T> = Array<Exclude<T, undefined>> | Extract<T, undefined>; /** Gives string[] if T is an array type, otherwise string. Preserves | undefined. */ type ToString<T> = (Exclude<T, undefined> extends any[] ? string[] : string) | Extract<T, undefined>; /** Gives number[] if T is an array type, otherwise number. Preserves | undefined. */ type ToNumber<T> = (Exclude<T, undefined> extends any[] ? number[] : number) | Extract<T, undefined>; type InferredOptionType<O extends Options | PositionalOptions> = O extends { default: infer D } ? D : O extends { type: "count" } ? number : O extends { count: true } ? number : O extends { required: string | true } ? RequiredOptionType<O> : O extends { require: string | true } ? RequiredOptionType<O> : O extends { demand: string | true } ? RequiredOptionType<O> : O extends { demandOption: string | true } ? RequiredOptionType<O> : RequiredOptionType<O> | undefined; type RequiredOptionType<O extends Options | PositionalOptions> = O extends { type: "array", string: true } ? string[] : O extends { type: "array", number: true } ? number[] : O extends { type: "array", normalize: true } ? string[] : O extends { type: "string", array: true } ? string[] : O extends { type: "number", array: true } ? number[] : O extends { string: true, array: true } ? string[] : O extends { number: true, array: true } ? number[] : O extends { normalize: true, array: true } ? string[] : O extends { type: "array" } ? Array<string | number> : O extends { type: "boolean" } ? boolean : O extends { type: "number" } ? number : O extends { type: "string" } ? string : O extends { array: true } ? Array<string | number> : O extends { boolean: true } ? boolean : O extends { number: true } ? number : O extends { string: true } ? string : O extends { normalize: true } ? string : O extends { choices: ReadonlyArray<infer C> } ? C : O extends { coerce: (arg: any) => infer T } ? T : unknown; type InferredOptionTypes<O extends { [key: string]: Options }> = { [key in keyof O]: InferredOptionType<O[key]> }; interface CommandModule<T = {}, U = {}> { aliases?: ReadonlyArray<string> | string; builder?: CommandBuilder<T, U>; command?: ReadonlyArray<string> | string; describe?: string | false; handler: (args: Arguments<U>) => void; } type ParseCallback<T = {}> = (err: Error | undefined, argv: Arguments<T>, output: string) => void; type CommandBuilder<T = {}, U = {}> = { [key: string]: Options } | ((args: Argv<T>) => Argv<U>); type SyncCompletionFunction = (current: string, argv: any) => string[]; type AsyncCompletionFunction = (current: string, argv: any, done: (completion: ReadonlyArray<string>) => void) => void; type MiddlewareFunction<T = {}> = (args: Arguments<T>) => void; type Choices = ReadonlyArray<string | true | undefined>; type PositionalOptionsType = "boolean" | "number" | "string"; } declare var yargs: yargs.Argv; export = yargs;