UNPKG

@gabliam/koa

Version:
37 lines (36 loc) 1.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.KoaConverter = void 0; const tslib_1 = require("tslib"); const core_1 = require("@gabliam/core"); const web_core_1 = require("@gabliam/web-core"); /** * Class for convert interceptor to Koa Middleware */ let KoaConverter = class KoaConverter { interceptorToMiddleware(clazz) { const container = this[core_1.INJECT_CONTAINER_KEY]; const instance = (0, web_core_1.createInterceptorResolver)(container)(clazz); if (!(0, web_core_1.isInterceptor)(instance)) { throw new web_core_1.BadInterceptorError(instance); } const extractArgs = (0, web_core_1.getExtractArgs)(container, instance, 'intercept', true); return async (context, next) => { let wasCalled = false; const nextWrap = async () => { wasCalled = true; await next(); }; const args = await extractArgs((0, web_core_1.getContext)(context.req), null, nextWrap); await (0, core_1.toPromise)(instance.intercept(...args)); if (!wasCalled) { await next(); } }; } }; KoaConverter = tslib_1.__decorate([ (0, core_1.InjectContainer)(), (0, core_1.Service)() ], KoaConverter); exports.KoaConverter = KoaConverter;