@reformer/core 1.0.0-beta.1 → 1.0.0-beta.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.
Files changed (79) hide show
  1. package/dist/behaviors/compute-from.js +3 -3
  2. package/dist/behaviors/enable-when.js +5 -5
  3. package/dist/behaviors/reset-when.js +1 -1
  4. package/dist/behaviors/revalidate-when.js +1 -1
  5. package/dist/behaviors/sync-fields.js +5 -5
  6. package/dist/behaviors/watch-field.js +3 -3
  7. package/dist/behaviors.js +2 -2
  8. package/dist/core/types/field-path.d.ts +2 -2
  9. package/dist/core/types/index.d.ts +1 -1
  10. package/dist/core/types/validation-schema.d.ts +21 -50
  11. package/dist/core/validation/core/index.d.ts +0 -1
  12. package/dist/core/validation/core/validate-async.d.ts +9 -15
  13. package/dist/core/validation/core/validate.d.ts +15 -15
  14. package/dist/core/validation/index.d.ts +5 -3
  15. package/dist/core/validation/validation-applicator.d.ts +2 -56
  16. package/dist/core/validation/validation-registry.d.ts +18 -16
  17. package/dist/core/validation/validators/array-validators.d.ts +6 -31
  18. package/dist/core/validation/validators/email.d.ts +5 -29
  19. package/dist/core/validation/validators/future-date.d.ts +6 -28
  20. package/dist/core/validation/validators/index.d.ts +12 -4
  21. package/dist/core/validation/validators/integer.d.ts +13 -0
  22. package/dist/core/validation/validators/is-date.d.ts +5 -28
  23. package/dist/core/validation/validators/is-number.d.ts +14 -0
  24. package/dist/core/validation/validators/max-age.d.ts +6 -29
  25. package/dist/core/validation/validators/max-date.d.ts +6 -29
  26. package/dist/core/validation/validators/max-length.d.ts +5 -30
  27. package/dist/core/validation/validators/max.d.ts +7 -29
  28. package/dist/core/validation/validators/min-age.d.ts +6 -29
  29. package/dist/core/validation/validators/min-date.d.ts +6 -29
  30. package/dist/core/validation/validators/min-length.d.ts +5 -30
  31. package/dist/core/validation/validators/min.d.ts +7 -29
  32. package/dist/core/validation/validators/multiple-of.d.ts +13 -0
  33. package/dist/core/validation/validators/non-negative.d.ts +13 -0
  34. package/dist/core/validation/validators/non-zero.d.ts +13 -0
  35. package/dist/core/validation/validators/past-date.d.ts +5 -28
  36. package/dist/core/validation/validators/pattern.d.ts +5 -32
  37. package/dist/core/validation/validators/phone.d.ts +9 -19
  38. package/dist/core/validation/validators/required.d.ts +10 -31
  39. package/dist/core/validation/validators/url.d.ts +13 -15
  40. package/dist/{index-D25LsbRm.js → index-DLh_Ryb2.js} +1 -1
  41. package/dist/index.js +465 -397
  42. package/dist/{registry-helpers-Bv_BJ1s-.js → registry-helpers-CLPXad2B.js} +152 -292
  43. package/dist/validators/email.js +7 -9
  44. package/dist/validators/future-date.js +11 -12
  45. package/dist/validators/integer.d.ts +2 -0
  46. package/dist/validators/integer.js +10 -0
  47. package/dist/validators/is-date.js +6 -7
  48. package/dist/validators/is-number.d.ts +2 -0
  49. package/dist/validators/is-number.js +10 -0
  50. package/dist/validators/max-age.js +11 -12
  51. package/dist/validators/max-date.js +11 -12
  52. package/dist/validators/max-length.js +12 -8
  53. package/dist/validators/max.js +5 -6
  54. package/dist/validators/min-age.js +10 -11
  55. package/dist/validators/min-date.js +12 -13
  56. package/dist/validators/min-length.js +12 -8
  57. package/dist/validators/min.js +6 -7
  58. package/dist/validators/multiple-of.d.ts +2 -0
  59. package/dist/validators/multiple-of.js +10 -0
  60. package/dist/validators/non-negative.d.ts +2 -0
  61. package/dist/validators/non-negative.js +10 -0
  62. package/dist/validators/non-zero.d.ts +2 -0
  63. package/dist/validators/non-zero.js +10 -0
  64. package/dist/validators/past-date.js +11 -12
  65. package/dist/validators/pattern.js +6 -7
  66. package/dist/validators/phone.js +14 -32
  67. package/dist/validators/required.js +9 -10
  68. package/dist/validators/url.js +19 -16
  69. package/dist/validators-xJyP-jLZ.js +169 -0
  70. package/dist/validators.js +54 -50
  71. package/llms.txt +505 -790
  72. package/package.json +20 -4
  73. package/dist/core/validation/core/validate-tree.d.ts +0 -35
  74. package/dist/core/validation/validation-context.d.ts +0 -86
  75. package/dist/core/validation/validators/number.d.ts +0 -31
  76. package/dist/validate-C3XiA_zf.js +0 -10
  77. package/dist/validators/number.d.ts +0 -2
  78. package/dist/validators/number.js +0 -35
  79. package/dist/validators-BGsNOgT1.js +0 -207
