woltage
Version:
A CQRS and Event-Sourcing Framework
28 lines (27 loc) • 1 kB
TypeScript
import { IEventStore } from './adapters/EventStore.ts';
import { IStore } from './adapters/Store.ts';
import Projector from './read/Projector.ts';
import ReadModel from './read/ReadModel.ts';
import Aggregate from './write/Aggregate.ts';
export type EventStoreAdapterConfig<TClass extends IEventStore = IEventStore, TArgs extends any[] = any> = {
adapter: {
new (...args: TArgs[]): TClass;
};
args?: TArgs;
};
export type StoreAdapterConfig<TClass extends IStore = IStore, TArgs extends any[] = any> = {
adapter: {
new (prefix: string, ...args: TArgs[]): TClass;
};
args?: TArgs;
};
export type WoltageConfig = {
eventStore: EventStoreAdapterConfig;
eventClasses: (typeof Event)[] | string;
aggregates: Aggregate[] | string;
projectorClasses: (typeof Projector)[] | string;
readModelClasses?: (typeof ReadModel)[] | string;
internalStore: StoreAdapterConfig;
stores?: Record<string, StoreAdapterConfig>;
autostart?: boolean;
};