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.
141 lines
8.0 KiB
141 lines
8.0 KiB
/// <reference types="node" />
|
|
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<Ctx = ListrContext, Renderer extends ListrRendererValue = ListrDefaultRendererValue, FallbackRenderer extends ListrRendererValue = ListrFallbackRendererValue> {
|
|
tasks: Task<Ctx, ListrGetRendererClassFromValue<Renderer>>[];
|
|
constructor(task?: readonly ListrTask<Ctx, ListrGetRendererClassFromValue<Renderer>>[], options?: ListrBaseClassOptions<Ctx, Renderer, FallbackRenderer>);
|
|
run(ctx?: Ctx): Promise<Ctx>;
|
|
add(tasks: ListrTask<Ctx, ListrGetRendererClassFromValue<Renderer>> | readonly ListrTask<Ctx, ListrGetRendererClassFromValue<Renderer>>[]): void;
|
|
}
|
|
export interface ListrTaskObject<Ctx, Renderer extends ListrRendererFactory> extends Observable<ListrEvent> {
|
|
id: string;
|
|
title?: string;
|
|
cleanTitle?: string;
|
|
output?: string;
|
|
task: (ctx: Ctx, task: ListrTaskWrapper<Ctx, Renderer>) => void | ListrTaskResult<Ctx>;
|
|
skip: boolean | string | ((ctx: Ctx) => boolean | string | Promise<boolean> | Promise<string>);
|
|
subtasks: ListrTaskObject<Ctx, any>[];
|
|
state: string;
|
|
message: {
|
|
duration?: number;
|
|
error?: string;
|
|
skip?: string;
|
|
};
|
|
check: (ctx: Ctx) => void;
|
|
run: (ctx: Ctx, wrapper: ListrTaskWrapper<Ctx, Renderer>) => Promise<void>;
|
|
options: ListrOptions;
|
|
rendererOptions: ListrGetRendererOptions<Renderer>;
|
|
rendererTaskOptions: ListrGetRendererTaskOptions<Renderer>;
|
|
renderHook$: Subject<void>;
|
|
hasSubtasks(): boolean;
|
|
isPending(): boolean;
|
|
isSkipped(): boolean;
|
|
isCompleted(): boolean;
|
|
isEnabled(): boolean;
|
|
isPrompt(): boolean;
|
|
hasFailed(): boolean;
|
|
hasTitle(): boolean;
|
|
}
|
|
export interface ListrTask<Ctx = ListrContext, Renderer extends ListrRendererFactory = any> {
|
|
title?: string;
|
|
task: (ctx: Ctx, task: ListrTaskWrapper<Ctx, Renderer>) => void | ListrTaskResult<Ctx>;
|
|
skip?: boolean | string | ((ctx: Ctx) => boolean | string | Promise<boolean> | Promise<string>);
|
|
enabled?: boolean | ((ctx: Ctx) => boolean | Promise<boolean>);
|
|
options?: ListrGetRendererTaskOptions<Renderer>;
|
|
}
|
|
export interface ListrTaskWrapper<Ctx, Renderer extends ListrRendererFactory> {
|
|
title: string;
|
|
output: string;
|
|
newListr(task: ListrTask<Ctx, Renderer> | ListrTask<Ctx, Renderer>[] | ((parent: this) => ListrTask<Ctx, Renderer> | ListrTask<Ctx, Renderer>[]), options?: ListrSubClassOptions<Ctx, Renderer>): Listr<Ctx, any, any>;
|
|
report(error: Error): void;
|
|
skip(message: string): void;
|
|
run(ctx?: Ctx, task?: ListrTaskWrapper<Ctx, Renderer>): Promise<void>;
|
|
prompt<T = any>(options: PromptOptions | PromptOptions<true>[]): Promise<T>;
|
|
stdout(): NodeJS.WritableStream;
|
|
}
|
|
export declare type ListrTaskResult<Ctx> = string | Promise<any> | ListrClass<Ctx, ListrRendererFactory, any> | Readable | NodeJS.ReadableStream | Observable<any>;
|
|
export declare type ListrBaseClassOptions<Ctx = ListrContext, Renderer extends ListrRendererValue = ListrDefaultRendererValue, FallbackRenderer extends ListrRendererValue = ListrFallbackRendererValue> = ListrOptions<Ctx> & ListrDefaultRendererOptions<Renderer> & ListrDefaultNonTTYRendererOptions<FallbackRenderer>;
|
|
export declare type ListrSubClassOptions<Ctx = ListrContext, Renderer extends ListrRendererValue = ListrDefaultRendererValue> = ListrOptions<Ctx> & Omit<ListrDefaultRendererOptions<Renderer>, 'renderer'>;
|
|
export interface ListrOptions<Ctx = ListrContext> {
|
|
concurrent?: boolean | number;
|
|
exitOnError?: boolean;
|
|
ctx?: Ctx;
|
|
registerSignalListeners?: boolean;
|
|
rendererFallback?: boolean | (() => boolean);
|
|
rendererSilent?: boolean | (() => boolean);
|
|
disableColor?: boolean;
|
|
injectWrapper?: {
|
|
enquirer?: Enquirer<object>;
|
|
};
|
|
}
|
|
export declare type CreateClass<T> = new (...args: any[]) => T;
|
|
export declare type ListrGetRendererClassFromValue<T extends ListrRendererValue> = 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 ListrRendererFactory> = T extends DefaultRenderer ? 'default' : T extends VerboseRenderer ? 'verbose' : T extends SilentRenderer ? 'silent' : T extends ListrRendererFactory ? T : never;
|
|
export declare type ListrGetRendererOptions<T extends ListrRendererValue> = 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 ListrRendererValue> = 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<T extends ListrRendererValue> {
|
|
renderer?: T;
|
|
rendererOptions?: ListrGetRendererOptions<T>;
|
|
}
|
|
export interface ListrDefaultNonTTYRendererOptions<T extends ListrRendererValue> {
|
|
nonTTYRenderer?: T;
|
|
nonTTYRendererOptions?: ListrGetRendererOptions<T>;
|
|
}
|
|
export declare type ListrRendererOptions<Renderer extends ListrRendererValue, FallbackRenderer extends ListrRendererValue> = ListrDefaultRendererOptions<Renderer> & ListrDefaultNonTTYRendererOptions<FallbackRenderer>;
|
|
export declare class ListrRenderer {
|
|
static rendererOptions: Record<string, any>;
|
|
static rendererTaskOptions: Record<string, any>;
|
|
static nonTTY: boolean;
|
|
constructor(tasks: readonly ListrTaskObject<any, ListrRendererFactory>[], options: typeof ListrRenderer.rendererOptions);
|
|
render(): void;
|
|
end(err?: Error): void;
|
|
}
|
|
export declare class ListrBaseRenderer implements ListrRenderer {
|
|
static rendererOptions: Record<string, any>;
|
|
static rendererTaskOptions: Record<string, any>;
|
|
static nonTTY: boolean;
|
|
tasks: ListrTaskObject<any, typeof ListrBaseRenderer>[];
|
|
options: typeof ListrBaseRenderer.rendererOptions;
|
|
constructor(tasks: ListrTaskObject<any, typeof ListrBaseRenderer>[], options: typeof ListrBaseRenderer.rendererOptions);
|
|
render(): void;
|
|
end(err?: Error): void;
|
|
}
|
|
export interface ListrRendererFactory {
|
|
rendererOptions: Record<string, any>;
|
|
rendererTaskOptions: Record<string, any>;
|
|
nonTTY: boolean;
|
|
new (tasks: readonly ListrTaskObject<any, ListrRendererFactory>[], options: typeof ListrRenderer.rendererOptions, renderHook$?: Subject<void>): ListrRenderer;
|
|
}
|
|
export declare type ListrRendererValue = 'silent' | 'default' | 'verbose' | ListrRendererFactory;
|
|
export declare type ListrEvent = {
|
|
type: Exclude<ListrEventTypes, 'MESSAGE'>;
|
|
data?: string | boolean;
|
|
} | {
|
|
type: 'MESSAGE';
|
|
data: ListrTaskObject<any, any>['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;
|