@mvx/mvc
Version:
@mvx/mvc is mvc framework on server, base on koa, @tsdi frameworks
73 lines (71 loc) • 2.9 kB
JavaScript
;
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;
};
Router.ρAnn = function () {
return { "name": "Router", "params": { "vaild": ["ctx"], "execute": ["ctx", "next"], "isRouteUrl": ["route"], "routes": ["routes"] } };
};
Router.ρNPT = true;
Router = tslib_1.__decorate([
ioc_1.Singleton()
], Router);
return Router;
}(MvcMiddleware_1.CompositeMiddleware));
exports.Router = Router;
//# sourceMappingURL=../sourcemaps/router/Router.js.map