Fastest Validator Versions Save

:zap: The fastest JS validator library for NodeJS

v1.10.0

3 years ago

Changes

  • fix issue in multiple custom validator #203
  • Add min, max property to email rule #213
  • Add base64 property to string rule #214

v1.9.0

3 years ago

Changes

v1.8.0

3 years ago

New nullable rule attribute in #185

const schema = {
    age: { type: "number", nullable: true }
}
v.validate({ age: 42 }, schema); // Valid
v.validate({ age: null }, schema); // Valid
v.validate({ age: undefined }, schema); // Fail because undefined is disallowed
v.validate({}, schema); // Fail because undefined is disallowed

Changes

  • Shorthand for array foo: "string[]" // means array of string in #190
  • allow converting objectID to string in in #196

v1.7.0

3 years ago

Changes

v1.6.1

3 years ago

Changes

  • Fix issue with ObjectID rule

v1.6.0

3 years ago

New objectID rule

You can validate BSON/MongoDB ObjectID's

Example

const  { ObjectID } = require("mongodb") // or anywhere else 
const schema = {
    id: {
        type: "objectID",
        ObjectID // passing the ObjectID class
    }  
}
const check = v.compile(schema);
check({ id: "5f082780b00cc7401fb8e8fc" }) // ok
check({ id: new ObjectID() }) // ok
check({ id: "5f082780b00cc7401fb8e8" }) // Error

Dynamic default value

You can use dynamic default value by defining a function that returns a value.

Example In the following code, if createdAt field not defined in object`, the validator sets the current time into the property:

const schema = {
    createdAt: {
        type: "date",
        default: () => new Date()
    }
};
const obj = {}
v.validate(obj, schema); // Valid
console.log(obj);
/*
{
    createdAt: Date(2020-07-25T13:17:41.052Z)
}
*/

Changes

  • Add support for uuid v6. #181
  • Add addMessage method for using in plugins #166
  • Fix uppercase uuid issue. #176
  • Add singleLine property to string rule. #180

Credits

Many thanks to @intech and @erfanium for contributing.

v1.5.1

3 years ago

Changes

  • Fixing issue with pattern & empty handling in string rule #165

v1.5.0

3 years ago

New tuple validation rule

Thanks for @Gamote, in this version there is a new tuple. This rule checks if a value is an Array with the elements order as described by the schema.

Example

const schema = {
    grade: { type: "tuple", items: ["string", "number", "string"] }
};
const schema = {
    location: { type: "tuple", empty: false, items: [
        { type: "number", min: 35, max: 45 },
        { type: "number", min: -75, max: -65 }
    ] }
}

Define aliases & custom rules in constructor options #162

You can define aliases & custom rules in constructor options instead of using v.alias and v.add.

Example

const v = new Validator({
    aliases: {
        username: {
            type: 'string',
            min: 4,
            max: 30
        }
    },
    customRules: {
        even: function({ schema, messages }, path, context) {
            return {
                source: `
                    if (value % 2 != 0)
                        ${this.makeError({ type: "evenNumber",  actual: "value", messages })}

                    return value;
                `
            };
        })
    }
});

Support plugins

Thanks for @erfanium, you can create plugin for fastest-validator.

Example

// Plugin Side
function myPlugin(validator){
    // you can modify validator here
    // e.g.: validator.add(...)
    // or  : validator.alias(...)
}
// Validator Side
const v = new Validator();
v.plugin(myPlugin)

Changes

  • Allow empty property in string rule with pattern #149
  • Add empty property to url and email rule #150
  • Fix custom rule issue when multiple rules #155
  • Update type definition #156

v1.4.2

3 years ago

Changes

v1.4.1

4 years ago

Changes

  • Fix custom function issue in array rule and in root-level #136, #137