bs-awesomize
v2.0.0
Published
A ReasonML implementation of the Awesomize validation and data scrubbing library.
Downloads
47
Readme
bs-awesomize
A ReasonML implementation of the Awesomize library for data validation / scrubbing
Why?
We use Awesomize to ensure that data which comes into our system fits the proper shape and is within expected constraints. There are several other libraries which aim to handle this, however, translating them to ReasonML proved problematic. Also, the Awesomize library is asynchronous by default which allows much greater flexibility in validation / scrubbing code.
Status
This library can be considered production ready.
Installation
Inside of a BuckleScript project:
yarn add bs-awesomize
Then add bs-awesomize
to your bs-dependencies
in your bsconfig.json
{
"bs-dependencies": [ "bs-awesomize" ]
}
Usage
In order to use awesomize you will want to provide a "schema" which
consists of a map of fields
to field definitions
.
Field definition
type maybe = option(Js.Json.t);
type jsonMap = Belt.Map.String.t(maybe);
type definition = {
read: Js.Dict.t(Js.Json.t) => Js.Promise.t(maybe),
sanitize: option((maybe, jsonMap) => Js.Promise.t(maybe)),
validate: list((maybe, jsonMap) => Js.Promise.t(option(string))),
normalize: option((maybe, jsonMap) => Js.Promise.t(maybe)),
};