@stacksjs/clapp
Version:
A toolkit for building CLI prompts in TypeScript.
40 lines • 1.62 kB
TypeScript
import { Writable } from 'node:stream';
import type { Key, ReadLine } from 'node:readline';
import type { PromptEvents, PromptState } from '../types';
import type { Readable } from 'node:stream';
export declare interface PromptOptions<Self extends Prompt> {
render: (this: Omit<Self, 'prompt'>) => string | undefined
placeholder?: string
initialValue?: any
validate?: ((value: any) => string | Error | undefined) | undefined
input?: Readable
output?: Writable
debug?: boolean
signal?: AbortSignal
}
export declare class Prompt {
protected input: Readable;
protected output: Writable;
private _abortSignal?: AbortSignal;
private rl: ReadLine | undefined;
private opts: Omit<PromptOptions<Prompt>, 'render' | 'input' | 'output'>;
private _render: (context: Omit<Prompt, 'prompt'>) => string | undefined;
private _track: any;
private _prevFrame: any;
private _subscribers: any;
protected _cursor: any;
state: PromptState;
error: any;
value: any;
constructor(options: PromptOptions<Prompt>, trackValue?: any);
protected unsubscribe(): void;
private setSubscriber<T extends keyof PromptEvents>(event: T, opts: { cb: PromptEvents[T], once?: boolean }): void;
on<T extends keyof PromptEvents>(event: T, cb: PromptEvents[T]): void;
once<T extends keyof PromptEvents>(event: T, cb: PromptEvents[T]): void;
emit<T extends keyof PromptEvents>(event: T, data: Parameters<PromptEvents[T]>): void;
prompt(): Promise<string | symbol>;
private onKeypress(char: string, key?: Key): void;
protected close(): void;
private restoreCursor(): void;
private render(): void;
}