Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

istjs

Shalimov50MIT1.0.2

FP powered Validation lib for FE/BE

validation, validate, valid, object, array, shape, fp, functional, functional programming, curry, lodash, specifications, data validity, safety, integrity, check, scrutiny, examine

readme

Validation

Small size, no deps, best validation experience!

Designed with functional programming in mind


Visit istjs pages

Getting Started

  • yarn add istjs or npm i istjs
  • to use version without deps import * as ist from 'istjs
  • to work with uncompiled version you can import * as ist from 'istjs/lib'
import { spec, validate, validateAll, validators } from 'istjs'

const {
  any,
  string,
  number,
  shape,
} = validators

const userModelDetailedSpec = spec.of({
  name: spec.flow(
    string.isString,
    string.match(/^[A-Z][a-z]+\s[A-Z][a-z]+$/),
    string.isNotEmpty,
    any.required,
  ),
  age: spec.flow(
    number.isNumber,
    number.ge(18),
    any.required,
  )
})

const userModelSpec = spec.compose(
  spec.flow(any.requied),
  userModelDetailedSpec
)

// you can create separate function to validate user
const validateUser = validate(userModelSpec)
// then use it 

console.log(validateUser(null))
// [{ message: 'value is required', args: undefined, value: null, path: [] }]

// OR

const someUserData = {
  name: 'Igor Shalimov',
  age: 10
}

console.log(validate(userModelSpec, someUserData))
// [{ message: 'age should be greater or equal than 18', args: 18, value: 10, path: ['age'] }]

const adultUserSpec2 = spec.compose(
  spec.designate('user', spec.flow(any.required)),
  userModelDetailedSpec
)

validate(adultUserSpec2, null)
// [{ message: 'user is required', args: undefined, value: null, path: [] }]