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
31 lines (27 loc) • 973 B
text/typescript
import { Transform } from "class-transformer";
import { IsOptional } from "class-validator";
import { ICustomStringOptions } from "../dto/customValidatorOptions.dto";
import { TransformSingleItemToArray } from "../transformers/validatorTransformers";
import {
swaggerProp,
notEmptyFn,
isUUIDFn,
isStringFn,
} from "../utils/commonDecoratorFunctions";
export function CustomStringValidator(details: ICustomStringOptions) {
const { description, isUUID, defaultValue, optional, isArray } = details;
const mySwaggerProp = swaggerProp({
description,
defaultValue,
optional,
isArray,
});
return function (target: any, key: string) {
optional ? IsOptional()(target, key) : notEmptyFn(key)(target, key);
isArray && Transform(TransformSingleItemToArray)(target, key);
mySwaggerProp(target, key);
isUUID
? isUUIDFn(key, isArray)(target, key)
: isStringFn(key, isArray)(target, key);
};
}