UNPKG

@jsgurucompany/jsg-nestjs-common

Version:

Initial README.md

61 lines 2.77 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 __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AppValidationPipe = void 0; const common_1 = require("@nestjs/common"); let AppValidationPipe = class AppValidationPipe extends common_1.ValidationPipe { constructor(options) { super(options !== null && options !== void 0 ? options : {}); this.options = options; this.classTransformer = this.loadTransformer(); this.classValidator = this.loadValidator(); } throwException(errors) { return this.exceptionFactory(errors); } async transform(value, metadata) { const metatype = metadata.metatype; const entity = this.classTransformer.plainToClass(metatype, value, this.transformOptions); const rawErrors = await this.classValidator.validate(entity, this.validatorOptions); if (rawErrors.length > 0) { const errors = this.transformValidationErrors(rawErrors); throw this.throwException(errors); } return value; } transformValidationErrors(initialErrors) { if (!initialErrors) { return []; } const errors = []; this.resolveValidationErrors(errors, '', initialErrors); return errors; } resolveValidationErrors(totalErrors, path = '', currentErrors) { for (const error of currentErrors) { const currentPath = `${path ? `${path}.` : ''}${error.property}`; if (error.constraints) { totalErrors.push({ property: currentPath, value: error.value, violations: error.constraints, }); } this.resolveValidationErrors(totalErrors, currentPath, error.children); } } }; AppValidationPipe = __decorate([ (0, common_1.Injectable)(), __metadata("design:paramtypes", [Object]) ], AppValidationPipe); exports.AppValidationPipe = AppValidationPipe; //# sourceMappingURL=validation.pipe.js.map