2.0.0 • Published 7 years ago

@justinc/combine-validations v2.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
7 years ago

combine-validations Build status NPM version Semantic Release Js Standard Style

Provides a way to easily combine Folktale Validations.

As of v2, the Validation ADT is passed in as the first argument. This gives back a function which works the same as the main function exported by this package in v1.

This removes this package's dependency on data.validation and allows you to work with the Validation in Folktale 2 and beyond.

Install

npm i @justinc/combine-validations

Demo

(See tests for more example usage)

const Validation = require('folktale/data/validation')
const combineV = require('@justinc/combine-validations')

const { Success, Failure } = Validation
const combineValidations = combineV(Validation)

function noStartsWith (prefix) {
  return arg => arg.startsWith(prefix)
    // use `new Error` instead of `String` in Failure if you want stack trace
    ? Failure([ `Prefix Error: '${arg}' starts with '${prefix}'` ])
    : Success('prefix ok')
}

function noEndsWith (suffix) {
  return arg => arg.endsWith(suffix)
    // use `new Error` instead of `String` in Failure if you want stack trace
    ? Failure([ `Suffix Error: '${arg}' ends with '${suffix}'` ])
    : Success('suffix ok')
}

const input = 'hello world'

const v1 = combineValidations([
  noStartsWith(' ')(input),
  noEndsWith('?')(input)
])
const v2 = combineValidations([
  noStartsWith('h')(input),
  noEndsWith('?')(input)
])
const v3 = combineValidations([
  noStartsWith('h')(input),
  noEndsWith('world')(input)
])
const v4 = combineValidations()

console.log({v1, v2, v3, v4})
/*
{ v1: Validation { value: [ 'prefix ok', 'suffix ok' ] },
  v2:
   Validation {
     value: [ 'Prefix Error: \'hello world\' starts with \'h\'' ] },
  v3:
   Validation {
     value:
      [ 'Prefix Error: \'hello world\' starts with \'h\'',
        'Suffix Error: \'hello world\' ends with \'world\'' ] },
  v4: Validation { value: [] } }
*/

@justinc/combine-validations

@justinc/combine-validations~combineValidations(Validation, iterableOfValidations) ⇒ Validation

As of v2, combine-validations takes the Validation ADT implementation to use as an argument. This function is curried.

Kind: inner method of @justinc/combine-validations
Returns: Validation - The combined Validations as a single Validation
See: Validation

ParamTypeDefaultDescription
ValidationValidationThe Validation ADT to use
iterableOfValidationsIterable.<Validation>[]The validations to combine

@justinc/combine-validations~Validation : Object

A Validation is a value of Folktale's Validation type.

Kind: inner typedef of @justinc/combine-validations