@@ -1,35 +1,13 @@
1
- import { ValidateOptions } from '../../types/validation-schema';
2
- import { FieldPathNode } from '../../types';
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
3
2
  /**
4
- * Проверяет, что дата находится в будущем (не в прошлом)
3
+ * Фабрика валидатора, проверяющего что дата не в прошлом.
5
4
  *
6
- * Пустые значения и невалидные даты пропускаются (используйте `required` и `isDate`).
7
- *
8
- * @group Validation
9
- * @category Validators
10
- *
11
- * @param fieldPath - Путь к полю для валидации
12
- * @param options - Опции валидации (message, params)
13
- *
14
- * @example
15
- * ```typescript
16
- * // Базовое использование - дата события должна быть в будущем
17
- * validationSchema: (path) => [
18
- * futureDate(path.eventDate),
19
- * ]
20
- *
21
- * // С кастомным сообщением
22
- * futureDate(path.appointmentDate, { message: 'Дата записи должна быть в будущем' })
23
- * ```
5
+ * Пустые и невалидные даты пропускаются.
24
6
  *
25
7
  * @example
26
8
  * ```typescript
27
- * // Ошибка валидации
28
- * {
29
- * code: 'date_past',
30
- * message: 'Дата не может быть в прошлом',
31
- * params: {}
32
- * }
9
+ * validate(path.eventDate, futureDate());
10
+ * validate(path.appointmentDate, futureDate({ message: 'Дата записи должна быть в будущем' }));
33
11
  * ```
34
12
  */
35
- export declare function futureDate<TForm, TField extends string | Date | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, options?: ValidateOptions): void;
13
+ export declare function futureDate<TForm = unknown, TField extends string | Date | undefined = string | Date>(options?: ValidateOptions): Validator<TForm, TField>;
@@ -1,5 +1,8 @@
1
1
  /**
2
- * Reusable validators
2
+ * Reusable validator factories.
3
+ *
4
+ * Все примитивы — фабрики, возвращающие чистый Validator<TForm, TField>.
5
+ * Использование: `validate(path.x, required())`, `validate(path.y, min(18))`.
3
6
  */
4
7
  export { required } from './required';
5
8
  export { min } from './min';
@@ -8,9 +11,13 @@ export { minLength } from './min-length';
8
11
  export { maxLength } from './max-length';
9
12
  export { email } from './email';
10
13
  export { pattern } from './pattern';
11
- export { url } from './url';
12
- export { phone, type PhoneFormat } from './phone';
13
- export { number } from './number';
14
+ export { url, type UrlValidatorOptions } from './url';
15
+ export { phone, type PhoneFormat, type PhoneValidatorOptions } from './phone';
16
+ export { isNumber } from './is-number';
17
+ export { integer } from './integer';
18
+ export { multipleOf } from './multiple-of';
19
+ export { nonNegative } from './non-negative';
20
+ export { nonZero } from './non-zero';
14
21
  export { isDate } from './is-date';
