UNPKG

@russ-b/nestjs-common-tools

Version:
38 lines 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.classValidatorExceptionFactory = classValidatorExceptionFactory; const common_1 = require("@nestjs/common"); const api_error_root_field_constant_1 = require("./api-error-root-field.constant"); const api_error_code_enum_1 = require("./api-error-code.enum"); const error_response_factory_1 = require("./error-response.factory"); const DEFAULT_VALIDATION_ERROR_MESSAGE = 'Validation failed'; function classValidatorExceptionFactory(errors, options = {}) { return new common_1.BadRequestException((0, error_response_factory_1.createApiErrorResponse)({ statusCode: common_1.HttpStatus.BAD_REQUEST, message: options.message ?? DEFAULT_VALIDATION_ERROR_MESSAGE, code: api_error_code_enum_1.ApiErrorCode.VALIDATION_FAILED, errors: flattenValidationErrors(errors), })); } function flattenValidationErrors(errors, parentPath) { const items = []; for (const error of errors) { const field = formatValidationErrorPath(error.property, parentPath); if (error.constraints) { for (const message of Object.values(error.constraints)) { items.push({ field, message }); } } if (error.children?.length) { items.push(...flattenValidationErrors(error.children, field)); } } return items; } function formatValidationErrorPath(property, parentPath) { if (!property) { return parentPath ?? api_error_root_field_constant_1.API_ERROR_ROOT_FIELD; } return parentPath ? `${parentPath}.${property}` : property; } //# sourceMappingURL=class-validator-exception.factory.js.map