@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
text/typescript
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;