@intuitionrobotics/thunderstorm
Version:
56 lines (55 loc) • 2.11 kB
TypeScript
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 {};