@methodus/server
Version:
Server components for @methodus workflow
62 lines • 2.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
require("reflect-metadata");
const express = require("express");
const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser");
const path = require("path");
const base_1 = require("../base");
const log_1 = require("../../log");
const express_1 = require("../express");
const fileUpload = require("express-fileupload");
let Express = class Express extends base_1.BaseServer {
constructor(port, onStart) {
super();
this._app = express();
this._app.use(fileUpload({
limits: { fileSize: 50 * 1024 * 1024 },
}));
this._app.use(bodyParser.urlencoded({
extended: true,
}));
this._app.use(bodyParser.json({ limit: '10mb' }));
this._app.use(cookieParser());
this._app.set('showStackError', true);
this._app.set('view engine', 'ejs');
const viewPath = path.join(__dirname, '..', '..', '..', 'views');
this._app.set('views', viewPath);
this._app.use((req, res, next) => {
if (req.headers.origin) {
res.setHeader('Access-Control-Allow-Origin', req.headers.origin);
}
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
let headersX = Object.keys(req.headers).map((headerName) => {
return headerName.split('-').map((word) => {
return headerName.charAt(0).toUpperCase() + headerName.substr(1);
}).join('-');
}).join(',');
headersX = 'Content-Type,' + headersX;
res.setHeader('Access-Control-Allow-Headers', headersX);
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
if (onStart) {
onStart.forEach((eventStart) => {
eventStart(this._app);
});
}
}
close() {
return true;
}
useClass(classType, methodType) {
return new express_1.ExpressRouter(classType, methodType, this._app);
}
};
Express = tslib_1.__decorate([
log_1.LogClass(log_1.logger),
tslib_1.__metadata("design:paramtypes", [Object, Object])
], Express);
exports.Express = Express;
//# sourceMappingURL=express.js.map