1.0.0-alpha.6 • Published 7 years ago

warble v1.0.0-alpha.6

Weekly downloads
16
License
MIT
Repository
github
Last release
7 years ago

Warble

An universal javascript validation library.

See the documentation for more information.

Table of contents

Instalation

Install with NPM

npm install --save warble

Usage

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": true,
			"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
}

Validating a single data:

Source

warble.validate(data.name, {
	required: true,
	minlength: 3
});

Output

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

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

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.