UNPKG

@eggjs/tegg-eventbus-runtime

Version:

tegg eventbus runtime

39 lines (38 loc) 1.45 kB
import { EventBus, Events, EventWaiter, EventName } from '@eggjs/eventbus-decorator'; import type { Arguments } from '@eggjs/eventbus-decorator'; import type { EggRuntimeContext } from '@eggjs/tegg-types'; export interface Event { name: EventName; args: Array<any>; context?: EggRuntimeContext; } export interface CorkEvents { times: number; events: Array<Event>; } export declare class SingletonEventBus implements EventBus, EventWaiter { private readonly emitter; private readonly eventContextFactory; private readonly eventHandlerFactory; private readonly logger; private corkIdSequence; private readonly corkedEvents; /** * only use for ensure event will happen */ once<E extends keyof Events>(event: E, listener: Events[E]): this; await<E extends keyof Events>(event: E): Promise<Arguments<Events[E]>>; awaitFirst<E extends keyof Events>(...e: Array<E>): Promise<{ event: EventName; args: Arguments<Events[E]>; }>; emit<E extends keyof Events>(event: E, ...args: Arguments<Events[E]>): boolean; generateCorkId(): string; cork(corkId: string): void; uncork(corkId: string): boolean; queueEvent(corkId: string, event: Event): void; emitWithContext<E extends keyof Events>(parentContext: EggRuntimeContext, event: E, args: Arguments<Events[E]>): boolean; private doEmitWithContext; private doOnceEmit; private doEmit; }