vulcain-corejs
Version:
Vulcain micro-service framework
68 lines (67 loc) • 1.88 kB
TypeScript
import { IContainer } from '../di/resolvers';
import { LifeTime } from '../di/annotations';
import { Domain } from '../schemas/schema';
import { UserContext } from '../servers/requestContext';
import { HttpResponse } from './response';
export interface ValidationError {
id?: string;
field?: string;
message: string;
}
export interface ErrorResponse {
message: string;
errors?: Array<ValidationError>;
}
export interface CommonRequestData {
correlationId: string;
correlationPath: string;
action: string;
domain: string;
schema: string;
inputSchema?: string;
userContext?: UserContext;
params: any;
}
export interface CommonRequestResponse<T> {
tenant: string;
userContext: UserContext;
domain: string;
action: string;
schema: string;
error?: ErrorResponse;
value?: T;
inputSchema?: string;
}
export interface CommonActionMetadata {
description: string;
action?: string;
scope?: string;
schema?: string | Function;
inputSchema?: string | Function;
}
export interface CommonMetadata {
description?: string;
schema?: string | Function;
}
export interface CommonHandlerMetadata extends CommonMetadata {
scope: string;
}
export interface ServiceHandlerMetadata extends CommonHandlerMetadata {
serviceName?: string;
serviceLifeTime?: LifeTime;
enableOnTestOnly?: boolean;
}
export interface IManager {
container: IContainer;
getInfoHandler<T>(command: CommonRequestData, container?: IContainer): {
verb: string;
handler: Function;
metadata: T;
method: string;
kind: "query" | "action" | "event";
};
runAsync(command: CommonRequestData, ctx: any): Promise<HttpResponse>;
}
export declare class HandlerFactory {
static obfuscateSensibleData(domain: Domain, container: IContainer, result: any): any;
}