123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- 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;
|