bb-inspired
Version:
Core library for BB-inspired NestJS backend
26 lines (25 loc) • 923 B
TypeScript
import { ModuleRef } from '@nestjs/core';
import { Observable } from 'rxjs';
export interface Event {
name: string;
payload: any;
timestamp: Date;
source?: string;
metadata?: Record<string, any>;
}
export type EventHandler<T extends Event = Event> = (event: T) => Promise<void> | void;
export declare class EventBusService {
private readonly moduleRef;
private readonly logger;
private readonly eventStream;
private readonly subscriptions;
private readonly handlerClassMap;
constructor(moduleRef: ModuleRef);
register(eventName: string, handler: EventHandler): void;
unregister(eventName: string, handler: EventHandler): void;
registerHandlers(instance: any, prefix?: string): void;
unregisterHandlers(instance: any): void;
publish<T extends Event>(event: T): void;
ofType<T extends Event>(eventName: string): Observable<T>;
private notifyHandlers;
}