JSPM

istjs

1.0.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q35024F
  • License MIT

FP powered Validation lib for FE/BE

Package Exports

  • istjs

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (istjs) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

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