@astral/validations 4.21.0 → 4.21.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -2
- package/email/constants.d.ts +2 -0
- package/email/constants.js +3 -1
- package/email/email.js +3 -3
- package/node/email/constants.d.ts +2 -0
- package/node/email/constants.js +4 -2
- package/node/email/email.js +2 -2
- package/node/or/or.d.ts +4 -1
- package/node/or/or.js +4 -1
- package/or/or.d.ts +4 -1
- package/or/or.js +4 -1
- package/package.json +2 -2
package/README.md
CHANGED
@@ -1934,8 +1934,8 @@ validate('12.12.2022');
|
|
1934
1934
|
|
1935
1935
|
## or
|
1936
1936
|
|
1937
|
-
|
1938
|
-
Если
|
1937
|
+
Если все переданные правила завершились с ошибкой, то вернется ошибка из последнего правила.
|
1938
|
+
Если хотя бы одно из правил не завершилось ошибкой, то `or` вернет undefined.
|
1939
1939
|
|
1940
1940
|
```ts
|
1941
1941
|
import { or, array, string, number } from '@astral/validations';
|
@@ -1955,6 +1955,16 @@ validate(20)
|
|
1955
1955
|
validate(new Date())
|
1956
1956
|
```
|
1957
1957
|
|
1958
|
+
Важно. При использовании min max всегда будет undefined, так как хотя бы одно условие будет выполнено
|
1959
|
+
```ts
|
1960
|
+
import { or, min, max } from '@astral/validations';
|
1961
|
+
|
1962
|
+
const validate = or(min(4), max(10));
|
1963
|
+
|
1964
|
+
// undefined
|
1965
|
+
validate(2)
|
1966
|
+
```
|
1967
|
+
|
1958
1968
|
---
|
1959
1969
|
|
1960
1970
|
# Async
|
package/email/constants.d.ts
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
import { type ErrorInfo } from '../core';
|
2
2
|
export declare const EMAIL_REGEXP: RegExp;
|
3
|
+
export declare const ALLOWED_USERNAME_START_SYMBOL_REGEXP: RegExp;
|
4
|
+
export declare const ALLOWED_HOSTNAME_START_SYMBOL_REGEXP: RegExp;
|
3
5
|
export declare const EMAIL_CYRILLIC_PUNYCODE_REGEXP: RegExp;
|
4
6
|
export declare const LATIN_SYMBOLS: RegExp;
|
5
7
|
export declare const CYRILLIC_SYMBOLS: RegExp;
|
package/email/constants.js
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
import { createErrorCode } from '../core';
|
2
|
-
export const EMAIL_REGEXP = /^[-\w
|
2
|
+
export const EMAIL_REGEXP = /^[-\w.<+]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,}$/;
|
3
|
+
export const ALLOWED_USERNAME_START_SYMBOL_REGEXP = /^[A-Za-zА-Яа-яЁё0-9<]/;
|
4
|
+
export const ALLOWED_HOSTNAME_START_SYMBOL_REGEXP = /^[A-Za-zА-Яа-яЁё0-9]/;
|
3
5
|
export const EMAIL_CYRILLIC_PUNYCODE_REGEXP = /^([A-Za-zА-Яа-яЁё0-9]|[<A-Za-zА-Яа-яЁё0-9][-_.+A-Za-zА-Яа-яЁё0-9]*)@((([A-Za-zА-Яа-яЁё0-9][-_A-Za-zА-Яа-яЁё0-9]+)|(xn--[a-z0-9]+))\.+)*([A-Za-zА-Яа-яЁё]{2,}|xn--[a-z0-9]+)$/;
|
4
6
|
export const LATIN_SYMBOLS = /[a-zA-Z]/;
|
5
7
|
export const CYRILLIC_SYMBOLS = /[а-яА-ЯёЁ]/;
|
package/email/email.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { createRule } from '../core';
|
2
|
-
import { CYRILLIC_SYMBOLS, DOUBLE_DOTS_EMAIL_ERROR_INFO, EMAIL_CYRILLIC_PUNYCODE_REGEXP, EMAIL_MAX_LENGTH, EMAIL_REGEXP, INVALID_EMAIL_ERROR_INFO, LATIN_SYMBOLS, LENGTH_EMAIL_ERROR_INFO, PUNYCODE_REGEXP, } from './constants';
|
2
|
+
import { ALLOWED_HOSTNAME_START_SYMBOL_REGEXP, ALLOWED_USERNAME_START_SYMBOL_REGEXP, CYRILLIC_SYMBOLS, DOUBLE_DOTS_EMAIL_ERROR_INFO, EMAIL_CYRILLIC_PUNYCODE_REGEXP, EMAIL_MAX_LENGTH, EMAIL_REGEXP, INVALID_EMAIL_ERROR_INFO, LATIN_SYMBOLS, LENGTH_EMAIL_ERROR_INFO, PUNYCODE_REGEXP, } from './constants';
|
3
3
|
/**
|
4
4
|
* Проверяет валидность email.
|
5
5
|
* Работает с русскими доменами и punycode через параметр allowCyrillic.
|
@@ -22,7 +22,7 @@ export const email = (params) => createRule((value, ctx) => {
|
|
22
22
|
return ctx.createError(Object.assign(Object.assign({}, LENGTH_EMAIL_ERROR_INFO), { message: (params === null || params === void 0 ? void 0 : params.invalidLengthMessage) || LENGTH_EMAIL_ERROR_INFO.message }));
|
23
23
|
}
|
24
24
|
const [username, hostname] = value.split('@');
|
25
|
-
if (
|
25
|
+
if (!ALLOWED_USERNAME_START_SYMBOL_REGEXP.test(username)) {
|
26
26
|
return invalidEmailError;
|
27
27
|
}
|
28
28
|
if (username.endsWith('.')) {
|
@@ -36,7 +36,7 @@ export const email = (params) => createRule((value, ctx) => {
|
|
36
36
|
if (LATIN_SYMBOLS.test(hostname) && CYRILLIC_SYMBOLS.test(hostname)) {
|
37
37
|
return invalidEmailError;
|
38
38
|
}
|
39
|
-
if (
|
39
|
+
if (!ALLOWED_HOSTNAME_START_SYMBOL_REGEXP.test(hostname)) {
|
40
40
|
return invalidEmailError;
|
41
41
|
}
|
42
42
|
if (hostname.endsWith('.')) {
|
@@ -1,5 +1,7 @@
|
|
1
1
|
import { type ErrorInfo } from '../core';
|
2
2
|
export declare const EMAIL_REGEXP: RegExp;
|
3
|
+
export declare const ALLOWED_USERNAME_START_SYMBOL_REGEXP: RegExp;
|
4
|
+
export declare const ALLOWED_HOSTNAME_START_SYMBOL_REGEXP: RegExp;
|
3
5
|
export declare const EMAIL_CYRILLIC_PUNYCODE_REGEXP: RegExp;
|
4
6
|
export declare const LATIN_SYMBOLS: RegExp;
|
5
7
|
export declare const CYRILLIC_SYMBOLS: RegExp;
|
package/node/email/constants.js
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.DOUBLE_DOTS_EMAIL_ERROR_INFO = exports.LENGTH_EMAIL_ERROR_INFO = exports.INVALID_EMAIL_ERROR_INFO = exports.PUNYCODE_REGEXP = exports.EMAIL_MAX_LENGTH = exports.CYRILLIC_SYMBOLS = exports.LATIN_SYMBOLS = exports.EMAIL_CYRILLIC_PUNYCODE_REGEXP = exports.EMAIL_REGEXP = void 0;
|
3
|
+
exports.DOUBLE_DOTS_EMAIL_ERROR_INFO = exports.LENGTH_EMAIL_ERROR_INFO = exports.INVALID_EMAIL_ERROR_INFO = exports.PUNYCODE_REGEXP = exports.EMAIL_MAX_LENGTH = exports.CYRILLIC_SYMBOLS = exports.LATIN_SYMBOLS = exports.EMAIL_CYRILLIC_PUNYCODE_REGEXP = exports.ALLOWED_HOSTNAME_START_SYMBOL_REGEXP = exports.ALLOWED_USERNAME_START_SYMBOL_REGEXP = exports.EMAIL_REGEXP = void 0;
|
4
4
|
const core_1 = require("../core");
|
5
|
-
exports.EMAIL_REGEXP = /^[-\w
|
5
|
+
exports.EMAIL_REGEXP = /^[-\w.<+]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,}$/;
|
6
|
+
exports.ALLOWED_USERNAME_START_SYMBOL_REGEXP = /^[A-Za-zА-Яа-яЁё0-9<]/;
|
7
|
+
exports.ALLOWED_HOSTNAME_START_SYMBOL_REGEXP = /^[A-Za-zА-Яа-яЁё0-9]/;
|
6
8
|
exports.EMAIL_CYRILLIC_PUNYCODE_REGEXP = /^([A-Za-zА-Яа-яЁё0-9]|[<A-Za-zА-Яа-яЁё0-9][-_.+A-Za-zА-Яа-яЁё0-9]*)@((([A-Za-zА-Яа-яЁё0-9][-_A-Za-zА-Яа-яЁё0-9]+)|(xn--[a-z0-9]+))\.+)*([A-Za-zА-Яа-яЁё]{2,}|xn--[a-z0-9]+)$/;
|
7
9
|
exports.LATIN_SYMBOLS = /[a-zA-Z]/;
|
8
10
|
exports.CYRILLIC_SYMBOLS = /[а-яА-ЯёЁ]/;
|
package/node/email/email.js
CHANGED
@@ -25,7 +25,7 @@ const email = (params) => (0, core_1.createRule)((value, ctx) => {
|
|
25
25
|
return ctx.createError(Object.assign(Object.assign({}, constants_1.LENGTH_EMAIL_ERROR_INFO), { message: (params === null || params === void 0 ? void 0 : params.invalidLengthMessage) || constants_1.LENGTH_EMAIL_ERROR_INFO.message }));
|
26
26
|
}
|
27
27
|
const [username, hostname] = value.split('@');
|
28
|
-
if (
|
28
|
+
if (!constants_1.ALLOWED_USERNAME_START_SYMBOL_REGEXP.test(username)) {
|
29
29
|
return invalidEmailError;
|
30
30
|
}
|
31
31
|
if (username.endsWith('.')) {
|
@@ -39,7 +39,7 @@ const email = (params) => (0, core_1.createRule)((value, ctx) => {
|
|
39
39
|
if (constants_1.LATIN_SYMBOLS.test(hostname) && constants_1.CYRILLIC_SYMBOLS.test(hostname)) {
|
40
40
|
return invalidEmailError;
|
41
41
|
}
|
42
|
-
if (
|
42
|
+
if (!constants_1.ALLOWED_HOSTNAME_START_SYMBOL_REGEXP.test(hostname)) {
|
43
43
|
return invalidEmailError;
|
44
44
|
}
|
45
45
|
if (hostname.endsWith('.')) {
|
package/node/or/or.d.ts
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
import { type ValidationResult, type ValidationRule } from '../core';
|
2
2
|
/**
|
3
|
-
* Выполняет переданные правила аналогично оператору ||. Если одно из правил не завершилось ошибкой, то or вернет undefined
|
4
3
|
* Если все переданные правила завершились с ошибкой, то вернется ошибка из последнего правила
|
4
|
+
* Если хотя бы одно из правил не завершилось ошибкой, то or вернет undefined
|
5
5
|
* @param rules - любые правила валдиаций
|
6
6
|
* @example
|
7
7
|
* ```ts
|
8
8
|
* const validate = or(number(), string(), array());
|
9
9
|
*
|
10
|
+
* // Не является массивом
|
11
|
+
* const result = validate({});
|
12
|
+
*
|
10
13
|
* // undefined
|
11
14
|
* const result = validate('string');
|
12
15
|
* ```
|
package/node/or/or.js
CHANGED
@@ -3,13 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.or = void 0;
|
4
4
|
const core_1 = require("../core");
|
5
5
|
/**
|
6
|
-
* Выполняет переданные правила аналогично оператору ||. Если одно из правил не завершилось ошибкой, то or вернет undefined
|
7
6
|
* Если все переданные правила завершились с ошибкой, то вернется ошибка из последнего правила
|
7
|
+
* Если хотя бы одно из правил не завершилось ошибкой, то or вернет undefined
|
8
8
|
* @param rules - любые правила валдиаций
|
9
9
|
* @example
|
10
10
|
* ```ts
|
11
11
|
* const validate = or(number(), string(), array());
|
12
12
|
*
|
13
|
+
* // Не является массивом
|
14
|
+
* const result = validate({});
|
15
|
+
*
|
13
16
|
* // undefined
|
14
17
|
* const result = validate('string');
|
15
18
|
* ```
|
package/or/or.d.ts
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
import { type ValidationResult, type ValidationRule } from '../core';
|
2
2
|
/**
|
3
|
-
* Выполняет переданные правила аналогично оператору ||. Если одно из правил не завершилось ошибкой, то or вернет undefined
|
4
3
|
* Если все переданные правила завершились с ошибкой, то вернется ошибка из последнего правила
|
4
|
+
* Если хотя бы одно из правил не завершилось ошибкой, то or вернет undefined
|
5
5
|
* @param rules - любые правила валдиаций
|
6
6
|
* @example
|
7
7
|
* ```ts
|
8
8
|
* const validate = or(number(), string(), array());
|
9
9
|
*
|
10
|
+
* // Не является массивом
|
11
|
+
* const result = validate({});
|
12
|
+
*
|
10
13
|
* // undefined
|
11
14
|
* const result = validate('string');
|
12
15
|
* ```
|
package/or/or.js
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
import { callRule, createRule, } from '../core';
|
2
2
|
/**
|
3
|
-
* Выполняет переданные правила аналогично оператору ||. Если одно из правил не завершилось ошибкой, то or вернет undefined
|
4
3
|
* Если все переданные правила завершились с ошибкой, то вернется ошибка из последнего правила
|
4
|
+
* Если хотя бы одно из правил не завершилось ошибкой, то or вернет undefined
|
5
5
|
* @param rules - любые правила валдиаций
|
6
6
|
* @example
|
7
7
|
* ```ts
|
8
8
|
* const validate = or(number(), string(), array());
|
9
9
|
*
|
10
|
+
* // Не является массивом
|
11
|
+
* const result = validate({});
|
12
|
+
*
|
10
13
|
* // undefined
|
11
14
|
* const result = validate('string');
|
12
15
|
* ```
|
package/package.json
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
{
|
2
2
|
"name": "@astral/validations",
|
3
|
-
"version": "4.21.
|
3
|
+
"version": "4.21.2",
|
4
4
|
"browser": "./index.js",
|
5
5
|
"main": "./mode/index.js",
|
6
6
|
"dependencies": {
|
7
|
-
"@astral/utils": "^1.
|
7
|
+
"@astral/utils": "^1.7.2",
|
8
8
|
"utility-types": "^3.10.0"
|
9
9
|
},
|
10
10
|
"author": "Astral.Soft",
|