15
22
  export { minDate } from './min-date';
16
23
  export { maxDate } from './max-date';
@@ -18,3 +25,4 @@ export { pastDate } from './past-date';
18
25
  export { futureDate } from './future-date';
19
26
  export { minAge } from './min-age';
20
27
  export { maxAge } from './max-age';
28
+ export { notEmpty } from './array-validators';
@@ -0,0 +1,13 @@
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
2
+ /**
3
+ * Фабрика валидатора, проверяющего что число — целое.
4
+ *
5
+ * Пустые значения и не-числа пропускаются (используйте `required` и `isNumber`).
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * validate(path.age, integer());
10
+ * validate(path.count, integer({ message: 'Должно быть целым числом' }));
11
+ * ```
12
+ */
13
+ export declare function integer<TForm = unknown, TField extends number | undefined = number>(options?: ValidateOptions): Validator<TForm, TField>;
@@ -1,36 +1,13 @@
1
- import { ValidateOptions } from '../../types/validation-schema';
2
- import { FieldPathNode } from '../../types';
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
3
2
  /**
4
- * Проверяет, что значение является валидной датой
3
+ * Фабрика валидатора, проверяющего что значение валидная дата.
5
4
  *
6
5
  * Пустые значения пропускаются (используйте `required` для обязательности).
7
6
  *
8
- * @group Validation
9
- * @category Validators
10
- *
11
- * @param fieldPath - Путь к полю для валидации
12
- * @param options - Опции валидации (message, params)
13
- *
14
- * @example
15
- * ```typescript
16
- * // Базовое использование
17
- * validationSchema: (path) => [
18
- * isDate(path.birthDate),
19
- * isDate(path.eventDate),
20
- * ]
21
- *
22
- * // С кастомным сообщением
23
- * isDate(path.birthDate, { message: 'Введите корректную дату' })
24
- * ```
25
- *
26
7
  * @example
27
8
  * ```typescript
28
- * // Ошибка валидации
29
- * {
30
- * code: 'date_invalid',
31
- * message: 'Неверный формат даты',
32
- * params: {}
33
- * }
9
+ * validate(path.birthDate, isDate());
10
+ * validate(path.eventDate, isDate({ message: 'Введите корректную дату' }));
34
11
  * ```
35
12
  */
36
- export declare function isDate<TForm, TField extends string | Date | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, options?: ValidateOptions): void;
13
+ export declare function isDate<TForm = unknown, TField extends string | Date | undefined = string | Date>(options?: ValidateOptions): Validator<TForm, TField>;
@@ -0,0 +1,14 @@
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
2
+ /**
3
+ * Фабрика валидатора, проверяющего что значение — конечное число (не NaN, не строка).
4
+ *
5
+ * Пустые значения (`null`/`undefined`) пропускаются (используйте `required` для обязательности).
6
+ * В отличие от других number-валидаторов, **не** пропускает не-числа — это его задача.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * validate(path.amount, isNumber());
11
+ * validate(path.amount, isNumber({ message: 'Введите число' }));
12
+ * ```
13
+ */
14
+ export declare function isNumber<TForm = unknown, TField extends number | undefined = number>(options?: ValidateOptions): Validator<TForm, TField>;
@@ -1,36 +1,13 @@
1
- import { ValidateOptions } from '../../types/validation-schema';
2
- import { FieldPathNode } from '../../types';
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
3
2
  /**
4
- * Проверяет, что возраст (вычисленный из даты рождения) не больше указанного
3
+ * Фабрика валидатора максимального возраста (по дате рождения).
5
4
  *
6
- * Пустые значения и невалидные даты пропускаются (используйте `required` и `isDate`).
7
- *
8
- * @group Validation
9
- * @category Validators
10
- *
11
- * @param fieldPath - Путь к полю для валидации (дата рождения)
12
- * @param maxAgeValue - Максимально допустимый возраст в годах
13
- * @param options - Опции валидации (message, params)
14
- *
15
- * @example
16
- * ```typescript
17
- * // Базовое использование - максимум 65 лет
18
- * validationSchema: (path) => [
19
- * maxAge(path.birthDate, 65),
20
- * ]
21
- *
22
- * // С кастомным сообщением
23
- * maxAge(path.birthDate, 100, { message: 'Проверьте правильность даты рождения' })
24
- * ```
5
+ * Пустые и невалидные даты пропускаются.
25
6
  *
26
7
  * @example
27
8
  * ```typescript
28
- * // Ошибка валидации
29
- * {
30
- * code: 'date_max_age',
31
- * message: 'Максимальный возраст: 65 лет',
32
- * params: { maxAge: 65, currentAge: 70 }
33
- * }
9
+ * validate(path.birthDate, maxAge(65));
10
+ * validate(path.birthDate, maxAge(100, { message: 'Проверьте дату рождения' }));
34
11
  * ```
35
12
  */
