UNPKG

@dechamp/express-auto-route

Version:

An express auto route module which allows routes and middleware to be configured via config file.

44 lines (37 loc) 1.33 kB
import { AutoRoute as AutoRouteInitializer, Route, Methods } from "./AutoRoute"; import AutoRoutePluginCallback from "./AutoRoutePluginCallback"; import * as joi from "@hapi/joi"; import RouteRequestJsonSchemaValidator from "./middleware/routeRequestJsonSchemaValidatorMiddleware"; import RouteResponseJsonSchemaValidator from "./middleware/routeResponseJsonSchemaValidatorMiddleware"; export interface Config { routeBasePath: string; server: any; routes: Route[]; middlewares?: any[]; } const AutoRoute = async (config: Config): Promise<string[]> => { joi.assert( config, joi.object().keys({ server: joi.any().required(), routeBasePath: joi.string(), routes: joi.any().required(), middlewares: joi.array(), }).required(), ); const {server, routes, middlewares, routeBasePath} = config; const autoRoutePluginCallback = new AutoRoutePluginCallback(middlewares); const autoRoute = new AutoRouteInitializer(server, autoRoutePluginCallback, {routeBasePath}); return await autoRoute.mount(routes); }; // Backward compatibility const autoRoute = AutoRoute; export { RouteRequestJsonSchemaValidator, RouteResponseJsonSchemaValidator, Route, Methods, AutoRoute, autoRoute }; export default AutoRoute;