@reformer/core 1.1.0-beta.8 → 2.0.0-beta.10

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 (151) hide show
  1. package/dist/behaviors/compute-from.d.ts +2 -0
  2. package/dist/behaviors/compute-from.js +31 -0
  3. package/dist/behaviors/copy-from.d.ts +2 -0
  4. package/dist/behaviors/copy-from.js +29 -0
  5. package/dist/behaviors/enable-when.d.ts +2 -0
  6. package/dist/behaviors/enable-when.js +25 -0
  7. package/dist/behaviors/reset-when.d.ts +2 -0
  8. package/dist/behaviors/reset-when.js +24 -0
  9. package/dist/behaviors/revalidate-when.d.ts +2 -0
  10. package/dist/behaviors/revalidate-when.js +18 -0
  11. package/dist/behaviors/sync-fields.d.ts +2 -0
  12. package/dist/behaviors/sync-fields.js +41 -0
  13. package/dist/behaviors/transform-value.d.ts +2 -0
  14. package/dist/behaviors/transform-value.js +45 -0
  15. package/dist/behaviors/watch-field.d.ts +2 -0
  16. package/dist/behaviors/watch-field.js +21 -0
  17. package/dist/behaviors.js +27 -20
  18. package/dist/core/behavior/behavior-context.d.ts +27 -13
  19. package/dist/core/behavior/behavior-registry.d.ts +15 -27
  20. package/dist/core/behavior/behaviors/compute-from.d.ts +50 -21
  21. package/dist/core/behavior/behaviors/copy-from.d.ts +39 -14
  22. package/dist/core/behavior/behaviors/enable-when.d.ts +88 -19
  23. package/dist/core/behavior/behaviors/reset-when.d.ts +31 -18
  24. package/dist/core/behavior/behaviors/revalidate-when.d.ts +40 -17
  25. package/dist/core/behavior/behaviors/sync-fields.d.ts +34 -14
  26. package/dist/core/behavior/behaviors/transform-value.d.ts +116 -44
  27. package/dist/core/behavior/behaviors/watch-field.d.ts +66 -21
  28. package/dist/core/behavior/compose-behavior.d.ts +2 -12
  29. package/dist/core/behavior/index.d.ts +0 -1
  30. package/dist/core/behavior/types.d.ts +2 -8
  31. package/dist/core/factories/node-factory.d.ts +6 -29
  32. package/dist/core/nodes/array-node.d.ts +42 -22
  33. package/dist/core/nodes/field-node.d.ts +51 -26
  34. package/dist/core/nodes/form-node.d.ts +18 -20
  35. package/dist/core/nodes/group-node.d.ts +37 -212
  36. package/dist/core/types/deep-schema.d.ts +2 -12
  37. package/dist/core/types/field-path.d.ts +1 -1
  38. package/dist/core/types/form-context.d.ts +27 -27
  39. package/dist/core/types/{group-node-proxy.d.ts → form-proxy.d.ts} +12 -42
  40. package/dist/core/types/index.d.ts +52 -6
  41. package/dist/core/types/validation-schema.d.ts +3 -12
  42. package/dist/core/utils/abstract-registry.d.ts +74 -0
  43. package/dist/core/utils/aggregate-signals.d.ts +71 -0
  44. package/dist/core/utils/create-form.d.ts +3 -20
  45. package/dist/core/utils/error-handler.d.ts +1 -18
  46. package/dist/core/utils/field-path-navigator.d.ts +1 -1
  47. package/dist/core/{validation → utils}/field-path.d.ts +23 -6
  48. package/dist/core/utils/form-observer.d.ts +176 -0
  49. package/dist/core/utils/form-proxy-builder.d.ts +25 -0
  50. package/dist/core/utils/form-submitter.d.ts +121 -0
  51. package/dist/core/utils/index.d.ts +10 -2
  52. package/dist/core/utils/registry-helpers.d.ts +0 -7
  53. package/dist/core/utils/safe-effect.d.ts +73 -0
  54. package/dist/core/utils/status-machine.d.ts +153 -0
  55. package/dist/core/utils/type-guards.d.ts +5 -23
  56. package/dist/core/utils/unique-id.d.ts +53 -0
  57. package/dist/core/validation/core/apply-when.d.ts +3 -9
  58. package/dist/core/validation/core/apply.d.ts +2 -13
  59. package/dist/core/validation/core/validate-async.d.ts +2 -8
  60. package/dist/core/validation/core/validate-tree.d.ts +0 -6
  61. package/dist/core/validation/core/validate.d.ts +1 -7
  62. package/dist/core/validation/index.d.ts +8 -2
  63. package/dist/core/validation/validate-form.d.ts +1 -38
  64. package/dist/core/validation/validation-applicator.d.ts +2 -21
  65. package/dist/core/validation/validation-context.d.ts +67 -28
  66. package/dist/core/validation/validation-registry.d.ts +11 -25
  67. package/dist/core/validation/validators/array-validators.d.ts +2 -12
  68. package/dist/core/validation/validators/date-utils.d.ts +26 -0
  69. package/dist/core/validation/validators/email.d.ts +2 -9
  70. package/dist/core/validation/validators/future-date.d.ts +35 -0
  71. package/dist/core/validation/validators/index.d.ts +7 -1
  72. package/dist/core/validation/validators/is-date.d.ts +36 -0
  73. package/dist/core/validation/validators/max-age.d.ts +36 -0
  74. package/dist/core/validation/validators/max-date.d.ts +36 -0
  75. package/dist/core/validation/validators/max-length.d.ts +3 -10
  76. package/dist/core/validation/validators/max.d.ts +3 -10
  77. package/dist/core/validation/validators/min-age.d.ts +36 -0
  78. package/dist/core/validation/validators/min-date.d.ts +36 -0
  79. package/dist/core/validation/validators/min-length.d.ts +3 -10
  80. package/dist/core/validation/validators/min.d.ts +3 -10
  81. package/dist/core/validation/validators/number.d.ts +2 -9
  82. package/dist/core/validation/validators/past-date.d.ts +35 -0
  83. package/dist/core/validation/validators/pattern.d.ts +2 -9
  84. package/dist/core/validation/validators/phone.d.ts +2 -9
  85. package/dist/core/validation/validators/required.d.ts +2 -9
  86. package/dist/core/validation/validators/url.d.ts +2 -9
  87. package/dist/date-utils-xUWFslTj.js +29 -0
  88. package/dist/field-path-DuKdGcIE.js +66 -0
  89. package/dist/hooks/types.d.ts +328 -0
  90. package/dist/hooks/useArrayLength.d.ts +31 -0
  91. package/dist/hooks/useFormControl.d.ts +15 -39
  92. package/dist/hooks/useFormControlValue.d.ts +167 -0
  93. package/dist/hooks/useHiddenCondition.d.ts +25 -0
  94. package/dist/hooks/useSignalSubscription.d.ts +17 -0
  95. package/dist/index-D25LsbRm.js +73 -0
  96. package/dist/index.d.ts +5 -1
  97. package/dist/index.js +1248 -1357
  98. package/dist/registry-helpers-Bv_BJ1s-.js +615 -0
  99. package/dist/safe-effect-Dh8uw81c.js +20 -0
  100. package/dist/validate-C3XiA_zf.js +10 -0
  101. package/dist/validators/email.d.ts +2 -0
  102. package/dist/validators/email.js +13 -0
  103. package/dist/validators/future-date.d.ts +2 -0
  104. package/dist/validators/future-date.js +20 -0
  105. package/dist/validators/is-date.d.ts +2 -0
  106. package/dist/validators/is-date.js +12 -0
  107. package/dist/validators/max-age.d.ts +2 -0
  108. package/dist/validators/max-age.js +20 -0
  109. package/dist/validators/max-date.d.ts +2 -0
  110. package/dist/validators/max-date.js +20 -0
  111. package/dist/validators/max-length.d.ts +2 -0
  112. package/dist/validators/max-length.js +11 -0
  113. package/dist/validators/max.d.ts +2 -0
  114. package/dist/validators/max.js +11 -0
  115. package/dist/validators/min-age.d.ts +2 -0
  116. package/dist/validators/min-age.js +20 -0
  117. package/dist/validators/min-date.d.ts +2 -0
  118. package/dist/validators/min-date.js +20 -0
  119. package/dist/validators/min-length.d.ts +2 -0
  120. package/dist/validators/min-length.js +11 -0
  121. package/dist/validators/min.d.ts +2 -0
  122. package/dist/validators/min.js +11 -0
  123. package/dist/validators/number.d.ts +2 -0
  124. package/dist/validators/number.js +35 -0
  125. package/dist/validators/past-date.d.ts +2 -0
  126. package/dist/validators/past-date.js +20 -0
  127. package/dist/validators/pattern.d.ts +2 -0
  128. package/dist/validators/pattern.js +11 -0
  129. package/dist/validators/phone.d.ts +2 -0
  130. package/dist/validators/phone.js +35 -0
  131. package/dist/validators/required.d.ts +2 -0
  132. package/dist/validators/required.js +15 -0
  133. package/dist/validators/url.d.ts +2 -0
  134. package/dist/validators/url.js +19 -0
  135. package/dist/validators-BGsNOgT1.js +207 -0
  136. package/dist/validators.js +53 -28
  137. package/llms.txt +8069 -357
  138. package/package.json +87 -8
  139. package/dist/behaviors-BRaiR-UY.js +0 -528
  140. package/dist/core/behavior/behavior-applicator.d.ts +0 -71
  141. package/dist/core/behavior/create-field-path.d.ts +0 -20
  142. package/dist/core/context/form-context-impl.d.ts +0 -29
  143. package/dist/core/nodes/group-node/field-registry.d.ts +0 -191
  144. package/dist/core/nodes/group-node/index.d.ts +0 -11
  145. package/dist/core/nodes/group-node/proxy-builder.d.ts +0 -71
  146. package/dist/core/nodes/group-node/state-manager.d.ts +0 -184
  147. package/dist/core/utils/debounce.d.ts +0 -160
  148. package/dist/core/utils/resources.d.ts +0 -41
  149. package/dist/core/validation/validators/date.d.ts +0 -38
  150. package/dist/registry-helpers-BfCZcMkO.js +0 -426
  151. package/dist/validators-DjXtDVoE.js +0 -455
