UNPKG

@tsclean/core

Version:

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

34 lines 4.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExceptionsHandler = void 0; const utils_1 = require("../../utils"); const base_exception_filter_1 = require("./base-exception-filter"); const errors_1 = require("../../errors"); class ExceptionsHandler extends base_exception_filter_1.BaseExceptionFilter { constructor() { super(...arguments); this.filters = []; } next(exception, ctx) { if (this.invokeCustomFilters(exception, ctx)) return; super.catch(exception, ctx); } setCustomFilters(filters) { if (!Array.isArray(filters)) throw new errors_1.InvalidExceptionFilterException(); this.filters = filters; } invokeCustomFilters(exception, ctx) { if ((0, utils_1.isEmpty)(this.filters)) return false; const isInstanceOf = (metaType) => exception instanceof metaType; const filter = this.filters.find(({ exceptionMetaTypes }) => { return !exceptionMetaTypes.length || exceptionMetaTypes.some(isInstanceOf); }); filter && filter.func(exception, ctx); return !!filter; } } exports.ExceptionsHandler = ExceptionsHandler; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9ucy1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvZXhjZXB0aW9ucy9leGNlcHRpb25zLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBQW9DO0FBRXBDLG1FQUE0RDtBQUM1RCx5Q0FBNkQ7QUFHN0QsTUFBYSxpQkFBa0IsU0FBUSwyQ0FBbUI7SUFBMUQ7O1FBQ1ksWUFBTyxHQUF1QyxFQUFFLENBQUM7SUFzQjdELENBQUM7SUFwQlUsSUFBSSxDQUFDLFNBQXNDLEVBQUUsR0FBMkI7UUFDM0UsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQztZQUFFLE9BQU87UUFDckQsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLGdCQUFnQixDQUFDLE9BQTJDO1FBQy9ELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUFFLE1BQU0sSUFBSSx3Q0FBK0IsRUFBRSxDQUFDO1FBQ3pFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFTSxtQkFBbUIsQ0FBVSxTQUFZLEVBQUUsR0FBMkI7UUFDekUsSUFBSSxJQUFBLGVBQU8sRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDeEMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUF1QixFQUFFLEVBQUUsQ0FBQyxTQUFTLFlBQVksUUFBUSxDQUFDO1FBRWhGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxrQkFBa0IsRUFBQyxFQUFFLEVBQUU7WUFDdEQsT0FBTyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDL0UsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3BCLENBQUM7Q0FDSjtBQXZCRCw4Q0F1QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzRW1wdHl9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHtIdHRwRXhjZXB0aW9ufSBmcm9tIFwiLi4vLi4vZXhjZXB0aW9uc1wiO1xuaW1wb3J0IHtCYXNlRXhjZXB0aW9uRmlsdGVyfSBmcm9tICcuL2Jhc2UtZXhjZXB0aW9uLWZpbHRlcic7XG5pbXBvcnQge0ludmFsaWRFeGNlcHRpb25GaWx0ZXJFeGNlcHRpb259IGZyb20gJy4uLy4uL2Vycm9ycyc7XG5pbXBvcnQge0FyZ3VtZW50c0hvc3RJbnRlcmZhY2UsIEV4Y2VwdGlvbkZpbHRlck1ldGFkYXRhSW50ZXJmYWNlLCBUeXBlfSBmcm9tIFwiLi4vLi4vY29udHJhY3RzXCI7XG5cbmV4cG9ydCBjbGFzcyBFeGNlcHRpb25zSGFuZGxlciBleHRlbmRzIEJhc2VFeGNlcHRpb25GaWx0ZXIge1xuICAgIHByaXZhdGUgZmlsdGVyczogRXhjZXB0aW9uRmlsdGVyTWV0YWRhdGFJbnRlcmZhY2VbXSA9IFtdO1xuXG4gICAgcHVibGljIG5leHQoZXhjZXB0aW9uOiBFcnJvciB8IEh0dHBFeGNlcHRpb24gfCBhbnksIGN0eDogQXJndW1lbnRzSG9zdEludGVyZmFjZSkge1xuICAgICAgICBpZiAodGhpcy5pbnZva2VDdXN0b21GaWx0ZXJzKGV4Y2VwdGlvbiwgY3R4KSkgcmV0dXJuO1xuICAgICAgICBzdXBlci5jYXRjaChleGNlcHRpb24sIGN0eCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEN1c3RvbUZpbHRlcnMoZmlsdGVyczogRXhjZXB0aW9uRmlsdGVyTWV0YWRhdGFJbnRlcmZhY2VbXSkge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVycykpIHRocm93IG5ldyBJbnZhbGlkRXhjZXB0aW9uRmlsdGVyRXhjZXB0aW9uKCk7XG4gICAgICAgIHRoaXMuZmlsdGVycyA9IGZpbHRlcnM7XG4gICAgfVxuXG4gICAgcHVibGljIGludm9rZUN1c3RvbUZpbHRlcnM8VCA9IGFueT4oZXhjZXB0aW9uOiBULCBjdHg6IEFyZ3VtZW50c0hvc3RJbnRlcmZhY2UpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzRW1wdHkodGhpcy5maWx0ZXJzKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBpc0luc3RhbmNlT2YgPSAobWV0YVR5cGU6IFR5cGU8dW5rbm93bj4pID0+IGV4Y2VwdGlvbiBpbnN0YW5jZW9mIG1ldGFUeXBlO1xuXG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZmlsdGVycy5maW5kKCh7ZXhjZXB0aW9uTWV0YVR5cGVzfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICFleGNlcHRpb25NZXRhVHlwZXMubGVuZ3RoIHx8IGV4Y2VwdGlvbk1ldGFUeXBlcy5zb21lKGlzSW5zdGFuY2VPZik7XG4gICAgICAgIH0pO1xuICAgICAgICBmaWx0ZXIgJiYgZmlsdGVyLmZ1bmMoZXhjZXB0aW9uLCBjdHgpO1xuICAgICAgICByZXR1cm4gISFmaWx0ZXI7XG4gICAgfVxufVxuIl19