diff options
author | Minteck <contact@minteck.org> | 2021-12-21 16:50:49 +0100 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2021-12-21 16:50:49 +0100 |
commit | 20204baf1807825af4798ad03bfb329e4da05bc5 (patch) | |
tree | 1568515fa1e4592206ed5d2327b39e6b443cbd03 /node_modules/revalidator/README.md | |
download | bingoloto-remote-20204baf1807825af4798ad03bfb329e4da05bc5.tar.gz bingoloto-remote-20204baf1807825af4798ad03bfb329e4da05bc5.tar.bz2 bingoloto-remote-20204baf1807825af4798ad03bfb329e4da05bc5.zip |
Commit
Diffstat (limited to 'node_modules/revalidator/README.md')
-rw-r--r-- | node_modules/revalidator/README.md | 301 |
1 files changed, 301 insertions, 0 deletions
diff --git a/node_modules/revalidator/README.md b/node_modules/revalidator/README.md new file mode 100644 index 0000000..be6601b --- /dev/null +++ b/node_modules/revalidator/README.md @@ -0,0 +1,301 @@ +# revalidator [![Build Status](https://secure.travis-ci.org/flatiron/revalidator.png)](http://travis-ci.org/flatiron/revalidator) + +A cross-browser / node.js validator used by resourceful and flatiron. Revalidator has [JSONSchema](http://tools.ietf.org/html/draft-zyp-json-schema-04) compatibility as primary goal. + +## Example +The core of `revalidator` is simple and succinct: `revalidator.validate(obj, schema)`: + +``` js + var revalidator = require('revalidator'); + + console.dir(revalidator.validate(someObject, { + properties: { + url: { + description: 'the url the object should be stored at', + type: 'string', + pattern: '^/[^#%&*{}\\:<>?\/+]+$', + required: true + }, + challenge: { + description: 'a means of protecting data (insufficient for production, used as example)', + type: 'string', + minLength: 5 + }, + body: { + description: 'what to store at the url', + type: 'any', + default: null + } + } + })); +``` + +This will return with a value indicating if the `obj` conforms to the `schema`. If it does not, a descriptive object will be returned containing the errors encountered with validation. + +``` js + { + valid: true // or false + errors: [/* Array of errors if valid is false */] + } +``` + +In the browser, the validation function is exposed on `window.validate` by simply including `revalidator.js`. + +## Installation + +### Installing npm (node package manager) +``` bash + $ curl http://npmjs.org/install.sh | sh +``` + +### Installing revalidator +``` bash + $ [sudo] npm install revalidator +``` + +## Usage + +`revalidator` takes json-schema as input to validate objects. + +### revalidator.validate (obj, schema, options) + +This will return with a value indicating if the `obj` conforms to the `schema`. If it does not, a descriptive object will be returned containing the errors encountered with validation. + +``` js +{ + valid: true // or false + errors: [/* Array of errors if valid is false */] +} +``` + +#### Available Options + +* __validateFormats__: Enforce format constraints (_default true_) +* __validateFormatsStrict__: When `validateFormats` is _true_ treat unrecognized formats as validation errors (_default false_) +* __validateFormatExtensions__: When `validateFormats` is _true_ also validate formats defined in `validate.formatExtensions` (_default true_) +* __cast__: Enforce casting of some types (for integers/numbers are only supported) when it's possible, e.g. `"42" => 42`, but `"forty2" => "forty2"` for the `integer` type. + +### Schema +For a property an `value` is that which is given as input for validation where as an `expected value` is the value of the below fields + +#### required +If true, the value should not be undefined + +```js +{ required: true } +``` + +#### allowEmpty +If false, the value must not be an empty string + +```js +{ allowEmpty: false } +``` + +#### type +The `type of value` should be equal to the expected value + +```js +{ type: 'string' } +{ type: 'number' } +{ type: 'integer' } +{ type: 'array' } +{ type: 'boolean' } +{ type: 'object' } +{ type: 'null' } +{ type: 'any' } +{ type: ['boolean', 'string'] } +``` + +#### pattern +The expected value regex needs to be satisfied by the value + +```js +{ pattern: /^[a-z]+$/ } +``` + +#### maxLength +The length of value must be greater than or equal to expected value + +```js +{ maxLength: 8 } +``` + +#### minLength +The length of value must be lesser than or equal to expected value + +```js +{ minLength: 8 } +``` + +#### minimum +Value must be greater than or equal to the expected value + +```js +{ minimum: 10 } +``` + +#### maximum +Value must be lesser than or equal to the expected value + +```js +{ maximum: 10 } +``` + +#### allowEmpty +Value may not be empty + +```js +{ allowEmpty: false } +``` + +#### exclusiveMinimum +Value must be greater than expected value + +```js +{ exclusiveMinimum: 9 } +``` + +### exclusiveMaximum +Value must be lesser than expected value + +```js +{ exclusiveMaximum: 11 } +``` + +#### divisibleBy +Value must be divisible by expected value + +```js +{ divisibleBy: 5 } +{ divisibleBy: 0.5 } +``` + +#### minItems +Value must contain more then expected value number of items + +```js +{ minItems: 2 } +``` + +#### maxItems +Value must contains less then expected value number of items + +```js +{ maxItems: 5 } +``` + +#### uniqueItems +Value must hold a unique set of values + +```js +{ uniqueItems: true } +``` + +#### enum +Value must be present in the array of expected value + +```js +{ enum: ['month', 'year'] } +``` + +#### format +Value must be a valid format + +```js +{ format: 'url' } +{ format: 'email' } +{ format: 'ip-address' } +{ format: 'ipv6' } +{ format: 'date-time' } +{ format: 'date' } +{ format: 'time' } +{ format: 'color' } +{ format: 'host-name' } +{ format: 'utc-millisec' } +{ format: 'regex' } +``` + +#### conform +Value must conform to constraint denoted by expected value + +```js +{ conform: function (v) { + if (v%3==1) return true; + return false; + } +} +``` + +#### dependencies +Value is valid only if the dependent value is valid + +```js +{ + town: { required: true, dependencies: 'country' }, + country: { maxLength: 3, required: true } +} +``` + +### Nested Schema +We also allow nested schema + +```js +{ + properties: { + title: { + type: 'string', + maxLength: 140, + required: true + }, + author: { + type: 'object', + required: true, + properties: { + name: { + type: 'string', + required: true + }, + email: { + type: 'string', + format: 'email' + } + } + } + } +} +``` + +### Custom Messages +We also allow custom message for different constraints + +```js +{ + type: 'string', + format: 'url' + messages: { + type: 'Not a string type', + format: 'Expected format is a url' + } +``` + +```js +{ + conform: function () { ... }, + message: 'This can be used as a global message' +} +``` + +## Tests +All tests are written with [vows][0] and should be run with [npm][1]: + +``` bash + $ npm test +``` + +#### Author: [Charlie Robbins](http://nodejitsu.com), [Alexis Sellier](http://cloudhead.io) +#### Contributors: [Fedor Indutny](http://github.com/indutny), [Bradley Meck](http://github.com/bmeck), [Laurie Harper](http://laurie.holoweb.net/) +#### License: Apache 2.0 + +[0]: http://vowsjs.org +[1]: http://npmjs.org |