@korbiniankuhn/validator

Validate object schemas for js, expressjs, angular and mongoose.

Stats

StarsIssuesVersionUpdatedCreatedSize
@korbiniankuhn/validator
0252.0.0-beta.72 years ago4 years agoMinified + gzip package size for @korbiniankuhn/validator in KB

Readme

Validator

Travis Coverage Known Vulnerabilities Dependencies Dev Dependencies npm npm-version license

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.

Additional information for:

Installation

For installation use the Node Package Manager:

$ npm install --save @korbiniankuhn/validator

or clone the repository:

$ git clone https://github.com/KorbinianKuhn/validator

Getting started

Initialize a new Validator:

const { Validator } = require('@korbiniankuhn/validator');
const validator = Validator();

Create a new Schema:

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:

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

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.