@eggjs/tegg-eventbus-runtime
Version:
tegg eventbus runtime
39 lines (38 loc) • 1.45 kB
TypeScript
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;
}