UNPKG

demeine

Version:

DDDD - Distributed Domain Driven Design

33 lines (32 loc) 1.51 kB
import { Command, CommandHandler, CommandSink, Event, EventHandler } from './Aggregate.interfaces'; import { Queue } from '../queue/Queue'; import Promise from 'bluebird'; declare type MaybePromise<T> = T | Promise<T>; export declare class Aggregate<State extends object = object> { id: string; type?: string; _uncommittedEvents: Array<Event>; _commandHandler: CommandHandler; _commandSink: CommandSink<State>; _eventHandler: EventHandler; _version: number; _commandQueue: Queue; _state: State; constructor(commandSink?: CommandSink<State>, eventHandler?: EventHandler, commandHandler?: CommandHandler); _rehydrate(events: Array<Event>, version?: number, snapshot?: State): void; _getSnapshot(): State | undefined; _apply(event: Event, isNew?: boolean): Aggregate<State>; _process(command: Command): Promise<Aggregate<State>>; _sink(commandToSink: MaybePromise<Command>): globalThis.Promise<Aggregate<State> | true>; /** * Built in functionality to manage deletion of Aggregates / streams */ delete(): globalThis.Promise<true | Aggregate<State>>; processDelete(command: Command): Aggregate<State>; applyDeleted(): void; getVersion(): number; getUncommittedEvents<Payload extends object = object>(): Array<Event<Payload>>; getUncommittedEventsAsync<Payload extends object = object>(): globalThis.Promise<Array<Event<Payload>>>; clearUncommittedEvents(): Array<Event>; } export {};