UNPKG

gluegun

Version:

A delightful toolkit for building Node-powered CLIs.

111 lines (110 loc) 3.8 kB
/// <reference types="node" /> interface BasePromptOptions { name: string | (() => string); type: string | (() => string); message: string | (() => string) | (() => Promise<string>); initial?: any; required?: boolean; format?(value: string): string | Promise<string>; result?(value: string): string | Promise<string>; skip?: ((state: object) => boolean | Promise<boolean>) | boolean; validate?(value: string): boolean | string | Promise<boolean | string>; onSubmit?(name: string, value: any, prompt: Enquirer.Prompt): boolean | Promise<boolean>; onCancel?(name: string, value: any, prompt: Enquirer.Prompt): boolean | Promise<boolean>; stdin?: NodeJS.ReadStream; stdout?: NodeJS.WriteStream; } export interface Choice { name: string; message?: string; value?: string; hint?: string; disabled?: boolean | string; } interface ArrayPromptOptions extends BasePromptOptions { type: 'autocomplete' | 'editable' | 'form' | 'multiselect' | 'select' | 'survey' | 'list' | 'scale'; choices: string[] | Choice[]; maxChoices?: number; muliple?: boolean; initial?: number; delay?: number; separator?: boolean; sort?: boolean; linebreak?: boolean; edgeLength?: number; align?: 'left' | 'right'; scroll?: boolean; suggest?: (input: string, choices: Choice[]) => Choice[]; } interface BooleanPromptOptions extends BasePromptOptions { type: 'confirm'; initial?: boolean; } interface StringPromptOptions extends BasePromptOptions { type: 'input' | 'invisible' | 'list' | 'password' | 'text'; initial?: string; multiline?: boolean; } interface NumberPromptOptions extends BasePromptOptions { type: 'numeral'; min?: number; max?: number; delay?: number; float?: boolean; round?: boolean; major?: number; minor?: number; initial?: number; } interface SnippetPromptOptions extends BasePromptOptions { type: 'snippet'; newline?: string; template?: string; } interface SortPromptOptions extends BasePromptOptions { type: 'sort'; hint?: string; drag?: boolean; numbered?: boolean; } export declare type PromptOptions = BasePromptOptions | ArrayPromptOptions | BooleanPromptOptions | StringPromptOptions | NumberPromptOptions | SnippetPromptOptions | SortPromptOptions; declare class BasePrompt { constructor(options?: PromptOptions); render(): void; run(): Promise<any>; } declare class Enquirer<T = object> { constructor(options?: object, answers?: T); /** * Register a custom prompt type. * * @param type * @param fn `Prompt` class, or a function that returns a `Prompt` class. */ register(type: string, fn: typeof BasePrompt | (() => typeof BasePrompt)): this; /** * Register a custom prompt type. */ register(type: { [key: string]: typeof BasePrompt | (() => typeof BasePrompt); }): this; /** * Prompt function that takes a "question" object or array of question objects, * and returns an object with responses from the user. * * @param questions Options objects for one or more prompts to run. */ prompt(questions: PromptOptions | ((this: Enquirer) => PromptOptions) | (PromptOptions | ((this: Enquirer) => PromptOptions))[]): Promise<T>; /** * Use an enquirer plugin. * * @param plugin Plugin function that takes an instance of Enquirer. */ use(plugin: (this: this, enquirer: this) => void): this; } declare namespace Enquirer { function prompt<T = object>(questions: PromptOptions | ((this: Enquirer) => PromptOptions) | (PromptOptions | ((this: Enquirer) => PromptOptions))[]): Promise<T>; class Prompt extends BasePrompt { } } export default Enquirer;