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

41 lines 1.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CustomEnumValidator = void 0; const class_validator_1 = require("class-validator"); const commonDecoratorFunctions_1 = require("../utils/commonDecoratorFunctions"); function CustomEnumValidator(details) { const { validEnum, optional, defaultValue, description, isArray } = details; const mySwaggerProp = (0, commonDecoratorFunctions_1.swaggerProp)({ validEnum, optional, description, defaultValue, isArray, }); const throwError = (target) => { throw new Error(`Enum with keys ${Object.keys(validEnum)} got invalid default value ${defaultValue} in ${target.constructor.name}`); }; return function (target, key) { if (!validEnum) { throw new Error(`Please provide a validEnum for ${target.constructor.name}}.${key}`); } if (defaultValue && !isArray && !Object.values(validEnum).includes(defaultValue)) { throwError(target); } if (defaultValue && isArray && Array.isArray(defaultValue)) { const allDefaultsValues = Object.values(defaultValue); const invalidDefault = defaultValue.filter((value) => !allDefaultsValues.includes(value)); if (invalidDefault.length) throwError(target); } if (optional) (0, class_validator_1.IsOptional)()(target, key); (0, commonDecoratorFunctions_1.notEmptyFn)(key)(target, key); (0, commonDecoratorFunctions_1.isEnumFn)(key, validEnum, isArray)(target, key); mySwaggerProp(target, key); }; } exports.CustomEnumValidator = CustomEnumValidator; //# sourceMappingURL=enum.decorator.js.map