@decorators/server
Version:
node decorators - decorators for express library
78 lines • 11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FastifyAdapter = void 0;
const FastifyStatic = require("@fastify/static");
const Fastify = require("fastify");
const http_1 = require("../http");
class FastifyAdapter {
constructor(app = Fastify()) {
this.app = app;
this.type = 'fastify';
}
attachServer(server) {
this.server = server;
}
async close() {
await this.app.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.sent;
}
async listen() {
await this.app.ready();
this.server.on('request', this.app.routing);
}
render(_response, template, message) {
return new Promise((resolve, reject) => this.app.view(template, message, (err, html) => err || (html === null || html === void 0 ? void 0 : html['stack'])
? reject(new Error((err || html).toString()))
: resolve(html)));
}
reply(response, message, statusCode) {
const isJson = typeof message === 'object';
if (statusCode) {
response.code(statusCode);
}
if (isJson) {
this.setHeader(response, 'Content-Type', 'application/json');
}
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.register(FastifyStatic, {
decorateReply: false,
prefix,
redirect: true,
root: path,
...options,
});
}
setHeader(response, name, value) {
response.header(name, value);
}
use(...args) {
this.app.register(args[0], args[1]);
}
}
exports.FastifyAdapter = FastifyAdapter;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFzdGlmeS1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BsYXRmb3Jtcy9mYXN0aWZ5L2Zhc3RpZnktYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBaUQ7QUFDakQsbUNBQW1DO0FBR25DLGtDQUE4RTtBQUU5RSxNQUFhLGNBQWM7SUFJekIsWUFBbUIsTUFBTSxPQUFPLEVBQUU7UUFBZixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBSGxDLFNBQUksR0FBRyxTQUFTLENBQUM7SUFHcUIsQ0FBQztJQUV2QyxZQUFZLENBQUMsTUFBYztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDVCxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFtQixFQUFFLElBQVksRUFBRSxHQUEyQixFQUFFLEdBQXlCO1FBQ2hHLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxvQkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sR0FBRyxFQUFFLFdBQUMsT0FBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQUEsR0FBRyxDQUFDLElBQUksMENBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUEsRUFBQSxDQUFDO1lBQ3pFLEtBQUssb0JBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxXQUFDLE9BQUEsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFBLEdBQUcsQ0FBQyxPQUFPLDBDQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMs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QUNILENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYyxFQUFFLElBQVksRUFBRSxPQUFnQjtRQUN4RCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUU7WUFDL0IsYUFBYSxFQUFFLEtBQUs7WUFDcEIsTUFBTTtZQUNOLFFBQVEsRUFBRSxJQUFJO1lBQ2QsSUFBSSxFQUFFLElBQUk7WUFDVixHQUFHLE9BQU87U0FDSixDQUFZLENBQUM7SUFDdkIsQ0FBQztJQUVELFNBQVMsQ0FBQyxRQUE4QixFQUFFLElBQVksRUFBRSxLQUFhO1FBQ25FLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBWSxDQUFDO0lBQzFDLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBRyxJQUFXO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQVksQ0FBQztJQUNqRCxDQUFDO0NBQ0Y7QUFyRkQsd0NBcUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgRmFzdGlmeVN0YXRpYyBmcm9tICdAZmFzdGlmeS9zdGF0aWMnO1xuaW1wb3J0ICogYXMgRmFzdGlmeSBmcm9tICdmYXN0aWZ5JztcblxuaW1wb3J0IHsgU2VydmVyIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBBZGFwdGVyUm91dGUsIEh0dHBBcHBsaWNhdGlvbkFkYXB0ZXIsIFBhcmFtZXRlclR5cGUgfSBmcm9tICcuLi9odHRwJztcblxuZXhwb3J0IGNsYXNzIEZhc3RpZnlBZGFwdGVyIGltcGxlbWVudHMgSHR0cEFwcGxpY2F0aW9uQWRhcHRlciB7XG4gIHR5cGUgPSAnZmFzdGlmeSc7XG4gIHByaXZhdGUgc2VydmVyOiBTZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGFwcCA9IEZhc3RpZnkoKSkgeyB9XG5cbiAgYXR0YWNoU2VydmVyKHNlcnZlcjogU2VydmVyKSB7XG4gICAgdGhpcy5zZXJ2ZXIgPSBzZXJ2ZXI7XG4gIH1cblxuICBhc3luYyBjbG9zZSgpIHtcbiAgICBhd2FpdCB0aGlzLmFwcC5jbG9zZSgpO1xuXG4gICAgaWYgKHRoaXMuc2VydmVyLmxpc3RlbmluZykge1xuICAgICAgdGhpcy5zZXJ2ZXIuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBnZXRQYXJhbSh0eXBlOiBQYXJhbWV0ZXJUeXBlLCBuYW1lOiBzdHJpbmcsIHJlcTogRmFzdGlmeS5GYXN0aWZ5UmVxdWVzdCwgcmVzOiBGYXN0aWZ5LkZhc3RpZnlSZXBseSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLkJPRFk6IHJldHVybiAoKSA9PiBuYW1lID8gcmVxLmJvZHk/LltuYW1lXSA6IHJlcS5ib2R5O1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLkNPT0tJRTogcmV0dXJuICgpID0+IG5hbWUgPyByZXEuY29va2llcz8uW25hbWVdIDogcmVxLmNvb2tpZXM7XG4gICAgICBjYXNlIFBhcmFtZXRlclR5cGUuSEVBREVSOiByZXR1cm4gKCkgPT4gbmFtZSA/IHJlcS5oZWFkZXJzPy5bbmFtZV0gOiByZXEuaGVhZGVycztcbiAgICAgIGNhc2UgUGFyYW1ldGVyVHlwZS5QQVJBTTogcmV0dXJuICgpID0+IG5hbWUgPyByZXEucGFyYW1zPy5bbmFtZV0gOiByZXEucGFyYW1zO1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLlFVRVJZOiByZXR1cm4gKCkgPT4gbmFtZSA/IHJlcS5xdWVyeT8uW25hbWVdIDogcmVxLnF1ZXJ5O1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLlJFUVVFU1Q6IHJldHVybiAoKSA9PiByZXE7XG4gICAgICBjYXNlIFBhcmFtZXRlclR5cGUuUkVTUE9OU0U6IHJldHVybiAoKSA9PiByZXM7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gKCkgPT4gcmVxO1xuICAgIH1cbiAgfVxuXG4gIGlzSGVhZGVyc1NlbnQocmVzcG9uc2U6IEZhc3RpZnkuRmFzdGlmeVJlcGx5KSB7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnNlbnQ7XG4gIH1cblxuICBhc3luYyBsaXN0ZW4oKSB7XG4gICAgYXdhaXQgdGhpcy5hcHAucmVhZHkoKTtcbiAgICB0aGlzLnNlcnZlci5vbigncmVxdWVzdCcsIHRoaXMuYXBwLnJvdXRpbmcpO1xuICB9XG5cbiAgcmVuZGVyKF9yZXNwb25zZTogRmFzdGlmeS5GYXN0aWZ5UmVwbHksIHRlbXBsYXRlOiBzdHJpbmcsIG1lc3NhZ2U6IG9iamVjdCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+ICh0aGlzLmFwcCBhcyBhbnkpLnZpZXcodGVtcGxhdGUsIG1lc3NhZ2UsXG4gICAgICAoZXJyOiBFcnJvciwgaHRtbDogc3RyaW5nKSA9PiBlcnIgfHwgaHRtbD8uWydzdGFjayddXG4gICAgICAgID8gcmVqZWN0KG5ldyBFcnJvcigoZXJyIHx8IGh0bWwpLnRvU3RyaW5nKCkpKVxuICAgICAgICA6IHJlc29sdmUoaHRtbCksXG4gICAgKSk7XG4gIH1cblxuICByZXBseShyZXNwb25zZTogRmFzdGlmeS5GYXN0aWZ5UmVwbHksIG1lc3NhZ2U6IHVua25vd24sIHN0YXR1c0NvZGU/OiBudW1iZXIpIHtcbiAgICBjb25zdCBpc0pzb24gPSB0eXBlb2YgbWVzc2FnZSA9PT0gJ29iamVjdCc7XG5cbiAgICBpZiAoc3RhdHVzQ29kZSkge1xuICAgICAgcmVzcG9uc2UuY29kZShzdGF0dXNDb2RlKSBhcyB1bmtub3duO1xuICAgIH1cblxuICAgIGlmIChpc0pzb24pIHtcbiAgICAgIHRoaXMuc2V0SGVhZGVyKHJlc3BvbnNlLCAnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKSBhcyB1bmtub3duO1xuICAgIH1cblxuICAgIHJldHVybiByZXNwb25zZS5zZW5kKG1lc3NhZ2UpO1xuICB9XG5cbiAgcm91dGVzKHJvdXRlczogQWRhcHRlclJvdXRlW10pIHtcbiAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgICAgdGhpcy5hcHBbcm91dGUudHlwZV0/Lihyb3V0ZS51cmwsIHJvdXRlLmhhbmRsZXIpO1xuICAgIH1cbiAgfVxuXG4gIHNlcnZlU3RhdGljKHByZWZpeDogc3RyaW5nLCBwYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBvYmplY3QpIHtcbiAgICB0aGlzLmFwcC5yZWdpc3RlcihGYXN0aWZ5U3RhdGljLCB7XG4gICAgICBkZWNvcmF0ZVJlcGx5OiBmYWxzZSxcbiAgICAgIHByZWZpeCxcbiAgICAgIHJlZGlyZWN0OiB0cnVlLFxuICAgICAgcm9vdDogcGF0aCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSBhcyBhbnkpIGFzIHVua25vd247XG4gIH1cblxuICBzZXRIZWFkZXIocmVzcG9uc2U6IEZhc3RpZnkuRmFzdGlmeVJlcGx5LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXNwb25zZS5oZWFkZXIobmFtZSwgdmFsdWUpIGFzIHVua25vd247XG4gIH1cblxuICB1c2UoLi4uYXJnczogYW55W10pIHtcbiAgICB0aGlzLmFwcC5yZWdpc3RlcihhcmdzWzBdLCBhcmdzWzFdKSBhcyB1bmtub3duO1xuICB9XG59XG4iXX0=