Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/trapcodeio/abolish

A smart blazing fast javascript variable validator.
https://github.com/trapcodeio/abolish

abolish

Last synced: about 2 months ago
JSON representation

A smart blazing fast javascript variable validator.

Awesome Lists containing this project

README

        

# Abolish

A Javascript object validator for custom validations

Documentation: [Abolish Documentation](https://abolish.trapcode.io)


Playground: [Abolish Playground](https://abolish-playground.trapcode.io)

### Basic Example
```javascript
const {Abolish} = require('abolish');

const abolish = new Abolish();

// Use abolish email validator
const EmailValidator = require('abolish/validators/string/email');
abolish.addValidator(EmailValidator);

// Add Custom Validtor
abolish.addValidator({
name: 'addProtocol',
validator: (url, option, {modifier}) => {
// Check if url does not have required protocol
if (url.substring(0, option.length) !== option) {
// Add protocol
modifier.setThis(`${option}://${url}`)
}
return true
}
});

// Object to validate
const form = {
email: '[email protected]',
username: 'john_doe',
age: 18,
url: 'wildstream.ng'
};

const [error, validated] = abolish.validate(form, {
$: 'required|typeOf:string', // $ or '*' is considered as wildcard
email: 'isEmail',
username: '*',
age: 'typeOf:number|max:20',
url: 'addProtocol:http'
});

console.log({form, validation: {error, validated}});
```

#### Result

```
{
form: {
email: '[email protected]',
username: 'john_doe',
age: 18,
url: 'wildstream.ng'
},
validation: {
error: null,
validated: {
email: '[email protected]',
username: 'john_doe',
age: 18,
url: 'http://wildstream.ng'
}
}
}
```