UNPKG

@mvx/mvc

Version:

@mvx/mvc is mvc framework on server, base on koa, @tsdi frameworks

73 lines (71 loc) 2.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Router = void 0; var tslib_1 = require("tslib"); var ioc_1 = require("@tsdi/ioc"); var MvcMiddleware_1 = require("../middlewares/MvcMiddleware"); var RouteChecker_1 = require("../services/RouteChecker"); var Route_1 = require("./Route"); var Router = /** @class */ (function (_super) { tslib_1.__extends(Router, _super); function Router() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.sorted = false; return _this; } Router.prototype.vaild = function (ctx) { return (!ctx.status || ctx.status === 404) && this.isRouteUrl(ctx.url); }; Router.prototype.execute = function (ctx, next) { return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: if (!this.sorted) { this.handles = this.handles.sort(function (a, b) { if (a instanceof Route_1.MvcRoute && b instanceof Route_1.MvcRoute) { return (b.url || '').length - (a.url || '').length; } return -1; }); this.resetFuncs(); this.sorted = true; } return [4 /*yield*/, _super.prototype.execute.call(this, ctx)]; case 1: _a.sent(); if (!next) return [3 /*break*/, 3]; return [4 /*yield*/, next()]; case 2: return [2 /*return*/, _a.sent()]; case 3: return [2 /*return*/]; } }); }); }; Router.prototype.getChecker = function () { return this.getInjector().get(RouteChecker_1.RouteChecker); }; Router.prototype.isRouteUrl = function (route) { return this.getChecker().isRoute(route); }; Router.prototype.routes = function () { var _this = this; var routes = []; for (var _i = 0; _i < arguments.length; _i++) { routes[_i] = arguments[_i]; } routes.forEach(function (r) { return _this.use(r); }); this.sorted = false; return this; }; RouterAnn = function () { return { "name": "Router", "params": { "vaild": ["ctx"], "execute": ["ctx", "next"], "isRouteUrl": ["route"], "routes": ["routes"] } }; }; RouterNPT = true; Router = tslib_1.__decorate([ ioc_1.Singleton() ], Router); return Router; }(MvcMiddleware_1.CompositeMiddleware)); exports.Router = Router; //# sourceMappingURL=../sourcemaps/router/Router.js.map