vulcain-corejs
Version:
Vulcain micro-service framework
62 lines (61 loc) • 2.06 kB
TypeScript
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;
}