alvamind-workflow
Version:
A lightweight and flexible workflow automation library for JavaScript/TypeScript projects
73 lines • 2.38 kB
TypeScript
export interface WorkflowCommand {
command?: string;
name: string;
skippable?: boolean;
parallel?: WorkflowCommand[];
callback?: (result: {
exitCode: number;
stdout: string;
stderr: string;
}) => string | undefined;
condition?: string | ((context: WorkflowContext) => boolean | Promise<boolean>);
id?: string;
dependsOn?: string[];
}
export interface WorkflowConfig {
version: string;
name: string;
commands: WorkflowCommand[];
}
export interface Command {
command?: () => Promise<{
exitCode: number;
stdout: string;
stderr: string;
}>;
originalCmd?: string;
name: string;
skippable?: boolean;
parallel?: Command[];
callback?: (result: {
exitCode: number;
stdout: string;
stderr: string;
}) => string | undefined;
condition?: ((context: WorkflowContext) => boolean | Promise<boolean>);
id?: string;
dependsOn?: string[];
}
export interface RunnerOptions {
testMode?: boolean;
interactive?: boolean;
}
export interface CommandResult {
exitCode: number;
stdout: string;
stderr: string;
id?: string;
}
export interface WorkflowContext {
results: Record<string, CommandResult>;
getResult: (id: string) => CommandResult | undefined;
getStdout: (id: string) => string | undefined;
getExitCode: (id: string) => number | undefined;
getStderr: (id: string) => string | undefined;
}
export interface WorkflowBuilder {
name(name: string): WorkflowBuilder;
execute<T extends string = string>(command: string, name: string, skippable?: boolean): WorkflowBuilder;
executeWith<T extends string = string>(command: string, name: string, callback: (result: {
exitCode: number;
stdout: string;
stderr: string;
}) => string | undefined, skippable?: boolean): WorkflowBuilder;
executeWithId<T extends string>(id: T, command: string, name: string, skippable?: boolean): WorkflowBuilder;
when(condition: (context: WorkflowContext) => boolean | Promise<boolean>, name: string): WorkflowBuilder;
dependsOn(...ids: string[]): WorkflowBuilder;
build(): WorkflowConfig;
run(options?: WorkflowOptions): Promise<boolean>;
}
export interface WorkflowOptions extends RunnerOptions {
name?: string;
}
//# sourceMappingURL=types.d.ts.map