@korbiniankuhn/validator
Version:
Validate object schemas for js, expressjs, angular and mongoose.
122 lines (84 loc) • 3.23 kB
Markdown
# Validator
[](https://travis-ci.org/KorbinianKuhn/validator/builds)
[](https://coveralls.io/r/KorbinianKuhn/validator)
[](https://snyk.io/test/github/KorbinianKuhn/validator)
[](https://david-dm.org/KorbinianKuhn/validator)
[](https://david-dm.org/KorbinianKuhn/validator)
[](https://www.npmjs.com/package/@korbiniankuhn/validator)
[](https://www.npmjs.com/package/@korbiniankuhn/validator)

Validate input values with object schemas.
Features
- completely sync or async validation
- highly customizable
- automatic documentation generation (e.g. RAML)
- reusable custom types
- short syntax through function chaining
- parse input values to target type
- special support for expressjs, angular, mongoose
- no dependencies
## API
See the detailed [API Reference](doc/api.md).
Additional information for:
- [expressjs](doc/express.md)
- [angular](doc/angular.md)
- [mongoose](doc/mongoose.md)
## Installation
For installation use the [Node Package Manager](https://github.com/npm/npm):
```
$ npm install --save @korbiniankuhn/validator
```
or clone the repository:
```
$ git clone https://github.com/KorbinianKuhn/validator
```
## Getting started
Initialize a new Validator:
```javascript
const { Validator } = require('@korbiniankuhn/validator');
const validator = Validator();
```
Create a new Schema:
```javascript
const schema = validator.Object({
name: validator.String()
});
schema.validate({ name: 'Jane Doe' }).then(object => {
// returns the given object
});
schema.validateSync({ name: 'Jane Doe' });
// returns given object
```
Extend the validator with custom schemas and types to reuse them later:
```javascript
// Create a reusable regular expression
const myRegex = validator.String().regex(/[A-Z]/);
validator.addType('myRegex', myRegex);
await validator.Custom('myRegex').validate(value);
// Create a reusable address schema
const address = validator.Object({
street: validator.String(),
postal: validator.Integer(),
city: validator.String()
});
validator.addType('address', address);
await validator.Custom('address').validate(value);
```
## Testing
First you have to install all dependencies:
```
$ npm install
```
To execute all unit tests once, use:
```
$ npm test
```
To get information about the test coverage, use:
```
$ npm run coverage
```
## Contribution
Get involved and push in your ideas.
Do not forget to add corresponding tests to keep up 100% test coverage.
## License
[The MIT License](LICENSE)