You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

151 lines
3.6 KiB

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;