@gabliam/express
Version:
Gabliam plugin for add express
35 lines (34 loc) • 1.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExpressConverter = 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 Express Middleware
*/
let ExpressConverter = class ExpressConverter {
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 (req, res, next) => {
const args = await extractArgs((0, web_core_1.getContext)(req), null, next);
try {
await (0, core_1.toPromise)(instance.intercept(...args));
next();
}
catch (err) {
next(err);
}
};
}
};
ExpressConverter = tslib_1.__decorate([
(0, core_1.InjectContainer)(),
(0, core_1.Service)()
], ExpressConverter);
exports.ExpressConverter = ExpressConverter;