lugger
Version:
Lugger is an automation framework running on customizable Typescript DSL
82 lines (69 loc) • 1.53 kB
text/typescript
/* Firestack (c) 2020, License: MIT */
import { Class, ReturnCodeFamily } from 'ts-basis';
export interface StageReturn {
outcome?
}
export interface StepReturn {
outcome?
}
export type DefaultWorkflowStateType = (
'RUNNING' |
'CANCELING' |
'SUCCESS' |
'FAILURE' |
'UNSTABLE' |
'CANCELED'
);
export class ParallelOptions {
failFast: boolean = true;
};
export class ParallelExecError extends Error {
threadErrors: { key: string; error: Error }[] = [];
}
export type ParallelExecOutcome = { key: string; outcome: any; }[];
export class Workflow<StateType = DefaultWorkflowStateType, DataType = {[key: string]: any}> {
workflowId?: string;
state: StateType = null;
data: DataType = {} as any;
paused?: boolean = false;
interrupted?: boolean = false;
setup?(){}
post?(){}
success?(){}
failure?(){}
cleanup?(){}
defineEndStates?(){}
finalReturn?(){}
}
export interface FlowContext {
class: Class<any>;
type: string;
property: string;
desc?: PropertyDescriptor;
stageOptions?: StageOptions;
}
export interface StageOptions {
name?: string;
when?: (inst: Workflow) => any;
}
export type StageType = (
'setup' |
'stage' |
'post' |
'cleanup' |
'success'
);
export interface StageInfo<T = any> {
workflow: Workflow;
workflowId: string;
workflowName: string;
stageName: string;
stageType: string;
result?: T;
error?: Error;
rethrow?: boolean;
startTime?: number;
duration?: number;
endTime?: number;
metadata?: {[key: string]: any};
}