36
- export declare function maxAge<TForm, TField extends string | Date | null | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, maxAgeValue: number, options?: ValidateOptions): void;
13
+ export declare function maxAge<TForm = unknown, TField extends string | Date | null | undefined = string | Date>(maxAgeValue: number, options?: ValidateOptions): Validator<TForm, TField>;
@@ -1,36 +1,13 @@
1
- import { ValidateOptions } from '../../types/validation-schema';
2
- import { FieldPathNode } from '../../types';
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
3
2
  /**
4
- * Проверяет, что дата не позже указанной максимальной
3
+ * Фабрика валидатора максимальной даты (включительно).
5
4
  *
6
- * Пустые значения и невалидные даты пропускаются (используйте `required` и `isDate`).
7
- *
8
- * @group Validation
9
- * @category Validators
10
- *
11
- * @param fieldPath - Путь к полю для валидации
12
- * @param maxDateValue - Максимально допустимая дата (включительно)
13
- * @param options - Опции валидации (message, params)
14
- *
15
- * @example
16
- * ```typescript
17
- * // Базовое использование
18
- * validationSchema: (path) => [
19
- * maxDate(path.birthDate, new Date()), // Не позже сегодня
20
- * ]
21
- *
22
- * // С кастомным сообщением
23
- * maxDate(path.endDate, new Date('2025-12-31'), { message: 'Дата не может быть позже конца года' })
24
- * ```
5
+ * Пустые и невалидные даты пропускаются.
25
6
  *
26
7
  * @example
27
8
  * ```typescript
28
- * // Ошибка валидации
29
- * {
30
- * code: 'date_max',
31
- * message: 'Дата должна быть не позднее 31.12.2025',
32
- * params: { maxDate: Date }
33
- * }
9
+ * validate(path.birthDate, maxDate(new Date())); // не позже сегодня
10
+ * validate(path.endDate, maxDate(new Date('2025-12-31')));
34
11
  * ```
35
12
  */
36
- export declare function maxDate<TForm, TField extends string | Date | null | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, maxDateValue: Date, options?: ValidateOptions): void;
13
+ export declare function maxDate<TForm = unknown, TField extends string | Date | null | undefined = string | Date>(maxDateValue: Date, options?: ValidateOptions): Validator<TForm, TField>;
@@ -1,38 +1,13 @@
1
- import { ValidateOptions } from '../../types/validation-schema';
2
- import { FieldPathNode } from '../../types';
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
3
2
  /**
4
- * Валидатор максимальной длины строки
3
+ * Фабрика валидатора максимальной длины строки или массива.
5
4
  *
6
- * Проверяет, что длина строки не превышает указанный максимум.
7
5
  * Пустые значения пропускаются (используйте `required` для обязательности).
8
6
  *
9
- * @group Validation
10
- * @category Validators
11
- *
12
- * @param fieldPath - Путь к полю для валидации
13
- * @param maxLen - Максимальная допустимая длина строки
14
- * @param options - Опции валидации (message, params)
15
- *
16
- * @example
17
- * ```typescript
18
- * // Базовое использование
19
- * validationSchema: (path) => [
20
- * maxLength(path.name, 50),
21
- * maxLength(path.bio, 500),
22
- * ]
23
- *
24
- * // С кастомным сообщением
25
- * maxLength(path.bio, 500, { message: 'Максимум 500 символов' })
26
- * ```
27
- *
28
7
  * @example
29
8
  * ```typescript
30
- * // Ошибка валидации
31
- * {
32
- * code: 'maxLength',
33
- * message: 'Максимальная длина: 500 символов',
34
- * params: { maxLength: 500, actualLength: 512 }
35
- * }
9
+ * validate(path.name, maxLength(50));
10
+ * validate(path.bio, maxLength(500, { message: 'Max 500 символов' }));
36
11
  * ```
37
12
  */
