An universal javascript validation library.
See the documentation for more information.
Install with NPM
npm install --save warble
warble.type(['lorem', 'ipsum']); // "array"
warble.type({ name: 'Diego Lopes Lima' }); // "object"
warble.type('Hello world!'); // "string"
var value = '-1';
warble.is(value, 'number'); // false
warble.is(value, 'string'); // true
warble.is(value, ['numeric', 'negative']); // true
warble.is(value, ['numeric', 'positive']); // false
warble.validate('Diego Lopes Lima', {
required: true,
minlength: 3
});
{
"value": "Diego Lopes Lima",
"valid": true,
"status": {
"required": true,
"minlength": true
}
}
// Create an extension to verify if value is a Gmail address.
warble.subtypes.gmail = value => /\@gmail\.com$/i.test(value);
let
// Creating an object model:
model = warble.model({
name: {
required: true,
minlength: 3
},
age: {
required: true,
min: 18,
is: ['integer', 'positive']
},
email: {
is: ['email', 'gmail']
},
password: {
required: true
},
passwordConfirmation: {
required: true,
equal: 'password'
},
gender: {
options: ['male', 'female', 'other']
},
address: warble.model({
postalCode: {
required: true,
is: ['numeric', 'positive']
},
street: {
required: true
}
})
}),
// Data example:
data = {
name: 'Diego Lopes Lima',
age: 23,
email: 'web.diego.lima@yahoo.com',
password: 'a1b2c3',
passwordConfirmation: '1a2b3c',
gender: 'male',
address: {
postalCode: 54321,
street: 'Lorem ipsum dolor, 123'
}
};
// Testing data:
model.validate(data);
{
"data": {
"name": {
"value": "Diego Lopes Lima",
"valid": true,
"status": {
"required": true,
"minlength": true
}
},
"age": {
"value": 23,
"valid": true,
"status": {
"required": true,
"min": true,
"isInteger": true,
"isPositive": true,
"is": true
}
},
"email": {
"value": "web.diego.lima@yahoo.com",
"valid": false,
"status": {
"isEmail": true,
"isGmail": false,
"is": false
}
},
"password": {
"value": "a1b2c3",
"valid": true,
"status": {
"required": true
}
},
"passwordConfirmation": {
"value": "1a2b3c",
"valid": false,
"status": {
"required": true,
"equal": false
}
},
"gender": {
"value": "male",
"valid": true,
"status": {
"options": true
}
},
"address": {
"data": {
"postalCode": {
"value": 54321,
"valid": true,
"status": {
"required": true,
"isNumeric": true,
"isPositive": true,
"is": true
}
},
"street": {
"value": "Lorem ipsum dolor, 123",
"valid": true,
"status": {
"required": true
}
}
},
"valid": true
}
},
"valid": false
}
See releases page.
Created and maintained by Diego Lopes Lima.
Code and documentation copyright © 2017 Warble.
All content of this repository is licensed under the MIT License.