UNPKG

1.48 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
4const invalid_exception_filter_exception_1 = require("../errors/exceptions/invalid-exception-filter.exception");
5const external_exception_filter_1 = require("./external-exception-filter");
6class ExternalExceptionsHandler extends external_exception_filter_1.ExternalExceptionFilter {
7 constructor() {
8 super(...arguments);
9 this.filters = [];
10 }
11 next(exception, host) {
12 const result = this.invokeCustomFilters(exception, host);
13 if (result) {
14 return result;
15 }
16 return super.catch(exception, host);
17 }
18 setCustomFilters(filters) {
19 if (!Array.isArray(filters)) {
20 throw new invalid_exception_filter_exception_1.InvalidExceptionFilterException();
21 }
22 this.filters = filters;
23 }
24 invokeCustomFilters(exception, host) {
25 if (shared_utils_1.isEmpty(this.filters)) {
26 return null;
27 }
28 const isInstanceOf = metatype => exception instanceof metatype;
29 const filter = this.filters.find(({ exceptionMetatypes, func }) => {
30 const hasMetatype = !exceptionMetatypes.length || exceptionMetatypes.some(isInstanceOf);
31 return hasMetatype;
32 });
33 return filter ? filter.func(exception, host) : null;
34 }
35}
36exports.ExternalExceptionsHandler = ExternalExceptionsHandler;