0.3.2 • Published 2 years ago

ab-validator v0.3.2

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

Validation

A zero-dependencies Javascript asynchronous validator library with built-in and custom logics.

Usage

import { Validator, ValidatorField, Logics } from 'ab-validator'

Logics

import { Logics } from 'ab-validator'

Logics.Empty( errorMessage )
Logics.Enum( errorMessage, list )
Logics.Custom( errorMessage, callback )
Logics.isBoolean( errorMessage )
Logics.isNumber( errorMessage, min, max )
Logics.isString( errorMessage, minLength, maxLength )
Logics.RegExp( errorMessage, RegExp )
MethodDescriptionParameters
EmptyReturn false if value is emptyerror: string | number
EnumReturn false if value is not in listerror: string | number, list: any
isStringReturn false if value is not string or length is not between the rangeerror: string | numberminLength: number (optional)maxLength: number (optional)
isBooleanReturn false if value is equal to falseerror: string | number
isNumberReturn false if value is not number or not in the rangeerror: string | numbermin: numbermax: number
RegExpReturn false if pattern not match with the valueerror: string | numberpattern: RegExp
CustomWill pass value to a custom function. function should return true/false or a Promise for async validatingerror: string | numbercallback: Function => boolean | Promise

Single field validation

import { ValidatorField, Logics } from 'ab-validator'

const name = ValidatorField('name', [
  Logics.Empty('Name is empty'),
  Logics.isString('Name should be at least 4 characters', 4)
])

name.validate('My Name').then(result => {
  console.log(result)
  // {name: "name", status: "valid", errors: []}
})

Form validation

import { Validator, Logics } from 'ab-validator'

const form = Validator({
  name: [
    Logics.Empty( 'Name is empty' ),
    Logics.isString('Name should be at least 4 characters', 4)
  ],
  email: [
    Logics.Empty( 'Email is empty' ),
    Logics.RegExp( 'Email is not valid', /^[a-z0-9\_\.]+\@[a-z0-9\.\-]+$/i )
  ]
})

form.subscribe( state => {
  console.log( state )
})

form.validate({
  name: 'Arian',
  email: 'arian.bahreman'
})
// {"status":"invalid","fields":[{"name":"name","status":"valid","errors":[]},{"name":"email","status":"invalid","errors":[{"type":"regexp","error":"email is not valid","props":{"pattern":{}}}]}]}

Asynchronous validation

import { ValidatorField, Logics } from 'ab-validator'

const delayedValidation = value => new Promise(resolve => {
  setTimeout(() => resolve( value > 0 ), 5000)
})

const field = ValidatorField('field', [
  Logics.Custom('Custom error', delayedValidation)
])

field.validate( 10 ).then(result => console.log( result ))
// {name: "field", status: "valid", errors: []}
0.3.2

2 years ago

0.3.1

2 years ago

0.3.0

2 years ago

0.2.2

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago