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
JavaScript
;
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