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: 6 months 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 9 years ago)
- Default Branch: master
- Last Pushed: 2019-09-22T03:52:24.000Z (over 6 years ago)
- Last Synced: 2025-07-03T15:12:03.728Z (7 months ago)
- Topics: expressjs, input, javascript, json, laravel, nodejs, request, validation, validator
- Language: JavaScript
- Homepage:
- Size: 138 KB
- Stars: 2
- Watchers: 1
- 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.
[](https://travis-ci.org/devmark/input-check)
[](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.
email
----
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