@@ -1,15 +1,5 @@
1
- /**
2
- * Валидаторы для массивов
3
- *
4
- * Предоставляет специализированные функции для валидации ArrayNode:
5
- * - notEmpty: проверка что массив не пустой
6
- * - validateItems: применение validation schema к каждому элементу
7
- *
8
- * @group Validation
9
- * @category Validators
10
- */
11
- import type { ValidateOptions, ValidationSchemaFn } from '../../types/validation-schema';
12
- import type { FieldPathNode } from '../../types';
1
+ import { ValidateOptions, ValidationSchemaFn } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
13
3
  /**
14
4
  * Проверить что массив содержит хотя бы один элемент
15
5
  *
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Утилиты для работы с датами в валидаторах
3
+ *
4
+ * @group Validation
5
+ * @category Validators
6
+ * @module validators/date-utils
7
+ */
8
+ /**
9
+ * Парсит значение в объект Date
10
+ *
11
+ * @param value - Значение для парсинга (Date, string или undefined)
12
+ * @returns Date объект или null если парсинг не удался
13
+ */
14
+ export declare function parseDate(value: string | Date | null | undefined): Date | null;
15
+ /**
16
+ * Возвращает сегодняшнюю дату с обнулённым временем
17
+ */
18
+ export declare function getToday(): Date;
19
+ /**
20
+ * Нормализует дату, обнуляя время
21
+ */
22
+ export declare function normalizeDate(date: Date): Date;
23
+ /**
24
+ * Вычисляет возраст на основе даты рождения
25
+ */
26
+ export declare function calculateAge(birthDate: Date): number;
@@ -1,12 +1,5 @@
1
- /**
2
- * Валидатор формата email
3
- *
4
- * @group Validation
5
- * @category Validators
6
- * @module validators/email
7
- */
8
- import type { ValidateOptions } from '../../types/validation-schema';
9
- import type { FieldPathNode } from '../../types';
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
10
3
  /**
11
4
  * Валидатор формата email
12
5
  *
@@ -0,0 +1,35 @@
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
3
+ /**
4
+ * Проверяет, что дата находится в будущем (не в прошлом)
5
+ *
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
+ * ```
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * // Ошибка валидации
28
+ * {
29
+ * code: 'date_past',
30
+ * message: 'Дата не может быть в прошлом',
31
+ * params: {}
32
+ * }
33
+ * ```
34
+ */
35
+ export declare function futureDate<TForm, TField extends string | Date | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, options?: ValidateOptions): void;
@@ -11,4 +11,10 @@ export { pattern } from './pattern';
11
11
  export { url } from './url';
