Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/devmark/input-check
Validator for nodejs and web. Like Laravel Validation style for nodejs
https://github.com/devmark/input-check
expressjs input javascript json laravel nodejs request validation validator
Last synced: 23 days ago
JSON representation
Validator for nodejs and web. Like Laravel Validation style for nodejs
- Host: GitHub
- URL: https://github.com/devmark/input-check
- Owner: devmark
- Created: 2017-02-22T03:37:16.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2019-09-22T03:52:24.000Z (over 5 years ago)
- Last Synced: 2024-01-26T17:06:20.192Z (11 months ago)
- Topics: expressjs, input, javascript, json, laravel, nodejs, request, validation, validator
- Language: JavaScript
- Homepage:
- Size: 138 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# Input check
Project base on [indicative](https://github.com/poppinss/indicative)Validator for nodejs and web.
[![Build Status](https://travis-ci.org/devmark/input-check.svg?branch=master)](https://travis-ci.org/devmark/input-check)
[![NPM](https://nodei.co/npm/input-check.png?downloads=true)](https://nodei.co/npm/input-check/)## Installation
Installing requires node 4.0 or greater with npm installed.
```javascript
npm install --save input-check
```## Basics
```javascript
const inputCheck = require('input-check')
```#### validate (data, rules, [messages])
Validate method will run the validation cycle, which gets terminated on the first error.```javascript
const rules = {
username: 'required'
}const data = {
username: null
}inputCheck
.validate(data, rules)
.then(function () {
// validation passed
})
.catch(function (errors) {
// validation failed
})
```## Custom messages
```javascript
const messages = {
required: 'This field is required to complete the registration process.'
}inputCheck
.validate(data, rules, messages)
.then(function () {
// validation passed
})
.catch(function (errors) {
// validation failed
})
```## Custom Validation
```javascript
const _ = require('lodash');const unique = function (data, field, message, args) {
return new Promise(function (resolve, reject) {
// get value of field under validation
const fieldValue = _.get(data, field);// resolve if value does not exists, value existence
// should be taken care by required rule.
if(!fieldValue) {
return resolve('validation skipped');
}// checking for username inside database
User
.where('username', fieldValue)
.then(function (result) {
if(result){
reject(message);
}else{
resolve('username does not exists');
}
});
.catch(resolve);});
};
```- data - It is the actual data object passed to validate method.
- field - Field is a string value of field under validation.
- message - Error message to return.
- args - An array of values your rule is expecting, it may be empty depending upon your rule expectations. For example min:4 will have args array as [4].```javascript
inputCheck.extend('unique', unique, 'Field should be unique')
```## Available Validation Rules
Below is a list of all available validation rules and their function:accepted
----
The field under validation must be yes, on, 1, or true. This is useful for validating "Terms of Service" acceptance.~~active_url~~
----
The field under validation must have a valid A or AAAA record.after:(date|time)
----
The field under validation must be a value after a given date or time.
```javascript
const rules = {
'createdAt' : 'date|after:2016-11-11',
'time' : 'time|after:14:00:00'
}
```after_or_equal:date
----
The field under validation must be a value after or equal to the given date. For more information, see the after rule.alpha
----
The field under validation must be entirely alphabetic characters.alpha_dash
----
The field under validation may have alpha-numeric characters, as well as dashes and underscores.alpha_num
----
The field under validation must be entirely alpha-numeric characters.array
----
The field under validation must be a array.before:date
----
The field under validation must be a value preceding the given date or time.
```javascript
const rules = {
'createdAt' : 'date|before:2016-11-11',
'time' : 'time|before:14:00:00'
}
```before_or_equal:date
----
The field under validation must be a value preceding or equal to the given date. The dates will be passed into the `momentjs` function.between:min,max
----
The field under validation must have a size between the given min and max.`Strings`, `numerics`, and `array` size rule.
Warning: Not support File type.
boolean
----
The field under validation must be able to be cast as a boolean. Accepted input are true, false, 1, 0, "1", and "0".confirmed
----
The field under validation must have a matching field of foo_confirmation. For example, if the field under validation is password, a matching password_confirmation field must be present in the input.date
----
The field under validation must be a valid date according to the `momentjs` function.date_format:format
----
The field under validation must match the given format. You should use either date or date_format when validating a field, not both.different:field
----
The field under validation must have a different value than field.~~digits:value~~
----
The field under validation must be numeric and must have an exact length of value.~~digits_between:min,max~~
----
The field under validation must have a length between the given min and max.~~distinct~~
----
When working with arrays, the field under validation must not have any duplicate values.
----
The field under validation must be formatted as an e-mail address.~~filled~~
----
The field under validation must not be empty when it is present.in:foo,bar,... (in_array)
----
The field under validation must be included in the given list of values. Since this rule often requires you to implode an array.```javascript
const rules = {
'company' : 'string|in:google,yahoo,facebook',
}
```in array example:
```javascript
const rules = {
'company.*' : 'in:google,yahoo,facebook',
}
```not_in:foo,bar,...
----
The field under validation must not be included in the given list of values.integer
----
The field under validation must be an integer.ip
----
The field under validation must be an IP address.ipv4
----
The field under validation must be an IPv4 address.ipv6
----
The field under validation must be an IPv6 address.json
----
The field under validation must be a valid JSON string.min:value
----
The field under validation must have a minimum value.`Strings`, `numerics`, and `array` size rule.
Warning: Not support File type.
max:value
----
The field under validation must be less than or equal to a maximum value.
`Strings`, `numerics`, and `array` size rule.Warning: Not support File type.
nullable
----
The field under validation may be null. This is particularly useful when validating primitive such as strings and integers that can contain null values.numeric
----
The field under validation must be numeric.present
----
The field under validation must be present in the input data but can be empty.regex:pattern
----
The field under validation must match the given regular expression.Note: When using the regex pattern, it may be necessary to specify rules in an array instead of using pipe delimiters, especially if the regular expression contains a pipe character.
required
----
The field under validation must be present in the input data and not empty. A field is considered "empty" if one of the following conditions are true:The value is null.
The value is an empty string.
The value is an empty array or empty Countable object.
The value is an uploaded file with no path.required_if:anotherfield,value,...
----
The field under validation must be present and not empty if the anotherfield field is equal to any value.required_unless:anotherfield,value,...
----
The field under validation must be present and not empty unless the anotherfield field is equal to any value.required_with:foo,bar,...
----
The field under validation must be present and not empty only if any of the other specified fields are present.required_with_all:foo,bar,...
----
The field under validation must be present and not empty only if all of the other specified fields are present.required_without:foo,bar,...
----
The field under validation must be present and not empty only when any of the other specified fields are not present.required_without_all:foo,bar,...
----
The field under validation must be present and not empty only when all of the other specified fields are not present.~~same:field~~
----
The given field must match the field under validation.size:value
----
The field under validation must have a size matching the given value. For string data, value corresponds to the number of characters. For numeric data, value corresponds to a given integer value. For an array, size corresponds to the count of the array. For files, size corresponds to the file size in kilobytes.string
----
The field under validation must be a string. If you would like to allow the field to also be null, you should assign the nullable rule to the field.~~timezone~~
----
The field under validation must be a valid timezone identifier according to the `momentjs` timezone function.~~exists:table,column~~
----
The field under validation must exist on a given database table.~~unique:table,column,except,idColumn~~
----
The field under validation must be unique in a given database table. If the column option is not specified, the field name will be used.url
----
The field under validation must be a valid URL.### Different With Laravel Validation
time
----
The field under validation must be a valid Time.
Support format: `HH:mm:ss`, `HH:mm`, `HH:mm a`object
----
The field under validation must be a valid object.uuid
----
The field under validation must be a valid uuid.includes:foo
----
The field under validation must be within value.starts_with:foo
----
The field under validation must be start within value.ends_with:foo
----
The field under validation must be end within value.### File & Image
#### handle multipart bodies
you may be interested in the following modules:
* [formidable](https://www.npmjs.org/package/formidable#readme)
* [multer](https://www.npmjs.org/package/multer#readme)
When you using above modules, you could get the file or image information.
Then, you must to transfer information below before use file validation:
```javascript
const rules = {
file: 'file|image'
}const data = {
file: {
mimetype: 'image/png', // for mime type validation
path: '/var/tmp/xxxx.png', // for dimensions
}
}inputCheck
.validate(data, rules)
.then(function () {
// validation passed
})
.catch(function (errors) {
// validation failed
})```
file
----
The field under validation must be a successfully uploaded file.image
----
The file under validation must be an image (jpeg, png, bmp, gif, or svg)
```javascript
const rules = {
'file' : 'image',
}
```mimetypes:text/plain,...
----
The file under validation must match one of the given MIME types:~~mimes:foo,bar,...~~
----
The file under validation must have a MIME type corresponding to one of the listed extensions.dimensions
----
The file under validation must be an image meeting the dimension constraints as specified by the rule's parameters:
```javascript
const rules = {
'image' : 'dimensions:min_width=100,min_height=200,ratio=3/2',
}
```Available constraints are: min_width, max_width, min_height, max_height, width, height, ratio.
## License
[The MIT License](http://opensource.org/licenses/MIT)
* Copyright (c) Harminder Virk
* Copyright (c) Devmark