UNPKG

3.19 kBTypeScriptView Raw
1// Type definitions for listr 0.14
2// Project: https://github.com/samverschueren/listr#readme
3// Definitions by: Dusan Radovanovic <https://github.com/durad>
4// Vladislav Polyakov <https://github.com/polRk>
5// Jason Zukewich <https://github.com/jgzuke>
6// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
7// TypeScript Version: 2.8
8
9/// <reference types="node" />
10
11import * as stream from "stream";
12import { Observable } from "rxjs";
13
14declare namespace Listr {
15 type ListrContext = any;
16 type ListrRendererValue<Ctx> = "silent" | "default" | "verbose" | ListrRendererClass<Ctx>;
17 type ListrTaskResult<Ctx> = string | Promise<any> | Listr<Ctx> | stream.Readable | Observable<any>;
18
19 interface ListrOptions<Ctx = ListrContext> {
20 concurrent?: boolean | number | undefined;
21 exitOnError?: boolean | undefined;
22 renderer?: ListrRendererValue<Ctx> | undefined;
23 nonTTYRenderer?: ListrRendererValue<Ctx> | undefined;
24 }
25
26 interface ListrEvent {
27 type: string;
28 data?: string | boolean | undefined;
29 }
30
31 interface ListrTask<Ctx = ListrContext> {
32 title: string;
33 task: (ctx: Ctx, task: ListrTaskWrapper<Ctx>) => void | ListrTaskResult<Ctx>;
34 skip?: ((ctx: Ctx) => void | boolean | string | Promise<undefined | boolean | string>) | undefined;
35 enabled?: ((ctx: Ctx) => boolean | Promise<boolean> | Observable<boolean>) | undefined;
36 }
37
38 interface ListrTaskObject<Ctx> extends Observable<ListrEvent> {
39 title: string;
40 output?: string | undefined;
41 task: (ctx: Ctx, task: ListrTaskWrapper<Ctx>) => void | ListrTaskResult<Ctx>;
42 skip: (ctx: Ctx) => void | boolean | string | Promise<undefined | boolean | string>;
43 subtasks: ReadonlyArray<ListrTaskWrapper<Ctx>>;
44 state: string;
45 check: (ctx: Ctx) => void;
46 hasSubtasks(): boolean;
47 isPending(): boolean;
48 isSkipped(): boolean;
49 isCompleted(): boolean;
50 isEnabled(): boolean;
51 hasFailed(): boolean;
52 run: (ctx: Ctx, wrapper: ListrTaskWrapper<Ctx>) => Promise<void>;
53 }
54
55 interface ListrTaskWrapper<Ctx = ListrContext> {
56 title: string;
57 output: string;
58 report(error: Error): void;
59 skip(message: string): void;
60 run(ctx?: Ctx): Promise<void>;
61 }
62
63 interface ListrError<Ctx> extends Error {
64 context: Ctx;
65 }
66
67 interface ListrRenderer {
68 render(): void;
69 end(err: Error): void;
70 }
71 interface ListrRendererClass<Ctx> {
72 nonTTY: boolean;
73 new(tasks: ReadonlyArray<ListrTaskObject<Ctx>>, options: ListrOptions<Ctx>): ListrRenderer;
74 }
75}
76
77declare class Listr<Ctx = Listr.ListrContext> {
78 constructor(tasks?: ReadonlyArray<Listr.ListrTask<Ctx>>, options?: Listr.ListrOptions<Ctx>);
79 constructor(options?: Listr.ListrOptions<Ctx>);
80 tasks: ReadonlyArray<Listr.ListrTaskWrapper<Ctx>>;
81 setRenderer(value: Listr.ListrRendererValue<Ctx>): void;
82 add(tasks: Listr.ListrTask<Ctx> | ReadonlyArray<Listr.ListrTask<Ctx>>): void;
83 render(): void;
84 run(ctx?: Ctx): Promise<Ctx>;
85}
86
87export = Listr;