12
12
  export { phone, type PhoneFormat } from './phone';
13
13
  export { number } from './number';
14
- export { date } from './date';
14
+ export { isDate } from './is-date';
15
+ export { minDate } from './min-date';
16
+ export { maxDate } from './max-date';
17
+ export { pastDate } from './past-date';
18
+ export { futureDate } from './future-date';
19
+ export { minAge } from './min-age';
20
+ export { maxAge } from './max-age';
@@ -0,0 +1,36 @@
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
3
+ /**
4
+ * Проверяет, что значение является валидной датой
5
+ *
6
+ * Пустые значения пропускаются (используйте `required` для обязательности).
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
+ * isDate(path.birthDate),
19
+ * isDate(path.eventDate),
20
+ * ]
21
+ *
22
+ * // С кастомным сообщением
23
+ * isDate(path.birthDate, { message: 'Введите корректную дату' })
24
+ * ```
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // Ошибка валидации
29
+ * {
30
+ * code: 'date_invalid',
31
+ * message: 'Неверный формат даты',
32
+ * params: {}
33
+ * }
34
+ * ```
35
+ */
36
+ export declare function isDate<TForm, TField extends string | Date | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, options?: ValidateOptions): void;
@@ -0,0 +1,36 @@
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
3
+ /**
4
+ * Проверяет, что возраст (вычисленный из даты рождения) не больше указанного
5
+ *
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
+ * ```
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // Ошибка валидации
29
+ * {
30
+ * code: 'date_max_age',
31
+ * message: 'Максимальный возраст: 65 лет',
32
+ * params: { maxAge: 65, currentAge: 70 }
33
+ * }
34
+ * ```
35
+ */
36
+ export declare function maxAge<TForm, TField extends string | Date | null | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, maxAgeValue: number, options?: ValidateOptions): void;
@@ -0,0 +1,36 @@
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
3
+ /**
4
+ * Проверяет, что дата не позже указанной максимальной
5
+ *
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
+ * ```
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // Ошибка валидации
29
+ * {
30
+ * code: 'date_max',
31
+ * message: 'Дата должна быть не позднее 31.12.2025',
32
+ * params: { maxDate: Date }
33
+ * }
34
+ * ```
35
+ */
36
+ export declare function maxDate<TForm, TField extends string | Date | null | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, maxDateValue: Date, options?: ValidateOptions): void;
@@ -1,12 +1,5 @@
1
- /**
2
- * Валидатор максимальной длины строки
3
- *
4
- * @group Validation
5
- * @category Validators
6
- * @module validators/maxLength
7
- */
8
- import type { ValidateOptions } from '../../types/validation-schema';
9
- import type { FieldPathNode } from '../../types';
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
10
3
  /**
11
4
  * Валидатор максимальной длины строки
12
5
  *
@@ -42,4 +35,4 @@ import type { FieldPathNode } from '../../types';
42
35
  * }
43
36
  * ```
44
37
  */
