@clocklimited/validity
v1.1.3
Published
Validator framework for object validation
Downloads
521
Keywords
Readme
validity - Validation framework
Validation helpers for validating the properties of an object.
Change log
Version 1
As of version 1 all validators have been stripped out and should be required individually as needed.
Validity now only consists of three helper functions that should be used by validator authors. You won't need to include validity directly into you projects any longer unless you need to create a new validator.
Installation
npm install --save validity
Run Tests
npm test
Usage
Simple Boolean Return Validators
var validity = require('validity'),
createValidator = validity.createValidator,
booleanToCallback = validity.booleanToCallback,
requiredValidator,
defaultMessageValidator
// The simple return boolean type validator we want to convert into a validity style
function isEven(value) {
return value % 2 === 0
}
// Create the validator converting a simple boolean validation function
requiredValidator = createValidator(booleanToCallback(isEven))
// This sets the already composed validator with a default message
defaultMessageValidator = requiredValidator('#{name} is required')
// Tack a composed function onto the default validator function that allows you
// to change the default error message.
defaultMessageValidator.setFailureMessage = requiredValidator
module.exports = defaultMessageValidator
This can be wrapped up using the createValidatorAllowingFailureMessageOverride
helper.
var validity = require('validity')
module.exports = validity.createValidatorAllowingFailureMessageOverride(
validity.booleanToCallback(isValid),
'#{name} is required'
)
Unexpected Errors
The first argument of a validator callback should be null unless expected errors outside of validation occurred. Errors such as IO errors or system errors should be reported and dealt with internally. It may cause an security issue if details of such errors are returned to the user.
Validators
Validators should be built as individual npm modules so that applications can pick and
choose which they use. Validators should be added to npm repo with the
validity-
prefix so they can be found with a quick npm
search (or via the cli: npm search validity-
).
Validator authors should upgrade their validators to use the helper functions from validity and allow easy overriding of failure messages.
Validators that currently exist and can be used:
- validity-alphanumeric-property
- validity-cf-crop-integrity-validator
- validity-compose
- validity-currency
- validity-date-before-property
- validity-date-in-range
- validity-email *
- validity-entity-exists
- validity-equal-field
- validity-equal
- validity-float
- validity-geojson-point
- validity-integer *
- validity-number-in-range *
- validity-number-or-null
- validity-number
- validity-or-validator
- validity-payment-card-number
- validity-regex-match
- validity-require-one
- validity-required-options
- validity-required
- validity-string-represents-mongodb-objectid
- validity-ukpostcode
- validity-unique-property
- validity-url *
- validity-url-optional-tlds
- validity-validate-each
- validity-validate-if-property-equals
- validity-validate-if-property-set
- validity-validate-if-set *
* - These modules replace functionality previously found in validity pre version 1
Credits
Paul Serby follow me on twitter @serby
License
ISC