@astral/validations 4.20.0 → 4.20.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 +63 -0
- package/email/constants.js +2 -2
- package/email/email.js +10 -0
- package/package.json +1 -1
package/README.md
CHANGED
@@ -56,6 +56,9 @@
|
|
56
56
|
- [rangeDateInterval](#rangeDateInterval)
|
57
57
|
- [rangeDateMinMax](#rangeDateMinMax)
|
58
58
|
- [rangeDateNotEqual](#rangeDateNotEqual)
|
59
|
+
- [file](#file)
|
60
|
+
- [uploadedFile](#uploadedfile)
|
61
|
+
- [uploadedFileList](#uploadedfilelist)
|
59
62
|
- [boolean](#boolean)
|
60
63
|
- [object](#object)
|
61
64
|
- [partial](#partial)
|
@@ -1171,6 +1174,66 @@ validate({
|
|
1171
1174
|
|
1172
1175
|
---
|
1173
1176
|
|
1177
|
+
## file
|
1178
|
+
|
1179
|
+
---
|
1180
|
+
|
1181
|
+
### uploadedFile
|
1182
|
+
|
1183
|
+
- Проверяет объекты загружаемого файла на обязательность заполнение и валидность
|
1184
|
+
- Выполняет композицию правил, переданных в параметры
|
1185
|
+
|
1186
|
+
```ts
|
1187
|
+
import { uploadedFile } from '@astral/validations';
|
1188
|
+
|
1189
|
+
const validate = uploadedFile();
|
1190
|
+
|
1191
|
+
// { message: 'Загрузите файл' }
|
1192
|
+
validate({});
|
1193
|
+
|
1194
|
+
// { message: 'Файл не соответствует ограничениям' }
|
1195
|
+
validate({ id: '1', name: 'document.pdf', status: { isRestrictionError: true } })
|
1196
|
+
|
1197
|
+
// { message: 'Файл загружается' }
|
1198
|
+
validate({ id: '1', name: 'document.pdf', status: { isLoading: true } })
|
1199
|
+
|
1200
|
+
// { message: 'Ошибка загрузки файла' }
|
1201
|
+
validate({ id: '1', name: 'document.pdf', status: { isUploadError: true } })
|
1202
|
+
|
1203
|
+
// { message: 'Размер файла не может превышать 3.00 Кб' }
|
1204
|
+
validate({ id: '1', name: 'document.pdf', status: { isRestrictionError: true, errorMsg: 'Размер файла не может превышать 3.00 Кб' } })
|
1205
|
+
```
|
1206
|
+
|
1207
|
+
---
|
1208
|
+
|
1209
|
+
### uploadedFileList
|
1210
|
+
|
1211
|
+
- Проверяет массив объектов загружаемых файлов на соответсвие массиву и валидность каждого файла
|
1212
|
+
- Выполняет композицию правил, переданных в параметры
|
1213
|
+
|
1214
|
+
```ts
|
1215
|
+
import { uploadedFileList } from '@astral/validation';
|
1216
|
+
|
1217
|
+
const validate = uploadedFileList();
|
1218
|
+
|
1219
|
+
// { message: 'Не является массивом' }
|
1220
|
+
validate({});
|
1221
|
+
|
1222
|
+
// { message: 'Файл загружается' }
|
1223
|
+
validate([{ id: '1', name: 'document1.pdf', status: { isLoading: true } },{ id: '2', name: 'document2.pdf' }])
|
1224
|
+
|
1225
|
+
// { message: 'Ошибка загрузки файла' }
|
1226
|
+
validate([{ id: '1', name: 'document1.pdf', status: { isUploadError: true } },{ id: '2', name: 'document2.pdf' }])
|
1227
|
+
|
1228
|
+
// { message: 'Файл не соответствует ограничениям' }
|
1229
|
+
validate([{ id: '1', name: 'document1.pdf', status: { isRestrictionError: true } },{ id: '2', name: 'document2.pdf' }])
|
1230
|
+
|
1231
|
+
// { message: 'Размер файла не может превышать 3.00 Кб' }
|
1232
|
+
validate([{ id: '1', name: 'document1.pdf', status: { isRestrictionError: true, errorMsg: 'Размер файла не может превышать 3.00 Кб' } },
|
1233
|
+
{ id: '2', name: 'document2.pdf' }])
|
1234
|
+
```
|
1235
|
+
---
|
1236
|
+
|
1174
1237
|
## boolean
|
1175
1238
|
|
1176
1239
|
- Возвращает ошибку если:
|
package/email/constants.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { createErrorCode } from '../core';
|
2
|
-
export const EMAIL_REGEXP = /^[-\w
|
3
|
-
export const EMAIL_CYRILLIC_PUNYCODE_REGEXP = /^([A-
|
2
|
+
export const EMAIL_REGEXP = /^[-\w.<]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,}$/;
|
3
|
+
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
4
|
export const LATIN_SYMBOLS = /[a-zA-Z]/;
|
5
5
|
export const CYRILLIC_SYMBOLS = /[а-яА-ЯёЁ]/;
|
6
6
|
export const EMAIL_MAX_LENGTH = 254;
|
package/email/email.js
CHANGED
@@ -36,6 +36,16 @@ 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 (hostname.startsWith('.') || hostname.startsWith('-')) {
|
40
|
+
return invalidEmailError;
|
41
|
+
}
|
42
|
+
if (hostname.endsWith('.')) {
|
43
|
+
return invalidEmailError;
|
44
|
+
}
|
45
|
+
if (hostname.includes('..')) {
|
46
|
+
return ctx.createError(Object.assign(Object.assign({}, DOUBLE_DOTS_EMAIL_ERROR_INFO), { message: (params === null || params === void 0 ? void 0 : params.doubleDotsErrorMessage) ||
|
47
|
+
DOUBLE_DOTS_EMAIL_ERROR_INFO.message }));
|
48
|
+
}
|
39
49
|
if (!PUNYCODE_REGEXP.test(hostname) &&
|
40
50
|
hostname[2] === '-' &&
|
41
51
|
hostname[3] === '-') {
|