nodejs-event-driven
Version:
NodeJS agnostic event driven with EventEmitter support
26 lines (25 loc) • 1.29 kB
TypeScript
import { BaseEventBusService } from './base-event-bus.service.js';
import { type FsEventBusServiceConfig } from './infra/event-bus/fs/fs-event-bus.service.js';
import { type MemoryEventBusServiceConfig } from './infra/event-bus/memory/memory-event-bus.service.js';
import { type RabbitmqEventBusServiceConfig } from './infra/event-bus/rabbitmq/rabbitmq-event-bus.service.js';
import { type RedisEventBusServiceConfig } from './infra/event-bus/redis/redis-event-bus.service.js';
export type EventBusServiceConfig = ({
type: 'memory';
} & MemoryEventBusServiceConfig) | ({
type: 'fs';
} & FsEventBusServiceConfig) | ({
type: 'redis';
} & RedisEventBusServiceConfig) | ({
type: 'rabbitmq';
} & RabbitmqEventBusServiceConfig);
export default class EventBusService<E extends string = string> extends BaseEventBusService<E> {
#private;
constructor(config: EventBusServiceConfig);
send(eventName: E, data?: unknown): void;
on<T>(eventName: E, listener: (data: T) => void): void;
once<T>(eventName: E, listener: (data: T) => void): void;
off<T>(eventName: E, listener: (data: T) => void): void;
sendAndWait<T>(sendEventName: E, successEventName: E, errorEventName: E, data?: unknown): Promise<T>;
start(): Promise<void>;
stop(): Promise<void>;
}