UNPKG

@othree.io/chisel

Version:

Event sourcing made easy

57 lines 1.88 kB
export interface ChiselEvent { readonly contextId: string; readonly type: string; readonly body: any; readonly snapshot?: any; } export interface Emitter { readonly clientId: string; readonly emitterId: string; } export interface InternalTriggeredEvent extends ChiselEvent { readonly eventId: string; readonly eventDate: number; readonly emitter?: Emitter; readonly metadata?: Record<string, string>; } export type TriggeredEvent<T extends ChiselEvent> = T & Omit<InternalTriggeredEvent, 'body'>; export interface EventSourceConfiguration<AggregateRoot> { readonly SnapshotEventType: string; readonly SnapshotFrequency: number; readonly SnapshotSerializer: { readonly serialize: (snapshot: AggregateRoot) => string; readonly deserialize: (snapshot: string) => AggregateRoot; }; } export type InitialCommand = { readonly type: string; readonly body: any; readonly emitter?: Emitter; readonly metadata?: Record<string, string>; }; export type EmptyCommand = { readonly contextId: string; readonly type: string; readonly emitter?: Emitter; readonly metadata?: Record<string, string>; }; export type FullCommand = { readonly contextId: string; readonly body: any; readonly type: string; readonly emitter?: Emitter; readonly metadata?: Record<string, string>; }; export type Command = InitialCommand | EmptyCommand | FullCommand; export interface CommandResult<AggregateRoot> { readonly state: AggregateRoot; readonly events: Array<InternalTriggeredEvent>; } export interface State<AggregateRoot> { readonly state: AggregateRoot; readonly events: Array<InternalTriggeredEvent>; } export interface NewState<AggregateRoot> extends State<AggregateRoot> { readonly newEvents: Array<InternalTriggeredEvent>; } //# sourceMappingURL=types.d.ts.map