0.0.11 • Published 7 years ago

tsvalidate v0.0.11

Weekly downloads
3
License
MIT
Repository
github
Last release
7 years ago

Build Status

NPM

NPM

NPM version

tsvalidate

Allows validating properties of objects and (multi-)nested objects via predefined decorators.

Installation

npm install tsvalidate

Usage

Import either the validator and specific decorators,

import {Validator, AlphaNumeric, MaxLen, IsInt, IsNotEmpty, InArray, IsDecimal, HexColor, IValidatorError}
  from "tsvalidate";

or use an alias for all exports.

import * as V from "tsvalidate";

Upon defining classes add any of the predefined decorators to their properties, then call the validate method passing the object:

import * as V from "tsvalidate";

export class Engine {

  @V.IsInt()
  horsepower: number;
}

export class Car {
    constructor() {
      this.engine = new Engine();      
    }

    @V.IsNotEmpty()
    model: string;

    @V.InArray(['Tesla', 'BMW', 'Mercedes', 'Volkswagen', 'Audi', 'Ford', 'Toyota'])
    make: string;

    @V.IsNotEmpty()
    @V.MinLen(17)
    @V.MaxLen(17)
    @V.AlphaNumeric()
    vehicleIdentificationNumber: string;

    @V.IsDecimal()
    fuelCapacity: number;

    @V.AlphaNumeric()
    @V.HexColor()
    color: string;

    @V.ValidateNested()
    engine: Engine;
}

let car = new Car();
car.model = 'Gallardo';         // Should succeed.
car.make =  'Lamborghini';       // Should fail.
car.vin = 'VWV1234XX99......';  // AlphaNumeric should fail.
car.fuelCapacity = 35;          // Should ?.
car.color = 'red';              // Should fail.
car.engine.horsepower = 513.5;  // Should fail.

let validator = new V.Validator();
let errors: V.IValidatorError = validator.validate(car);
if (errors.length > 0) {
  for (let i in errors)
    console.log(errors[i].message);
}

Errors

Returned errors use the supplied IValidatorError interface:

export interface IValidatorError {
  /**
   * Name of the target class that was validated.
   */
  target: string;
  /**
   * Target's property on which validation is applied.
   */
  property: string;
  /**
   * Error's type.
   */
  type: string;
  /**
   * Error's message.
   */
  message: string;
  /**
   * Value of that target's property, that didn't pass a validation.
   */
  value?: any;
  /**
   * That which the target's property was validated against.
   */
  comparison?: any;
}

Decorators

Currently, the following decorators are supported:

Validation decorators

DecoratorDescription
Common validation decorators
@IsDefined()Checks if value is defined (!== undefined).
@Equals(comparison: any)Checks if value equals ("===") comparison.
@IsEmpty()Checks if given value is empty (=== '', === null, === undefined).
@IsNotEmpty()Checks if given value is not empty (!== '', !== null, !== undefined).
@IsIn(values: any[])Checks if value is in a array of allowed values.
@NotInArray(values: any[])Checks if value is not in a array of disallowed values.
Type validation decorators
@ValidateType(type?: Object)Checks if a value is of the declared type. Any as parameter passed type has precedence over the declarated type. To check array items, pass an array of objects (e.g. number: pass [Number]).
@IsInt()Checks if the value is an integer number.
@IsFloat()Checks if the value is a float number.
@IsDecimal()Checks if the value is a decimal number.
String and number validation decorators
@MaxLen(value: number)Checks if the string or the number is no longer than the defined character length.
@MinLen(value: number)Checks if the string or the number is not shorter than the defined character length.
@Contains(value: string|number)Checks if the string or the number contains the defined value.
String validation decorators
@IsDate()Checks if the string is a date. mm-dd-(yy)yy or mm.dd.(yy)yy
@ISO8601Date()Checks if the string is a date abiding ISO8601.
@IsEmail()Checks if the string is an email address.
@IsIP([4, 6]?: number)Checks if the string is an IP address. Optional check of specific protocol version.
@IsMAC()Checks if the string is a MAC address. ff:ff:ff:ff:ff:ff
@Alpha()Checks if the string consists entirely of letters (ignoring whitespace).
@AlphaNumeric()Checks if the string is alphanumeric (ignoring whitespace).
@Hexadecimal()Checks if the string is a hexadecimal number.
@HexColor()Checks if the string is a hex color. #FF#FF#FF or FFFFFF
@MaxByteLen(value: number)Checks if the string is no longer than the defined byte length.
@MinByteLen(value: number)Checks if the string is not shorter than the defined byte length.
@DateBefore(value: string)Checks if the string is a date prior to the defined date.
@DateAfter(value: string)Checks if the string is a date past the defined date.
@Uppercase()Checks if the string's letters are all uppercase.
@Lowercase()Checks if the string's letters are all lowercase.
Number validation decorators
@MaxValue(value: number)Checks if the number is no bigger than the defined cardinality.
@MinValue(value: number)Checks if the number is not smaller than the defined cardinality.
@MultipleOf(value: number)Checks if the number is a multiple of the defined integer.
Object validation decorators
@ValidateNested()Checks all properties of the given object for decorators and handles all applicable.
0.0.11

7 years ago

0.0.10

7 years ago

0.0.9

8 years ago

0.0.8

8 years ago

0.0.7

8 years ago

0.0.6

8 years ago

0.0.5

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago