@astral/validations 4.12.0 → 4.13.0

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 CHANGED
@@ -47,6 +47,7 @@
47
47
  - [passportSeries](#passportSeries)
48
48
  - [passportNumber](#passportNumber)
49
49
  - [passportCode](#passportCode)
50
+ - [textField](#textField)
50
51
  - [date](#date)
51
52
  - [min](#min-date)
52
53
  - [max](#max-date)
@@ -551,6 +552,27 @@ validate('156-573-259 92')
551
552
 
552
553
  ---
553
554
 
555
+ ### textField
556
+
557
+ Проверяет валидно ли текстовое поле
558
+
559
+ ```ts
560
+ import { string, textField } from '@astral/validations';
561
+
562
+ const validate = string(textField());
563
+
564
+ // undefined
565
+ validate('!@#$%^&*()-_=+|[]{};:",.<>/?')
566
+ validate('абвАБВ abcABC')
567
+
568
+ // { message: 'Содержит запрещённые символы' }
569
+ validate('😀')
570
+ validate('∑')
571
+ validate('٩(◕‿◕。)۶')
572
+ ```
573
+
574
+ ---
575
+
554
576
  ### mobilePhone
555
577
 
556
578
  - Проверяет валиден ли мобильный телефон
package/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export { object, objectAsync, OBJECT_TYPE_ERROR_INFO, type Schema, type SchemaValue, type ObjectGuard, type ObjectAsyncGuard, } from './object';
2
2
  export { optional, optionalAsync } from './optional';
3
3
  export { string, STRING_TYPE_ERROR_INFO, stringAsync } from './string';
4
+ export { textField, INVALID_TEXT_FIELD_ERROR_INFO, LENGTH_TEXT_FIELD_ERROR_INFO, } from './textField';
4
5
  export { date, INVALID_DATE_ERROR_INFO, DATE_TYPE_ERROR_INFO } from './date';
5
6
  export { number, NAN_NUMBER_ERROR_INFO, NUMBER_TYPE_ERROR_INFO, INFINITY_NUMBER_ERROR_INFO, } from './number';
6
7
  export { boolean, BOOLEAN_TYPE_ERROR_INFO } from './boolean';
package/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export { object, objectAsync, OBJECT_TYPE_ERROR_INFO, } from './object';
2
2
  export { optional, optionalAsync } from './optional';
3
3
  export { string, STRING_TYPE_ERROR_INFO, stringAsync } from './string';
4
+ export { textField, INVALID_TEXT_FIELD_ERROR_INFO, LENGTH_TEXT_FIELD_ERROR_INFO, } from './textField';
4
5
  export { date, INVALID_DATE_ERROR_INFO, DATE_TYPE_ERROR_INFO } from './date';
5
6
  export { number, NAN_NUMBER_ERROR_INFO, NUMBER_TYPE_ERROR_INFO, INFINITY_NUMBER_ERROR_INFO, } from './number';
6
7
  export { boolean, BOOLEAN_TYPE_ERROR_INFO } from './boolean';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astral/validations",
3
- "version": "4.12.0",
3
+ "version": "4.13.0",
4
4
  "browser": "./index.js",
5
5
  "main": "./index.js",
6
6
  "dependencies": {
@@ -0,0 +1,5 @@
1
+ import { ErrorInfo } from '../core';
2
+ export declare const TEXT_FIELD_REGEXP: RegExp;
3
+ export declare const TEXT_FIELD_MAX_LENGTH = 256;
4
+ export declare const INVALID_TEXT_FIELD_ERROR_INFO: ErrorInfo;
5
+ export declare const LENGTH_TEXT_FIELD_ERROR_INFO: ErrorInfo;
@@ -0,0 +1,11 @@
1
+ import { createErrorCode } from '../core';
2
+ export const TEXT_FIELD_REGEXP = /^[a-zA-Zа-яА-Я0-9\s!@#$%^&*()-_=+\\|[\]{};:'",.<>/?]+$/;
3
+ export const TEXT_FIELD_MAX_LENGTH = 256;
4
+ export const INVALID_TEXT_FIELD_ERROR_INFO = {
5
+ code: createErrorCode('textField-invalid'),
6
+ message: 'Содержит запрещённые символы',
7
+ };
8
+ export const LENGTH_TEXT_FIELD_ERROR_INFO = {
9
+ code: createErrorCode('textField-length'),
10
+ message: 'Превышено максимальное кол-во символов',
11
+ };
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ export * from './textField';
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ export * from './textField';
@@ -0,0 +1,24 @@
1
+ type TextFieldParams = {
2
+ /**
3
+ * @description Замена стандартного сообщения ошибки.
4
+ */
5
+ customLength?: number;
6
+ /**
7
+ * @description Замена стандартного сообщения ошибки.
8
+ */
9
+ message?: string;
10
+ /**
11
+ * @description Замена стандартного сообщения ошибки при превышении допустимого количества символов.
12
+ */
13
+ invalidLengthMessage?: string;
14
+ };
15
+ /**
16
+ * @description Проверяет валидность текстового поля
17
+ * @example
18
+ * ```ts
19
+ * const validate = string(textField());
20
+ * validate('Авада кедавра...');
21
+ * ```
22
+ */
23
+ export declare const textField: <TLastSchemaValues extends Record<string, unknown>>(params?: TextFieldParams) => (value: string, prevCtx?: import("../core").ValidationContext<TLastSchemaValues> | undefined) => import("../core").ValidationResult;
24
+ export {};
@@ -0,0 +1,19 @@
1
+ import { createRule } from '../core';
2
+ import { INVALID_TEXT_FIELD_ERROR_INFO, LENGTH_TEXT_FIELD_ERROR_INFO, TEXT_FIELD_MAX_LENGTH, TEXT_FIELD_REGEXP, } from './constants';
3
+ /**
4
+ * @description Проверяет валидность текстового поля
5
+ * @example
6
+ * ```ts
7
+ * const validate = string(textField());
8
+ * validate('Авада кедавра...');
9
+ * ```
10
+ */
11
+ export const textField = (params) => createRule((value, ctx) => {
12
+ if (value.length > ((params === null || params === void 0 ? void 0 : params.customLength) || TEXT_FIELD_MAX_LENGTH)) {
13
+ return ctx.createError(Object.assign(Object.assign({}, LENGTH_TEXT_FIELD_ERROR_INFO), { message: (params === null || params === void 0 ? void 0 : params.invalidLengthMessage) || LENGTH_TEXT_FIELD_ERROR_INFO.message }));
14
+ }
15
+ if (!TEXT_FIELD_REGEXP.test(value)) {
16
+ return ctx.createError(Object.assign(Object.assign({}, INVALID_TEXT_FIELD_ERROR_INFO), { message: (params === null || params === void 0 ? void 0 : params.message) || INVALID_TEXT_FIELD_ERROR_INFO.message }));
17
+ }
18
+ return undefined;
19
+ });