UNPKG

demeine

Version:

DDDD - Distributed Domain Driven Design

31 lines (30 loc) 1.02 kB
import { Aggregate } from './Aggregate'; export interface ApplyFunc<State extends object = object> { (event: Event): void; } export interface Command<Payload extends object = object> { type: string; payload: Payload; id?: string; aggregateType?: string; aggregateId?: string; } export interface CommandHandler<State extends object = object> { handle(aggregate: Aggregate<State>, command: Command): Aggregate<State>; } export interface CommandSink<State extends object = object> { sink(cmd: Command, aggregate: Aggregate<State>): Promise<Aggregate<State>>; } export interface Event<Payload extends object = object> { type: string; payload: Payload; id?: string; aggregateId?: string; correlationId?: string; } export interface EventHandler<State extends object = object> { handle(aggregate: Aggregate<State>, event: Event): void; } export interface ProcessFunc<State extends object = object> { (command: Command): Aggregate<State>; }