istjs

1.0.2 • Public • Published

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: [] }]
 
 

Package Sidebar

Install

npm i istjs

Weekly Downloads

4

Version

1.0.2

License

MIT

Unpacked Size

2.39 MB

Total Files

94

Last publish

Collaborators

  • igor.shalimov