UNPKG

nodejs-event-driven

Version:

NodeJS agnostic event driven with EventEmitter support

26 lines (25 loc) 1.29 kB
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>; }