Skip to content

yantrab/class-validator-rule

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
yanivtr
Dec 26, 2019
17b6c12 · Dec 26, 2019

History

21 Commits
Dec 26, 2019
Dec 26, 2019
Dec 26, 2019
Mar 12, 2019
Dec 26, 2019
Mar 10, 2019
Mar 10, 2019

Repository files navigation

class-validator-rule

Strongly typed validation

It is possible to do strongly typed validation with class-validator.

Example

This class

enum Color { Red, Green, Blue }
class SomeObject {
    string?: string;
}
class Model {
    color: Color;
    string: string;
    number: number;
    boolean: boolean;
    date: Date;

    stringArray: string[];
    numberArray: number[];
    booleanArray: boolean[];
    dateArray: Date[];
    enumArray: Color[];

    object: SomeObject;
    objectArray: SomeObject[];
}

Should decorate like:

enum Color { Red, Green, Blue }
class SomeObject {
    @IsOptional()
    @IsString()
    string?: string;
}
class Model {
    @IsEnum(Color)
    color: Color;
    @IsString()
    string: string;
    @IsNumber()
    number: number;
    @IsBoolean()
    boolean: boolean;
    @IsDate()
    date: Date;

    @IsString({ each: true })
    stringArray: string[];
    @IsNumber({},{ each: true })
    numberArray: number[];
    @IsBoolean({ each: true })
    booleanArray: boolean[];
    @IsDate({ each: true })
    dateArray: Date[];
    @IsEnum(Color,{ each: true })
    enumArray: Color[];

    @ValidateNested()
    object: SomeObject;
    @ValidateNested({ each: true })
    objectArray: SomeObject[];
}

This rule reminds you to add the correct decorator and can fix your models.

Get started

Install rule with dev flag:

npm i tslint-class-validator-rule -D

tslint configuration

Add tslint configoration to root of your models folder

{
    "rulesDirectory": ["tslint-class-validator-rule"],
    "rules": {
        "no-property-without-decorator":true
    }
}

Fix

tslint -p . --fix 

Add middleware (nestjs)

 app.useGlobalPipes(new ValidationPipe({ forbidUnknownValues: true }));

TODO

- Add imports
- file/folder name option, to support '**/*model.ts'

About

tslint rule for class-validator

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published