38
- export declare function maxLength<TForm, TField extends string | null | undefined = string>(fieldPath: FieldPathNode<TForm, TField> | undefined, maxLen: number, options?: ValidateOptions): void;
13
+ export declare function maxLength<TForm = unknown, TField = unknown>(maxLen: number, options?: ValidateOptions): Validator<TForm, TField>;
@@ -1,38 +1,16 @@
1
- import { ValidateOptions } from '../../types/validation-schema';
2
- import { FieldPathNode } from '../../types';
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
3
2
  /**
4
- * Валидатор максимального числового значения
3
+ * Фабрика валидатора максимального числового значения.
5
4
  *
6
- * Проверяет, что числовое значение не превышает указанный максимум.
7
5
  * Пустые значения пропускаются (используйте `required` для обязательности).
8
6
  *
9
- * @group Validation
10
- * @category Validators
11
- *
12
- * @param fieldPath - Путь к полю для валидации
13
- * @param maxValue - Максимально допустимое значение
14
- * @param options - Опции валидации (message, params)
15
- *
16
7
  * @example
17
8
  * ```typescript
18
- * // Базовое использование
19
- * validationSchema: (path) => [
20
- * max(path.quantity, 100),
21
- * max(path.discount, 50),
22
- * ]
23
- *
24
- * // С кастомным сообщением
25
- * max(path.quantity, 100, { message: 'Максимум 100 единиц' })
26
- * ```
9
+ * import { validate } from '@reformer/core';
10
+ * import { max } from '@reformer/core/validators';
27
11
  *
28
- * @example
29
- * ```typescript
30
- * // Ошибка валидации
31
- * {
32
- * code: 'max',
33
- * message: 'Максимальное значение: 100',
34
- * params: { max: 100, actual: 150 }
35
- * }
12
+ * validate(path.quantity, max(100));
13
+ * validate(path.discount, max(50, { message: 'Не более 50%' }));
36
14
  * ```
37
15
  */
38
- export declare function max<TForm, TField extends number | null | undefined = number>(fieldPath: FieldPathNode<TForm, TField> | undefined, maxValue: number, options?: ValidateOptions): void;
16
+ export declare function max<TForm = unknown, TField extends number | undefined = number>(maxValue: number, options?: ValidateOptions): Validator<TForm, TField>;
@@ -1,36 +1,13 @@
1
- import { ValidateOptions } from '../../types/validation-schema';
2
- import { FieldPathNode } from '../../types';
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
3
2
  /**
4
- * Проверяет, что возраст (вычисленный из даты рождения) не меньше указанного
3
+ * Фабрика валидатора минимального возраста (по дате рождения).
5
4
  *
6
- * Пустые значения и невалидные даты пропускаются (используйте `required` и `isDate`).
7
- *
8
- * @group Validation
9
- * @category Validators
10
- *
11
- * @param fieldPath - Путь к полю для валидации (дата рождения)
12
- * @param minAgeValue - Минимально допустимый возраст в годах
13
- * @param options - Опции валидации (message, params)
14
- *
15
- * @example
16
- * ```typescript
17
- * // Базовое использование - минимум 18 лет
18
- * validationSchema: (path) => [
19
- * minAge(path.birthDate, 18),
20
- * ]
21
- *
22
- * // С кастомным сообщением
23
- * minAge(path.birthDate, 21, { message: 'Вам должно быть не менее 21 года' })
24
- * ```
5
+ * Пустые и невалидные даты пропускаются.
25
6
  *
26
7
  * @example
27
8
  * ```typescript
28
- * // Ошибка валидации
29
- * {
30
- * code: 'date_min_age',
31
- * message: 'Минимальный возраст: 18 лет',
32
- * params: { minAge: 18, currentAge: 16 }
33
- * }
9
+ * validate(path.birthDate, minAge(18));
10
+ * validate(path.birthDate, minAge(21, { message: 'Вам должно быть не менее 21 года' }));
34
11
  * ```
35
12
  */
