UNPKG

@decorators/server

Version:

node decorators - decorators for express library

88 lines 11.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.KoaAdapter = void 0; const Koa = require("koa"); const koaMount = require("koa-mount"); const KoaRouter = require("koa-router"); const koaStatic = require("koa-static"); const http_1 = require("../http"); class KoaAdapter { constructor(app = new Koa()) { this.app = app; this.type = 'koa'; } attachServer(server) { this.server = server; } close() { if (this.server.listening) { this.server.close(); } } getParam(type, name, ctx) { const req = ctx.request; const res = ctx.response; 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 = ctx.cookies) === null || _a === void 0 ? void 0 : _a.get(name) : this.getCookies(ctx); }; case http_1.ParameterType.HEADER: return () => { var _a; return name ? (_a = ctx.headers) === null || _a === void 0 ? void 0 : _a[name] : ctx.headers; }; case http_1.ParameterType.PARAM: return () => { var _a; return name ? (_a = ctx.params) === null || _a === void 0 ? void 0 : _a[name] : ctx.params; }; case http_1.ParameterType.QUERY: return () => { var _a; return name ? (_a = ctx.query) === null || _a === void 0 ? void 0 : _a[name] : ctx.query; }; case http_1.ParameterType.REQUEST: return () => req; case http_1.ParameterType.RESPONSE: return () => res; default: return () => req; } } isHeadersSent(response) { return response.headerSent; } listen() { this.server.on('request', this.app.callback()); } async render(response, template, message) { try { const html = await response.ctx.render(template, message); return html; } catch (err) { throw new Error(err.message); } } reply(response, message, statusCode) { const isJson = typeof message === 'object'; if (statusCode) { response.ctx.status = statusCode; } if (isJson) { this.setHeader(response, 'Content-Type', 'application/json'); } response.ctx.body = message; } routes(routes) { var _a; const router = new KoaRouter(); for (const route of routes) { (_a = router[route.type]) === null || _a === void 0 ? void 0 : _a.call(router, route.url.replace('*', '(.*)'), route.handler); } this.app.use(router.routes()); } serveStatic(prefix, path, options) { this.app.use(koaMount(prefix, koaStatic(path, options))); } setHeader(response, name, value) { response.set(name, value); } use(...args) { this.app.use.call(this.app, ...args); } getCookies(ctx) { return ctx.headers.cookie .split(';') .reduce((acc, cookie) => { const [name, value] = cookie.trim().split('='); return { ...acc, [name]: value }; }, {}); } } exports.KoaAdapter = KoaAdapter; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia29hLWFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGxhdGZvcm1zL2tvYS9rb2EtYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQkFBMkI7QUFDM0Isc0NBQXNDO0FBQ3RDLHdDQUF3QztBQUN4Qyx3Q0FBd0M7QUFHeEMsa0NBQThFO0FBRTlFLE1BQWEsVUFBVTtJQUlyQixZQUFtQixNQUFNLElBQUksR0FBRyxFQUFFO1FBQWYsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUhsQyxTQUFJLEdBQUcsS0FBSyxDQUFDO0lBR3lCLENBQUM7SUFFdkMsWUFBWSxDQUFDLE1BQWM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQW1CLEVBQUUsSUFBWSxFQUFFLEdBQWdCO1FBQzFELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDeEIsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUV6QixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssb0JBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxXQUFDLE9BQUEsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFBLEdBQUcsQ0FBQyxNQUFNLENBQUMsMENBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQSxFQUFBLENBQUM7WUFDL0UsS0FBSyxvQkFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sR0FBRyxFQUFFLFdBQUMsT0FBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQUEsR0FBRyxDQUFDLE9B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QyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYyxFQUFFLElBQVksRUFBRSxPQUFpQjtRQUN6RCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxTQUFTLENBQUMsUUFBc0IsRUFBRSxJQUFZLEVBQUUsS0FBYTtRQUMzRCxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQUcsSUFBVztRQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxVQUFVLENBQUMsR0FBZ0I7UUFDakMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU07YUFDdEIsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0QixNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFL0MsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDbkMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztDQUNGO0FBL0ZELGdDQStGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEtvYSBmcm9tICdrb2EnO1xuaW1wb3J0ICogYXMga29hTW91bnQgZnJvbSAna29hLW1vdW50JztcbmltcG9ydCAqIGFzIEtvYVJvdXRlciBmcm9tICdrb2Etcm91dGVyJztcbmltcG9ydCAqIGFzIGtvYVN0YXRpYyBmcm9tICdrb2Etc3RhdGljJztcblxuaW1wb3J0IHsgU2VydmVyIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBBZGFwdGVyUm91dGUsIEh0dHBBcHBsaWNhdGlvbkFkYXB0ZXIsIFBhcmFtZXRlclR5cGUgfSBmcm9tICcuLi9odHRwJztcblxuZXhwb3J0IGNsYXNzIEtvYUFkYXB0ZXIgaW1wbGVtZW50cyBIdHRwQXBwbGljYXRpb25BZGFwdGVyIHtcbiAgdHlwZSA9ICdrb2EnO1xuICBwcml2YXRlIHNlcnZlcjogU2VydmVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBhcHAgPSBuZXcgS29hKCkpIHsgfVxuXG4gIGF0dGFjaFNlcnZlcihzZXJ2ZXI6IFNlcnZlcik6IHZvaWQge1xuICAgIHRoaXMuc2VydmVyID0gc2VydmVyO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuc2VydmVyLmxpc3RlbmluZykge1xuICAgICAgdGhpcy5zZXJ2ZXIuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBnZXRQYXJhbSh0eXBlOiBQYXJhbWV0ZXJUeXBlLCBuYW1lOiBzdHJpbmcsIGN0eDogS29hLkNvbnRleHQpIHtcbiAgICBjb25zdCByZXEgPSBjdHgucmVxdWVzdDtcbiAgICBjb25zdCByZXMgPSBjdHgucmVzcG9uc2U7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgUGFyYW1ldGVyVHlwZS5CT0RZOiByZXR1cm4gKCkgPT4gbmFtZSA/IHJlcVsnYm9keSddPy5bbmFtZV0gOiByZXFbJ2JvZHknXTtcbiAgICAgIGNhc2UgUGFyYW1ldGVyVHlwZS5DT09LSUU6IHJldHVybiAoKSA9PiBuYW1lID8gY3R4LmNvb2tpZXM/LmdldChuYW1lKSA6IHRoaXMuZ2V0Q29va2llcyhjdHgpO1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLkhFQURFUjogcmV0dXJuICgpID0+IG5hbWUgPyBjdHguaGVhZGVycz8uW25hbWVdIDogY3R4LmhlYWRlcnM7XG4gICAgICBjYXNlIFBhcmFtZXRlclR5cGUuUEFSQU06IHJldHVybiAoKSA9PiBuYW1lID8gY3R4LnBhcmFtcz8uW25hbWVdIDogY3R4LnBhcmFtcztcbiAgICAgIGNhc2UgUGFyYW1ldGVyVHlwZS5RVUVSWTogcmV0dXJuICgpID0+IG5hbWUgPyBjdHgucXVlcnk/LltuYW1lXSA6IGN0eC5xdWVyeTtcbiAgICAgIGNhc2UgUGFyYW1ldGVyVHlwZS5SRVFVRVNUOiByZXR1cm4gKCkgPT4gcmVxO1xuICAgICAgY2FzZSBQYXJhbWV0ZXJUeXBlLlJFU1BPTlNFOiByZXR1cm4gKCkgPT4gcmVzO1xuICAgICAgZGVmYXVsdDogcmV0dXJuICgpID0+IHJlcTtcbiAgICB9XG4gIH1cblxuICBpc0hlYWRlcnNTZW50KHJlc3BvbnNlOiBLb2EuUmVzcG9uc2UpIHtcbiAgICByZXR1cm4gcmVzcG9uc2UuaGVhZGVyU2VudDtcbiAgfVxuXG4gIGxpc3RlbigpIHtcbiAgICB0aGlzLnNlcnZlci5vbigncmVxdWVzdCcsIHRoaXMuYXBwLmNhbGxiYWNrKCkpO1xuICB9XG5cbiAgYXN5bmMgcmVuZGVyKHJlc3BvbnNlOiBLb2EuUmVzcG9uc2UsIHRlbXBsYXRlOiBzdHJpbmcsIG1lc3NhZ2U6IG9iamVjdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBodG1sID0gYXdhaXQgcmVzcG9uc2UuY3R4LnJlbmRlcih0ZW1wbGF0ZSwgbWVzc2FnZSk7XG5cbiAgICAgIHJldHVybiBodG1sIGFzIHVua25vd24gYXMgc3RyaW5nO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGVyci5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICByZXBseShyZXNwb25zZTogS29hLlJlc3BvbnNlLCBtZXNzYWdlOiB1bmtub3duLCBzdGF0dXNDb2RlPzogbnVtYmVyKSB7XG4gICAgY29uc3QgaXNKc29uID0gdHlwZW9mIG1lc3NhZ2UgPT09ICdvYmplY3QnO1xuXG4gICAgaWYgKHN0YXR1c0NvZGUpIHtcbiAgICAgIHJlc3BvbnNlLmN0eC5zdGF0dXMgPSBzdGF0dXNDb2RlO1xuICAgIH1cblxuICAgIGlmIChpc0pzb24pIHtcbiAgICAgIHRoaXMuc2V0SGVhZGVyKHJlc3BvbnNlLCAnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgICB9XG5cbiAgICByZXNwb25zZS5jdHguYm9keSA9IG1lc3NhZ2U7XG4gIH1cblxuICByb3V0ZXMocm91dGVzOiBBZGFwdGVyUm91dGVbXSkge1xuICAgIGNvbnN0IHJvdXRlciA9IG5ldyBLb2FSb3V0ZXIoKTtcblxuICAgIGZvciAoY29uc3Qgcm91dGUgb2Ygcm91dGVzKSB7XG4gICAgICByb3V0ZXJbcm91dGUudHlwZV0/Lihyb3V0ZS51cmwucmVwbGFjZSgnKicsICcoLiopJyksIHJvdXRlLmhhbmRsZXIpO1xuICAgIH1cblxuICAgIHRoaXMuYXBwLnVzZShyb3V0ZXIucm91dGVzKCkpO1xuICB9XG5cbiAgc2VydmVTdGF0aWMocHJlZml4OiBzdHJpbmcsIHBhdGg6IHN0cmluZywgb3B0aW9ucz86IHVua25vd24pIHtcbiAgICB0aGlzLmFwcC51c2Uoa29hTW91bnQocHJlZml4LCBrb2FTdGF0aWMocGF0aCwgb3B0aW9ucykpKTtcbiAgfVxuXG4gIHNldEhlYWRlcihyZXNwb25zZTogS29hLlJlc3BvbnNlLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXNwb25zZS5zZXQobmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgdXNlKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgdGhpcy5hcHAudXNlLmNhbGwodGhpcy5hcHAsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb29raWVzKGN0eDogS29hLkNvbnRleHQpIHtcbiAgICByZXR1cm4gY3R4LmhlYWRlcnMuY29va2llXG4gICAgICAuc3BsaXQoJzsnKVxuICAgICAgLnJlZHVjZSgoYWNjLCBjb29raWUpID0+IHtcbiAgICAgICAgY29uc3QgW25hbWUsIHZhbHVlXSA9IGNvb2tpZS50cmltKCkuc3BsaXQoJz0nKTtcblxuICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtuYW1lXTogdmFsdWUgfTtcbiAgICAgIH0sIHt9KTtcbiAgfVxufVxuIl19