woltage
Version:
A CQRS and Event-Sourcing Framework
35 lines (34 loc) • 1.93 kB
TypeScript
import Aggregate from './write/Aggregate.ts';
import Projector from './read/Projector.ts';
import Projection from './read/Projection.ts';
import ReadModel from './read/ReadModel.ts';
import { WoltageConfig } from './WoltageConfig.ts';
export type AggregateMap = {
[aggregateName: string]: Aggregate;
};
export type ProjectorMap = {
[projectorName: string]: {
[version: number]: typeof Projector;
};
};
declare class Woltage {
#private;
static create(config: WoltageConfig): Promise<Woltage>;
config: WoltageConfig;
constructor(config: WoltageConfig);
addProjection(projectionName: string, projectionVersion: number, projectorName: string, projectorVersion: number, storeName: string): Promise<void>;
setProjectionActive(projectionName: string, projectionVersion: number, force?: boolean): Promise<void>;
getProjections(): {
[k: string]: Projection;
};
getProjection(projectionName: string, projectionVersion: number): Projection | undefined;
removeProjection(projectionName: string, projectionVersion: number, force?: boolean): Promise<void>;
executeCommand(aggregateName: string, aggregateId: string, commandName: string, payload: any, context?: any): Promise<void>;
executeQuery<TClass extends typeof ReadModel, THandler extends keyof InstanceType<TClass>>(readModel: TClass, handlerName: THandler, query: InstanceType<TClass>[THandler] extends (...args: any) => any ? Parameters<InstanceType<TClass>[THandler]>[0] : any, context?: any): Promise<InstanceType<TClass>[THandler] extends (...args: any) => any ? ReturnType<InstanceType<TClass>[THandler]> : InstanceType<TClass>[THandler]>;
executeQuery(readModelName: string, handlerName: string, query: any, context?: any): Promise<unknown>;
start(): Promise<void>;
stop(): Promise<void>;
}
export type { Woltage };
declare const _default: typeof Woltage.create;
export default _default;