36
- export declare function minAge<TForm, TField extends string | Date | null | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, minAgeValue: number, options?: ValidateOptions): void;
13
+ export declare function minAge<TForm = unknown, TField extends string | Date | null | undefined = string | Date>(minAgeValue: number, options?: ValidateOptions): Validator<TForm, TField>;
@@ -1,36 +1,13 @@
1
- import { ValidateOptions } from '../../types/validation-schema';
2
- import { FieldPathNode } from '../../types';
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
3
2
  /**
4
- * Проверяет, что дата не раньше указанной минимальной
3
+ * Фабрика валидатора минимальной даты (включительно).
5
4
  *
6
- * Пустые значения и невалидные даты пропускаются (используйте `required` и `isDate`).
7
- *
8
- * @group Validation
9
- * @category Validators
10
- *
11
- * @param fieldPath - Путь к полю для валидации
12
- * @param minDateValue - Минимально допустимая дата (включительно)
13
- * @param options - Опции валидации (message, params)
14
- *
15
- * @example
16
- * ```typescript
17
- * // Базовое использование
18
- * validationSchema: (path) => [
19
- * minDate(path.eventDate, new Date('2024-01-01')),
20
- * ]
21
- *
22
- * // С кастомным сообщением
23
- * minDate(path.startDate, new Date(), { message: 'Дата должна быть не раньше сегодня' })
24
- * ```
5
+ * Пустые и невалидные даты пропускаются (используйте `required` и `isDate`).
25
6
  *
26
7
  * @example
27
8
  * ```typescript
28
- * // Ошибка валидации
29
- * {
30
- * code: 'date_min',
31
- * message: 'Дата должна быть не ранее 01.01.2024',
32
- * params: { minDate: Date }
33
- * }
9
+ * validate(path.eventDate, minDate(new Date('2024-01-01')));
10
+ * validate(path.startDate, minDate(new Date(), { message: 'Дата должна быть не раньше сегодня' }));
34
11
  * ```
35
12
  */
36
- export declare function minDate<TForm, TField extends string | Date | null | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, minDateValue: Date, options?: ValidateOptions): void;
13
+ export declare function minDate<TForm = unknown, TField extends string | Date | null | undefined = string | Date>(minDateValue: Date, options?: ValidateOptions): Validator<TForm, TField>;
@@ -1,38 +1,13 @@
1
- import { ValidateOptions } from '../../types/validation-schema';
2
- import { FieldPathNode } from '../../types';
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
3
2
  /**
4
- * Валидатор минимальной длины строки
3
+ * Фабрика валидатора минимальной длины строки или массива.
5
4
  *
6
- * Проверяет, что длина строки не меньше указанного минимума.
7
5
  * Пустые значения пропускаются (используйте `required` для обязательности).
8
6
  *
9
- * @group Validation
10
- * @category Validators
11
- *
12
- * @param fieldPath - Путь к полю для валидации
13
- * @param minLen - Минимальная допустимая длина строки
14
- * @param options - Опции валидации (message, params)
15
- *
16
- * @example
17
- * ```typescript
18
- * // Базовое использование
19
- * validationSchema: (path) => [
20
- * minLength(path.name, 2),
21
- * minLength(path.password, 8),
22
- * ]
23
- *
24
- * // С кастомным сообщением
25
- * minLength(path.password, 8, { message: 'Пароль должен быть не менее 8 символов' })
26
- * ```
27
- *
28
7
  * @example
29
8
  * ```typescript
30
- * // Ошибка валидации
31
- * {
32
- * code: 'minLength',
33
- * message: 'Минимальная длина: 8 символов',
34
- * params: { minLength: 8, actualLength: 3 }
35
- * }
9
+ * validate(path.name, minLength(2));
10
+ * validate(path.password, minLength(8, { message: 'Min 8 символов' }));
36
11
  * ```
37
12
  */
