volder is powerful Object schema validation, it lets you describe your data using a simple and readable schema and transform a value to match the requirements, it has custom error messages, custom types and nested schemas.
$ npm install --save volder
$ yarn add volder
visit volder.vercel.app for API, documentation, and contributing.
You define and create volder schema object. Schema objects are immutable, so each validate call returns a new schema object.
import { Volder } from 'volder';
const personSchema = new Volder({
name:{ type: String, required: true, maxLength: 10, trim: true },
age: { type: Number, min: 18, sign: 'positive' }
})
const { valid, errors, value } = personSchema.validate({name: "max ", age: 19});
// { valid: true, errors: {}, value: {name: "max", age: 19}}
let's took one example using volder for login validation.
import { Volder, Email } from "volder";
// initialize using Volder constructor.
const userSchema = new Volder({
username: {
type: String,
maxLength: 10,
// use Custom Error Message feature.
minLength: [4, "username should be at least 4 characters"],
default: "guest user",
},
email: {
// Email type imported for volder package, there are other types like UUID.
type: [Email, "is not valid email"],
trim: true,
required: true,
},
// you can just Enter the type.
birth_day: Date,
password: {
type: String,
matches: /^[a-zA-Z0-9]{3,30}$/,
// pattern config run and return true if value valid otherwise false.
pattern: [(input) => input.includes("_"), "underscore not included"],
},
});
const validInput = {
user: "max123",
email: " [email protected] ",
birth_day: "1/2/2010",
password: "new_Password123",
};
const { valid, errors, value } = userSchema.validate(validInput);
// { valid: true, errors: {}, value: {...validInput, email:"[email protected]"}}
const invalidInput = {
user: "1",
email: "test@gmail",
birth_day: "2010",
password: "newPassword123",
};
const { valid, errors, value } = userSchema.validate(invalidInput);
// {
// valid: false,
// errors: {
// user: "username should be at least 4 characters"
// email: "is not valid email",
// password: "underscore not included",
// birth_day: "birth_day is not valid date, date should be in 'mm/dd/yyyy' format"
// },
// value: {}
//}
more example:
I appreciate to contributing in this repository.(go throw the guild lines)
Copyright © 2021 salah alhashmi.
This project is GPL-3.0 licensed.