Ecosyste.ms: Awesome

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

https://github.com/antonioru/deep-waters

πŸ”₯Deep Waters is an easy-to-compose functional validation system for javascript developers πŸ”₯
https://github.com/antonioru/deep-waters

deep-waters functional functional-programming javascript nodejs validation validation-library validators

Last synced: 12 days ago
JSON representation

πŸ”₯Deep Waters is an easy-to-compose functional validation system for javascript developers πŸ”₯

Lists

README

        

[![Build Status](https://travis-ci.org/antonioru/deep-waters.svg?branch=master)](https://travis-ci.org/antonioru/deep-waters)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
![npm](https://img.shields.io/npm/v/deep-waters)
![GitHub stars](https://img.shields.io/github/stars/antonioru/deep-waters?style=social)

# Deep waters



deep-waters





An easy-to-compose functional validation system for javascript developers




πŸ“– Documentation



![Usage example](./usage_example.png)

## πŸ’‘ What is Deep Waters?

An easy-to-compose functional validation system for javascript developers

It allows to easily create custom and reusable validators from the pre-existing ones by using a functional approach
and the composition principle.



πŸ“– Documentation

## β˜•οΈ Features

* Full functional
* Strict types validation based on `Object.prototype.toString` instead of `typeof` to avoid unexpected behaviours
* Tiny and lightweight
* Extremely modular
* Concise API

## πŸ•Ί Installation

You can install it by using NPM:

```bash
npm install deep-waters
```

Deep Waters exports its modules as CommonJS modules, so that each one can be easily imported individually,
as the following:

```js
const compose = require('deep-waters/compose');
const minLength = require('deep-waters/minLength');
const ofUniqueItems = require('deep-waters/ofUniqueItems');

const arrayValidator = compose(minLength(3), ofUniqueItems);

arrayValidator([1,2,3,4]); // => true;
```

Alternatively, it's possible to import all the modules at once with the same result.

```js
const DW = require('deep-waters');

const arrayValidator = DW.compose(DW.minLength(3), DW.ofUniqueItems);

arrayValidator([1,2,3,4]); // => true;
```



πŸ“– Documentation

## πŸ”° Licence

Deep Waters is released under the [MIT license](./LICENSE.md) & supports modern environments.

## πŸ§‘β€πŸ€β€πŸ§‘ Contributing

Contributions are very welcome and wanted.

To submit your custom hook, please make sure your read our [CONTRIBUTING](./CONTRIBUTING.md) guidelines.

**Before submitting** a new merge request, please make sure:

1. You have updated the package.json version and reported your changes into the [CHANGELOG](./CHANGELOG.md) file
2. make sure you run `npm test` before submitting your merge request.
3. In case you're creating a new validator please make sure it is well documented and tested

---

Icon made by [Freepik](https://www.flaticon.com/authors/freepik) from [www.freepik.com](http://www.freepik.com)