@5minds/processcube_engine
Version:
The ProcessCube Engine. Stores and executes BPMNs.
65 lines (64 loc) • 2.85 kB
TypeScript
import { ChildProcess } from 'child_process';
import express from 'express';
import { Container } from 'inversify';
import { Logger } from '@5minds/processcube_engine_sdk';
import { BaseController } from '../Api/Controller/BaseController';
import { SocketController } from '../Api/Controller/SocketController';
import { ServiceFacade } from './ServiceFacade';
import { WorkerFacade } from './WorkerFacade';
export type ClassConstructor = new (...args: Array<never>) => unknown;
export type SocketControllerConstructor = new (...args: Array<never>) => SocketController;
export type ProxyConfiguration = {
proxyKey: string;
targetKey: string;
target: ClassConstructor;
provideGlobally?: boolean;
getGlobally?: boolean;
};
export type HttpRouteConfiguration = {
route: string;
method: 'post' | 'get' | 'delete' | 'put';
controllerClass: ClassConstructor;
controllerMethod: Function;
isCancelable?: boolean;
isDeprecated?: boolean | string;
deprecateSilently?: boolean;
};
export declare function subscribable(): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
export declare function cancelable(): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
export declare abstract class EngineRouter {
engineApiRouter?: express.Router;
extensionRouter?: express.Router;
protected workerFacade?: WorkerFacade;
protected serviceFacade?: ServiceFacade;
protected logger: Logger;
protected globalContainer: Container;
protected routerContainer: Container;
private engineApiRoutes;
private extensionRoutes;
private proxies;
private socketControllers;
private eventTopicsListening;
private loggerNamespace;
constructor(workerFacade: WorkerFacade, serviceFacade: ServiceFacade, globalContainer: Container, namespace: string);
private onNotificationPublishedCallback;
init(): Promise<void>;
getChildProcess(): ChildProcess;
dispose(): Promise<void>;
onNotificationPublished(callback: (topic: string, message: any) => void): void;
abstract initProxies(): Array<ProxyConfiguration>;
abstract initSocketController(): Array<SocketControllerConstructor>;
abstract initEventTopicsListening(): Array<string>;
abstract initHttpRoutes(): Array<HttpRouteConfiguration>;
protected getExtensionRoutes(): Promise<Array<HttpRouteConfiguration>>;
protected getController<TController extends BaseController>(controller: ClassConstructor): TController;
private buildIoc;
private buildProxies;
private buildControllers;
private initMainThreadRouting;
private registerEngineApiRoute;
private registerExtensionRoute;
private registerHttpRoute;
private initMainThreadSocketNotificationBindings;
private initWorkerRouting;
}