@gabliam/koa
Version:
Gabliam plugin for add koa
37 lines (36 loc) • 1.36 kB
JavaScript
;
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;