UNPKG

@thealiqaf/nestjs-permission-management

Version:
58 lines 2.63 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var GlobalExceptionFilter_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.GlobalExceptionFilter = void 0; const common_1 = require("@nestjs/common"); let GlobalExceptionFilter = GlobalExceptionFilter_1 = class GlobalExceptionFilter { logger = new common_1.Logger(GlobalExceptionFilter_1.name); catch(exception, host) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); const request = ctx.getRequest(); let status = common_1.HttpStatus.INTERNAL_SERVER_ERROR; let message = 'Internal server error'; let errorResponse = {}; if (exception instanceof common_1.HttpException) { status = exception.getStatus(); const res = exception.getResponse(); message = typeof res === 'string' ? res : res.message; errorResponse = res; } else if (exception?.code === 11000) { status = common_1.HttpStatus.CONFLICT; message = 'Duplicate key error'; errorResponse = { code: 11000, keyValue: exception?.keyValue || null, }; } else if (exception?.name === 'ValidationError') { status = common_1.HttpStatus.BAD_REQUEST; message = exception.message || 'Validation failed'; errorResponse = { errors: exception.errors || null, }; } else { this.logger.error(`Unexpected error: ${JSON.stringify(exception)}`, exception?.stack); } response.status(status).json({ statusCode: status, message, path: request.url, timestamp: new Date().toISOString(), ...errorResponse, }); } }; exports.GlobalExceptionFilter = GlobalExceptionFilter; exports.GlobalExceptionFilter = GlobalExceptionFilter = GlobalExceptionFilter_1 = __decorate([ (0, common_1.Catch)() ], GlobalExceptionFilter); //# sourceMappingURL=global-exception.filter.js.map