import {ApiRequest, ApiResponse} from "@gongt/ts-stl-library/request/protocol"; import {Request, RequestHandler} from "express-serve-static-core"; import {RequestContext} from "./context"; import {ResponseInterface} from "./response-wrapper"; export interface ErrorHandler { (error: Error): void|Promise; } export interface ExpressRequestContext { context: RequestContext; } export interface ArgumentProcessorContext { request: Request; response: ResponseInterface; } export interface ArgumentFilter { (this: ArgumentProcessorContext, object: any, valueName?: string): void; } export interface ArgumentWorker { (this: ArgumentProcessorContext, object: any, valueName?: string): any; } export enum EParamType { TYPE_GET = 1, TYPE_POST, TYPE_BODY, TYPE_REWRITE_PATH, TYPE_LOGIN, TYPE_UPLOAD, TYPE_COOKIE, TYPE_SAFE_COOKIE, TYPE_SESSION, } export interface ParamType { name: string; from: EParamType; filter?: ArgumentFilter; handler?: ArgumentWorker; tsGenerateType?: string; middleware?: RequestHandler; middlewares?: RequestHandler[]; optionalDefault?: any; upload?: { fileCount: number; }; } export const REQUEST_CONTEXT_VAR_NAME = '__ExpressContextResponse'; // EHCF -> Express Handler Callback Function export type EHCF_CommonReturn = null|void|ResType|ResType&ApiResponse; export type EHCF_Promise = Promise>; export interface SyncEHCF> { (context: ContextType): EHCF_CommonReturn; } export interface AsyncEHCF> { (context: ContextType): void|EHCF_Promise; } export type EHCF> = SyncEHCF |AsyncEHCF;