UNPKG

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