45
- export declare function maxLength<TForm, TField extends string | undefined = string>(fieldPath: FieldPathNode<TForm, TField> | undefined, maxLen: number, options?: ValidateOptions): void;
38
+ export declare function maxLength<TForm, TField extends string | null | undefined = string>(fieldPath: FieldPathNode<TForm, TField> | undefined, maxLen: number, options?: ValidateOptions): void;
@@ -1,12 +1,5 @@
1
- /**
2
- * Валидатор максимального значения
3
- *
4
- * @group Validation
5
- * @category Validators
6
- * @module validators/max
7
- */
8
- import type { ValidateOptions } from '../../types/validation-schema';
9
- import type { FieldPathNode } from '../../types';
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
10
3
  /**
11
4
  * Валидатор максимального числового значения
12
5
  *
@@ -42,4 +35,4 @@ import type { FieldPathNode } from '../../types';
42
35
  * }
43
36
  * ```
44
37
  */
45
- export declare function max<TForm, TField extends number | undefined = number>(fieldPath: FieldPathNode<TForm, TField> | undefined, maxValue: number, options?: ValidateOptions): void;
38
+ export declare function max<TForm, TField extends number | null | undefined = number>(fieldPath: FieldPathNode<TForm, TField> | undefined, maxValue: number, options?: ValidateOptions): void;
@@ -0,0 +1,36 @@
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
3
+ /**
4
+ * Проверяет, что возраст (вычисленный из даты рождения) не меньше указанного
5
+ *
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
+ * ```
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // Ошибка валидации
29
+ * {
30
+ * code: 'date_min_age',
31
+ * message: 'Минимальный возраст: 18 лет',
32
+ * params: { minAge: 18, currentAge: 16 }
33
+ * }
34
+ * ```
35
+ */
36
+ export declare function minAge<TForm, TField extends string | Date | null | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, minAgeValue: number, options?: ValidateOptions): void;
@@ -0,0 +1,36 @@
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
3
+ /**
4
+ * Проверяет, что дата не раньше указанной минимальной
5
+ *
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
+ * ```
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // Ошибка валидации
29
+ * {
30
+ * code: 'date_min',
31
+ * message: 'Дата должна быть не ранее 01.01.2024',
32
+ * params: { minDate: Date }
33
+ * }
34
+ * ```
35
+ */
36
+ export declare function minDate<TForm, TField extends string | Date | null | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, minDateValue: Date, options?: ValidateOptions): void;
@@ -1,12 +1,5 @@
1
- /**
2
- * Валидатор минимальной длины строки
3
- *
4
- * @group Validation
5
- * @category Validators
6
- * @module validators/minLength
7
- */
8
- import type { ValidateOptions } from '../../types/validation-schema';
9
- import type { FieldPathNode } from '../../types';
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
10
3
  /**
11
4
  * Валидатор минимальной длины строки
12
5
  *
@@ -42,4 +35,4 @@ import type { FieldPathNode } from '../../types';
42
35
  * }
43
36
  * ```
44
37
  */
