UNPKG

vulcain-corejs

Version:
78 lines (77 loc) 2.53 kB
import { IContainer } from '../di/resolvers'; import { Domain } from '../schemas/schema'; import { HandlerFactory, CommonRequestData, CommonMetadata, CommonRequestResponse, CommonActionMetadata, IManager, ServiceHandlerMetadata } from './common'; import { RequestContext } from '../servers/requestContext'; import * as RX from 'rx'; import { EventHandlerFactory } from './eventHandlerFactory'; export interface ActionData extends CommonRequestData { data: any; service: string; status?: "Error" | "Success" | "Pending"; taskId?: string; startedAt: string; } export interface ConsumeEventMetadata { subscribeToDomain?: string; subscribeToAction?: string; subscribeToSchema?: string; filter?: (observable: RX.Observable<EventData>) => RX.Observable<EventData>; } export interface EventMetadata extends CommonMetadata { subscribeToDomain?: string; } export declare enum EventNotificationMode { always = 0, successOnly = 1, never = 2, } export interface ActionHandlerMetadata extends ServiceHandlerMetadata { async?: boolean; eventMode?: EventNotificationMode; } export interface ActionMetadata extends CommonActionMetadata { async?: boolean; eventMode?: EventNotificationMode; } export interface ActionResponse<T> extends CommonRequestResponse<T> { correlationId: string; startedAt: string; completedAt?: string; service: string; taskId?: string; status: "Error" | "Success" | "Pending"; commandMode?: string; } /** * Response for event * * @export * @interface EventData * @extends {ActionResponse<any>} */ export interface EventData extends ActionResponse<any> { } export declare class CommandManager implements IManager { container: IContainer; private messageBus; private _domain; private _hostname; private _service; private _initialized; static commandHandlersFactory: HandlerFactory; static eventHandlersFactory: EventHandlerFactory; /** * Get the current domain model * @returns {Domain} */ domain: Domain; serviceName: string; constructor(container: IContainer); private createResponse(ctx, command, error?); private validateRequestData(info, command); getMetadata(command: CommonRequestData): ActionMetadata; runAsync(command: ActionData, ctx: RequestContext): Promise<ActionResponse<any>>; consumeTaskAsync(command: ActionData): Promise<void>; subscribeToEvents(): void; bindEventHandler(metadata: ConsumeEventMetadata): void; }