| import { EventEmitter } from "events"; |
| |
| 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 | Promise<boolean> | string | Promise<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 |
| } |
| |
| 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 |
| } |
| |
| 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 |
| } |
| |
| type PromptOptions = |
| | BasePromptOptions |
| | ArrayPromptOptions |
| | BooleanPromptOptions |
| | StringPromptOptions |
| | NumberPromptOptions |
| | SnippetPromptOptions |
| | SortPromptOptions |
| |
| declare class BasePrompt extends EventEmitter { |
| constructor(options?: PromptOptions); |
| |
| render(): void; |
| |
| run(): Promise<any>; |
| } |
| |
| declare class Enquirer<T = object> extends EventEmitter { |
| 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 = Enquirer; |