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

43 lines 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CustomOnlyDateString = void 0; const class_validator_1 = require("class-validator"); const commonDecoratorFunctions_1 = require("../utils/commonDecoratorFunctions"); const class_transformer_1 = require("class-transformer"); const validatorTransformers_1 = require("../transformers/validatorTransformers"); function IsOnlyDate(validationOptions) { return function (object, propertyName) { (0, class_validator_1.registerDecorator)({ name: "IsOnlyDate", target: object.constructor, propertyName: propertyName, constraints: [], options: Object.assign({ message: "Please provide only date like 2020-12-08" }, validationOptions), validator: { validate(value) { const regex = /([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))/; return ((typeof value === "string" && regex.test(value)) || value instanceof Date); }, }, }); }; } function CustomOnlyDateString(details) { const { isArray, optional, description, defaultValue } = details; const mySwaggerProp = (0, commonDecoratorFunctions_1.swaggerProp)({ optional, description, defaultValue: defaultValue || "2013-02-23", type: "string", isArray, }); return function (target, key) { optional ? (0, class_validator_1.IsOptional)()(target, key) : (0, commonDecoratorFunctions_1.notEmptyFn)(key)(target, key); IsOnlyDate({ each: isArray })(target, key); (0, class_transformer_1.Transform)(validatorTransformers_1.TransformDateStringToDateObject)(target, key); mySwaggerProp(target, key); }; } exports.CustomOnlyDateString = CustomOnlyDateString; //# sourceMappingURL=onlyDate.decorator.js.map