kamboja-express
Version:
KambojaJS engine implementation using ExpressJs
64 lines (63 loc) • 2.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var request_adapter_1 = require("./request-adapter");
var response_adapter_1 = require("./response-adapter");
var kamboja_1 = require("kamboja");
var Express = require("express");
var ExpressEngine = (function () {
function ExpressEngine() {
this.application = Express();
}
ExpressEngine.prototype.init = function (routes, option) {
var _this = this;
//routes
routes.forEach(function (route) {
var method = route.httpMethod.toLowerCase();
_this.application[method](route.route, function (req, resp, next) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var handler;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
handler = new kamboja_1.RequestHandler(option, new request_adapter_1.RequestAdapter(req), new response_adapter_1.ResponseAdapter(resp, next), route);
return [4 /*yield*/, handler.execute()];
case 1:
_a.sent();
return [2 /*return*/];
}
});
}); });
});
//rest of the unhandled request and 404 handler
this.application.use(function (req, resp, next) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var handler;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
handler = new kamboja_1.RequestHandler(option, new request_adapter_1.RequestAdapter(req), new response_adapter_1.ResponseAdapter(resp, next));
return [4 /*yield*/, handler.execute()];
case 1:
_a.sent();
return [2 /*return*/];
}
});
}); });
//error handler
this.application.use(function (err, req, res, next) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var handler;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
handler = new kamboja_1.RequestHandler(option, new request_adapter_1.RequestAdapter(req), new response_adapter_1.ResponseAdapter(res, next), err);
return [4 /*yield*/, handler.execute()];
case 1:
_a.sent();
return [2 /*return*/];
}
});
}); });
return this.application;
};
return ExpressEngine;
}());
exports.ExpressEngine = ExpressEngine;