nestjs-event-sourcing-lib
Version:
A comprehensive Event Sourcing and CQRS library for NestJS applications
78 lines • 2.17 kB
TypeScript
import { Event } from '../core/event';
import { EventBus as IEventBus, EventHandler } from '../types';
/**
* Event publish error
*/
export declare class EventPublishError extends Error {
readonly eventId: string;
readonly eventType: string;
readonly originalError?: Error | undefined;
constructor(message: string, eventId: string, eventType: string, originalError?: Error | undefined);
}
/**
* Local Event Bus for publishing and handling events
*/
export declare class EventBus implements IEventBus {
private readonly logger;
private readonly handlers;
private readonly globalHandlers;
/**
* Publishes single event
*/
publish(event: Event): Promise<void>;
/**
* Publishes multiple events
*/
publishAll(events: Event[]): Promise<void>;
/**
* Subscribes to events of specific type
*/
subscribe(eventType: string, handler: EventHandler): void;
/**
* Unsubscribes from events of specific type
*/
unsubscribe(eventType: string, handler: EventHandler): void;
/**
* Subscribes to all events (global handler)
*/
subscribeToAll(handler: EventHandler): void;
/**
* Unsubscribes from all events
*/
unsubscribeFromAll(handler: EventHandler): void;
/**
* Gets handler count for event type
*/
getHandlersCount(eventType: string): number;
/**
* Gets global handlers count
*/
getGlobalHandlersCount(): number;
/**
* Clears all handlers
*/
clear(): void;
/**
* Executes event handler with error handling
*/
private executeHandler;
/**
* Creates metadata for event
*/
private createEventMetadata;
}
/**
* Simple event handler that stores events in memory
* Useful for testing and development
*/
export declare class InMemoryEventStore {
private readonly events;
save(event: Event): Promise<void>;
saveAll(events: Event[]): Promise<void>;
getAll(): Event[];
getByType(eventType: string): Event[];
getByAggregateId(aggregateId: string): Event[];
clear(): void;
count(): number;
}
//# sourceMappingURL=event.publisher.d.ts.map