UNPKG

@jescrich/nestjs-workflow

Version:
38 lines (37 loc) 1.23 kB
import { Provider, Type } from '@nestjs/common'; import { EntityService } from './entity.service'; export interface TransitionEvent<T, P, Event, States> { event: Event | Event[]; from: States | States[]; to: States; actions?: ((entity: T, payload?: P | T | object | string) => Promise<T>)[]; conditions?: ((entity: T, payload?: P | T | object | string) => boolean)[]; } export interface KafkaEvent<Event> { topic: string; event: Event; } export interface WorkflowDefinition<T, P, Event, State> { name?: string; states: { finals: State[]; idles: State[]; failed: State; }; options?: {}; transitions: TransitionEvent<T, P, Event, State>[]; actions?: Type<any>[]; conditions?: Type<any>[]; kafka?: { brokers: string; events: KafkaEvent<Event>[]; }; entity: Provider<EntityService<T, State>> | Type<EntityService<T, State>> | { new: () => T; update: (entity: T, status: State) => Promise<T>; load: (urn: string) => Promise<T>; status: (entity: T) => State; urn: (entity: T) => string; }; fallback?: (entity: T, event: Event, payload?: P | T | object | string) => Promise<T>; }