UNPKG

1.38 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 base_exception_filter_1 = require("./base-exception-filter");
6class ExceptionsHandler extends base_exception_filter_1.BaseExceptionFilter {
7 constructor() {
8 super(...arguments);
9 this.filters = [];
10 }
11 next(exception, ctx) {
12 if (this.invokeCustomFilters(exception, ctx)) {
13 return;
14 }
15 super.catch(exception, ctx);
16 }
17 setCustomFilters(filters) {
18 if (!Array.isArray(filters)) {
19 throw new invalid_exception_filter_exception_1.InvalidExceptionFilterException();
20 }
21 this.filters = filters;
22 }
23 invokeCustomFilters(exception, ctx) {
24 if (shared_utils_1.isEmpty(this.filters))
25 return false;
26 const filter = this.filters.find(({ exceptionMetatypes }) => {
27 const typeExists = !exceptionMetatypes.length ||
28 exceptionMetatypes.some(ExceptionMetatype => exception instanceof ExceptionMetatype);
29 return typeExists;
30 });
31 filter && filter.func(exception, ctx);
32 return !!filter;
33 }
34}
35exports.ExceptionsHandler = ExceptionsHandler;