UNPKG

@intuitionrobotics/thunderstorm

Version:
56 lines (55 loc) 2.11 kB
import { Module, ObjectTS } from "@intuitionrobotics/ts-common"; import { ApiResponse, HttpRequestData, ServerApi } from "./server-api"; import { ApiException } from "../../exceptions"; import { Express, ExpressRequest, ExpressRequestHandler } from "../../utils/types"; type ConfigType = { port: number; baseUrl: string; cors: { origins?: string[]; methods?: string[]; headers: string[]; exposedHeaders?: string[]; }; ssl: { key: string; cert: string; }; bodyParserLimit: number | string; }; export type HttpErrorHandler = (requestData: HttpRequestData, error: ApiException) => Promise<string>; export type ServerApi_Middleware = (request: ExpressRequest, data: HttpRequestData, response: ApiResponse, scopes: string[]) => Promise<ObjectTS | void>; type HttpRoute = { methods: string[]; path: string; }; export declare class HttpServer_Class extends Module<ConfigType> { private static readonly expressMiddleware; private readonly express; private routes; constructor(_express: Express, configElement: ConfigType); static addMiddleware(middleware: ExpressRequestHandler): typeof HttpServer_Class; getRoutes(): HttpRoute[]; getBaseUrl(): string; init(): void; printRoutes(prefix: string): void; resolveApi(routeResolver: RouteResolver, urlPrefix: string, apis: ServerApi<any>[]): void; } export declare class RouteResolver { readonly require: NodeRequire; readonly rootDir: string; readonly apiFolder: string; private middlewares; constructor(require: NodeRequire, rootDir: string, apiFolder?: string); setMiddlewares(...middlewares: ServerApi_Middleware[]): this; resolveApi(urlPrefix: string, baseUrl: string, _exp: Express): void; private resolveApiImpl; routeApis(apis: ServerApi<any>[], urlPrefix: string, baseUrl: string, _exp: Express): void; } export declare class HeaderKey { private readonly key; private readonly responseCode; constructor(key: string, responseCode?: number); get(request: ExpressRequest): string; } export {};