neura-express-app
Version:
Basic express application starter with some common utilities.
44 lines (43 loc) • 2.12 kB
TypeScript
import { Request, Response, NextFunction, Router, RequestHandler, IRouter } from "express";
import { INeuraLogger } from "../utils/logger.util";
import { INeuraContainer } from "../utils/container.util";
import { ClassConstructor } from "class-transformer";
export interface NeuraSession {
}
export interface NeuraRequest<T, U> {
body: T;
query: U;
session: NeuraSession;
headers: {
[key: string]: string;
};
expressRequest: Request;
expressResponse: Response;
cookies: {
[key: string]: string;
};
}
export declare class NeuraRouter {
protected readonly container: INeuraContainer;
router: Router;
routePrefix: string | undefined;
protected logger: INeuraLogger;
constructor(container: INeuraContainer);
use(...handlers: Array<RequestHandler>): void;
get<T, U>(path: string, cb: (request: NeuraRequest<T, U>) => Promise<any>, bodyToValidate?: ClassConstructor<T>, queryToValidate?: ClassConstructor<U>): void;
post<T, U>(path: string, cb: (request: NeuraRequest<T, U>) => Promise<any>, bodyToValidate?: ClassConstructor<T>, queryToValidate?: ClassConstructor<U>): void;
put<T, U>(path: string, cb: (request: NeuraRequest<T, U>) => Promise<any>, bodyToValidate?: ClassConstructor<T>, queryToValidate?: ClassConstructor<U>): void;
delete<T, U>(path: string, cb: (request: NeuraRequest<T, U>) => Promise<any>, bodyToValidate?: ClassConstructor<T>, queryToValidate?: ClassConstructor<U>): void;
protected validateAndRespond<T, U>(req: Request, res: Response, next: NextFunction, cb: (request: NeuraRequest<T, U>) => Promise<any>, bodyToValidate?: ClassConstructor<T>, queryToValidate?: ClassConstructor<U>): Promise<any>;
protected getFullRoutePath(path: string): string;
}
export declare abstract class NeuraController {
protected readonly container: INeuraContainer;
protected logger: INeuraLogger;
protected router: NeuraRouter;
private routesRegistered;
constructor(container: INeuraContainer);
getRouterPrefix(): string | undefined;
abstract registerRoutes(): void;
getRouter(): IRouter;
}