Skip to content
/ yooda Public

🧘‍♂️600b validation library with support for custom handlers and messages.

License

Notifications You must be signed in to change notification settings

ooade/yooda

Repository files navigation

Yooda

"Do or do not. There is no try." - Yoda

A tiny validation library for your app

npm travis downloads/month pullrequest firsttimersonly

Installation

npm add yooda

Basic Usage

import validator from 'yooda;

const requestBodySchema = {
	name: {
		type: 'string',
		required: true
	},
	age: {
		type: 'number',
		required: true
	}
};

const requestBody = {
	name: 'Ademola Adegbuyi',
	age: 23
};

try {
	const validate = validator(requestBodySchema);
	validate(requestBody);
} catch (err) {
	// Handle error properly
}

That's it, really. If the value doesn't meet the requirement, it throws an error and you can handle it as you want.

Extras

  • Domain: This is more like a plugin, to ensure some other personal requirements are met asides from the regular "required" and "type". We definitely cannot offer all kinds of edge-cases so we're giving you a buffet; Be your own boss, control the nature of the validation.

Here's how to use it:

const shouldStartWithA = value => value.startsWith('a');
// attach it to your schema
const requestBodySchema = {
	name: {
		type: 'string',
		required: true,
		domain: [shouldStartWithA]
	}
};
const validate = validator(requestBodySchema);
validate(requestBody);

The convention you decide to pick is up to you. In the test files, we have an object of domains with camel case names. Whatever works best for you 😉

LICENSE

MIT