@jsonql/validator-core
TypeScript icon, indicating that this package has built-in type declarations

0.12.2 • Public • Published

@jsonql/validator-core

This library provide all the core validation functions for couple other libraries. Also it has a plugin system, and some commonly use plugins to help with the validation.

ValidatorPlugins

As of version 0.8.0, we move all the plugins related methods into this module. And this will be able to share between many different @jsonql/validator instance to use, instead of every time we init a ValidatorFactory and have to load all the plugins again.

More to come

About the plugin system

The core library provide function to validate against primitive types and their value. When we need to test the value in a more specific way, we can use the plugin system. Also this plugin system allow developer to create their own plugin to suit their specific need.

A plugin file looks like this:

// test for integer
const name = "int"

function main(value: number): boolean {
  return Number.isInteger(value)
}

export default {
  name,
  main,
}

If you require additional parameter:

// example from our built-in plugin between

// between
import moreThan from './more-than'
import lessThan from './less-than'

const name = 'between'

function main(
  max: number,
  min: number,
  value: number | string
): boolean {

  return lessThan.main(max, value) && moreThan.main(min, value)
}

// Then when we register it, we know what `params` we should expect
export default {
  main,
  name,
  params: ['max', 'min']
}

The value that will get validate MUST be the last argument. Because we will curry the main method before insert into our validation queue system.

Built-in plugins

Here is list of available built-in plugins:

between

{ plugin: 'between', max: 100, min: 1}

Check a number or string (length) is < max and > min

email

{ plugin: 'email'}

Check if the input is email address

float

{ plugin: 'float' }

Check if the value is a float number

int

{ plugin: 'int' }

Check if the value is an signed integer

lessThanEqual

{ plugin: 'lessThanEqual', num: 100}

Check if a number or string (length) is =< num

lessThan

{ plugin: 'lessThan', num: 100}

Check if a number or string (length) is < num

moreThanEqual

{ plugin: 'moreThanEqual', num: 100}

Check if a number or string (length) is >= num

moreThan

{ plugin: 'moreThan', num: 100}

Check if a number of string (length) is > num

uint

{ plugin: 'uint' }

Check if a number is a unsigned integer (>=0)

within

{ plugin: 'within', max: 100, min: 1}

Check if a number or string (length) is <= max and >= min


JSONQL

Readme

Keywords

none

Package Sidebar

Install

npm i @jsonql/validator-core

Homepage

jsonql.org

Weekly Downloads

4

Version

0.12.2

License

MIT

Unpacked Size

284 kB

Total Files

92

Last publish

Collaborators

  • to1source-me
  • joelchu