volder
link:volder
don't forget to leave a star in the repo
volder is a powerful JavaScript schema builder for value parsing and validation. Define a schema and validate values, volder schema are extremely simple to use, it has custom error messages, custom types, nested schemas.
Contents
Installation
npm install --save volder
Usage
You can create and validate volder schema objects by:
import Volder from 'volder';
const person = new Volder({
name: {
type: String,
min: 4,
trim: true,
required: true
},
age: {
type: Number,
max: 100
}
});
const [isValidPerson, errors] = person.validate({ name: 'lion', age: 23 });
- return isValidPerson true if an object are valid otherwise false
- if there are error or something wrong return errors object with his option name otherwise return empty object {}
- throw an error if validate function paramatere other than object
- all types:
String, Number, Boolean, Object, Array, volderSchema, null
- null mean everything -
Custom error messages
You Can Define you custom error messages by:
const person = new Volder({
name: {
type: [String, "person name shoulde a string"],
min: [4, "must at least 4 characters"] ,
required: [true, "name is important"]
},
age: {
type: [Number, "your age can not be a string"],
max: [100, "age at most 100 years"]
},
other: {
type: [null, "'other' can be anything than object and array"]
avoid: [Object, Array],
required:false
}
});
Custom type validator
You Can Define you custom types by adding a validator functions that returns a boolean:
import isEmail from 'package';
import isValidPassword from 'package';
const user = new Volder({
username: String, // use this trick by just add type as option value
email: {
type: [isEmail, 'Email is invalid'],
max: 100
},
password: isValidPassword
});
Nested schemas
You Can Define Nested volder schemas by:
import Volder from 'volder';
const person = new Volder({ name: String, age: Number });
const user = new Volder({
email: { type: String, trim: true },
person: schema1
});
const [isValid, errors] = person.validate({
person: { name: 'lion', age: 23 },
email: 'test@test.com'
});
📝 License
Copyright © 2021 salah alhashmi.
This project is MIT licensed.
Top comments (3)
welcome
good
nice