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
80 lines (63 loc) • 2.08 kB
text/typescript
class IDefaultValdationOptions {
optional?: boolean = false;
defaultValue?: any;
description?: string = "";
}
class IBaseValidationOptions extends IDefaultValdationOptions {
isArray? = false;
}
export class ICustomOnlyDateStringOptions extends IBaseValidationOptions {}
export class ICustomSwaggerOptions extends IBaseValidationOptions {
type?: "boolean" | "number" | "string" | "array" | "media";
format?: "binary";
validEnum?: Object;
}
export class ICustomStringOptions extends IBaseValidationOptions {
isUUID? = false;
}
export class ICustomTimeValidatorOptions extends IBaseValidationOptions {}
export class ICustomPasswordValidatorOptions extends IDefaultValdationOptions {}
export class ICustomNumberValidationOptions extends IBaseValidationOptions {
min?: number;
max?: number;
}
export class ICustomEnumJSONArrayValidatorOptions extends IBaseValidationOptions {
validEnum?: Object;
}
export class ICustomEnumValidatorOptions extends ICustomEnumJSONArrayValidatorOptions {
isArray?: boolean = false;
}
export class ICustomBooleanValidatorOptions extends IDefaultValdationOptions {}
export enum MimeTypeEnum {
JPG = "image/jpg",
JPEG = "image/jpeg",
PNG = "image/png",
JFIF = "image/jfif",
GIF = "image/gif",
WEBP = "image/webp",
MP4 = "video/mp4",
"3GP" = "video/3gpp",
WEBM = "video/webm",
PDF = "application/pdf",
MS_DOC = "application/x-cfb",
MS_WORD = "application/msword", //.DOC
DOCX = "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
}
export const ImageMimetypes: MimeTypeEnum[] = [
MimeTypeEnum.JPEG,
MimeTypeEnum.JPG,
MimeTypeEnum.PNG,
MimeTypeEnum.JFIF,
MimeTypeEnum.GIF,
MimeTypeEnum.WEBP,
];
export const VideoMimetypes: MimeTypeEnum[] = [
MimeTypeEnum.MP4,
MimeTypeEnum["3GP"],
MimeTypeEnum.WEBM,
];
export class ICustomMediaValidationOptions extends IBaseValidationOptions {
maxSizeInByte?: number = 1e10;
mimetypes: MimeTypeEnum[] = [];
isArray?: boolean = false;
}