0.1.0 • Published 10 years ago

validify.js v0.1.0

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

validify.js

validify.js is a JavaScript library for data validation.

Features:

  • Supports Node.js, require.js or standalone use in the browser
  • Validators can be invoked using the dynamic methods generated by the framework
  • Validation can be performed by specifying the object/value to validate and a constraints JSON object

NOTE: this library is not yet stable and is likely to change and be refactored rapidly

Install

Node.js

npm install validify.js

Bower

bower install

Usage

Node.js

var validify = require('validify');
validify.email('test@example.com') // returns true

Browser (standalone)

<script src="validify.standalone.min.js"></script>
<script>
  validify.email('test@example.com') // returns true
</script>

Browser (require.js)

<script src="require.js"></script>
<script>
require(['validify.standalone.min'], function(validify) {
  validify.email('test@example.com') // returns true
})
</script>

Constraints

###Format

[
  {
    <attribute>: {
       <validator>: <options>
    }
  },
  ...
]

attribute - name of the object attribute to validate, or "*" for simple value validator - the name of the validator to use options - the options to use for the enclosing validator

###Invoking

var validify = require('validify');

// validate(<object>, <constraint(s)>, mode)

// mode is irrelevant when single constraint passed in
validify.validate(testObject, {
  firstName: { present: true }
});

// mode 'any' - firstName or nickName must be present
validify.validate(testObject, [
  { firstName: { present: true } },
  { nickName: { present: true } }
], 'any');

Modes:

all (and) - every one of the listed constraints must be true any (or) - at least one of the listed constraints must be true one (xor) - only one of the listed constraints can be true

###Example 1

Simple validation of a single field.

Object:

id (integer)
firstName (string)
lastName (string)

Logic:

Rule:

{ 
  firstName: { 
    greaterThan: { min: 3 } 
  } 
}

###Example 2

Multiple fields can be validated for a single object.

Object:

id (integer)
firstName (string)
lastName (string)

Logic:

Rule:

[
  { 
    id: { 
      present: false 
    } 
  },
  { 
    firstName: { 
      present: true, 
      length: { min: 0, max: 10, inclusive: false}
    }
  }
]

###Example 3

Simple logic can be performed through use of validation operators.

Object:

id (integer)
integer (integer)
float (float)
isFloat (boolean)

Logic:

Rule:

[
  {
    isFloat: {
      eq: true
    },
    integer: {
      present: false
    },
    float: {
      present: true
    }
  },
  {
    isFloat: {
      eq: true
    },
    integer: {
      present: false
    },
    float: {
      present: true
    }
  }
]

###Example 4

Unwrap arrays to apply validation to each object in turn

Object:

id (integer)
name (string)
list ([{
  name:
  field1: true
}, {
  field1: false
}])

Logic:

Rule:

[
  {
    isFloat: {
      eq: true
    },
    integer: {
      present: false
    },
    float: {
      present: true
    }
  },
  {
    isFloat: {
      eq: true
    },
    integer: {
      present: false
    },
    float: {
      present: true
    }
  }
]

Acknowledgements

This library was partially inspired by several other frameworks and validation libraries, which are fantastic in their own right, but did not quite meet my needs.

validatejs mongoosejs mongoose-validator validator.js

If you are looking for something more battle tested or widely adopted, then check them out.

License

The MIT License (MIT), Copyright (c) 2014 David Castro arimus@gmail.com

See LICENSE file for details