12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565 |
- import Enquirer from 'enquirer';
- import { Observable } from 'rxjs';
- import { Writable, Readable } from 'stream';
- import { WriteStream } from 'fs';
- import * as colorette from 'colorette';
- /**
- * Give event map a set of indexes to not make it go crazy when some events are missing from it.
- * They are optional after all.
- */
- declare class BaseEventMap {
- [k: string]: any;
- }
- /**
- * Parameters for the given event in the {@link EventMap}.
- */
- type EventData<Event extends string, Map extends Record<string, unknown>> = Event extends keyof Map ? Map[Event] : never;
- /**
- * An event map of given events that defined the parameters and return types for firing a certain event.
- */
- type EventMap<Events extends string> = Partial<Record<Events, unknown>>;
- declare class EventManager<Event extends string = string, Map extends Partial<Record<Event, unknown>> = Partial<Record<Event, any>>> {
- private readonly emitter;
- emit<E extends Event = Event>(dispatch: E, args?: EventData<E, Map>): void;
- on<E extends Event = Event>(dispatch: E, handler: (data: EventData<E, Map>) => void): void;
- once<E extends Event = Event>(dispatch: E, handler: (data: EventData<E, Map>) => void): void;
- off<E extends Event = Event>(dispatch: E, handler?: (data: EventData<E, Map>) => void): void;
- complete(): void;
- }
- /**
- * Indicates an UNICODE characters is coming up.
- */
- declare const ANSI_ESCAPE = "\u001B[";
- /**
- * Generic ANSI escape characters for terminal based operations.
- */
- declare const ANSI_ESCAPE_CODES: {
- CURSOR_HIDE: string;
- CURSOR_SHOW: string;
- };
- /**
- * Environment variables for Listr.
- */
- declare enum ListrEnvironmentVariables {
- DISABLE_COLOR = "LISTR_DISABLE_COLOR",
- FORCE_UNICODE = "LISTR_FORCE_UNICODE",
- FORCE_COLOR = "FORCE_COLOR"
- }
- /**
- * The actual error type that is collected and to help identify where the error is triggered from.
- */
- declare enum ListrErrorTypes {
- /** Task has failed and will try to retry. */
- WILL_RETRY = "WILL_RETRY",
- /** Task has failed and will try to rollback. */
- WILL_ROLLBACK = "WILL_ROLLBACK",
- /** Task has failed, ran the rollback action but the rollback action itself has failed. */
- HAS_FAILED_TO_ROLLBACK = "HAS_FAILED_TO_ROLLBACK",
- /** Task has failed. */
- HAS_FAILED = "HAS_FAILED",
- /** Task has failed, but exitOnError is set to false, so will ignore this error. */
- HAS_FAILED_WITHOUT_ERROR = "HAS_FAILED_WITHOUT_ERROR"
- }
- /**
- * Events that are triggered by Listr.
- *
- * These are stateful and singleton events by being attached to the main Listr class and propagating to the subtasks.
- *
- * @see {@link https://listr2.kilic.dev/listr/events.html}
- */
- declare enum ListrEventType {
- /** Indicates that underlying renderer should refresh the current render. */
- SHOULD_REFRESH_RENDER = "SHOUD_REFRESH_RENDER"
- }
- /**
- * Internal events that are fired from the Task.
- *
- * @see {@link https://listr2.kilic.dev/task/events.html}
- */
- declare enum ListrTaskEventType {
- /** Title has changed for the current Task. */
- TITLE = "TITLE",
- /**
- * State has changed for the current Task.
- *
- * @see {@link module:listr2.ListrTaskState}
- */
- STATE = "STATE",
- /** The current Task has been marked as enabled. */
- ENABLED = "ENABLED",
- /** The current Task is currently processing subtasks. */
- SUBTASK = "SUBTASK",
- /** The current Task is now processing a prompt. */
- PROMPT = "PROMPT",
- /** The current Task is now dumping output. */
- OUTPUT = "OUTPUT",
- /**
- * The current Task is now dumping a message.
- *
- * @see {module:Listr2.ListrTaskMessage}
- */
- MESSAGE = "MESSAGE",
- /** The current Task is closed and no further action in expected. */
- CLOSED = "CLOSED"
- }
- /**
- * Tasks can be in various states during the execution.
- *
- * Whenever a state change occurs, the task will emit a {@link module:listr2.ListrTaskEventType.STATE} with the appropriate state.
- */
- declare enum ListrTaskState {
- /** Task has not started yet, waiting for pick-up. */
- WAITING = "WAITING",
- /** Task has started. */
- STARTED = "STARTED",
- /** Task has been completed. */
- COMPLETED = "COMPLETED",
- /** Task has failed. */
- FAILED = "FAILED",
- /** Task has been skipped. */
- SKIPPED = "SKIPPED",
- /** Task is currently trying to rollback. */
- ROLLING_BACK = "ROLLING_BACK",
- /** Task has rolledback successfully after failing. */
- ROLLED_BACK = "ROLLED_BACK",
- /** Task is currently retrying. */
- RETRY = "RETRY",
- /** Task is currently paused. */
- PAUSED = "PAUSED",
- /** Task is currently trying to process a prompt. */
- PROMPT = "PROMPT",
- /** Task has successfully processed the prompt. */
- PROMPT_COMPLETED = "PROMPT_COMPLETED"
- }
- /**
- * Tests to see if the object is an RxJS {@link Observable}
- * @param obj the object to test
- */
- declare function isObservable<T>(obj: any): obj is {
- subscribe: T;
- next: any;
- error: any;
- complete: any;
- };
- declare function isUnicodeSupported(): boolean;
- declare function cleanseAnsi(chunk: string): string;
- declare const color: colorette.Colorette;
- declare function indent(string: string, count: number): string;
- declare const FIGURES_MAIN: {
- warning: string;
- cross: string;
- arrowDown: string;
- tick: string;
- arrowRight: string;
- pointer: string;
- checkboxOn: string;
- arrowLeft: string;
- squareSmallFilled: string;
- pointerSmall: string;
- };
- type Figures = typeof FIGURES_MAIN;
- declare const figures: Figures;
- declare function splat(message: string, ...splat: any[]): string;
- /**
- * Creates a new Listr2 logger.
- *
- * This logger is used throughout the renderers for consistency.
- *
- * @see {@link https://listr2.kilic.dev/renderer/logger.html}
- */
- declare class ListrLogger<Levels extends string = string> {
- options?: ListrLoggerOptions<Levels>;
- readonly process: ProcessOutput;
- constructor(options?: ListrLoggerOptions<Levels>);
- log(level: Levels, message: string | any[], options?: LoggerFieldOptions): void;
- toStdout(message: string | any[], options?: LoggerFieldOptions, eol?: boolean): void;
- toStderr(message: string | any[], options?: LoggerFieldOptions, eol?: boolean): void;
- wrap(message: string, options?: LoggerFormatOptions): string;
- splat(...args: Parameters<typeof splat>): ReturnType<typeof splat>;
- suffix(message: string, ...suffixes: LoggerField[]): string;
- prefix(message: string, ...prefixes: LoggerField[]): string;
- fields(message: string, options?: LoggerFieldOptions<true>): string;
- icon(level: Levels, icon?: string | false): string;
- protected format(level: Levels, message: string | any[], options?: LoggerFieldOptions): string;
- protected style(level: Levels, message: string): string;
- protected applyFormat(message: string, options?: LoggerFormatOptions): string;
- protected spacing(message: string | undefined): string;
- }
- /**
- * Options for the logger
- */
- interface ListrLoggerOptions<Levels extends string> extends ProcessOutputRendererOptions, ListrLoggerStyleMap<Levels | string> {
- /**
- * Use icons for the log levels.
- */
- useIcons?: boolean;
- /**
- * Apply fields and templates as presets before and after each message.
- */
- fields?: LoggerFieldOptions<true>;
- /**
- * Send the designated levels to `process.stderr`.
- */
- toStderr?: (Levels | string)[];
- }
- /**
- * Inject your custom style map consisting of icons and coloring for the ListrLogger.
- *
- * @see {@link https://listr2.kilic.dev/renderer/logger.html}
- */
- interface ListrLoggerStyleMap<Levels extends string> {
- /**
- * Coloring of the levels.
- *
- * @see {@link https://listr2.kilic.dev/renderer/logger.html#style}
- */
- color?: Partial<Record<Levels, LoggerFormat>>;
- /**
- * Icons of the levels.
- *
- * @see {@link https://listr2.kilic.dev/renderer/logger.html#style}
- */
- icon?: Partial<Record<Levels, string>>;
- }
- interface LoggerFieldOptions<MultipleOnly extends boolean = false> {
- /**
- * Prefix fields for the log entry.
- */
- prefix?: MultipleOnly extends false ? LoggerField | LoggerField[] : LoggerField[];
- /**
- * Suffix fields for the log entry.
- */
- suffix?: MultipleOnly extends false ? LoggerField | LoggerField[] : LoggerField[];
- }
- type LoggerFormat = (message?: string) => string;
- interface LoggerFieldFn<Args extends any[] = any[]> {
- /**
- * The value of the given field.
- */
- field: ((...args: Args) => string) | string;
- /**
- * Condition to display the given field.
- */
- condition?: ((...args: Args) => boolean) | boolean;
- /**
- * Formatting/coloring of the field.
- */
- format?: (...args: Args) => LoggerFormat;
- /**
- * Args to pass to other functions whenever this field is triggered.
- */
- args?: Args;
- }
- type LoggerField<Args extends any[] = any[]> = LoggerFieldFn<Args> | string;
- interface RendererLoggerOptions<Levels extends string> {
- /**
- * Inject your custom implementation of the ListrLogger.
- *
- * @see {@link https://listr2.kilic.dev/renderer/logger.html}
- */
- logger?: ListrLogger<Levels>;
- }
- interface LoggerFormatOptions {
- format?: LoggerFormat;
- }
- /** Default ListrLogLevels for the logger */
- declare enum ListrLogLevels {
- STARTED = "STARTED",
- COMPLETED = "COMPLETED",
- FAILED = "FAILED",
- SKIPPED = "SKIPPED",
- OUTPUT = "OUTPUT",
- TITLE = "TITLE",
- ROLLBACK = "ROLLBACK",
- RETRY = "RETRY",
- PROMPT = "PROMPT",
- PAUSED = "PAUSED"
- }
- declare const LISTR_LOGGER_STYLE: ListrLoggerStyleMap<ListrLogLevels>;
- declare const LISTR_LOGGER_STDERR_LEVELS: ListrLogLevels[];
- interface ProcessOutputBufferEntry {
- time: number;
- entry: string;
- stream?: NodeJS.WriteStream;
- }
- interface ProcessOutputBufferOptions {
- limit?: number;
- stream?: NodeJS.WriteStream;
- }
- declare class ProcessOutputBuffer {
- private readonly options?;
- private buffer;
- private readonly decoder;
- constructor(options?: ProcessOutputBufferOptions);
- get all(): ProcessOutputBufferEntry[];
- get last(): ProcessOutputBufferEntry;
- get length(): number;
- write(data: Uint8Array | string, ...args: [(string | undefined)?, ((err?: Error) => void)?] | [((err?: Error) => void)?]): ReturnType<NodeJS.WriteStream['write']>;
- reset(): void;
- }
- declare class ProcessOutputStream {
- private stream;
- private readonly method;
- private readonly buffer;
- constructor(stream: NodeJS.WriteStream);
- get out(): NodeJS.WriteStream;
- hijack(): void;
- release(): ProcessOutputBufferEntry[];
- write(...args: Parameters<NodeJS.WriteStream['write']>): ReturnType<NodeJS.WriteStream['write']>;
- }
- interface ProcessOutputRendererOptions {
- /**
- * Pass your implementation of process output class to write to stdout and stderr.
- *
- * @default 'ProcessOutput'
- * @global global option that can not be temperated with subtasks
- */
- processOutput?: ProcessOutput;
- }
- /**
- * Customize the behavior of the ProcessOutput.
- */
- interface ProcessOutputOptions {
- /**
- * After the `ProcessOutput.release()` which streams should be dumped.
- *
- * @defaultValue `[ 'stdout', 'stderr' ]`
- */
- dump?: (keyof ProcessOutputStreamMap)[];
- /**
- * After the `ProcessOutput.release()` whether to leave empty line or not.
- *
- * @defaultValue `true`
- */
- leaveEmptyLine?: boolean;
- }
- type ProcessOutputStreamMap = Record<'stdout' | 'stderr', ProcessOutputStream>;
- /**
- * Creates a new Listr2 process-output controller.
- *
- * This is used to control the flow to `process.stdout` and `process.stderr` for all renderers.
- *
- * @see {@link https://listr2.kilic.dev/renderer/process-output.html}
- */
- declare class ProcessOutput {
- private readonly options?;
- readonly stream: ProcessOutputStreamMap;
- protected active: boolean;
- constructor(stdout?: NodeJS.WriteStream, stderr?: NodeJS.WriteStream, options?: ProcessOutputOptions);
- get stdout(): NodeJS.WriteStream;
- get stderr(): NodeJS.WriteStream;
- hijack(): void;
- release(): void;
- toStdout(buffer: string, eol?: boolean): boolean;
- toStderr(buffer: string, eol?: boolean): boolean;
- }
- declare function createWritable(cb: (chunk: string) => void): NodeJS.WritableStream;
- declare class Spinner {
- protected readonly spinner: string[];
- private id?;
- private spinnerPosition;
- spin(): void;
- fetch(): string;
- isRunning(): boolean;
- start(cb?: () => void, interval?: number): void;
- stop(): void;
- }
- interface BasePromptOptions {
- message: string | (() => string) | (() => Promise<string>);
- initial?: boolean | number | number[] | string | (() => string) | (() => Promise<string>);
- required?: boolean;
- stdin?: NodeJS.ReadStream;
- stdout?: NodeJS.WriteStream;
- header?: string;
- footer?: string;
- skip?: (value: any) => boolean | Promise<boolean>;
- format?: (value: any) => any | Promise<any>;
- result?: (value: any) => any | Promise<any>;
- validate?: (value: any, state: any) => boolean | Promise<boolean> | string | Promise<string> | Promise<string | boolean>;
- onSubmit?: (name: any, value: any, prompt: Enquirer.Prompt) => boolean | Promise<boolean>;
- onCancel?: (name: any, value: any, prompt: Enquirer.Prompt) => boolean | Promise<boolean>;
- }
- interface BasePromptOptionsWithName extends BasePromptOptions {
- name: string | (() => string);
- }
- interface ArrayPromptOptions extends BasePromptOptions {
- choices: string[] | BasePromptOptionsWithName[];
- maxChoices?: number;
- multiple?: boolean;
- initial?: number | number[];
- delay?: number;
- separator?: boolean;
- sort?: boolean;
- linebreak?: boolean;
- edgeLength?: number;
- align?: 'left' | 'right';
- scroll?: boolean;
- hint?: string;
- }
- interface BooleanPromptOptions extends BasePromptOptions {
- initial?: boolean | (() => string) | (() => Promise<string>);
- }
- interface StringPromptOptions extends BasePromptOptions {
- initial?: string;
- multiline?: boolean;
- }
- interface ScalePromptOptions extends ArrayPromptOptions {
- scale: StringPromptOptions[];
- margin?: [number, number, number, number];
- }
- interface NumberPromptOptions extends BasePromptOptions {
- min?: number;
- max?: number;
- delay?: number;
- float?: boolean;
- round?: boolean;
- major?: number;
- minor?: number;
- initial?: number;
- }
- interface SnippetPromptOptions extends BasePromptOptions {
- newline?: string;
- fields: Partial<BasePromptOptionsWithName>[];
- template: string;
- }
- interface SortPromptOptions extends BasePromptOptions {
- hint?: string;
- drag?: boolean;
- numbered?: boolean;
- }
- interface SurveyPromptOptions extends ArrayPromptOptions {
- scale: BasePromptOptionsWithName[];
- margin: [number, number, number, number];
- }
- interface QuizPromptOptions extends ArrayPromptOptions {
- correctChoice: number;
- }
- interface TogglePromptOptions extends BasePromptOptions {
- enabled?: string;
- disabled?: string;
- }
- interface PromptCancelOptions {
- throw?: boolean;
- }
- /** Returns all the prompt options depending on the type selected. */
- type PromptOptions<T extends boolean = false> = Unionize<{
- [K in PromptTypes]-?: T extends true ? {
- type: K;
- } & PromptOptionsType<K> & {
- name: string | (() => string);
- } : {
- type: K;
- } & PromptOptionsType<K>;
- }> | ({
- type: string;
- } & T extends true ? PromptOptionsType<string> & {
- name: string | (() => string);
- } : PromptOptionsType<string>);
- type Unionize<T extends Record<PropertyKey, unknown>> = {
- [P in keyof T]: T[P];
- }[keyof T];
- type PromptTypes = 'AutoComplete' | 'BasicAuth' | 'Confirm' | 'Editable' | 'Form' | 'Input' | 'Invisible' | 'List' | 'MultiSelect' | 'Numeral' | 'Password' | 'Quiz' | 'Scale' | 'Select' | 'Snippet' | 'Sort' | 'Survey' | 'Text' | 'Toggle';
- type PromptOptionsType<T> = T extends keyof PromptOptionsMap ? PromptOptionsMap[T] : T extends string ? BasePromptOptions & Record<PropertyKey, unknown> : any;
- declare class PromptOptionsMap implements Record<PromptTypes, Record<PropertyKey, any>> {
- AutoComplete: ArrayPromptOptions;
- BasicAuth: StringPromptOptions;
- Confirm: BooleanPromptOptions;
- Editable: ArrayPromptOptions;
- Form: ArrayPromptOptions;
- Input: StringPromptOptions;
- Invisible: StringPromptOptions;
- List: ArrayPromptOptions;
- MultiSelect: ArrayPromptOptions;
- Numeral: NumberPromptOptions;
- Password: StringPromptOptions;
- Quiz: QuizPromptOptions;
- Scale: ScalePromptOptions;
- Select: ArrayPromptOptions;
- Snippet: SnippetPromptOptions;
- Sort: SortPromptOptions;
- Survey: SurveyPromptOptions;
- Text: StringPromptOptions;
- Toggle: TogglePromptOptions;
- }
- interface PromptSettings {
- error?: boolean;
- stdout?: WriteStream | Writable;
- enquirer?: Enquirer;
- }
- interface PromptInstance extends Omit<BasePromptOptions, 'onCancel' | 'onSubmit'> {
- submit: () => void;
- cancel: (err?: string) => void;
- }
- /**
- * Create a new prompt with Enquirer externally.
- * This extends enquirer so you dont have to give a name to single prompts and such so it is also
- * useful to use externally.
- * @param this
- * @param options
- * @param settings
- */
- declare function createPrompt(this: any, options: PromptOptions | PromptOptions<true>[], settings?: PromptSettings): Promise<any>;
- declare function getRendererClass(renderer: ListrRendererValue): ListrRendererFactory;
- declare function getRenderer<Renderer extends ListrRendererValue, FallbackRenderer extends ListrRendererValue>(options: {
- renderer: Renderer;
- rendererOptions: ListrGetRendererOptions<Renderer>;
- fallbackRenderer: FallbackRenderer;
- fallbackRendererOptions: ListrGetRendererOptions<FallbackRenderer>;
- fallbackRendererCondition?: ListrOptions['fallbackRendererCondition'];
- silentRendererCondition?: ListrOptions['silentRendererCondition'];
- }): SupportedRenderer<ListrRendererFactory>;
- /**
- * This function asserts the given value as a function or itself.
- * If the value itself is a function it will evaluate it with the passed in arguments,
- * elsewise it will directly return itself.
- */
- declare function assertFunctionOrSelf<T>(functionOrSelf: T, ...args: T extends (...args: any[]) => any ? Parameters<T> : never): T extends (...args: any[]) => any ? ReturnType<T> : T;
- /**
- * Deep clones a object in the easiest manner.
- */
- declare function cloneObject<T extends Record<PropertyKey, any>>(obj: T): T;
- declare class Concurrency {
- private concurrency;
- private count;
- private queue;
- constructor(options: {
- concurrency: number;
- });
- add<T>(fn: () => Promise<T>): Promise<T>;
- private flush;
- private run;
- }
- declare function delay(time: number): Promise<void>;
- /**
- * The original Task that is defined by the user is wrapped with the TaskWrapper to provide additional functionality.
- *
- * @see {@link https://listr2.kilic.dev/task/task.html}
- */
- declare class TaskWrapper<Ctx, Renderer extends ListrRendererFactory> {
- task: Task<Ctx, ListrRendererFactory>;
- private options;
- constructor(task: Task<Ctx, ListrRendererFactory>, options: ListrBaseClassOptions<Ctx, any, any>);
- get title(): string;
- /**
- * Title of the current task.
- *
- * @see {@link https://listr2.kilic.dev/task/title.html}
- */
- set title(title: string | any[]);
- get output(): string;
- /**
- * Send output from the current task to the renderer.
- *
- * @see {@link https://listr2.kilic.dev/task/output.html}
- */
- set output(output: string | any[]);
- /** Send an output to the output channel as prompt. */
- private set promptOutput(value);
- /**
- * Creates a new set of Listr subtasks.
- *
- * @see {@link https://listr2.kilic.dev/task/subtasks.html}
- */
- newListr<NewCtx = Ctx>(task: ListrTask<NewCtx, Renderer> | ListrTask<NewCtx, Renderer>[] | ((parent: Omit<this, 'skip' | 'enabled'>) => ListrTask<NewCtx, Renderer> | ListrTask<NewCtx, Renderer>[]), options?: ListrSubClassOptions<NewCtx, Renderer>): Listr<NewCtx, any, any>;
- /**
- * Report an error that has to be collected and handled.
- *
- * @see {@link https://listr2.kilic.dev/task/error-handling.html}
- */
- report(error: Error, type: ListrErrorTypes): void;
- /**
- * Skip the current task.
- *
- * @see {@link https://listr2.kilic.dev/task/skip.html}
- */
- skip(message?: string, ...metadata: any[]): void;
- /**
- * Check whether this task is currently in a retry state.
- *
- * @see {@link https://listr2.kilic.dev/task/retry.html}
- */
- isRetrying(): Task<Ctx, Renderer>['retry'];
- /**
- * Create a new prompt for getting user input through `enquirer`.
- *
- * - `enquirer` is a optional peer dependency and has to be already installed separately.
- *
- * @see {@link https://listr2.kilic.dev/task/prompt.html}
- */
- prompt<T = any>(options: PromptOptions | PromptOptions<true>[]): Promise<T>;
- /**
- * Cancel the current active prompt, if there is any.
- *
- * @see {@link https://listr2.kilic.dev/task/prompt.html}
- */
- cancelPrompt(options?: PromptCancelOptions): void;
- /**
- * Generates a fake stdout for your use case, where it will be tunnelled through Listr to handle the rendering process.
- *
- * @see {@link https://listr2.kilic.dev/renderer/process-output.html}
- */
- stdout(type?: ListrTaskEventType.OUTPUT | ListrTaskEventType.PROMPT): NodeJS.WritableStream;
- /** Run this task. */
- run(ctx: Ctx): Promise<void>;
- }
- declare class ListrTaskEventManager extends EventManager<ListrTaskEventType, ListrTaskEventMap> {
- }
- /**
- * Creates and handles a runnable instance of the Task.
- */
- declare class Task<Ctx, Renderer extends ListrRendererFactory> extends ListrTaskEventManager {
- listr: Listr<Ctx, any, any>;
- task: ListrTask<Ctx, any>;
- options: ListrOptions;
- rendererOptions: ListrGetRendererOptions<Renderer>;
- /** Unique id per task, can be used for identifying a Task. */
- id: string;
- /** The current state of the task. */
- state: ListrTaskState;
- /** Subtasks of the current task. */
- subtasks: Task<Ctx, Renderer>[];
- /** Title of the task. */
- title?: string;
- /** Initial/Untouched version of the title for using whenever task has a reset. */
- readonly initialTitle?: string;
- /** Output channel for the task. */
- output?: string;
- /** Current state of the retry process whenever the task is retrying. */
- retry?: ListrTaskRetry;
- /**
- * A channel for messages.
- *
- * This requires a separate channel for messages like error, skip or runtime messages to further utilize in the renderers.
- */
- message: ListrTaskMessage;
- /** Per-task options for the current renderer of the task. */
- rendererTaskOptions: ListrGetRendererTaskOptions<Renderer>;
- /** Current prompt instance or prompt error whenever the task is prompting. */
- prompt: ListrTaskPrompt;
- /** Parent task of the current task. */
- parent?: Task<Ctx, Renderer>;
- /** Enable flag of this task. */
- private enabled;
- /** User provided Task callback function to run. */
- private taskFn;
- /** Marks the task as closed. This is different from finalized since this is not really related to task itself. */
- private closed;
- constructor(listr: Listr<Ctx, any, any>, task: ListrTask<Ctx, any>, options: ListrOptions, rendererOptions: ListrGetRendererOptions<Renderer>);
- /**
- * Update the current state of the Task and emit the neccassary events.
- */
- set state$(state: ListrTaskState);
- /**
- * Update the current output of the Task and emit the neccassary events.
- */
- set output$(data: string);
- /**
- * Update the current prompt output of the Task and emit the neccassary events.
- */
- set promptOutput$(data: string);
- /**
- * Update or extend the current message of the Task and emit the neccassary events.
- */
- set message$(data: Task<Ctx, Renderer>['message']);
- /**
- * Update the current title of the Task and emit the neccassary events.
- */
- set title$(title: string);
- /**
- * Current task path in the hierarchy.
- */
- get path(): string[];
- /**
- * Checks whether the current task with the given context should be set as enabled.
- */
- check(ctx: Ctx): Promise<boolean>;
- /** Returns whether this task has subtasks. */
- hasSubtasks(): boolean;
- /** Returns whether this task is finalized in someform. */
- hasFinalized(): boolean;
- /** Returns whether this task is in progress. */
- isPending(): boolean;
- /** Returns whether this task has started. */
- isStarted(): boolean;
- /** Returns whether this task is skipped. */
- isSkipped(): boolean;
- /** Returns whether this task has been completed. */
- isCompleted(): boolean;
- /** Returns whether this task has been failed. */
- hasFailed(): boolean;
- /** Returns whether this task has an active rollback task going on. */
- isRollingBack(): boolean;
- /** Returns whether the rollback action was successful. */
- hasRolledBack(): boolean;
- /** Returns whether this task has an actively retrying task going on. */
- isRetrying(): boolean;
- /** Returns whether this task has some kind of reset like retry and rollback going on. */
- hasReset(): boolean;
- /** Returns whether enabled function resolves to true. */
- isEnabled(): boolean;
- /** Returns whether this task actually has a title. */
- hasTitle(): boolean;
- /** Returns whether this task has a prompt inside. */
- isPrompt(): boolean;
- /** Returns whether this task is currently paused. */
- isPaused(): boolean;
- /** Returns whether this task is closed. */
- isClosed(): boolean;
- /** Pause the given task for certain time. */
- pause(time: number): Promise<void>;
- /** Run the current task. */
- run(context: Ctx, wrapper: TaskWrapper<Ctx, Renderer>): Promise<void>;
- private close;
- }
- declare class ListrEventManager extends EventManager<ListrEventType, ListrEventMap> {
- }
- declare enum ListrDefaultRendererLogLevels {
- SKIPPED_WITH_COLLAPSE = "SKIPPED_WITH_COLLAPSE",
- SKIPPED_WITHOUT_COLLAPSE = "SKIPPED_WITHOUT_COLLAPSE",
- OUTPUT = "OUTPUT",
- OUTPUT_WITH_BOTTOMBAR = "OUTPUT_WITH_BOTTOMBAR",
- PENDING = "PENDING",
- COMPLETED = "COMPLETED",
- COMPLETED_WITH_FAILED_SUBTASKS = "COMPLETED_WITH_FAILED_SUBTASKS",
- COMPLETED_WITH_FAILED_SISTER_TASKS = "COMPLETED_WITH_SISTER_TASKS_FAILED",
- RETRY = "RETRY",
- ROLLING_BACK = "ROLLING_BACK",
- ROLLED_BACK = "ROLLED_BACK",
- FAILED = "FAILED",
- FAILED_WITH_FAILED_SUBTASKS = "FAILED_WITH_SUBTASKS",
- WAITING = "WAITING",
- PAUSED = "PAUSED"
- }
- declare const LISTR_DEFAULT_RENDERER_STYLE: ListrLoggerStyleMap<ListrDefaultRendererLogLevels>;
- declare class DefaultRenderer implements ListrRenderer {
- private readonly tasks;
- private readonly options;
- private readonly events;
- static nonTTY: boolean;
- static rendererOptions: ListrDefaultRendererOptions;
- static rendererTaskOptions: ListrDefaultRendererTaskOptions;
- private bottom;
- private prompt;
- private activePrompt;
- private readonly spinner;
- private readonly logger;
- private updater;
- private truncate;
- private wrap;
- private readonly cache;
- constructor(tasks: ListrDefaultRendererTask[], options: ListrDefaultRendererOptions, events: ListrEventManager);
- isBottomBar(task: ListrDefaultRendererTask): boolean;
- render(): Promise<void>;
- update(): void;
- end(): void;
- create(options?: {
- tasks?: boolean;
- bottomBar?: boolean;
- prompt?: boolean;
- }): string;
- protected style(task: ListrDefaultRendererTask, output?: boolean): string;
- protected format(message: string, icon: string, level: number): string[];
- private renderer;
- private renderBottomBar;
- private renderPrompt;
- private calculate;
- private reset;
- private dump;
- private indent;
- }
- type PresetTimer = LoggerFieldFn<[number]>;
- interface RendererPresetTimer {
- /**
- * Show duration for the tasks.
- */
- timer?: PresetTimer;
- }
- declare const PRESET_TIMER: PresetTimer;
- /**
- * A basic function to parse minutes and tasks passed given a duration.
- * Useful for renderers to show the task time.
- */
- declare function parseTimer(duration: number): string;
- type PresetTimestamp = LoggerFieldFn;
- interface RendererPresetTimestamp {
- /**
- * Show timestamp for each event that has been logged.
- */
- timestamp?: PresetTimestamp;
- }
- declare const PRESET_TIMESTAMP: PresetTimestamp;
- declare function parseTimestamp(): string;
- type ListrDefaultRendererOptionsStyle = ListrLoggerStyleMap<ListrDefaultRendererLogLevels>;
- type ListrDefaultRendererTask = Task<any, typeof DefaultRenderer>;
- interface ListrDefaultRendererOptions extends RendererPresetTimer, RendererLoggerOptions<ListrDefaultRendererLogLevels>, ListrLoggerStyleMap<ListrDefaultRendererLogLevels> {
- /**
- * Indentation per-level.
- *
- * - This is a global option that can only be changed through the main Listr class.
- *
- * @defaultValue `2`
- */
- indentation?: number;
- /**
- * Formats the output in to the given lines of `process.stdout.columns`.
- *
- * - This is a global option that can only be changed through the main Listr class.
- *
- * @defaultValue `'wrap'`
- */
- formatOutput?: 'truncate' | 'wrap';
- /**
- * Clear all the output generated by the renderer when the Listr completes the execution successfully.
- *
- * - This is a global option that can only be changed through the main Listr class.
- *
- * @defaultValue `false`
- */
- clearOutput?: boolean;
- /**
- * Only update the render whenever there is a incoming request through the hook.
- *
- * - This is a global option that can only be changed through the main Listr class.
- * - Useful for snapshot tests, where this will disable showing spinner and only update the screen if something else has happened in the task worthy to show.
- *
- * @defaultValue `false`
- */
- lazy?: boolean;
- /**
- * Remove empty lines from the output section for decluterring multiple line output.
- *
- * @defaultValue `true`
- */
- removeEmptyLines?: boolean;
- /**
- * Spinner visually indicates that a task is running.
- *
- * - You can always implement your own spinner, if the current one does not please you visually.
- */
- spinner?: Spinner;
- /**
- * Show the subtasks of the current task.
- *
- * @defaultValue `true`
- */
- showSubtasks?: boolean;
- /**
- * Collapse subtasks after current task completes its execution.
- *
- * @defaultValue `true`
- */
- collapseSubtasks?: boolean;
- /**
- * Show skip messages or show the original title of the task.
- *
- * - `true` will output the given skip message if there is any.
- * - `false` will keep the current task title intact. This will also disable `collapseSkips`.
- *
- * @defaultValue `true`
- */
- showSkipMessage?: boolean;
- /**
- * Collapse skip messages into a single message and overwrite the task title.
- *
- * - `true` will collapse skiped tasks.
- * - `false` will show the skip message as a data output under the current task title.
- *
- * @defaultValue `true`
- */
- collapseSkips?: boolean;
- /**
- * Suffix skip messages to clearly indicate the task has been skipped with in `collapseSkips` mode.
- *
- * - `true` will add `[SKIPPED]` as a suffix.
- * - `false` will not add a suffix.
- *
- * @defaultValue `false`
- */
- suffixSkips?: boolean;
- /**
- * Show the error message or show the original title of the task.
- *
- * - `true` will output the current error encountered with the task if there is any.
- * - `false` will keep the current task title intact. This will also disable `collapseErrors`.
- *
- * @defaultValue `true`
- */
- showErrorMessage?: boolean;
- /**
- * Collapse error messages into a single message and overwrite the task title.
- *
- * - `true` will collapse the error message.
- * - `false` will show the error message as a data output under the current task title.
- *
- * @defaultValue `true`
- */
- collapseErrors?: boolean;
- /**
- * Suffix retry messages to clearly indicate the task is currently retrying.
- *
- * - `true` will add `[RETRY:COUNT]` as a suffix.
- * - `false` will not add a suffix.
- *
- * @defaultValue `false`
- */
- suffixRetries?: boolean;
- /**
- * Show duration for the pauses.
- *
- * @defaultValue `PRESET_TIMER`
- */
- pausedTimer?: PresetTimer;
- }
- interface ListrDefaultRendererTaskOptions extends RendererPresetTimer {
- /**
- * Write task output to the bottom bar instead of the gap under the task title itself.
- * This can be useful for stream of data coming in and is the default mode for tasks without a title.
- *
- * - `true` only keep 1 line of the latest data outputted by the task.
- * - `number` will keep the defined amount of data as the last lines.
- * - `false` will not use bottom bar if task has a title.
- *
- * @defaultValue `false`
- */
- bottomBar?: boolean | number;
- /**
- * Keep output of the task after task finishes.
- *
- * - This can be enabled for both normal task output under the title and bottom bar.
- *
- * @defaultValue false
- */
- persistentOutput?: boolean;
- }
- interface ListrDefaultRendererCache {
- output: ListrRendererCacheMap<string[]>;
- rendererOptions: ListrRendererCacheMap<ListrDefaultRendererOptions>;
- rendererTaskOptions: ListrRendererCacheMap<ListrDefaultRendererTaskOptions>;
- }
- declare class SilentRenderer implements ListrRenderer {
- tasks: ListrSilentRendererTask[];
- options: ListrSilentRendererOptions;
- static nonTTY: boolean;
- static rendererOptions: ListrSilentRendererOptions;
- static rendererTaskOptions: ListrSilentRendererTaskOptions;
- constructor(tasks: ListrSilentRendererTask[], options: ListrSilentRendererOptions);
- render(): void;
- end(): void;
- }
- type ListrSilentRendererTask = Task<any, typeof SilentRenderer>;
- type ListrSilentRendererOptions = never;
- type ListrSilentRendererTaskOptions = never;
- declare class SimpleRenderer implements ListrRenderer {
- private readonly tasks;
- private options;
- static nonTTY: boolean;
- static rendererOptions: ListrSimpleRendererOptions;
- static rendererTaskOptions: ListrSimpleRendererTaskOptions;
- private readonly logger;
- private readonly cache;
- constructor(tasks: ListrSimpleRendererTask[], options: ListrSimpleRendererOptions);
- end(): void;
- render(): void;
- private renderer;
- private calculate;
- private reset;
- }
- type ListrSimpleRendererTask = Task<any, typeof SimpleRenderer>;
- interface ListrSimpleRendererOptions extends RendererPresetTimer, RendererPresetTimestamp, RendererLoggerOptions<ListrLogLevels>, ListrLoggerStyleMap<ListrLogLevels> {
- /**
- * Show duration for the pauses.
- *
- * @defaultValue `PRESET_TIMER`
- */
- pausedTimer?: PresetTimer;
- }
- interface ListrSimpleRendererTaskOptions extends RendererPresetTimer {
- }
- interface ListrSimpleRendererCache {
- rendererOptions: ListrRendererCacheMap<ListrSimpleRendererOptions>;
- rendererTaskOptions: ListrRendererCacheMap<ListrSimpleRendererTaskOptions>;
- }
- declare class TestRenderer implements ListrRenderer {
- private readonly tasks;
- private readonly options;
- static nonTTY: boolean;
- static rendererOptions: ListrTestRendererOptions;
- static rendererTaskOptions: ListrTestRendererTaskOptions;
- private readonly logger;
- private serializer;
- constructor(tasks: ListrTestRendererTask[], options: ListrTestRendererOptions);
- render(): void;
- end(): void;
- private renderer;
- }
- interface TestRendererSerializerOutput<T extends ListrTaskEventType> {
- event: T;
- data: ListrTaskEventMap[T];
- task?: Partial<Record<TestRendererSerializerTaskKeys, unknown>>;
- }
- type TestRendererSerializerTaskKeys = Extract<keyof Task<any, typeof TestRenderer>, 'hasSubtasks' | 'hasFinalized' | 'isPending' | 'isStarted' | 'isSkipped' | 'isCompleted' | 'hasFailed' | 'isRollingBack' | 'hasRolledBack' | 'isRetrying' | 'hasReset' | 'isEnabled' | 'hasTitle' | 'isPrompt' | 'isPaused' | 'title' | 'path'>;
- type ListrTestRendererTask = Task<any, typeof TestRenderer>;
- interface ListrTestRendererOptions extends RendererLoggerOptions<ListrLogLevels> {
- /**
- * Log subtasks.
- *
- * @defaultValue `true`
- */
- subtasks?: boolean;
- /**
- * Log given task states.
- */
- state?: ListrTaskState[];
- /**
- * Log output.
- */
- output?: boolean;
- /**
- * Log prompt.
- */
- prompt?: boolean;
- /**
- * Log title changes.
- */
- title?: boolean;
- /**
- * Log given messages.
- */
- messages?: (keyof ListrTaskMessage)[];
- /**
- * Log given messages to stderr instead of stdout.
- */
- messagesToStderr?: (keyof ListrTaskMessage)[];
- /**
- * Serialize the given properties of the task inside the logs.
- */
- task?: false | TestRendererSerializerTaskKeys[];
- }
- type ListrTestRendererTaskOptions = never;
- declare class TestRendererSerializer {
- options?: ListrTestRendererOptions;
- constructor(options?: ListrTestRendererOptions);
- serialize<T extends ListrTaskEventType>(event: T, data: ListrTaskEventMap[T], task?: ListrTestRendererTask): string;
- generate<T extends ListrTaskEventType>(event: T, data: ListrTaskEventMap[T], task?: ListrTestRendererTask): TestRendererSerializerOutput<T>;
- }
- declare class VerboseRenderer implements ListrRenderer {
- private readonly tasks;
- private readonly options;
- static nonTTY: boolean;
- static rendererOptions: ListrVerboseRendererOptions;
- static rendererTaskOptions: ListrVerboseRendererTaskOptions;
- private logger;
- private readonly cache;
- constructor(tasks: ListrVerboseRendererTask[], options: ListrVerboseRendererOptions);
- render(): void;
- end(): void;
- private renderer;
- private calculate;
- private reset;
- }
- type ListrVerboseRendererTask = Task<any, typeof VerboseRenderer>;
- interface ListrVerboseRendererOptions extends RendererPresetTimer, RendererPresetTimestamp, RendererLoggerOptions<ListrLogLevels>, ListrLoggerStyleMap<ListrLogLevels> {
- /**
- * Log the title changes of the task.
- *
- * @default `false`
- */
- logTitleChange?: boolean;
- /**
- * Show duration for the pauses.
- *
- * @defaultValue `PRESET_TIMER`
- */
- pausedTimer?: PresetTimer;
- }
- interface ListrVerboseRendererTaskOptions extends RendererPresetTimer {
- }
- interface ListrVerboseRendererCache {
- rendererOptions: ListrRendererCacheMap<ListrVerboseRendererOptions>;
- rendererTaskOptions: ListrRendererCacheMap<ListrVerboseRendererTaskOptions>;
- }
- /** Name of the default renderer. */
- type ListrDefaultRendererValue = 'default';
- /** Type of default renderer. */
- type ListrDefaultRenderer = typeof DefaultRenderer;
- /** Name of simple renderer. */
- type ListrSimpleRendererValue = 'simple';
- /** Type of simple renderer. */
- type ListrSimpleRenderer = typeof SimpleRenderer;
- /** Name of verbose renderer. */
- type ListrVerboseRendererValue = 'verbose';
- /** Type of verbose renderer. */
- type ListrVerboseRenderer = typeof VerboseRenderer;
- /** Name of test renderer. */
- type ListrTestRendererValue = 'test';
- /** Type of test renderer. */
- type ListrTestRenderer = typeof TestRenderer;
- /** Name of silent renderer. */
- type ListrSilentRendererValue = 'silent';
- /** Type of silent renderer. */
- type ListrSilentRenderer = typeof SilentRenderer;
- /** The default prefered renderer. */
- type ListrPrimaryRendererValue = ListrDefaultRendererValue;
- /** The default fallback renderer. */
- type ListrSecondaryRendererValue = ListrSimpleRendererValue;
- /**
- * Listr2 can process either the integrated renderers as string aliases,
- * or utilize a compatible style renderer that extends the ListrRenderer abstract class.
- */
- type ListrRendererValue = ListrSilentRendererValue | ListrDefaultRendererValue | ListrSimpleRendererValue | ListrVerboseRendererValue | ListrTestRendererValue | ListrRendererFactory;
- /**
- * Returns the class type from friendly names of the renderers.
- */
- type ListrGetRendererClassFromValue<T extends ListrRendererValue> = T extends ListrDefaultRendererValue ? ListrDefaultRenderer : T extends ListrSimpleRendererValue ? ListrSimpleRenderer : T extends ListrVerboseRendererValue ? ListrVerboseRenderer : T extends ListrTestRendererValue ? ListrTestRenderer : T extends ListrSilentRenderer ? ListrSilentRenderer : T extends ListrRendererFactory ? T : never;
- /**
- * Returns the friendly names from the type of renderer classes.
- */
- type ListrGetRendererValueFromClass<T extends ListrRendererFactory> = T extends DefaultRenderer ? ListrDefaultRendererValue : T extends SimpleRenderer ? ListrSimpleRendererValue : T extends VerboseRenderer ? ListrVerboseRendererValue : T extends TestRenderer ? ListrTestRendererValue : T extends SilentRenderer ? ListrSilentRenderer : T extends ListrRendererFactory ? T : never;
- /**
- * Returns renderer global options depending on the renderer type.
- */
- type ListrGetRendererOptions<T extends ListrRendererValue> = T extends ListrRendererValue ? ListrGetRendererClassFromValue<T>['rendererOptions'] : never;
- /**
- * Returns renderer per-task options depending on the renderer type.
- */
- type ListrGetRendererTaskOptions<T extends ListrRendererValue> = T extends ListrRendererValue ? ListrGetRendererClassFromValue<T>['rendererTaskOptions'] : never;
- /** Selection and options of the primary preferred renderer. */
- interface ListrPrimaryRendererOptions<T extends ListrRendererValue> {
- /** Default renderer preferred. */
- renderer?: T;
- /** Renderer options depending on the current renderer. */
- rendererOptions?: ListrGetRendererOptions<T>;
- }
- /** Selection and options of the preferred fallback renderer. */
- interface ListrSecondaryRendererOptions<T extends ListrRendererValue> {
- /** Fallback renderer preferred. */
- fallbackRenderer?: T;
- /** Renderer options depending on the fallback renderer. */
- fallbackRendererOptions?: ListrGetRendererOptions<T>;
- }
- /** Renderer options for the parent Listr class, including setup for selecting default and fallback renderers. */
- type ListrRendererOptions<Renderer extends ListrRendererValue, FallbackRenderer extends ListrRendererValue> = ListrPrimaryRendererOptions<Renderer> & ListrSecondaryRendererOptions<FallbackRenderer>;
- /**
- * The definition of a ListrRenderer.
- *
- * @see {@link https://listr2.kilic.dev/renderer/renderer.html}
- */
- declare class ListrRenderer {
- /** designate renderer global options that is specific to the current renderer */
- static rendererOptions: Record<PropertyKey, any>;
- /** designate renderer per task options that is specific to the current renderer */
- static rendererTaskOptions: Record<PropertyKey, any>;
- /** designate whether this renderer can work in non-tty environments */
- static nonTTY: boolean;
- /** A function to what to do on render */
- render: () => void | Promise<void>;
- /** A function to what to do on end of the render */
- end: (err?: Error) => void;
- /** create a new renderer */
- constructor(tasks: readonly Task<any, ListrRendererFactory>[], options: typeof ListrRenderer.rendererOptions, events?: ListrEventManager);
- }
- /** Factory of compatible Listr renderers. */
- type ListrRendererFactory = typeof ListrRenderer;
- /** Renderer selection for current Listr. */
- interface SupportedRenderer<Renderer extends ListrRendererFactory> {
- renderer: Renderer;
- options?: ListrGetRendererOptions<Renderer>;
- }
- type ListrRendererCacheMap<T> = Map<Task<any, any>['id'], T>;
- /** Listr context. */
- type ListrContext = any | undefined;
- /**
- * Options to set the behavior of Listr.
- */
- interface ListrOptions<Ctx = ListrContext> {
- /**
- * Inject a context through this options wrapper.
- *
- * @defaultValue `{}`
- * @see {@link https://listr2.kilic.dev/listr/context.html}
- */
- ctx?: Ctx;
- /**
- * Concurrency limits how many tasks will be running in parallel.
- *
- * - `false` will only run a single task at a time.
- * - `true` will set it to `Infinity` to run all the tasks in parallel.
- * - Given a `number` it will limit the concurrency to that number.
- *
- * @defaultValue `false`
- */
- concurrent?: boolean | number;
- /**
- * Determine the default behavior of exiting on errors.
- *
- * - `true` will exit the current Listr whenever it encounters an error.
- * - `false` will continue the execution of current Listr if it encounters an error.
- *
- * @defaultValue `true`
- */
- exitOnError?: boolean;
- /**
- * Determine the behavior of exiting after rollback actions.
- *
- * This is independent of `exitOnError`, since failure of a rollback can be a more critical operation comparing to
- * failing a single task.
- *
- * - `true` will stop the execution whenever a rollback happens.
- * - `false` will continue after successfully recovering from a rollback.
- *
- * @defaultValue `true`
- */
- exitAfterRollback?: boolean;
- /**
- * Collects errors inside the `Listr.errors`.
- *
- * - `false` will collect no errors.
- * - `minimal` will only collect the error message and the location.
- * - `full` will clone the current context and task in to the error instance.
- *
- * @defaultValue `false`
- * @see {@link https://listr2.kilic.dev/task/error-handling.html#collected-errors}
- */
- collectErrors?: false | 'minimal' | 'full';
- /**
- * Listr will track SIGINIT signal to update the renderer one last time before failing, therefore it needs to
- * register exit listeners.
- *
- * @defaultValue true
- */
- registerSignalListeners?: boolean;
- /**
- * Determine the certain condition required to use the fallback renderer.
- *
- * @defaultValue handled internally
- */
- fallbackRendererCondition?: boolean | (() => boolean);
- /**
- * Determine the certain condition required to use the silent renderer.
- *
- * @defaultValue handled internally
- */
- silentRendererCondition?: boolean | (() => boolean);
- /**
- * Disable the color output coming from Listr for all renderers.
- *
- * @defaultValue `false`
- */
- disableColor?: boolean;
- /**
- * Force use color, even though the underlying library detects your current output may not be compatible.
- *
- * @defaultValue `false`
- */
- forceColor?: boolean;
- /**
- * Forces TTY stdout even though your current output may not be compatible.
- *
- * @defaultValue `false`
- */
- forceTTY?: boolean;
- /**
- * Forces unicode icons even though your current output may not be compatible.
- *
- * @defaultValue `false`
- */
- forceUnicode?: boolean;
- /**
- * Inject data directly to TaskWrapper.
- */
- injectWrapper?: {
- /**
- * Inject an `enquirer` instance for using with prompts.
- */
- enquirer?: Enquirer<object>;
- };
- }
- /**
- * Parent Listr has more options where you can also change global settings.
- *
- * Any subtasks will respect those options so they will be stripped of that properties.
- */
- interface ListrBaseClassOptions<Ctx = ListrContext, Renderer extends ListrRendererValue = ListrPrimaryRendererValue, FallbackRenderer extends ListrRendererValue = ListrSecondaryRendererValue> extends ListrOptions<Ctx>, ListrPrimaryRendererOptions<Renderer>, ListrSecondaryRendererOptions<FallbackRenderer> {
- }
- /**
- * Subtasks has reduced set options where the missing ones are explicitly set by the base class.
- */
- interface ListrSubClassOptions<Ctx = ListrContext, Renderer extends ListrRendererValue = ListrPrimaryRendererValue> extends Omit<ListrOptions<Ctx>, 'registerSignalListeners' | 'fallbackRendererCondition' | 'silentRendererCondition' | 'disableColor' | 'forceColor' | 'forceTTY' | 'forceUnicode'>, Omit<ListrPrimaryRendererOptions<Renderer>, 'renderer'> {
- }
- /**
- * Internal error handling mechanism for Listr collects the errors and details for a failed task.
- *
- * @see {@link https://listr2.kilic.dev/task/error-handling.html}
- */
- declare class ListrError<Ctx extends ListrContext = ListrContext> extends Error {
- error: Error;
- type: ListrErrorTypes;
- task: Task<Ctx, ListrRendererFactory>;
- path: string[];
- ctx: Ctx;
- constructor(error: Error, type: ListrErrorTypes, task: Task<Ctx, ListrRendererFactory>);
- }
- /**
- * Event map for Listr.
- *
- * @see {@link https://listr2.kilic.dev/listr/events.html}
- * @see {@link module:listr2.ListrEventType}
- */
- declare class ListrEventMap extends BaseEventMap implements EventMap<ListrEventType> {
- [ListrEventType.SHOULD_REFRESH_RENDER]: never;
- }
- /**
- * Internal error coming from renderer.
- */
- declare class ListrRendererError extends Error {
- }
- /**
- * Internal error handling mechanism for Listr prompts to identify the failing cause is coming from a prompt.
- *
- * @see {@link https://listr2.kilic.dev/task/prompts.html}
- */
- declare class PromptError extends Error {
- }
- /**
- * Defines the task, conditions and options to run a specific task in the Listr.
- * This defines the external API for the task where {@link TaskWrapper} is used internally.
- *
- * @see {@link https://listr2.kilic.dev/task/task.html}
- */
- interface ListrTask<Ctx = ListrContext, Renderer extends ListrRendererFactory = any> {
- /**
- * Title of the task.
- *
- * Give this task a title to enchance it on the preferred renderer.
- *
- * - Tasks without a title will be hidden from view in renderers and will act as a background task.
- *
- * @see {@link https://listr2.kilic.dev/task/title.html}
- */
- title?: string | any[];
- /**
- * The task itself in the form of a `Function`, `Promise`, `Listr`, `Observable` or `Stream`.
- *
- * - Task will be executed, whenever the provided criterion is met with the current state and whenever the time for that specific task has come.
- *
- * @see {@link https://listr2.kilic.dev/task/task.html}
- */
- task: ListrTaskFn<Ctx, Renderer>;
- /**
- * Enable a task depending on the context.
- *
- * - The callback function will be evaluated before all the tasks start to check which tasks has been enabled.
- * - The callback function will be evaluated again before the task starts.
- *
- * @see {@link https://listr2.kilic.dev/task/enable.html}
- */
- enabled?: boolean | ((ctx: Ctx) => boolean | Promise<boolean>);
- /**
- * Skip this task depending on the context.
- *
- * - The callback function will be evaluated once before the task starts.
- *
- * @see {@link https://listr2.kilic.dev/task/skip.html}
- */
- skip?: boolean | string | ((ctx: Ctx) => boolean | string | Promise<boolean | string>);
- /**
- * Retries a task with the given amounts whenever a task fails.
- *
- * @see {@link https://listr2.kilic.dev/task/retry.html}
- */
- retry?: number | {
- tries: number;
- delay?: number;
- };
- /**
- * The callback function that you provide will run whenever the attached task fails and
- * give you the ability to revert your changes, before failing.
- *
- * @see {@link https://listr2.kilic.dev/task/rollback.html}
- */
- rollback?: ListrTaskFn<Ctx, Renderer>;
- /**
- * Determine the default behavior of exiting on errors for this attached task.
- */
- exitOnError?: boolean | ((ctx: Ctx) => boolean | Promise<boolean>);
- /**
- * Per-task options, that depends on the selected renderer.
- *
- * - Options of the current preferred renderer can be changed on task level.
- * - These options depend on the implementation of the preferred renderer.
- * - Whenever the preferred renderer has no options it will be displayed as never.
- *
- * **This option will be deprecated in a future major release in favor of having options for both the default and the fallback renderer.**
- */
- options?: ListrGetRendererTaskOptions<Renderer>;
- }
- /**
- * Result of the processed task can be any of the supported types.
- */
- type ListrTaskResult<Ctx> = string | Promise<any> | Listr<Ctx, ListrRendererValue, any> | Readable | NodeJS.ReadableStream | Observable<any>;
- /**
- * The callback function from the user that defines the task.
- */
- type ListrTaskFn<Ctx, Renderer extends ListrRendererFactory> = (ctx: Ctx, task: TaskWrapper<Ctx, Renderer>) => void | ListrTaskResult<Ctx>;
- /**
- * Tasks can have attached prompts to them.
- *
- * - Whenever the prompt is running this should be with full with the instance of current prompt.
- * - Whenever the prompt fails/cancelled it is tracked here as well due to some internal complication with `enquirer`.
- */
- type ListrTaskPrompt = PromptInstance | PromptError;
- /**
- * Tasks can retry themselves when defined.
- *
- * - This holds the value of the current error and the current retry attempt.
- */
- interface ListrTaskRetry {
- count: number;
- error?: Error;
- }
- /**
- * Task can provide additional information depending on the current state of the Task.
- *
- * TaskMessage is used to propagate these messages to the renderers for displaying them to the end-user.
- */
- interface ListrTaskMessage {
- /** Elapsed time of the current task, whenever the Task completes. */
- duration?: number;
- /** Error message from the current task, whenever the Task fails. */
- error?: string;
- /** Skip message from the current task, whenever the Task skips. */
- skip?: string;
- /** Rollback message from the current task, whenever the Task finishes rollback. */
- rollback?: string;
- /** Retry message from the current task, whenever the Task tries to retry. */
- retry?: ListrTaskRetry;
- /** Holds the time as epoch time of when will this task continue to execute. */
- paused?: number;
- }
- /**
- * Event map for Task.
- *
- * @see {@link https://listr2.kilic.dev/task/events.html}
- * @see {@link module:listr2.ListrTaskEventType}
- */
- declare class ListrTaskEventMap extends BaseEventMap implements EventMap<ListrTaskEventType> {
- [ListrTaskEventType.STATE]: ListrTaskState;
- [ListrTaskEventType.ENABLED]: boolean;
- [ListrTaskEventType.SUBTASK]: Task<any, any>[];
- [ListrTaskEventType.TITLE]: string;
- [ListrTaskEventType.OUTPUT]: string;
- [ListrTaskEventType.MESSAGE]: ListrTaskMessage;
- [ListrTaskEventType.PROMPT]: string;
- [ListrTaskEventType.CLOSED]: never;
- }
- /**
- * Create a new task list with Listr.
- *
- * @see {@link https://listr2.kilic.dev/listr/listr.html}
- */
- declare class Listr<Ctx = ListrContext, Renderer extends ListrRendererValue = ListrPrimaryRendererValue, FallbackRenderer extends ListrRendererValue = ListrSecondaryRendererValue> {
- task: ListrTask<Ctx, ListrGetRendererClassFromValue<Renderer>> | ListrTask<Ctx, ListrGetRendererClassFromValue<Renderer>>[];
- options?: ListrBaseClassOptions<Ctx, Renderer, FallbackRenderer>;
- parentTask?: Task<any, any>;
- tasks: Task<Ctx, ListrGetRendererClassFromValue<Renderer>>[];
- errors: ListrError<Ctx>[];
- ctx: Ctx;
- events: ListrEventManager;
- path: string[];
- rendererClass: ListrRendererFactory;
- rendererClassOptions: ListrGetRendererOptions<ListrRendererFactory>;
- private concurrency;
- private renderer;
- constructor(task: ListrTask<Ctx, ListrGetRendererClassFromValue<Renderer>> | ListrTask<Ctx, ListrGetRendererClassFromValue<Renderer>>[], options?: ListrBaseClassOptions<Ctx, Renderer, FallbackRenderer>, parentTask?: Task<any, any>);
- add(tasks: ListrTask<Ctx, ListrGetRendererClassFromValue<Renderer>> | ListrTask<Ctx, ListrGetRendererClassFromValue<Renderer>>[]): void;
- run(context?: Ctx): Promise<Ctx>;
- private generate;
- private runTask;
- }
- /**
- * Creates a new Listr2 task manager.
- *
- * Useful for creating a single instance of Listr2 with pre-set settings.
- *
- * @see {@link https://listr2.kilic.dev/listr/manager.html}
- */
- declare class Manager<Ctx = ListrContext, Renderer extends ListrRendererValue = ListrPrimaryRendererValue, FallbackRenderer extends ListrRendererValue = ListrSecondaryRendererValue> {
- options?: ListrBaseClassOptions<Ctx, Renderer, FallbackRenderer>;
- errors: ListrError[];
- tasks: ListrTask<ListrContext, ListrGetRendererClassFromValue<Renderer>>[];
- constructor(options?: ListrBaseClassOptions<Ctx, Renderer, FallbackRenderer>);
- get ctx(): Ctx;
- set ctx(ctx: Ctx);
- add<InjectCtx = Ctx>(tasks: ListrTask<InjectCtx, ListrGetRendererClassFromValue<Renderer>>[] | ((ctx?: InjectCtx) => ListrTask<InjectCtx, ListrGetRendererClassFromValue<Renderer>>[]), options?: ListrSubClassOptions<InjectCtx, Renderer>): void;
- runAll<InjectCtx = Ctx>(options?: ListrBaseClassOptions<InjectCtx, Renderer, FallbackRenderer>): Promise<InjectCtx>;
- newListr<InjectCtx, InjectRenderer extends ListrRendererValue = Renderer, InjectFallbackRenderer extends ListrRendererValue = FallbackRenderer>(tasks: ListrTask<InjectCtx, ListrGetRendererClassFromValue<InjectRenderer>>[], options?: ListrBaseClassOptions<InjectCtx, InjectRenderer, InjectFallbackRenderer>): Listr<InjectCtx, InjectRenderer, InjectFallbackRenderer>;
- indent<InjectCtx = Ctx>(tasks: ListrTask<InjectCtx, ListrGetRendererClassFromValue<Renderer>>[] | ((ctx?: InjectCtx) => ListrTask<InjectCtx, ListrGetRendererClassFromValue<Renderer>>[]), options?: ListrBaseClassOptions<InjectCtx, Renderer, FallbackRenderer>, taskOptions?: Omit<ListrTask<InjectCtx, ListrGetRendererClassFromValue<Renderer>>, 'task'>): ListrTask<InjectCtx, ListrGetRendererClassFromValue<Renderer>>;
- run<InjectCtx = Ctx>(tasks: ListrTask<InjectCtx, ListrGetRendererClassFromValue<Renderer>>[], options?: ListrBaseClassOptions<InjectCtx, Renderer, FallbackRenderer>): Promise<InjectCtx>;
- }
- export { ANSI_ESCAPE, ANSI_ESCAPE_CODES, BaseEventMap, Concurrency, DefaultRenderer, EventData, EventManager, EventMap, Figures, LISTR_DEFAULT_RENDERER_STYLE, LISTR_LOGGER_STDERR_LEVELS, LISTR_LOGGER_STYLE, Listr, ListrBaseClassOptions, ListrContext, ListrDefaultRenderer, ListrDefaultRendererCache, ListrDefaultRendererLogLevels, ListrDefaultRendererOptions, ListrDefaultRendererOptionsStyle, ListrDefaultRendererTask, ListrDefaultRendererTaskOptions, ListrDefaultRendererValue, ListrEnvironmentVariables, ListrError, ListrErrorTypes, ListrEventManager, ListrEventMap, ListrEventType, ListrGetRendererClassFromValue, ListrGetRendererOptions, ListrGetRendererTaskOptions, ListrGetRendererValueFromClass, ListrLogLevels, ListrLogger, ListrLoggerOptions, ListrLoggerStyleMap, ListrOptions, ListrPrimaryRendererOptions, ListrPrimaryRendererValue, ListrRenderer, ListrRendererCacheMap, ListrRendererError, ListrRendererFactory, ListrRendererOptions, ListrRendererValue, ListrSecondaryRendererOptions, ListrSecondaryRendererValue, ListrSilentRenderer, ListrSilentRendererOptions, ListrSilentRendererTask, ListrSilentRendererTaskOptions, ListrSilentRendererValue, ListrSimpleRenderer, ListrSimpleRendererCache, ListrSimpleRendererOptions, ListrSimpleRendererTask, ListrSimpleRendererTaskOptions, ListrSimpleRendererValue, ListrSubClassOptions, ListrTask, ListrTaskEventManager, ListrTaskEventMap, ListrTaskEventType, ListrTaskFn, ListrTaskMessage, Task as ListrTaskObject, ListrTaskPrompt, ListrTaskResult, ListrTaskRetry, ListrTaskState, TaskWrapper as ListrTaskWrapper, ListrTestRenderer, ListrTestRendererOptions, ListrTestRendererTask, ListrTestRendererTaskOptions, ListrTestRendererValue, ListrVerboseRenderer, ListrVerboseRendererCache, ListrVerboseRendererOptions, ListrVerboseRendererTask, ListrVerboseRendererTaskOptions, ListrVerboseRendererValue, LoggerField, LoggerFieldFn, LoggerFieldOptions, LoggerFormat, LoggerFormatOptions, Manager, PRESET_TIMER, PRESET_TIMESTAMP, PresetTimer, PresetTimestamp, ProcessOutput, ProcessOutputBuffer, ProcessOutputBufferEntry, ProcessOutputBufferOptions, ProcessOutputOptions, ProcessOutputRendererOptions, ProcessOutputStream, ProcessOutputStreamMap, PromptCancelOptions, PromptError, PromptInstance, PromptOptions, PromptOptionsMap, PromptOptionsType, PromptSettings, PromptTypes, RendererLoggerOptions, RendererPresetTimer, RendererPresetTimestamp, SilentRenderer, SimpleRenderer, Spinner, SupportedRenderer, TestRenderer, TestRendererSerializer, TestRendererSerializerOutput, TestRendererSerializerTaskKeys, Unionize, VerboseRenderer, assertFunctionOrSelf, cleanseAnsi, cloneObject, color, createPrompt, createWritable, delay, figures, getRenderer, getRendererClass, indent, isObservable, isUnicodeSupported, parseTimer, parseTimestamp, splat };
|