Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gregors/simple-valley
JS object validation done simply. Inspired by Ecto and Active Record.
https://github.com/gregors/simple-valley
validation-library validator
Last synced: 2 months ago
JSON representation
JS object validation done simply. Inspired by Ecto and Active Record.
- Host: GitHub
- URL: https://github.com/gregors/simple-valley
- Owner: gregors
- Created: 2021-04-30T02:52:24.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-03-17T16:03:15.000Z (almost 2 years ago)
- Last Synced: 2024-10-19T07:33:26.930Z (3 months ago)
- Topics: validation-library, validator
- Language: JavaScript
- Homepage:
- Size: 181 KB
- Stars: 4
- Watchers: 1
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Simple Validations for objects
## List of validations
* [validateRequired](#validateRequired)
* [validateNotBlank](#validateNotBlank)
* [validateEmail](#validateEmail)
* [validateNumber](#validateNumber)
* [validateInclusion](#validateInclusion)
* [validateUrl](#validateUrl)
* [validateLength](#validateLength)
* [validateFormat](#validateFormat)### validateRequired
Validates that the object contains the required key. Says nothing about the value of the key(currently).
```javascript
let validator = newValidator({title: undefined })
validator = validateRequired(validator, 'title')
validator.isValid // truelet validator = newValidator({})
validator = validateRequired(validator, 'title')
validator.isValid // false
validator.messages[0] // { field: 'title', type: 'required', message: 'title required' }
```### validateNotBlank
Validates that the field contains a non-whitespace string. Numbers return valid. Null's return invalid.
```javascript
let validator = newValidator({title: 'hello' })
validator = validateNotBlank(validator, 'title')
validator.isValid // truelet validator = newValidator({title: '' })
validator = validateNotBlank(validator, 'title')
validator.isValid // false
validator.messages[0] // { field: 'title', type: 'blank', message: 'title blank' }
```### validateEmail
Validates using a simplistic non-complete check for email.
```javascript
let validator = newValidator({email: '[email protected]' })
validator = validateEmail(validator, 'email')
validator.isValid // truelet validator = newValidator({email: 'gregors' })
validator = validateEmail(validator, 'email')
validator.isValid // false
validator.messages[0] // { field: 'title', type: 'invalid_email', message: 'invalid email' }
```### validateNumber
Validates the field is a number with options for min and max values.
```javascript
let validator = newValidator({age: 7 })
validator = validateNumber(validator, 'age', {min: 4, max: 7})
validator.isValid // truelet validator = newValidator({age: 8 })
validator = validateNumber(validator, 'age', {min: 4, max: 7})
validator.isValid // false
validator.messages[0] // { field: 'title', type: 'number_max', message: 'age too large' }
```### validateInclusion
Validates the field's value is one of the provided choices.
```javascript
let validator = newValidator({title: 'EMPLOYEE' })
validator = validateInclusion(validator, 'title', { choices: ['EMPLOYEE', 'MANAGER']})
validator.isValid // truelet validator = newValidator({title: 'CONTRACTOR' })
validator = validateInclusion(validator, 'title', { choices: ['EMPLOYEE', 'MANAGER']})
validator.isValid // false
validator.messages[0] // { field: 'title', type: 'inclusiont', message: 'CONTRACTOR is not a choice' }
```### validateUrl
Validates that the field contains a valid URL.```javascript
let validator = newValidator({url: 'https://github.com/gregors' })
validator = validateUrl(validator, 'url')
validator.isValid // truelet validator = newValidator({url: 'https/github.com/gregors' })
validator = validateUrl(validator, 'url')
validator.isValid // false
validator.messages[0] // { field: 'url', type: 'invalid_url', message: 'invalid url' }
```### validateLength
Validates the field by calling the '.length' method and comparing it with the provided min and max options.```javascript
let validator = newValidator({name: 'gregors' })
validator = validateLength(validator, 'name', {min: 4, max: 20})
validator.isValid // truelet validator = newValidator({scores: ['0', '100', '50'] })
validator = validateLength(validator, 'scores', {min: 4})
validator.isValid // false
validator.messages[0] // { field: 'scores', type: 'length_min', message: 'scores not min length ' }
```### validateFormat
Validates the field by comparing the field with the regular expression provided as part of the withFormat option.```javascript
let validator = newValidator({name: 'gregors' })
validator = validateFormat(validator, 'name', {withFormat: /[a-z]+/})
validator.isValid // truelet validator = newValidator({name: 'GREGORS' })
validator = validateFormat(validator, 'name', {withFormat: /[a-z]+/})
validator.isValid // false
validator.messages[0] // { field: 'name', type: 'invalid_format', message: 'name is invalid' }
```