fastest-validator

The fastest JS validator library for NodeJS

MIT License

Downloads
278.5K
Stars
1.4K
Committers
48

Bot releases are visible (Hide)

fastest-validator - v1.18.0 Latest Release

Published by icebob 6 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/icebob/fastest-validator/compare/v1.17.0...v1.18.0

fastest-validator - v1.17.0

Published by icebob over 1 year ago

What's Changed

New Contributors

Full Changelog: https://github.com/icebob/fastest-validator/compare/v1.16.0...v1.17.0

fastest-validator - v1.16.0

Published by icebob almost 2 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/icebob/fastest-validator/compare/v1.15.0...v1.16.0

fastest-validator - v1.15.0

Published by icebob about 2 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/icebob/fastest-validator/compare/v1.14.0...v1.15.0

fastest-validator - v1.14.0

Published by icebob about 2 years ago

What's Changed

New Contributors

Full Changelog: https://github.com/icebob/fastest-validator/compare/v1.13.0...v1.14.0

fastest-validator - v1.13.0

Published by icebob about 2 years ago

What's Changed

Full Changelog: https://github.com/icebob/fastest-validator/compare/v1.12.0...v1.13.0

fastest-validator - v1.12.0

Published by icebob about 3 years ago

Changes

  • update dev dependencies.
  • add parameters to dynamic default value function. E.g: age: (schema, field, parent, context) => { ... }
  • fix typescript definitions. #269, #270, #261
  • fix multi validate with object strict remove. #272
  • add normalize method. #275 E.g.: validator.normalize({ a: "string[]|optional" })
fastest-validator - v1.11.1

Published by icebob over 3 years ago

Changes

  • fix debug mode. #237
  • fix object "toString" issue. #235
  • remove Node 10 from CI pipeline.
  • refactoring the typescript definitions. #251
  • update examples in readme. #255
fastest-validator - v1.11.0

Published by icebob over 3 years ago

Async custom validator supports

const schema = {
    // Turn on async mode for this schema
    $$async: true,
    name: {
        type: "string",
        min: 4,
        max: 25,
        custom: async (v) => {
            await new Promise(resolve => setTimeout(resolve, 1000));
            return v.toUpperCase();
        }
    },

    username: {
        type: "custom",
        custom: async (v) => {
            // E.g. checking in the DB that whether is unique.
            await new Promise(resolve => setTimeout(resolve, 1000));
            return v.trim();
        }
    },
}

The compiled check function has an async property to detect this mode. If true it returns a Promise.

const check = v.compile(schema);
console.log("Is async?", check.async);

Meta-information for custom validators

You can pass any extra meta information for the custom validators which is available via context.meta.

const schema = {
    name: { type: "string", custom: (value, errors, schema, name, parent, context) => {
        // Access to the meta
        return context.meta.a;
    } },
};
const check = v.compile(schema);

const res = check(obj, {
    // Passes meta information
    meta: { a: "from-meta" }
});

Changes

  • support default and optional in tuples and arrays #226
  • fix that this points to the Validator instance in custom functions #231
fastest-validator - v1.10.1

Published by icebob over 3 years ago

Changes

  • fix issue with regex pattern in string rule #221
  • fix returned value issue in email rule in case of empty: false #224
fastest-validator - v1.10.0

Published by icebob over 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
fastest-validator - v1.9.0

Published by icebob almost 4 years ago

Changes

fastest-validator - v1.8.0

Published by icebob almost 4 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
fastest-validator - v1.7.0

Published by icebob about 4 years ago

Changes

fastest-validator - v1.6.1

Published by icebob about 4 years ago

Changes

  • Fix issue with ObjectID rule
fastest-validator - v1.6.0

Published by icebob about 4 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.

fastest-validator - v1.5.1

Published by icebob over 4 years ago

Changes

  • Fixing issue with pattern & empty handling in string rule #165
fastest-validator - v1.5.0

Published by icebob over 4 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
fastest-validator - v1.4.2

Published by icebob over 4 years ago

Changes

fastest-validator - v1.4.1

Published by icebob over 4 years ago

Changes

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