45
- export declare function minLength<TForm, TField extends string | undefined = string>(fieldPath: FieldPathNode<TForm, TField> | undefined, minLen: number, options?: ValidateOptions): void;
38
+ export declare function minLength<TForm, TField extends string | null | undefined = string>(fieldPath: FieldPathNode<TForm, TField> | undefined, minLen: number, options?: ValidateOptions): void;
@@ -1,12 +1,5 @@
1
- /**
2
- * Валидатор минимального значения
3
- *
4
- * @group Validation
5
- * @category Validators
6
- * @module validators/min
7
- */
8
- import type { ValidateOptions } from '../../types/validation-schema';
9
- import type { FieldPathNode } from '../../types';
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
10
3
  /**
11
4
  * Валидатор минимального числового значения
12
5
  *
@@ -42,4 +35,4 @@ import type { FieldPathNode } from '../../types';
42
35
  * }
43
36
  * ```
44
37
  */
45
- export declare function min<TForm, TField extends number | undefined = number>(fieldPath: FieldPathNode<TForm, TField> | undefined, minValue: number, options?: ValidateOptions): void;
38
+ export declare function min<TForm, TField extends number | null | undefined = number>(fieldPath: FieldPathNode<TForm, TField> | undefined, minValue: number, options?: ValidateOptions): void;
@@ -1,12 +1,5 @@
1
- /**
2
- * Валидатор числовых значений
3
- *
4
- * @group Validation
5
- * @category Validators
6
- * @module validators/number
7
- */
8
- import type { ValidateOptions } from '../../types/validation-schema';
9
- import type { FieldPathNode } from '../../types';
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
10
3
  /**
11
4
  * Адаптер для number валидатора
12
5
  * Проверяет, что значение является числом и соответствует заданным ограничениям
@@ -0,0 +1,35 @@
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
3
+ /**
4
+ * Проверяет, что дата находится в прошлом (не в будущем)
5
+ *
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
+ * ```
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * // Ошибка валидации
28
+ * {
29
+ * code: 'date_future',
30
+ * message: 'Дата не может быть в будущем',
31
+ * params: {}
32
+ * }
33
+ * ```
34
+ */
35
+ export declare function pastDate<TForm, TField extends string | Date | undefined = string | Date>(fieldPath: FieldPathNode<TForm, TField> | undefined, options?: ValidateOptions): void;
@@ -1,12 +1,5 @@
1
- /**
2
- * Валидатор паттерна (регулярного выражения)
3
- *
4
- * @group Validation
5
- * @category Validators
6
- * @module validators/pattern
7
- */
8
- import type { ValidateOptions } from '../../types/validation-schema';
9
- import type { FieldPathNode } from '../../types';
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
10
3
  /**
11
4
  * Валидатор паттерна (регулярного выражения)
12
5
  *
@@ -1,12 +1,5 @@
1
- /**
2
- * Валидатор номера телефона
3
- *
4
- * @group Validation
5
- * @category Validators
6
- * @module validators/phone
7
- */
8
- import type { ValidateOptions } from '../../types/validation-schema';
9
- import type { FieldPathNode } from '../../types';
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
10
3
  /**
11
4
  * Формат телефона для валидации
12
5
  *
@@ -1,12 +1,5 @@
1
- /**
2
- * Валидатор обязательного поля
3
- *
4
- * @group Validation
5
- * @category Validators
6
- * @module validators/required
7
- */
8
- import type { ValidateOptions } from '../../types/validation-schema';
9
- import type { FieldPathNode } from '../../types';
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
10
3
  /**
11
4
  * Валидатор обязательного поля
12
5
  *
@@ -1,12 +1,5 @@
1
- /**
2
- * Валидатор URL
3
- *
4
- * @group Validation
5
- * @category Validators
6
- * @module validators/url
7
- */
8
- import type { ValidateOptions } from '../../types/validation-schema';
9
- import type { FieldPathNode } from '../../types';
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
10
3
  /**
11
4
  * Адаптер для URL валидатора
12
5
  * Поддерживает опциональные поля (string | undefined)
@@ -0,0 +1,29 @@
1
+ function r(t) {
2
+ if (t == null || t === "")
3
+ return null;
4
+ if (t instanceof Date)
5
+ return isNaN(t.getTime()) ? null : t;
6
+ if (typeof t == "string") {
7
+ const n = new Date(t);
8
+ return isNaN(n.getTime()) ? null : n;
9
+ }
10
+ return null;
11
+ }
12
+ function e() {
13
+ const t = /* @__PURE__ */ new Date();
14
+ return t.setHours(0, 0, 0, 0), t;
15
+ }
16
+ function o(t) {
17
+ const n = new Date(t);
18
+ return n.setHours(0, 0, 0, 0), n;
19
+ }
20
+ function i(t) {
21
+ const n = e();
22
+ return Math.floor((n.getTime() - t.getTime()) / (365.25 * 24 * 60 * 60 * 1e3));
23
+ }
24
+ export {
25
+ i as c,
26
+ e as g,
27
+ o as n,
28
+ r as p
29
+ };
@@ -0,0 +1,66 @@
1
+ function c() {
2
+ return _("");
3
+ }
4
+ function _(t) {
5
+ return new Proxy({}, {
6
+ get(r, i) {
7
+ if (typeof i == "symbol")
8
+ return;
9
+ if (i === "__path" || i === "__fieldPath")
10
+ return t || i;
11
+ if (i === "__key") {
12
+ const n = t.split(".");
13
+ return n[n.length - 1] || i;
14
+ }
15
+ if (i === "then" || i === "catch" || i === "finally" || i === "constructor" || i === "toString" || i === "valueOf" || i === "toJSON")
16
+ return;
17
+ const f = t ? `${t}.${i}` : i, a = {
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
+ __key: i,
20
+ __path: f,
21
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
+ __formType: void 0,
23
+ __fieldType: void 0
24
+ };
25
+ return new Proxy(a, {
26
+ get(n, e) {
27
+ if (typeof e != "symbol") {
28
+ if (e === "__path" || e === "__fieldPath") return f;
29
+ if (e === "__key") return i;
30
+ if (e !== "__formType" && e !== "__fieldType" && !(e === "then" || e === "catch" || e === "finally" || e === "constructor" || e === "toString" || e === "valueOf" || e === "toJSON"))
31
+ return _(`${f}.${e}`);
32
+ }
33
+ }
34
+ });
35
+ }
36
+ });
37
+ }
38
+ function u(t) {
39
+ if (typeof t == "string")
40
+ return t;
41
+ if (t && typeof t == "object") {
42
+ const r = t.__path;
43
+ if (typeof r == "string")
44
+ return r;
45
+ }
46
+ throw new Error("Invalid field path node: " + JSON.stringify(t));
47
+ }
48
+ function y(t) {
49
+ const r = u(t);
50
+ return _(r);
51
+ }
52
+ function l(t) {
53
+ if (t && typeof t == "object" && "__key" in t)
54
+ return t.__key;
55
+ if (typeof t == "string") {
56
+ const r = t.split(".");
57
+ return r[r.length - 1];
58
+ }
59
+ throw new Error("Invalid field path node");
60
+ }
61
+ export {
62
+ l as a,
63
+ c,
64
+ u as e,
65
+ y as t
66
+ };