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
40 lines (36 loc) • 1.23 kB
text/typescript
import { Transform } from "class-transformer";
import { ArrayMinSize, IsOptional } from "class-validator";
import { ICustomEnumJSONArrayValidatorOptions } from "../dto/customValidatorOptions.dto";
import {
TransformStringToJSONArray,
TransformSingleItemToArray,
TransformSortStringArray,
} from "../transformers/validatorTransformers";
import {
swaggerProp,
notEmptyFn,
isArrayFn,
isEnumFn,
} from "../utils/commonDecoratorFunctions";
export function CustomEnumJSONArrayValidator(
details: ICustomEnumJSONArrayValidatorOptions
) {
const { validEnum, optional, defaultValue, description } = details;
const mySwaggerProp = swaggerProp({
optional,
description,
defaultValue,
type: "array",
});
return function (target: any, key: string) {
if (optional) IsOptional()(target, key);
notEmptyFn(key)(target, key);
Transform(TransformStringToJSONArray)(target, key);
Transform(TransformSingleItemToArray)(target, key);
ArrayMinSize(1)(target, key);
isArrayFn(key)(target, key);
isEnumFn(key, validEnum as any, true)(target, key);
Transform(TransformSortStringArray)(target, key);
mySwaggerProp(target, key);
};
}