@tsclean/core
Version:
Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.
31 lines • 4.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WsProxy = void 0;
const helpers_1 = require("../../helpers");
const rxjs_1 = require("rxjs");
class WsProxy {
create(targetCallback, exceptionsHandler, targetPattern) {
return async (...args) => {
args = [...args, targetPattern !== null && targetPattern !== void 0 ? targetPattern : 'unknown'];
try {
const result = await targetCallback(...args);
return !(0, rxjs_1.isObservable)(result)
? result
: result.pipe((0, rxjs_1.catchError)(error => {
this.handleError(exceptionsHandler, args, error);
return rxjs_1.EMPTY;
}));
}
catch (error) {
this.handleError(exceptionsHandler, args, error);
}
};
}
handleError(exceptionsHandler, args, error) {
const host = new helpers_1.ExecutionContextHost(args);
host.setType('ws');
exceptionsHandler.handle(error, host);
}
}
exports.WsProxy = WsProxy;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtcHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2Vic29ja2V0cy9jb250ZXh0L3dzLXByb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUFxRDtBQUNyRCwrQkFBdUQ7QUFHdkQsTUFBYSxPQUFPO0lBQ1QsTUFBTSxDQUNYLGNBQW9ELEVBQ3BELGlCQUFzQyxFQUN0QyxhQUFzQjtRQUV0QixPQUFPLEtBQUssRUFBRSxHQUFHLElBQWUsRUFBRSxFQUFFO1lBQ2xDLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLGFBQWEsYUFBYixhQUFhLGNBQWIsYUFBYSxHQUFJLFNBQVMsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO2dCQUM3QyxPQUFPLENBQUMsSUFBQSxtQkFBWSxFQUFDLE1BQU0sQ0FBQztvQkFDMUIsQ0FBQyxDQUFDLE1BQU07b0JBQ1IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ1QsSUFBQSxpQkFBVSxFQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzt3QkFDakQsT0FBTyxZQUFLLENBQUM7b0JBQ2YsQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUNSLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ25ELENBQUM7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUNULGlCQUFzQyxFQUN0QyxJQUFlLEVBQ2YsS0FBUTtRQUVSLE1BQU0sSUFBSSxHQUFHLElBQUksOEJBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQWpDSCwwQkFpQ0ciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFeGVjdXRpb25Db250ZXh0SG9zdCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzXCI7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBFTVBUWSwgaXNPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IFdzRXhjZXB0aW9uc0hhbmRsZXIgfSBmcm9tIFwiLi4vLi4vd2Vic29ja2V0c1wiO1xuXG5leHBvcnQgY2xhc3MgV3NQcm94eSB7XG4gICAgcHVibGljIGNyZWF0ZShcbiAgICAgIHRhcmdldENhbGxiYWNrOiAoLi4uYXJnczogdW5rbm93bltdKSA9PiBQcm9taXNlPGFueT4sXG4gICAgICBleGNlcHRpb25zSGFuZGxlcjogV3NFeGNlcHRpb25zSGFuZGxlcixcbiAgICAgIHRhcmdldFBhdHRlcm4/OiBzdHJpbmcsXG4gICAgKTogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gUHJvbWlzZTxhbnk+IHtcbiAgICAgIHJldHVybiBhc3luYyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgIGFyZ3MgPSBbLi4uYXJncywgdGFyZ2V0UGF0dGVybiA/PyAndW5rbm93biddO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRhcmdldENhbGxiYWNrKC4uLmFyZ3MpO1xuICAgICAgICAgIHJldHVybiAhaXNPYnNlcnZhYmxlKHJlc3VsdClcbiAgICAgICAgICAgID8gcmVzdWx0XG4gICAgICAgICAgICA6IHJlc3VsdC5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihleGNlcHRpb25zSGFuZGxlciwgYXJncywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXhjZXB0aW9uc0hhbmRsZXIsIGFyZ3MsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIFxuICAgIGhhbmRsZUVycm9yPFQ+KFxuICAgICAgZXhjZXB0aW9uc0hhbmRsZXI6IFdzRXhjZXB0aW9uc0hhbmRsZXIsXG4gICAgICBhcmdzOiB1bmtub3duW10sXG4gICAgICBlcnJvcjogVCxcbiAgICApIHtcbiAgICAgIGNvbnN0IGhvc3QgPSBuZXcgRXhlY3V0aW9uQ29udGV4dEhvc3QoYXJncyk7XG4gICAgICBob3N0LnNldFR5cGUoJ3dzJyk7XG4gICAgICBleGNlcHRpb25zSGFuZGxlci5oYW5kbGUoZXJyb3IsIGhvc3QpO1xuICAgIH1cbiAgfSJdfQ==