@decorators/server
Version:
node decorators - decorators for express library
71 lines • 10.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExpressAdapter = void 0;
const express = require("express");
const http_1 = require("../http");
class ExpressAdapter {
constructor(app = express()) {
this.app = app;
this.type = 'express';
}
attachServer(server) {
this.server = server;
}
close() {
if (this.server.listening) {
this.server.close();
}
}
getParam(type, name, req, res) {
switch (type) {
case http_1.ParameterType.BODY: return () => { var _a; return name ? (_a = req.body) === null || _a === void 0 ? void 0 : _a[name] : req.body; };
case http_1.ParameterType.COOKIE: return () => { var _a; return name ? (_a = req.cookies) === null || _a === void 0 ? void 0 : _a[name] : req.cookies; };
case http_1.ParameterType.HEADER: return () => { var _a; return name ? (_a = req.headers) === null || _a === void 0 ? void 0 : _a[name] : req.headers; };
case http_1.ParameterType.PARAM: return () => { var _a; return name ? (_a = req.params) === null || _a === void 0 ? void 0 : _a[name] : req.params; };
case http_1.ParameterType.QUERY: return () => { var _a; return name ? (_a = req.query) === null || _a === void 0 ? void 0 : _a[name] : req.query; };
case http_1.ParameterType.REQUEST: return () => req;
case http_1.ParameterType.RESPONSE: return () => res;
default: return () => req;
}
}
isHeadersSent(response) {
return response.headersSent;
}
listen() {
this.server.on('request', this.app);
}
render(response, template, message) {
return new Promise((resolve, reject) => response.render(template, message, (err, html) => err ? reject(err) : resolve(html)));
}
reply(response, message, statusCode) {
const isJson = typeof message === 'object';
if (statusCode) {
response.status(statusCode);
}
if (isJson) {
this.setHeader(response, 'Content-Type', 'application/json');
return response.json(message);
}
return response.send(message);
}
routes(routes) {
var _a, _b;
for (const route of routes) {
(_b = (_a = this.app)[route.type]) === null || _b === void 0 ? void 0 : _b.call(_a, route.url, route.handler);
}
}
serveStatic(prefix, path, options) {
this.app.use(prefix, express.static(path, options));
}
set(setting, value) {
this.app.set(setting, value);
}
setHeader(response, name, value) {
response.setHeader(name, value);
}
use(...args) {
this.app.use(...args);
}
}
exports.ExpressAdapter = ExpressAdapter;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzcy1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BsYXRmb3Jtcy9leHByZXNzL2V4cHJlc3MtYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFHbkMsa0NBQThFO0FBRTlFLE1BQWEsY0FBYztJQUl6QixZQUFtQixNQUFNLE9BQU8sRUFBRTtRQUFmLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFIbEMsU0FBSSxHQUFHLFNBQVMsQ0FBQztJQUdxQixDQUFDO0lBRXZDLFlBQVksQ0FBQyxNQUFjO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFtQixFQUFFLElBQVksRUFBRSxHQUFvQixFQUFFLEdBQXFCO1FBQ3JGLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxvQkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sR0FBRyxFQUFFLFdBQUMsT0FBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQUEsR0FBRyxDQUFDLElBQUksMENBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUEsRUFBQSxDQUFDO1lBQ3pFLEtBQUssb0JBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxXQUFDLE9BQUEsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFBLEdBQUcsQ0FBQyxPQUFPLDBDQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFBLEVBQUEsQ0FBQztZQUNqRixLQUFLLG9CQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxHQUFHLEVB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LENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQTBCLEVBQUUsSUFBWSxFQUFFLEtBQWE7UUFDL0QsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFHLElBQVc7UUFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0NBQ0Y7QUFoRkQsd0NBZ0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZXhwcmVzcyBmcm9tICdleHByZXNzJztcblxuaW1wb3J0IHsgU2VydmVyIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBBZGFwdGVyUm91dGUsIEh0dHBBcHBsaWNhdGlvbkFkYXB0ZXIsIFBhcmFtZXRlclR5cGUgfSBmcm9tICcuLi9odHRwJztcblxuZXhwb3J0IGNsYXNzIEV4cHJlc3NBZGFwdGVyIGltcGxlbWVudHMgSHR0cEFwcGxpY2F0aW9uQWRhcHRlciB7XG4gIHR5cGUgPSAnZXhwcmVzcyc7XG4gIHByaXZhdGUgc2VydmVyOiBTZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGFwcCA9IGV4cHJlc3MoKSkgeyB9XG5cbiAgYXR0YWNoU2VydmVyKHNlcnZlcjogU2VydmVyKSB7XG4gICAgdGhpcy5zZXJ2ZXIgPSBzZXJ2ZXI7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICBpZiAodGhpcy5zZXJ2ZXIubGlzdGVuaW5nKSB7XG4gICAgICB0aGlzLnNlcnZlci5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldFBhcmFtKHR5cGU6IFBhcmFtZXRlclR5cGUsIG5hbWU6IHN0cmluZywgcmVxOiBleHByZXNzLlJlcXVlc3QsIHJlczogZXhwcmVzcy5SZXNwb25zZSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLkJPRFk6IHJldHVybiAoKSA9PiBuYW1lID8gcmVxLmJvZHk/LltuYW1lXSA6IHJlcS5ib2R5O1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLkNPT0tJRTogcmV0dXJuICgpID0+IG5hbWUgPyByZXEuY29va2llcz8uW25hbWVdIDogcmVxLmNvb2tpZXM7XG4gICAgICBjYXNlIFBhcmFtZXRlclR5cGUuSEVBREVSOiByZXR1cm4gKCkgPT4gbmFtZSA/IHJlcS5oZWFkZXJzPy5bbmFtZV0gOiByZXEuaGVhZGVycztcbiAgICAgIGNhc2UgUGFyYW1ldGVyVHlwZS5QQVJBTTogcmV0dXJuICgpID0+IG5hbWUgPyByZXEucGFyYW1zPy5bbmFtZV0gOiByZXEucGFyYW1zO1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLlFVRVJZOiByZXR1cm4gKCkgPT4gbmFtZSA/IHJlcS5xdWVyeT8uW25hbWVdIDogcmVxLnF1ZXJ5O1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLlJFUVVFU1Q6IHJldHVybiAoKSA9PiByZXE7XG4gICAgICBjYXNlIFBhcmFtZXRlclR5cGUuUkVTUE9OU0U6IHJldHVybiAoKSA9PiByZXM7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gKCkgPT4gcmVxO1xuICAgIH1cbiAgfVxuXG4gIGlzSGVhZGVyc1NlbnQocmVzcG9uc2U6IGV4cHJlc3MuUmVzcG9uc2UpIHtcbiAgICByZXR1cm4gcmVzcG9uc2UuaGVhZGVyc1NlbnQ7XG4gIH1cblxuICBsaXN0ZW4oKSB7XG4gICAgdGhpcy5zZXJ2ZXIub24oJ3JlcXVlc3QnLCB0aGlzLmFwcCk7XG4gIH1cblxuICByZW5kZXIocmVzcG9uc2U6IGV4cHJlc3MuUmVzcG9uc2UsIHRlbXBsYXRlOiBzdHJpbmcsIG1lc3NhZ2U6IG9iamVjdCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHJlc3BvbnNlLnJlbmRlcih0ZW1wbGF0ZSwgbWVzc2FnZSxcbiAgICAgIChlcnIsIGh0bWwpID0+IGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZShodG1sKSxcbiAgICApKTtcbiAgfVxuXG4gIHJlcGx5KHJlc3BvbnNlOiBleHByZXNzLlJlc3BvbnNlLCBtZXNzYWdlOiB1bmtub3duLCBzdGF0dXNDb2RlPzogbnVtYmVyKSB7XG4gICAgY29uc3QgaXNKc29uID0gdHlwZW9mIG1lc3NhZ2UgPT09ICdvYmplY3QnO1xuXG4gICAgaWYgKHN0YXR1c0NvZGUpIHtcbiAgICAgIHJlc3BvbnNlLnN0YXR1cyhzdGF0dXNDb2RlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNKc29uKSB7XG4gICAgICB0aGlzLnNldEhlYWRlcihyZXNwb25zZSwgJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZS5qc29uKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiByZXNwb25zZS5zZW5kKG1lc3NhZ2UpO1xuICB9XG5cbiAgcm91dGVzKHJvdXRlczogQWRhcHRlclJvdXRlW10pIHtcbiAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgICAgdGhpcy5hcHBbcm91dGUudHlwZV0/Lihyb3V0ZS51cmwsIHJvdXRlLmhhbmRsZXIpO1xuICAgIH1cbiAgfVxuXG4gIHNlcnZlU3RhdGljKHByZWZpeDogc3RyaW5nLCBwYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiB1bmtub3duKSB7XG4gICAgdGhpcy5hcHAudXNlKHByZWZpeCwgZXhwcmVzcy5zdGF0aWMocGF0aCwgb3B0aW9ucykpO1xuICB9XG5cbiAgc2V0KHNldHRpbmc6IHN0cmluZywgdmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLmFwcC5zZXQoc2V0dGluZywgdmFsdWUpO1xuICB9XG5cbiAgc2V0SGVhZGVyKHJlc3BvbnNlOiBleHByZXNzLlJlc3BvbnNlLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXNwb25zZS5zZXRIZWFkZXIobmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgdXNlKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgdGhpcy5hcHAudXNlKC4uLmFyZ3MpO1xuICB9XG59XG4iXX0=