UNPKG

nestjs-custom-class-validators

Version:

This package contains a few custom validator I have found to be repetitive, So I made templates that handles both class-validator checks and Swagger configuration

44 lines 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CustomNumberValidator = void 0; const class_transformer_1 = require("class-transformer"); const class_validator_1 = require("class-validator"); const validatorTransformers_1 = require("../transformers/validatorTransformers"); const commonDecoratorFunctions_1 = require("../utils/commonDecoratorFunctions"); function MinNumberFN(min, key, isArray = false) { return (0, class_validator_1.Min)(min, Object.assign(Object.assign({}, (isArray && { message: `${key}: Must be a list of numbers greater or equals ${min}`, })), (!isArray && { message: `${key}: Must be greater or equals ${min}`, }))); } function MaxNumberFN(max, key, isArray = false) { return (0, class_validator_1.Max)(max, Object.assign(Object.assign({}, (isArray && { message: `${key}: Must be a list of numbers less or equals ${max}`, })), (!isArray && { message: `${key}: Must be less or equals ${max}`, }))); } function CustomNumberValidator(details) { const { optional, defaultValue, description, isArray, min, max } = details; const mySwaggerProp = (0, commonDecoratorFunctions_1.swaggerProp)({ optional, description, defaultValue, type: 'number', isArray, }); return function (target, key) { optional ? (0, class_validator_1.IsOptional)()(target, key) : (0, commonDecoratorFunctions_1.notEmptyFn)(key)(target, key); min && MinNumberFN(min, key, isArray)(target, key); max && MaxNumberFN(max, key, isArray)(target, key); (0, class_transformer_1.Transform)(validatorTransformers_1.TransformNumberStringToNumber)(target, key); isArray && (0, class_transformer_1.Transform)(validatorTransformers_1.TransformSingleItemToArray)(target, key); isArray && (0, commonDecoratorFunctions_1.isArrayFn)(key)(target, key); (0, commonDecoratorFunctions_1.isNumberFn)(key, isArray)(target, key); (0, commonDecoratorFunctions_1.notEmptyFn)(key)(target, key); mySwaggerProp(target, key); }; } exports.CustomNumberValidator = CustomNumberValidator; //# sourceMappingURL=number.decorator.js.map