UNPKG

dinoloop-es8

Version:

A lightweight REST API Library for building scalable Node.js server-side applications powered by Typescript

48 lines 3.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); // tslint:disable-next-line:no-require-imports const pathToRegexp = require("path-to-regexp"); const filter_1 = require("../../filter"); const exceptions_1 = require("../exceptions"); // it would proceed to next handler only if valid route is matched // if valid route is not found, it fires error middleware chain /** * Compares the requested route against the registered routes * @Throws RouteNotFoundException */ class RouteNotFoundMiddleware extends filter_1.RequestStartMiddleware { constructor(routeTable) { super(); this.routeTable = routeTable; this.routes = []; this.isRouteTableLoaded = false; } invoke(request, response, next) { if (this.isRouteTableLoaded === false) { // load the routes and create UrlParser objects let routes = this.routeTable.getRoutes(); for (const route of routes) { this.routes.push(pathToRegexp(route)); } this.isRouteTableLoaded = true; } // Note: Following format should match with expression in "route.table.ts" // '/[httpVerb]_[route]' let requestUrl = `/${request.method}_${request.baseUrl}${request.path}`.toLowerCase(); let isRouteMatched = false; for (const route of this.routes) { if (route.test(requestUrl)) { isRouteMatched = true; break; } } if (isRouteMatched) { next(); } else { next(new exceptions_1.RouteNotFoundException(request.method, `${request.baseUrl}${request.path}`)); } } } exports.RouteNotFoundMiddleware = RouteNotFoundMiddleware; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUubm90Zm91bmQubWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2J1aWx0aW4vbWlkZGxld2FyZXMvcm91dGUubm90Zm91bmQubWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDhDQUE4QztBQUM5QywrQ0FBZ0Q7QUFDaEQseUNBQXNEO0FBQ3RELDhDQUF1RDtBQUl2RCxrRUFBa0U7QUFDbEUsK0RBQStEO0FBQy9EOzs7R0FHRztBQUNILDZCQUFxQyxTQUFRLCtCQUFzQjtJQUkvRCxZQUFvQixVQUF1QjtRQUN2QyxLQUFLLEVBQUUsQ0FBQztRQURRLGVBQVUsR0FBVixVQUFVLENBQWE7UUFIbkMsV0FBTSxHQUFhLEVBQUUsQ0FBQztRQUN0Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7SUFJbkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFnQixFQUFFLFFBQWtCLEVBQUUsSUFBSTtRQUU3QyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxLQUFLLEVBQUU7WUFDbkMsK0NBQStDO1lBQy9DLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3pDO1lBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztTQUNsQztRQUVELDBFQUEwRTtRQUMxRSx3QkFBd0I7UUFDeEIsSUFBSSxVQUFVLEdBQ1YsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pFLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQztRQUUzQixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDN0IsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUN4QixjQUFjLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixNQUFNO2FBQ1Q7U0FDSjtRQUVELElBQUksY0FBYyxFQUFFO1lBQ2hCLElBQUksRUFBRSxDQUFDO1NBQ1Y7YUFBTTtZQUNILElBQUksQ0FBQyxJQUFJLG1DQUFzQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQzFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzdDO0lBQ0wsQ0FBQztDQUNKO0FBdkNELDBEQXVDQyJ9