/// import Enquirer from 'enquirer'; import { Observable, Subject } from 'rxjs'; import { Readable } from 'stream'; import { stateConstants } from './state.constants'; import { Task } from '../lib/task'; import { DefaultRenderer } from '../renderer/default.renderer'; import { SilentRenderer } from '../renderer/silent.renderer'; import { VerboseRenderer } from '../renderer/verbose.renderer'; import { Listr } from '../index'; import { PromptOptions } from '../utils/prompt.interface'; export declare type ListrContext = any; export declare type ListrDefaultRendererValue = 'default'; export declare type ListrDefaultRenderer = typeof DefaultRenderer; export declare type ListrFallbackRendererValue = 'verbose'; export declare type ListrFallbackRenderer = typeof VerboseRenderer; export declare class ListrClass { tasks: Task>[]; constructor(task?: readonly ListrTask>[], options?: ListrBaseClassOptions); run(ctx?: Ctx): Promise; add(tasks: ListrTask> | readonly ListrTask>[]): void; } export interface ListrTaskObject extends Observable { id: string; title?: string; cleanTitle?: string; output?: string; task: (ctx: Ctx, task: ListrTaskWrapper) => void | ListrTaskResult; skip: boolean | string | ((ctx: Ctx) => boolean | string | Promise | Promise); subtasks: ListrTaskObject[]; state: string; message: { duration?: number; error?: string; skip?: string; }; check: (ctx: Ctx) => void; run: (ctx: Ctx, wrapper: ListrTaskWrapper) => Promise; options: ListrOptions; rendererOptions: ListrGetRendererOptions; rendererTaskOptions: ListrGetRendererTaskOptions; renderHook$: Subject; hasSubtasks(): boolean; isPending(): boolean; isSkipped(): boolean; isCompleted(): boolean; isEnabled(): boolean; isPrompt(): boolean; hasFailed(): boolean; hasTitle(): boolean; } export interface ListrTask { title?: string; task: (ctx: Ctx, task: ListrTaskWrapper) => void | ListrTaskResult; skip?: boolean | string | ((ctx: Ctx) => boolean | string | Promise | Promise); enabled?: boolean | ((ctx: Ctx) => boolean | Promise); options?: ListrGetRendererTaskOptions; } export interface ListrTaskWrapper { title: string; output: string; newListr(task: ListrTask | ListrTask[] | ((parent: this) => ListrTask | ListrTask[]), options?: ListrSubClassOptions): Listr; report(error: Error): void; skip(message: string): void; run(ctx?: Ctx, task?: ListrTaskWrapper): Promise; prompt(options: PromptOptions | PromptOptions[]): Promise; stdout(): NodeJS.WritableStream; } export declare type ListrTaskResult = string | Promise | ListrClass | Readable | NodeJS.ReadableStream | Observable; export declare type ListrBaseClassOptions = ListrOptions & ListrDefaultRendererOptions & ListrDefaultNonTTYRendererOptions; export declare type ListrSubClassOptions = ListrOptions & Omit, 'renderer'>; export interface ListrOptions { concurrent?: boolean | number; exitOnError?: boolean; ctx?: Ctx; registerSignalListeners?: boolean; rendererFallback?: boolean | (() => boolean); rendererSilent?: boolean | (() => boolean); disableColor?: boolean; injectWrapper?: { enquirer?: Enquirer; }; } export declare type CreateClass = new (...args: any[]) => T; export declare type ListrGetRendererClassFromValue = T extends 'default' ? typeof DefaultRenderer : T extends 'verbose' ? typeof VerboseRenderer : T extends 'silent' ? typeof SilentRenderer : T extends ListrRendererFactory ? T : never; export declare type ListrGetRendererValueFromClass = T extends DefaultRenderer ? 'default' : T extends VerboseRenderer ? 'verbose' : T extends SilentRenderer ? 'silent' : T extends ListrRendererFactory ? T : never; export declare type ListrGetRendererOptions = T extends 'default' ? typeof DefaultRenderer['rendererOptions'] : T extends 'verbose' ? typeof VerboseRenderer['rendererOptions'] : T extends 'silent' ? typeof SilentRenderer['rendererOptions'] : T extends ListrRendererFactory ? T['rendererOptions'] : never; export declare type ListrGetRendererTaskOptions = T extends 'default' ? typeof DefaultRenderer['rendererTaskOptions'] : T extends 'verbose' ? typeof VerboseRenderer['rendererTaskOptions'] : T extends 'silent' ? typeof SilentRenderer['rendererTaskOptions'] : T extends ListrRendererFactory ? T['rendererTaskOptions'] : never; export interface ListrDefaultRendererOptions { renderer?: T; rendererOptions?: ListrGetRendererOptions; } export interface ListrDefaultNonTTYRendererOptions { nonTTYRenderer?: T; nonTTYRendererOptions?: ListrGetRendererOptions; } export declare type ListrRendererOptions = ListrDefaultRendererOptions & ListrDefaultNonTTYRendererOptions; export declare class ListrRenderer { static rendererOptions: Record; static rendererTaskOptions: Record; static nonTTY: boolean; constructor(tasks: readonly ListrTaskObject[], options: typeof ListrRenderer.rendererOptions); render(): void; end(err?: Error): void; } export declare class ListrBaseRenderer implements ListrRenderer { static rendererOptions: Record; static rendererTaskOptions: Record; static nonTTY: boolean; tasks: ListrTaskObject[]; options: typeof ListrBaseRenderer.rendererOptions; constructor(tasks: ListrTaskObject[], options: typeof ListrBaseRenderer.rendererOptions); render(): void; end(err?: Error): void; } export interface ListrRendererFactory { rendererOptions: Record; rendererTaskOptions: Record; nonTTY: boolean; new (tasks: readonly ListrTaskObject[], options: typeof ListrRenderer.rendererOptions, renderHook$?: Subject): ListrRenderer; } export declare type ListrRendererValue = 'silent' | 'default' | 'verbose' | ListrRendererFactory; export declare type ListrEvent = { type: Exclude; data?: string | boolean; } | { type: 'MESSAGE'; data: ListrTaskObject['message']; }; export declare class ListrError extends Error { message: string; errors?: Error[]; context?: any; constructor(message: string, errors?: Error[], context?: any); } export declare class PromptError extends Error { constructor(message: any); } export declare type ListrEventTypes = 'TITLE' | 'STATE' | 'ENABLED' | 'SUBTASK' | 'DATA' | 'MESSAGE'; export declare type StateConstants = stateConstants;