UNPKG

@tsclean/core

Version:

Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.

35 lines 4.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WsExceptionsHandler = void 0; const base_ws_exception_filter_1 = require("./base-ws-exception-filter"); const errors_1 = require("../../errors"); const shared_utils_1 = require("../../utils/shared.utils"); const utils_1 = require("../../utils"); class WsExceptionsHandler extends base_ws_exception_filter_1.BaseWsExceptionFilter { constructor() { super(...arguments); this.filters = []; } handle(exception, host) { const client = host.switchToWs().getClient(); if (this.invokeCustomFilters(exception, host) || !client.emit) { return; } super.catch(exception, host); } setCustomFilters(filters) { if (!Array.isArray(filters)) { throw new errors_1.InvalidExceptionFilterException(); } this.filters = filters; } invokeCustomFilters(exception, args) { if ((0, shared_utils_1.isEmpty)(this.filters)) return false; const filter = (0, utils_1.selectExceptionFilterMetadata)(this.filters, exception); filter && filter.func(exception, args); return !!filter; } } exports.WsExceptionsHandler = WsExceptionsHandler; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtZXhjZXB0aW9ucy1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3dlYnNvY2tldHMvZXhjZXB0aW9ucy93cy1leGNlcHRpb25zLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUVBQWtFO0FBRWxFLHlDQUE4RDtBQUM5RCwyREFBa0Q7QUFDbEQsdUNBQTJEO0FBRTNELE1BQWEsbUJBQW9CLFNBQVEsZ0RBQXFCO0lBQTlEOztRQUNVLFlBQU8sR0FBdUMsRUFBRSxDQUFBO0lBOEIxRCxDQUFDO0lBNUJRLE1BQU0sQ0FDWCxTQUFvQyxFQUNwQyxJQUE0QjtRQUU1QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUE7UUFDNUMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlELE9BQU07UUFDUixDQUFDO1FBQ0QsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDOUIsQ0FBQztJQUVNLGdCQUFnQixDQUFFLE9BQTJDO1FBQ2xFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLHdDQUErQixFQUFFLENBQUE7UUFDN0MsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO0lBQ3hCLENBQUM7SUFFTSxtQkFBbUIsQ0FDeEIsU0FBWSxFQUNaLElBQTRCO1FBRTVCLElBQUksSUFBQSxzQkFBTyxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQTtRQUV2QyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFDQUE2QixFQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDckUsTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3RDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQTtJQUNqQixDQUFDO0NBQ0Y7QUEvQkQsa0RBK0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJndW1lbnRzSG9zdEludGVyZmFjZSwgRXhjZXB0aW9uRmlsdGVyTWV0YWRhdGFJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi9jb250cmFjdHMnXG5pbXBvcnQgeyBCYXNlV3NFeGNlcHRpb25GaWx0ZXIgfSBmcm9tICcuL2Jhc2Utd3MtZXhjZXB0aW9uLWZpbHRlcidcbmltcG9ydCB7IFdzRXhjZXB0aW9uIH0gZnJvbSAnLi4vLi4vd2Vic29ja2V0cy91dGlscy93cy1leGNlcHRpb24nXG5pbXBvcnQgeyBJbnZhbGlkRXhjZXB0aW9uRmlsdGVyRXhjZXB0aW9uIH0gZnJvbSAnLi4vLi4vZXJyb3JzJ1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJy4uLy4uL3V0aWxzL3NoYXJlZC51dGlscydcbmltcG9ydCB7IHNlbGVjdEV4Y2VwdGlvbkZpbHRlck1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdXRpbHMnXG5cbmV4cG9ydCBjbGFzcyBXc0V4Y2VwdGlvbnNIYW5kbGVyIGV4dGVuZHMgQmFzZVdzRXhjZXB0aW9uRmlsdGVyIHtcbiAgcHJpdmF0ZSBmaWx0ZXJzOiBFeGNlcHRpb25GaWx0ZXJNZXRhZGF0YUludGVyZmFjZVtdID0gW11cblxuICBwdWJsaWMgaGFuZGxlIChcbiAgICBleGNlcHRpb246IEVycm9yIHwgV3NFeGNlcHRpb24gfCBhbnksXG4gICAgaG9zdDogQXJndW1lbnRzSG9zdEludGVyZmFjZVxuICApIHtcbiAgICBjb25zdCBjbGllbnQgPSBob3N0LnN3aXRjaFRvV3MoKS5nZXRDbGllbnQoKVxuICAgIGlmICh0aGlzLmludm9rZUN1c3RvbUZpbHRlcnMoZXhjZXB0aW9uLCBob3N0KSB8fCAhY2xpZW50LmVtaXQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzdXBlci5jYXRjaChleGNlcHRpb24sIGhvc3QpXG4gIH1cblxuICBwdWJsaWMgc2V0Q3VzdG9tRmlsdGVycyAoZmlsdGVyczogRXhjZXB0aW9uRmlsdGVyTWV0YWRhdGFJbnRlcmZhY2VbXSkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShmaWx0ZXJzKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRFeGNlcHRpb25GaWx0ZXJFeGNlcHRpb24oKVxuICAgIH1cbiAgICB0aGlzLmZpbHRlcnMgPSBmaWx0ZXJzXG4gIH1cblxuICBwdWJsaWMgaW52b2tlQ3VzdG9tRmlsdGVyczxUID0gYW55PiAoXG4gICAgZXhjZXB0aW9uOiBULFxuICAgIGFyZ3M6IEFyZ3VtZW50c0hvc3RJbnRlcmZhY2VcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzRW1wdHkodGhpcy5maWx0ZXJzKSkgcmV0dXJuIGZhbHNlXG5cbiAgICBjb25zdCBmaWx0ZXIgPSBzZWxlY3RFeGNlcHRpb25GaWx0ZXJNZXRhZGF0YSh0aGlzLmZpbHRlcnMsIGV4Y2VwdGlvbilcbiAgICBmaWx0ZXIgJiYgZmlsdGVyLmZ1bmMoZXhjZXB0aW9uLCBhcmdzKVxuICAgIHJldHVybiAhIWZpbHRlclxuICB9XG59XG4iXX0=