Additional validators for class-validator.
- 🕵️♀️ Thoroughly tested
- 📝 Well documented
- ✨ No additional dependencies (Day.js is supported but optional)
- 😊 Uses Semantic Versioning and keeps a nice Changelog
Use your favorite package manager to install:
npm install class-validator-extendedFor obvious reasons, class-validator needs to be installed.
Just use the decorators like any of the built-in ones:
import { ArrayMinSize } from 'class-validator'
import { ArrayMonotonic } from 'class-validator-extended'
class Foo {
    @ArrayMinSize(2)
    @ArrayMonotonic()
    values: [1, 13, 42]
}If you don't have Dayjs installed you need to use the minimal export:
import { MaxBigInt } from 'class-validator-extended/dist/minimal'Please note that Dayjs is an optional dependency and will by default be installed by npm and yarn. To avoid this use npm install --omit optional or yarn install --ignore-optional, respectively.
For detailed information please read the API docs.
| Decorator | Description | API | 
|---|---|---|
| Type | ||
| @IsBigInt(options?) | Checks if the given value is a BigInt. | 🔗 | 
| @IsDayjs(options?) | Checks if the given value is a valid Dayjs object. | 🔗 | 
| @IsDuration(options?) | Checks if the given value is a valid Dayjs duration. | 🔗 | 
| @IsNull(options?) | Checks if the given value is null. | 🔗 | 
| @IsMap(options?) | Checks if the given value is a Map. | 🔗 | 
| @IsSet(options?) | Checks if the given value is a Set. | 🔗 | 
| Common | ||
| @Nullable(options?) | Only validates the given value if it is not null. | 🔗 | 
| @Optional(options?) | Only validates the given value if it is not undefined. | 🔗 | 
| Array | ||
| @ArrayMonotonic(options?) | Checks if the given value is an array sorted in either (strictly) ascending or (strictly) descending order. | 🔗 | 
| @ArraySize(size, options?) | Checks if the given value is an array with exactly sizeelements. | 🔗 | 
| BigInt | ||
| @MaxBigInt(maximum, options?) | Checks if the given value is a BigInt not greater than maximum. | 🔗 | 
| @MinBigInt(minimum, options?) | Checks if the given value is a BigInt not less than minimum. | 🔗 | 
| @NegativeBigInt(options?) | Checks if the given value is a BigInt less than zero. | 🔗 | 
| @PositiveBigInt(options?) | Checks if the given value is a BigInt greater than zero. | 🔗 | 
| Date | ||
| @FutureDate(options?) | Checks if the given value is a Date object in the future. | 🔗 | 
| @PastDate(options?) | Checks if the given value is a Date object in the past. | 🔗 | 
| Dayjs | ||
| @FutureDayjs(options?) | Checks if the given value is a valid Dayjs object in the future. | 🔗 | 
| @MaxDayjs(maximum, options?) | Checks if the given value is a valid Dayjs object not later than maximum. | 🔗 | 
| @MaxDuration(minimum, options?) | Checks if the given value is a valid Dayjs duration not longer than maximum. | 🔗 | 
| @MinDayjs(minimum, options?) | Checks if the given value is a valid Dayjs object not earlier than minimum. | 🔗 | 
| @MinDuration(minimum, options?) | Checks if the given value is a valid Dayjs duration not shorter than minimum. | 🔗 | 
| @PastDayjs(options?) | Checks if the given value is a valid Dayjs object in the past. | 🔗 | 
| Map | ||
| @MapContains(required, options?) | Checks if the given value is a Map and contains all requiredvalues. | 🔗 | 
| @MapContainsKeys(required, options?) | Checks if the given value is a Map and contains all requiredkeys. | 🔗 | 
| @MapMaxSize(maximum, options?) | Checks if the given value is a Map with no more than maximumentries. | 🔗 | 
| @MapMinSize(minimum, options?) | Checks if the given value is a Map with no fewer than minimumentries. | 🔗 | 
| @MapNotContains(forbidden, options?) | Checks if the given value is a Map which does not contain any of the forbiddenvalues. | 🔗 | 
| @MapNotContainsKeys(forbidden, options?) | Checks if the given value is a Map which does not contain any of the forbiddenkeys. | 🔗 | 
| @MapNotEmpty(options?) | Checks if the given value is a Map with at least one entry. | 🔗 | 
| @MapSize(size, options?) | Checks if the given value is a Map with exactly sizeentries. | 🔗 | 
| @MapUnique(projection, options?) | Checks if the given value is a Map without duplicates with regard to the given projection. | 🔗 | 
| @MapUniqueKeys(projection, options?) | Checks if the given value is a Map whose keys are all unique with regard to the given projection. | 🔗 | 
| Number | ||
| @IsNetworkPort(options?) | Checks if the given value is a valid port number. | 🔗 | 
| Set | ||
| @SetContains(required, options?) | Checks if the given value is a Set and contains all required values. | 🔗 | 
| @SetMaxSize(maximum, options?) | Checks if the given value is a Set with no more than maximumvalues. | 🔗 | 
| @SetMinSize(minimum, options?) | Checks if the given value is a Set with no fewer than minimumvalues. | 🔗 | 
| @SetNotContains(forbidden, options?) | Checks if the given value is a Set which does not contain any of the forbiddenvalues. | 🔗 | 
| @SetSize(size, options?) | Checks if the given value is a Set with exactly sizeentries. | 🔗 | 
| @SetNotEmpty(options?) | Checks if the given value is a Set with at least one value. | 🔗 | 
| @SetUnique(projection, options?) | Checks if the given value is a Set without duplicate values with regard to the given projection. | 🔗 | 
| String | ||
| @IsAwsRegion(options?) | Checks if the given value is an AWS region string. deprecated | 🔗 | 
| @IsAwsARN(options?) | Checks if the given value is an AWS ARN string. deprecated | 🔗 | 
| @NotMatches(pattern, modifiers?, options?) | Checks if the given value is an string that does not match the given regular expression. | 🔗 |