UNPKG

vulcain-corejs

Version:
62 lines (61 loc) 2.06 kB
import { CommandManager, AsyncTaskData } from '../pipeline/handlers/action/actionManager'; import * as RX from 'rxjs'; import { RequestData } from "./../pipeline/common"; import { UserContextData } from "../security/securityContext"; import { ExposeEventDefinition } from '../pipeline/handlers/action/definitions'; export interface EventData extends RequestData { value?: any; source: string; error?: string; userContext: UserContextData; startedAt: number; completedAt?: number; status: string; } export interface ConsumeEventDefinition { name?: string; description: string; subscribeToDomain?: string; subscribeToAction?: string; subscribeToSchema?: string; filter?: (observable: RX.Observable<EventData>) => RX.Observable<EventData>; /** * Distribution mode: once or many (default) */ distributionMode?: "once" | "many" | undefined; distributionKey?: string; metadata?: any; scope?: string; eventDefinition?: ExposeEventDefinition; } export interface EventDefinition { name?: string; description?: string; schema?: string; metadata?: any; subscribeToDomain?: string; scope?: string; } export declare enum EventNotificationMode { successOnly = 1, never = 2, always = 3, } export declare class MessageBus { private manager; static readonly LocalEventSymbol: unique symbol; private commandBus; private eventBus; private _eventQueuesByDomain; private static _localEvents; static readonly localEvents: RX.Subject<EventData>; static emitLocalEvent(eventHandlerName: string, evt: EventData): void; /** * Get event queue for a domain */ getOrCreateEventQueue(domain: string, distributionKey: string): RX.Observable<EventData>; constructor(manager: CommandManager, hasAsyncActions: boolean); private consumeEvent(event, distributionKey); pushTask(command: AsyncTaskData): void; sendEvent(event: EventData): EventData; }