Skip to content

DiegoLopesLima/warble

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Warble

An universal javascript validation library.

See the documentation for more information.

Table of contents

Instalation

Install with NPM

npm install --save warble

Usage

Getting data type:

Example

warble.type(['lorem', 'ipsum']); // "array"

warble.type({ name: 'Diego Lopes Lima' }); // "object"

warble.type('Hello world!'); // "string"

Testing data:

Example

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

Validating a single data:

Source

warble.validate('Diego Lopes Lima', {
	required: true,
	minlength: 3
});

Output

{
	"value": "Diego Lopes Lima",
	"valid": true,
	"status": {
		"required": true,
		"minlength": true
	}
}

Creating a model

Source

// 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);

Output

{
	"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
}

Changelog

See releases page.

Credits

Created and maintained by Diego Lopes Lima.

License

Code and documentation copyright © 2017 Warble.

All content of this repository is licensed under the MIT License.