UNPKG

@tsclean/core

Version:

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

34 lines 4.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExternalExceptionsHandler = void 0; const utils_1 = require("../../utils"); const errors_1 = require("../../errors"); const external_exception_filter_1 = require("./external-exception-filter"); class ExternalExceptionsHandler extends external_exception_filter_1.ExternalExceptionFilter { constructor() { super(...arguments); this.filters = []; } next(exception, host) { const result = this.invokeCustomFilters(exception, host); if (result) return result; return super.catch(exception, host); } setCustomFilters(filters) { if (!Array.isArray(filters)) throw new errors_1.InvalidExceptionFilterException(); this.filters = filters; } invokeCustomFilters(exception, host) { if ((0, utils_1.isEmpty)(this.filters)) return null; const isInstanceOf = (metaType) => exception instanceof metaType; const filter = this.filters.find(({ exceptionMetaTypes }) => { return !exceptionMetaTypes.length || exceptionMetaTypes.some(isInstanceOf); }); return filter ? filter.func(exception, host) : null; } } exports.ExternalExceptionsHandler = ExternalExceptionsHandler; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtZXhjZXB0aW9ucy1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvZXhjZXB0aW9ucy9leHRlcm5hbC1leGNlcHRpb25zLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBQW9DO0FBQ3BDLHlDQUE2RDtBQUM3RCwyRUFBb0U7QUFHcEUsTUFBYSx5QkFBMEIsU0FBUSxtREFBdUI7SUFBdEU7O1FBQ1ksWUFBTyxHQUF1QyxFQUFFLENBQUM7SUF1QjdELENBQUM7SUFyQlUsSUFBSSxDQUFDLFNBQXNCLEVBQUUsSUFBNEI7UUFDNUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6RCxJQUFJLE1BQU07WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUMxQixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxPQUEyQztRQUMvRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFBRSxNQUFNLElBQUksd0NBQStCLEVBQUUsQ0FBQztRQUN6RSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMzQixDQUFDO0lBRU0sbUJBQW1CLENBQVUsU0FBWSxFQUFFLElBQTRCO1FBQzFFLElBQUksSUFBQSxlQUFPLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXZDLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBdUIsRUFBRSxFQUFFLENBQUMsU0FBUyxZQUFZLFFBQVEsQ0FBQztRQUVoRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsa0JBQWtCLEVBQUMsRUFBRSxFQUFFO1lBQ3RELE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9FLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDeEQsQ0FBQztDQUNKO0FBeEJELDhEQXdCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNFbXB0eX0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQge0ludmFsaWRFeGNlcHRpb25GaWx0ZXJFeGNlcHRpb259IGZyb20gJy4uLy4uL2Vycm9ycyc7XG5pbXBvcnQge0V4dGVybmFsRXhjZXB0aW9uRmlsdGVyfSBmcm9tICcuL2V4dGVybmFsLWV4Y2VwdGlvbi1maWx0ZXInO1xuaW1wb3J0IHtBcmd1bWVudHNIb3N0SW50ZXJmYWNlLCBFeGNlcHRpb25GaWx0ZXJNZXRhZGF0YUludGVyZmFjZSwgVHlwZX0gZnJvbSBcIi4uLy4uL2NvbnRyYWN0c1wiO1xuXG5leHBvcnQgY2xhc3MgRXh0ZXJuYWxFeGNlcHRpb25zSGFuZGxlciBleHRlbmRzIEV4dGVybmFsRXhjZXB0aW9uRmlsdGVyIHtcbiAgICBwcml2YXRlIGZpbHRlcnM6IEV4Y2VwdGlvbkZpbHRlck1ldGFkYXRhSW50ZXJmYWNlW10gPSBbXTtcblxuICAgIHB1YmxpYyBuZXh0KGV4Y2VwdGlvbjogRXJyb3IgfCBhbnksIGhvc3Q6IEFyZ3VtZW50c0hvc3RJbnRlcmZhY2UpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmludm9rZUN1c3RvbUZpbHRlcnMoZXhjZXB0aW9uLCBob3N0KTtcbiAgICAgICAgaWYgKHJlc3VsdCkgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmNhdGNoKGV4Y2VwdGlvbiwgaG9zdCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEN1c3RvbUZpbHRlcnMoZmlsdGVyczogRXhjZXB0aW9uRmlsdGVyTWV0YWRhdGFJbnRlcmZhY2VbXSkge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVycykpIHRocm93IG5ldyBJbnZhbGlkRXhjZXB0aW9uRmlsdGVyRXhjZXB0aW9uKCk7XG4gICAgICAgIHRoaXMuZmlsdGVycyA9IGZpbHRlcnM7XG4gICAgfVxuXG4gICAgcHVibGljIGludm9rZUN1c3RvbUZpbHRlcnM8VCA9IGFueT4oZXhjZXB0aW9uOiBULCBob3N0OiBBcmd1bWVudHNIb3N0SW50ZXJmYWNlKTogUHJvbWlzZTxhbnk+IHwgbnVsbCB7XG4gICAgICAgIGlmIChpc0VtcHR5KHRoaXMuZmlsdGVycykpIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGlzSW5zdGFuY2VPZiA9IChtZXRhVHlwZTogVHlwZTx1bmtub3duPikgPT4gZXhjZXB0aW9uIGluc3RhbmNlb2YgbWV0YVR5cGU7XG5cbiAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5maWx0ZXJzLmZpbmQoKHtleGNlcHRpb25NZXRhVHlwZXN9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIWV4Y2VwdGlvbk1ldGFUeXBlcy5sZW5ndGggfHwgZXhjZXB0aW9uTWV0YVR5cGVzLnNvbWUoaXNJbnN0YW5jZU9mKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmaWx0ZXIgPyBmaWx0ZXIuZnVuYyhleGNlcHRpb24sIGhvc3QpIDogbnVsbDtcbiAgICB9XG59XG4iXX0=