ordu
Version:
Execute functions in a configurable order, modifying a shared data structure.
121 lines (120 loc) • 3.08 kB
TypeScript
/// <reference types="node" />
import { EventEmitter } from 'events';
import StrictEventEmitter from 'strict-event-emitter-types';
export type { TaskDef, TaskSpec };
export { Ordu, Task, LegacyOrdu };
interface Events {
'task-result': TaskResult;
'task-end': {
result: TaskResult;
operate: Operate;
data: any;
};
}
declare type OrduEmitter = StrictEventEmitter<EventEmitter, Events>;
interface OrduIF {
add(td: TaskDef): OrduIF;
add(td: TaskDef[]): OrduIF;
add(te: TaskExec): OrduIF;
add(te: TaskExec, td: TaskDef): OrduIF;
add(te: TaskExec[]): OrduIF;
tasks(): Task[];
task: {
[name: string]: Task;
};
operator(name: string, opr: Operator): void;
operator(opr: Operator): void;
operators(): object;
execSync(this: Ordu, ctx: any, data: any, opts: any): ExecResult;
exec(ctx: any, data: any, opts: any): Promise<ExecResult>;
}
interface TaskDef {
id?: string;
name?: string;
before?: string;
after?: string;
exec?: TaskExec;
if?: {
[k: string]: any;
};
active?: boolean;
meta?: any;
}
declare type TaskExec = (s: TaskSpec) => any;
interface TaskSpec {
ctx: any;
data: any;
task: Task;
}
declare class Task {
static count: number;
runid: string;
name: string;
before?: string;
after?: string;
exec: (s: TaskSpec) => TaskResult;
if?: {
[k: string]: any;
};
active?: boolean;
meta: {
when: number;
from: object;
};
constructor(taskdef: TaskDef);
}
declare class TaskResult {
op: string;
out?: object;
err?: Error;
why?: string;
task: Task;
name: string;
start: number;
end: number;
runid: string;
index: number;
total: number;
async: boolean;
constructor(task: Task, taskI: number, total: number, runid: string);
update(raw: any): void;
}
declare type Operate = {
stop: boolean;
err?: Error;
async?: boolean;
};
declare type ExecResult = {
tasklog: any[];
task?: Task;
taskcount: number;
tasktotal: number;
start: number;
end: number;
err?: Error;
data: object;
};
declare type Operator = (r: TaskResult, ctx: any, data: object) => Operate;
declare const Ordu_base: new () => OrduEmitter;
declare class Ordu extends Ordu_base implements OrduIF {
private _opts;
private _tasks;
private _operator_map;
task: {
[name: string]: Task;
};
constructor(opts?: any);
operator(first: string | Operator, opr?: Operator): void;
operators(): {
[op: string]: Operator;
};
add(first: any, second?: any): Ordu;
private _add_task;
execSync(this: Ordu, ctx: any, data: any, opts: any): ExecResult;
exec(ctx: any, data: any, opts: any): Promise<ExecResult>;
_execImpl(this: Ordu, ctx: any, data: any, opts: any, resolve?: (execres: ExecResult) => void): ExecResult | Promise<ExecResult>;
tasks(): Task[];
private _operate;
private _task_if;
}
declare function LegacyOrdu(opts?: any): any;