https://github.com/amirvalibeigi/ir-rh-validation
validation object and class for react, react-native
https://github.com/amirvalibeigi/ir-rh-validation
class javascript object react react-native reactjs regex validation validator
Last synced: 2 months ago
JSON representation
validation object and class for react, react-native
- Host: GitHub
- URL: https://github.com/amirvalibeigi/ir-rh-validation
- Owner: amirValibeigi
- Created: 2021-09-26T18:46:18.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2022-02-22T18:49:57.000Z (over 4 years ago)
- Last Synced: 2024-03-25T02:02:32.444Z (over 2 years ago)
- Topics: class, javascript, object, react, react-native, reactjs, regex, validation, validator
- Language: JavaScript
- Homepage:
- Size: 25.4 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ir-rh-validation
## **installation**
```npm
npm install ir-rh-validation
```
## **Usage**
### import class and operators
```javascript
import Validation from "ir-rh-validation";
import { isEmail } from "ir-rh-validation/OperatorValidation";
const validation = new Validation();
const user = {
id: 1,
name: "amir",
email: "amir@example.com",
code: "1234",
created_at: "9/15/2021, 5:30:00 AM",
colorSelect: ["red", "red", "green"],
history: [
{ id: 1, site: "example.com", timeSecond: 100, urlClick: ["url1"] },
{ id: 2, site: "example1.com", timeSecond: 5000, urlClick: ["url2"] },
{ id: 3, site: "example2.com", timeSecond: 20000, urlClick: ["url3"] },
],
};
validation
.validatePromise(user, [
{
name: "email",
matches: [isEmail()], //true
},
])
.then(
() => {
//true
},
(err) => {
//false
}
);
```
## example
### regex
check regex on String
```javascript
import { regex } from "ir-rh-validation/OperatorValidation";
validation.validate(user, [
{
name: "code",
matches: [regex(/^[0-9]*$/g)], //true
},
]);
```
### hasIn
check that object in values is exists
```javascript
import { hasIn } from "ir-rh-validation/OperatorValidation";
validation.validate(user, [
{
name: "name",
matches: [hasIn("amir", "ali")], //true
},
]);
```
### hasNotIn
check that object in values is not exists
```javascript
import { hasNotIn } from "ir-rh-validation/OperatorValidation";
validation.validate(user, [
{
name: "name",
matches: [hasNotIn("amir", "ali")], //false
},
]);
```
### rangeDate
check that date has between two date
```javascript
import { rangeDate } from "ir-rh-validation/OperatorValidation";
validation.validate(user, [
{
name: "created_at",
matches: [rangeDate(1630458000000, 1632963600000)], //true
},
]);
```
### minLength
check min length of string or array
```javascript
import { minLength } from "ir-rh-validation/OperatorValidation";
validation.validate(user, [
{
name: "email",
matches: [minLength(5)], //true
},
]);
```
### maxLength
check max length of string or array
```javascript
import { maxLength } from "ir-rh-validation/OperatorValidation";
validation.validate(user, [
{
name: "email",
matches: [maxLength(10)], //false
},
]);
```
### minNum
check min number
```javascript
import { minNum } from "ir-rh-validation/OperatorValidation";
validation.validate(user, [
{
name: "id",
matches: [minNum(2)], //false
},
]);
```
### maxNum
check max number
```javascript
import { maxNum } from "ir-rh-validation/OperatorValidation";
validation.validate(user, [
{
name: "id",
matches: [maxNum(2)], //true
},
]);
```
### rangeNum
check number in range
```javascript
import { rangeNum } from "ir-rh-validation/OperatorValidation";
validation.validate(user, [
{
name: "id",
matches: [rangeNum(0, 1)], //true
},
]);
```
### unique
unique item in sorted array
```javascript
import { unique } from "ir-rh-validation/OperatorValidation";
validation.validate(user, [
{
name: "colorSelect.*",
matches: [unique()], //false
},
]);
```
### check property in array
```javascript
import { rangeNum, hasNotIn } from "ir-rh-validation/OperatorValidation";
validation.validate(user, [
{
name: "history.*.timeSecond",
matches: [rangeNum(100, 100000)], //true
},
{
name: "history.*.urlClick.*",
matches: [hasNotIn("url4")], //true
},
{
name: "history.*.site",
matches: [hasNotIn("example2.com")], //false
},
]); /// result false
```
## customize method
```javascript
import { OperatorValidation } from "ir-rh-validation";
/**
*
* @returns {OperatorValidation>}
*/
const hasColor = (color) =>
new OperatorValidation(
(obj) => {
return obj.includes(color);
},
"hasColor",
{ color }
);
validation.validate(user, [
{
name: "colorSelect",
matches: [hasColor("green")], //true
},
]);
```
## Customize Message
```javascript
const validation = new Validation("fa", {
validations: {
string: {
max: "طول متن :attribute باید کمتر از :length باشد.",
},
},
attributes: {
history: {
"*": {
id: "شماره یکتا",
site: "هر سایت",
},
},
colorSelect: "رنگ انتخابی",
},
});
if (
validation.validate(user, [
{
name: "history.*.site",
matches: [maxLength(5)], //false
},
]) == false
) {
console.log(validation.getMessageError());
}
if (
validation.validate(user, [
{
name: "colorSelect",
matches: [hasIn("yellow")], //false
},
]) == false
) {
console.log(validation.getMessageError());
}
```
output 1:
> طول متن هر سایت باید کمتر از 5 باشد.
output 2:
> مقدار رنگ انتخابی باید شامل (yellow) باشد.
## usage on class
```javascript
import Validation from "ir-rh-validation";
import {
isString,
maxLength,
minLength,
} from "ir-rh-validation/OperatorValidation";
export default class UserModel extends Validation {
name = "amir";
/**
* @type {Array>}
*/
rules = [
{
name: "name",
matches: [isString(), minLength(1)],
},
];
/**
* @type {Array>}
*/
rules1 = [
{
name: "name",
matches: [isString(), maxLength(3)],
},
];
}
```
```javascript
import {
exists,
maxLength,
minLength,
} from "ir-rh-validation/OperatorValidation";
const user = new UserModel();
user.validateClass(); //true
user.validateClass("rules1"); //false
user.validateClass([
{
name: "email",
matches: [exists()], //false
},
]);
```
## String Rules
```javascript
validation.validate(user, ["email:isEmail,maxLength 16"]); //true
```
## methods
- object (array, number, string, ...)
- [minLength](#minlength)
- [maxLength](#maxlength)
- empty
- notEmpty
- isArray
- isBoolean
- isNumber
- isString
- isFun
- exists
- notExists
- [hasIn](#hasin)
- [hasNotIn](#hasNotin)
- isJson
- isDate
- [rangeDate](#rangedate)
- isToday
- number
- [rangeNum](#rangenum)
- [minNum](#minnum)
- [maxNum](#maxnum)
- string
- [regex](#regex)
- isEmail
- array
- [unique](#unique)