Releases: icebob/fastest-validator
Releases · icebob/fastest-validator
v1.10.1
v1.10.0
v1.9.0
v1.8.0
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
v1.7.0
v1.6.1
v1.6.0
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 tostring
rule. #180
Credits
v1.5.1
v1.5.0
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)