38
- export declare function minLength<TForm, TField extends string | null | undefined = string>(fieldPath: FieldPathNode<TForm, TField> | undefined, minLen: number, options?: ValidateOptions): void;
13
+ export declare function minLength<TForm = unknown, TField = unknown>(minLen: number, options?: ValidateOptions): Validator<TForm, TField>;
@@ -1,38 +1,16 @@
1
- import { ValidateOptions } from '../../types/validation-schema';
2
- import { FieldPathNode } from '../../types';
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
3
2
  /**
4
- * Валидатор минимального числового значения
3
+ * Фабрика валидатора минимального числового значения.
5
4
  *
6
- * Проверяет, что числовое значение не меньше указанного минимума.
7
5
  * Пустые значения пропускаются (используйте `required` для обязательности).
8
6
  *
9
- * @group Validation
10
- * @category Validators
11
- *
12
- * @param fieldPath - Путь к полю для валидации
13
- * @param minValue - Минимально допустимое значение
14
- * @param options - Опции валидации (message, params)
15
- *
16
7
  * @example
17
8
  * ```typescript
18
- * // Базовое использование
19
- * validationSchema: (path) => [
20
- * min(path.age, 18),
21
- * min(path.quantity, 1),
22
- * ]
23
- *
24
- * // С кастомным сообщением
25
- * min(path.age, 18, { message: 'Вам должно быть не менее 18 лет' })
26
- * ```
9
+ * import { validate } from '@reformer/core';
10
+ * import { min } from '@reformer/core/validators';
27
11
  *
28
- * @example
29
- * ```typescript
30
- * // Ошибка валидации
31
- * {
32
- * code: 'min',
33
- * message: 'Минимальное значение: 18',
34
- * params: { min: 18, actual: 16 }
35
- * }
12
+ * validate(path.age, min(18));
13
+ * validate(path.quantity, min(1, { message: 'Минимум 1' }));
36
14
  * ```
37
15
  */
38
- export declare function min<TForm, TField extends number | null | undefined = number>(fieldPath: FieldPathNode<TForm, TField> | undefined, minValue: number, options?: ValidateOptions): void;
16
+ export declare function min<TForm = unknown, TField extends number | undefined = number>(minValue: number, options?: ValidateOptions): Validator<TForm, TField>;
@@ -0,0 +1,13 @@
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
2
+ /**
3
+ * Фабрика валидатора, проверяющего что число кратно заданному.
4
+ *
5
+ * Пустые значения и не-числа пропускаются (используйте `required` и `isNumber`).
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * validate(path.price, multipleOf(0.01));
10
+ * validate(path.rating, multipleOf(0.5, { message: 'Только шаг 0.5' }));
11
+ * ```
12
+ */
13
+ export declare function multipleOf<TForm = unknown, TField extends number | undefined = number>(divisor: number, options?: ValidateOptions): Validator<TForm, TField>;
@@ -0,0 +1,13 @@
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
2
+ /**
3
+ * Фабрика валидатора, проверяющего что число неотрицательное (`≥ 0`).
4
+ *
5
+ * Пустые значения и не-числа пропускаются (используйте `required` и `isNumber`).
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * validate(path.quantity, nonNegative());
10
+ * validate(path.balance, nonNegative({ message: 'Баланс не может быть отрицательным' }));
11
+ * ```
12
+ */
13
+ export declare function nonNegative<TForm = unknown, TField extends number | undefined = number>(options?: ValidateOptions): Validator<TForm, TField>;
@@ -0,0 +1,13 @@
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
2
+ /**
3
+ * Фабрика валидатора, проверяющего что число не равно нулю.
4
+ *
5
+ * Пустые значения и не-числа пропускаются (используйте `required` и `isNumber`).
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * validate(path.quantity, nonZero());
10
+ * validate(path.divisor, nonZero({ message: 'Не может быть нулём' }));
11
+ * ```
12
+ */
13
+ export declare function nonZero<TForm = unknown, TField extends number | undefined = number>(options?: ValidateOptions): Validator<TForm, TField>;
@@ -1,35 +1,12 @@
1
- import { ValidateOptions } from '../../types/validation-schema';
2
- import { FieldPathNode } from '../../types';
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
3
2
  /**
4
- * Проверяет, что дата находится в прошлом (не в будущем)
3
+ * Фабрика валидатора, проверяющего что дата не в будущем.
5
4
  *
6
- * Пустые значения и невалидные даты пропускаются (используйте `required` и `isDate`).
7
- *
8
- * @group Validation
9
- * @category Validators
10
- *
11
- * @param fieldPath - Путь к полю для валидации
12
- * @param options - Опции валидации (message, params)
13
- *
14
- * @example
15
- * ```typescript
16
- * // Базовое использование - дата рождения не может быть в будущем
17
- * validationSchema: (path) => [
18
- * pastDate(path.birthDate),
19
- * ]
20
- *
21
- * // С кастомным сообщением
22
- * pastDate(path.birthDate, { message: 'Дата рождения не может быть в будущем' })
23
- * ```
5
+ * Пустые и невалидные даты пропускаются.
24
6
  *
25
7
  * @example
26
8
  * ```typescript
27
- * // Ошибка валидации
28
- * {
29
- * code: 'date_future',
30
- * message: 'Дата не может быть в будущем',
31
- * params: {}
32
- * }
9
+ * validate(path.birthDate, pastDate({ message: 'Дата рождения не может быть в будущем' }));
33
10
  * ```
34
11
  */
