UNPKG

2.49 kBTypeScriptView Raw
1/// <reference types="node" />
2import { EventEmitter } from 'events';
3export declare const ICON_SUCCESS: string;
4export declare const ICON_FAILURE: string;
5export declare class Spinner {
6 frames: string[];
7 i: number;
8 constructor(frames?: string[]);
9 frame(): string;
10}
11export interface TaskOptions {
12 readonly msg?: string;
13 readonly tickInterval?: number;
14}
15export interface TaskResult {
16 /**
17 * Elapsed time from process.hrtime()
18 */
19 elapsedTime: [number, number];
20 /**
21 * Whether the task succeeded or not
22 */
23 success: boolean;
24}
25export interface Task extends EventEmitter {
26 on(name: 'success', handler: () => void): this;
27 on(name: 'failure', handler: () => void): this;
28 on(name: 'clear', handler: () => void): this;
29 on(name: 'tick', handler: () => void): this;
30 on(name: 'end', handler: (result: TaskResult) => void): this;
31 emit(name: 'success'): boolean;
32 emit(name: 'failure'): boolean;
33 emit(name: 'clear'): boolean;
34 emit(name: 'tick'): boolean;
35 emit(name: 'end', result: TaskResult): boolean;
36}
37export declare class Task extends EventEmitter {
38 tickInterval?: number;
39 intervalId?: NodeJS.Timer;
40 running: boolean;
41 progressRatio?: number;
42 protected _msg: string;
43 protected _startTime?: [number, number];
44 protected _success: boolean;
45 constructor({ msg, tickInterval }?: TaskOptions);
46 get msg(): string;
47 set msg(msg: string);
48 start(): this;
49 tick(): this;
50 progress(prog: number, total: number): this;
51 clear(): this;
52 end(): this;
53 succeed(): this;
54 fail(): this;
55}
56export interface TaskChain extends EventEmitter {
57 on(name: 'end', handler: (lastTask?: Task) => void): this;
58 on(name: 'failure', handler: (failedTask?: Task) => void): this;
59 on(name: 'next', handler: (task: Task) => void): this;
60 emit(name: 'end', lastTask?: Task): boolean;
61 emit(name: 'failure', failedTask?: Task): boolean;
62 emit(name: 'next', task: Task): boolean;
63}
64export interface TaskChainOptions {
65 readonly taskOptions?: Partial<TaskOptions>;
66}
67export declare class TaskChain extends EventEmitter {
68 protected current?: Task;
69 protected readonly tasks: Task[];
70 protected readonly taskOptions: Partial<TaskOptions>;
71 constructor({ taskOptions }?: TaskChainOptions);
72 next(msg: string): Task;
73 createTask(options: TaskOptions): Task;
74 nextTask(task: Task): Task;
75 end(): this;
76 fail(): this;
77 cleanup(): this;
78}