UNPKG

symflow

Version:

SymFlow is a powerful workflow and state machine engine for Node.js, inspired by Symfony Workflow. It allows you to define workflows, transition entities between states, and optionally log audit trails.

31 lines (30 loc) 1.55 kB
import { EventEmitter } from 'events'; import { Place, State, Transition, WorkflowDefinition } from './workflow-definition'; import { WorkflowEventHandler, WorkflowEventType } from './event-workflow'; export declare class Symflow<T extends Record<string, any>> { protected readonly metadata: Record<string, any>; protected readonly places: Record<string, Place>; protected readonly transitions: Record<string, Transition>; protected readonly stateField: keyof T; protected readonly isStateMachine: boolean; protected readonly auditEnabled: boolean; protected readonly workflowName: string; protected readonly eventHandlers: Partial<Record<WorkflowEventType, WorkflowEventHandler<T>[]>>; private readonly forkSiblingMap; private readonly emitter; constructor(workflow: WorkflowDefinition<T> | string, emitter?: EventEmitter); getEmitter(): EventEmitter; getMetadata(): Record<string, any>; getAvailableTransitions(entity: T): string[]; getAvailableTransition(state: string): string[]; canTransition(entity: T, transition: string, shouldTriggerGuard?: boolean): Promise<boolean>; on(eventType: WorkflowEventType, handler: WorkflowEventHandler<T>): void; private triggerEvent; protected applyTransition(entity: T, transition: string, newState: State): Promise<void>; apply(entity: T, transition: string): Promise<void>; private getCurrentStates; private matchFromStates; private collectRecursiveFromStates; toGraphviz(): string; toMermaid(): string; }