35
- export declare function pastDate<TForm, TField extends string | Date | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, options?: ValidateOptions): void;
12
+ export declare function pastDate<TForm = unknown, TField extends string | Date | undefined = string | Date>(options?: ValidateOptions): Validator<TForm, TField>;
@@ -1,40 +1,13 @@
1
- import { ValidateOptions } from '../../types/validation-schema';
2
- import { FieldPathNode } from '../../types';
1
+ import { Validator, ValidateOptions } from '../../types/validation-schema';
3
2
  /**
4
- * Валидатор паттерна (регулярного выражения)
3
+ * Фабрика валидатора регулярного выражения.
5
4
  *
6
- * Проверяет, что значение соответствует указанному регулярному выражению.
7
5
  * Пустые значения пропускаются (используйте `required` для обязательности).
8
6
  *
9
- * @group Validation
10
- * @category Validators
11
- *
12
- * @param fieldPath - Путь к полю для валидации
13
- * @param regex - Регулярное выражение для проверки
14
- * @param options - Опции валидации (message, params)
15
- *
16
- * @example
17
- * ```typescript
18
- * // Только буквы
19
- * pattern(path.name, /^[а-яА-Яa-zA-Z]+$/)
20
- *
21
- * // Только цифры
22
- * pattern(path.code, /^\d+$/)
23
- *
24
- * // С кастомным сообщением
25
- * pattern(path.username, /^[a-z0-9_]+$/i, {
26
- * message: 'Только латинские буквы, цифры и подчёркивание'
27
- * })
28
- * ```
29
- *
30
7
  * @example
31
8
  * ```typescript
32
- * // Ошибка валидации
33
- * {
34
- * code: 'pattern',
35
- * message: 'Значение не соответствует требуемому формату',
36
- * params: { pattern: '^[a-z]+$' }
37
- * }
9
+ * validate(path.name, pattern(/^[а-яА-Яa-zA-Z]+$/));
10
+ * validate(path.code, pattern(/^\d+$/, { message: 'Только цифры' }));
38
11
  * ```
39
12
  */
40
- export declare function pattern<TForm, TField extends string | null | undefined = string>(fieldPath: FieldPathNode<TForm, TField> | undefined, regex: RegExp, options?: ValidateOptions): void;
13
+ export declare function pattern<TForm = unknown, TField extends string | undefined = string>(regex: RegExp, options?: ValidateOptions): Validator<TForm, TField>;