@reformer/core 1.0.0-beta.1

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 (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +143 -0
  3. package/dist/behaviors/compute-from.d.ts +2 -0
  4. package/dist/behaviors/compute-from.js +31 -0
  5. package/dist/behaviors/copy-from.d.ts +2 -0
  6. package/dist/behaviors/copy-from.js +29 -0
  7. package/dist/behaviors/enable-when.d.ts +2 -0
  8. package/dist/behaviors/enable-when.js +25 -0
  9. package/dist/behaviors/reset-when.d.ts +2 -0
  10. package/dist/behaviors/reset-when.js +24 -0
  11. package/dist/behaviors/revalidate-when.d.ts +2 -0
  12. package/dist/behaviors/revalidate-when.js +18 -0
  13. package/dist/behaviors/sync-fields.d.ts +2 -0
  14. package/dist/behaviors/sync-fields.js +41 -0
  15. package/dist/behaviors/transform-value.d.ts +2 -0
  16. package/dist/behaviors/transform-value.js +45 -0
  17. package/dist/behaviors/watch-field.d.ts +2 -0
  18. package/dist/behaviors/watch-field.js +21 -0
  19. package/dist/behaviors.d.ts +6 -0
  20. package/dist/behaviors.js +29 -0
  21. package/dist/core/behavior/behavior-context.d.ts +47 -0
  22. package/dist/core/behavior/behavior-registry.d.ts +85 -0
  23. package/dist/core/behavior/behaviors/compute-from.d.ts +70 -0
  24. package/dist/core/behavior/behaviors/copy-from.d.ts +56 -0
  25. package/dist/core/behavior/behaviors/enable-when.d.ts +118 -0
  26. package/dist/core/behavior/behaviors/index.d.ts +11 -0
  27. package/dist/core/behavior/behaviors/reset-when.d.ts +64 -0
  28. package/dist/core/behavior/behaviors/revalidate-when.d.ts +53 -0
  29. package/dist/core/behavior/behaviors/sync-fields.d.ts +48 -0
  30. package/dist/core/behavior/behaviors/transform-value.d.ts +192 -0
  31. package/dist/core/behavior/behaviors/watch-field.d.ts +80 -0
  32. package/dist/core/behavior/compose-behavior.d.ts +96 -0
  33. package/dist/core/behavior/index.d.ts +11 -0
  34. package/dist/core/behavior/types.d.ts +146 -0
  35. package/dist/core/factories/index.d.ts +6 -0
  36. package/dist/core/factories/node-factory.d.ts +186 -0
  37. package/dist/core/nodes/array-node.d.ts +328 -0
  38. package/dist/core/nodes/field-node.d.ts +294 -0
  39. package/dist/core/nodes/form-node.d.ts +340 -0
  40. package/dist/core/nodes/group-node.d.ts +319 -0
  41. package/dist/core/types/deep-schema.d.ts +68 -0
  42. package/dist/core/types/field-path.d.ts +42 -0
  43. package/dist/core/types/form-context.d.ts +89 -0
  44. package/dist/core/types/form-proxy.d.ts +105 -0
  45. package/dist/core/types/index.d.ts +209 -0
  46. package/dist/core/types/validation-schema.d.ts +95 -0
  47. package/dist/core/utils/abstract-registry.d.ts +74 -0
  48. package/dist/core/utils/aggregate-signals.d.ts +71 -0
  49. package/dist/core/utils/create-form.d.ts +44 -0
  50. package/dist/core/utils/error-handler.d.ts +163 -0
  51. package/dist/core/utils/field-path-navigator.d.ts +240 -0
  52. package/dist/core/utils/field-path.d.ts +60 -0
  53. package/dist/core/utils/form-observer.d.ts +176 -0
  54. package/dist/core/utils/form-proxy-builder.d.ts +25 -0
  55. package/dist/core/utils/form-submitter.d.ts +121 -0
  56. package/dist/core/utils/index.d.ts +22 -0
  57. package/dist/core/utils/registry-helpers.d.ts +43 -0
  58. package/dist/core/utils/registry-stack.d.ts +69 -0
  59. package/dist/core/utils/safe-effect.d.ts +73 -0
  60. package/dist/core/utils/status-machine.d.ts +153 -0
  61. package/dist/core/utils/subscription-manager.d.ts +180 -0
  62. package/dist/core/utils/type-guards.d.ts +98 -0
  63. package/dist/core/utils/unique-id.d.ts +53 -0
  64. package/dist/core/validation/core/apply-when.d.ts +22 -0
  65. package/dist/core/validation/core/apply.d.ts +52 -0
  66. package/dist/core/validation/core/index.d.ts +8 -0
  67. package/dist/core/validation/core/validate-async.d.ts +36 -0
  68. package/dist/core/validation/core/validate-tree.d.ts +35 -0
  69. package/dist/core/validation/core/validate.d.ts +26 -0
  70. package/dist/core/validation/index.d.ts +27 -0
  71. package/dist/core/validation/validate-form.d.ts +48 -0
  72. package/dist/core/validation/validation-applicator.d.ts +70 -0
  73. package/dist/core/validation/validation-context.d.ts +86 -0
  74. package/dist/core/validation/validation-registry.d.ts +142 -0
  75. package/dist/core/validation/validators/array-validators.d.ts +53 -0
  76. package/dist/core/validation/validators/date-utils.d.ts +26 -0
  77. package/dist/core/validation/validators/email.d.ts +37 -0
  78. package/dist/core/validation/validators/future-date.d.ts +35 -0
  79. package/dist/core/validation/validators/index.d.ts +20 -0
  80. package/dist/core/validation/validators/is-date.d.ts +36 -0
  81. package/dist/core/validation/validators/max-age.d.ts +36 -0
  82. package/dist/core/validation/validators/max-date.d.ts +36 -0
  83. package/dist/core/validation/validators/max-length.d.ts +38 -0
  84. package/dist/core/validation/validators/max.d.ts +38 -0
  85. package/dist/core/validation/validators/min-age.d.ts +36 -0
  86. package/dist/core/validation/validators/min-date.d.ts +36 -0
  87. package/dist/core/validation/validators/min-length.d.ts +38 -0
  88. package/dist/core/validation/validators/min.d.ts +38 -0
  89. package/dist/core/validation/validators/number.d.ts +31 -0
  90. package/dist/core/validation/validators/past-date.d.ts +35 -0
  91. package/dist/core/validation/validators/pattern.d.ts +40 -0
  92. package/dist/core/validation/validators/phone.d.ts +27 -0
  93. package/dist/core/validation/validators/required.d.ts +41 -0
  94. package/dist/core/validation/validators/url.d.ts +22 -0
  95. package/dist/date-utils-xUWFslTj.js +29 -0
  96. package/dist/field-path-DuKdGcIE.js +66 -0
  97. package/dist/hooks/types.d.ts +328 -0
  98. package/dist/hooks/useArrayLength.d.ts +31 -0
  99. package/dist/hooks/useFormControl.d.ts +24 -0
  100. package/dist/hooks/useFormControlValue.d.ts +167 -0
  101. package/dist/hooks/useHiddenCondition.d.ts +25 -0
  102. package/dist/hooks/useSignalSubscription.d.ts +17 -0
  103. package/dist/index-D25LsbRm.js +73 -0
  104. package/dist/index.d.ts +17 -0
  105. package/dist/index.js +3271 -0
  106. package/dist/registry-helpers-Bv_BJ1s-.js +615 -0
  107. package/dist/safe-effect-Dh8uw81c.js +20 -0
  108. package/dist/validate-C3XiA_zf.js +10 -0
  109. package/dist/validators/email.d.ts +2 -0
  110. package/dist/validators/email.js +13 -0
  111. package/dist/validators/future-date.d.ts +2 -0
  112. package/dist/validators/future-date.js +20 -0
  113. package/dist/validators/is-date.d.ts +2 -0
  114. package/dist/validators/is-date.js +12 -0
  115. package/dist/validators/max-age.d.ts +2 -0
  116. package/dist/validators/max-age.js +20 -0
  117. package/dist/validators/max-date.d.ts +2 -0
  118. package/dist/validators/max-date.js +20 -0
  119. package/dist/validators/max-length.d.ts +2 -0
  120. package/dist/validators/max-length.js +11 -0
  121. package/dist/validators/max.d.ts +2 -0
  122. package/dist/validators/max.js +11 -0
  123. package/dist/validators/min-age.d.ts +2 -0
  124. package/dist/validators/min-age.js +20 -0
  125. package/dist/validators/min-date.d.ts +2 -0
  126. package/dist/validators/min-date.js +20 -0
  127. package/dist/validators/min-length.d.ts +2 -0
  128. package/dist/validators/min-length.js +11 -0
  129. package/dist/validators/min.d.ts +2 -0
  130. package/dist/validators/min.js +11 -0
  131. package/dist/validators/number.d.ts +2 -0
  132. package/dist/validators/number.js +35 -0
  133. package/dist/validators/past-date.d.ts +2 -0
  134. package/dist/validators/past-date.js +20 -0
  135. package/dist/validators/pattern.d.ts +2 -0
  136. package/dist/validators/pattern.js +11 -0
  137. package/dist/validators/phone.d.ts +2 -0
  138. package/dist/validators/phone.js +35 -0
  139. package/dist/validators/required.d.ts +2 -0
  140. package/dist/validators/required.js +15 -0
  141. package/dist/validators/url.d.ts +2 -0
  142. package/dist/validators/url.js +19 -0
  143. package/dist/validators-BGsNOgT1.js +207 -0
  144. package/dist/validators.d.ts +6 -0
  145. package/dist/validators.js +56 -0
  146. package/llms.txt +9351 -0
  147. package/package.json +166 -0
@@ -0,0 +1,38 @@
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
3
+ /**
4
+ * Валидатор минимальной длины строки
5
+ *
6
+ * Проверяет, что длина строки не меньше указанного минимума.
7
+ * Пустые значения пропускаются (используйте `required` для обязательности).
8
+ *
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
+ * @example
29
+ * ```typescript
30
+ * // Ошибка валидации
31
+ * {
32
+ * code: 'minLength',
33
+ * message: 'Минимальная длина: 8 символов',
34
+ * params: { minLength: 8, actualLength: 3 }
35
+ * }
36
+ * ```
37
+ */
38
+ export declare function minLength<TForm, TField extends string | null | undefined = string>(fieldPath: FieldPathNode<TForm, TField> | undefined, minLen: number, options?: ValidateOptions): void;
@@ -0,0 +1,38 @@
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
3
+ /**
4
+ * Валидатор минимального числового значения
5
+ *
6
+ * Проверяет, что числовое значение не меньше указанного минимума.
7
+ * Пустые значения пропускаются (используйте `required` для обязательности).
8
+ *
9
+ * @group Validation
10
+ * @category Validators
11
+ *
12
+ * @param fieldPath - Путь к полю для валидации
13
+ * @param minValue - Минимально допустимое значение
14
+ * @param options - Опции валидации (message, params)
15
+ *
16
+ * @example
17
+ * ```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
+ * ```
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * // Ошибка валидации
31
+ * {
32
+ * code: 'min',
33
+ * message: 'Минимальное значение: 18',
34
+ * params: { min: 18, actual: 16 }
35
+ * }
36
+ * ```
37
+ */
38
+ export declare function min<TForm, TField extends number | null | undefined = number>(fieldPath: FieldPathNode<TForm, TField> | undefined, minValue: number, options?: ValidateOptions): void;
@@ -0,0 +1,31 @@
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
3
+ /**
4
+ * Адаптер для number валидатора
5
+ * Проверяет, что значение является числом и соответствует заданным ограничениям
6
+ *
7
+ * @group Validation
8
+ * @category Validators
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * number(path.age);
13
+ * number(path.price, { min: 0, max: 1000000 });
14
+ * number(path.percentage, { min: 0, max: 100, integer: true });
15
+ * number(path.rating, { min: 0, max: 5, multipleOf: 0.5 });
16
+ * ```
17
+ */
18
+ export declare function number<TForm, TField extends number | undefined = number>(fieldPath: FieldPathNode<TForm, TField> | undefined, options?: ValidateOptions & {
19
+ /** Минимальное значение (включительно) */
20
+ min?: number;
21
+ /** Максимальное значение (включительно) */
22
+ max?: number;
23
+ /** Требовать целое число */
24
+ integer?: boolean;
25
+ /** Значение должно быть кратно этому числу */
26
+ multipleOf?: number;
27
+ /** Разрешить отрицательные числа (по умолчанию true) */
28
+ allowNegative?: boolean;
29
+ /** Разрешить ноль (по умолчанию true) */
30
+ allowZero?: boolean;
31
+ }): void;
@@ -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;
@@ -0,0 +1,40 @@
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
3
+ /**
4
+ * Валидатор паттерна (регулярного выражения)
5
+ *
6
+ * Проверяет, что значение соответствует указанному регулярному выражению.
7
+ * Пустые значения пропускаются (используйте `required` для обязательности).
8
+ *
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
+ * @example
31
+ * ```typescript
32
+ * // Ошибка валидации
33
+ * {
34
+ * code: 'pattern',
35
+ * message: 'Значение не соответствует требуемому формату',
36
+ * params: { pattern: '^[a-z]+$' }
37
+ * }
38
+ * ```
39
+ */
40
+ export declare function pattern<TForm, TField extends string | null | undefined = string>(fieldPath: FieldPathNode<TForm, TField> | undefined, regex: RegExp, options?: ValidateOptions): void;
@@ -0,0 +1,27 @@
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
3
+ /**
4
+ * Формат телефона для валидации
5
+ *
6
+ * @group Validation
7
+ * @category Validators
8
+ */
9
+ export type PhoneFormat = 'international' | 'ru' | 'us' | 'any';
10
+ /**
11
+ * Адаптер для phone валидатора
12
+ * Поддерживает опциональные поля (string | undefined)
13
+ *
14
+ * @group Validation
15
+ * @category Validators
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * phone(path.phoneNumber);
20
+ * phone(path.phoneNumber, { format: 'ru' });
21
+ * phone(path.phoneNumber, { format: 'international', message: 'Неверный формат телефона' });
22
+ * ```
23
+ */
24
+ export declare function phone<TForm, TField extends string | null | undefined = string>(fieldPath: FieldPathNode<TForm, TField> | undefined, options?: ValidateOptions & {
25
+ /** Формат телефона */
26
+ format?: PhoneFormat;
27
+ }): void;
@@ -0,0 +1,41 @@
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
3
+ /**
4
+ * Валидатор обязательного поля
5
+ *
6
+ * Проверяет, что поле имеет непустое значение.
7
+ * Пустыми считаются: `null`, `undefined`, `''` (пустая строка).
8
+ * Для boolean полей требуется значение `true`.
9
+ *
10
+ * @group Validation
11
+ * @category Validators
12
+ *
13
+ * @param fieldPath - Путь к полю для валидации
14
+ * @param options - Опции валидации (message, params)
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // Базовое использование
19
+ * validationSchema: (path, { validate }) => [
20
+ * required(path.name),
21
+ * required(path.email),
22
+ * ]
23
+ *
24
+ * // С кастомным сообщением
25
+ * required(path.phone, { message: 'Укажите номер телефона' })
26
+ *
27
+ * // Для checkbox (требует true)
28
+ * required(path.agreeToTerms, { message: 'Необходимо принять условия' })
29
+ * ```
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * // Ошибка валидации
34
+ * {
35
+ * code: 'required',
36
+ * message: 'Поле обязательно для заполнения',
37
+ * params: {}
38
+ * }
39
+ * ```
40
+ */
41
+ export declare function required<TForm, TField>(fieldPath: FieldPathNode<TForm, TField> | undefined, options?: ValidateOptions): void;
@@ -0,0 +1,22 @@
1
+ import { ValidateOptions } from '../../types/validation-schema';
2
+ import { FieldPathNode } from '../../types';
3
+ /**
4
+ * Адаптер для URL валидатора
5
+ * Поддерживает опциональные поля (string | undefined)
6
+ *
7
+ * @group Validation
8
+ * @category Validators
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * url(path.website);
13
+ * url(path.website, { message: 'Введите корректный URL' });
14
+ * url(path.website, { requireProtocol: true });
15
+ * ```
16
+ */
17
+ export declare function url<TForm, TField extends string | null | undefined = string>(fieldPath: FieldPathNode<TForm, TField> | undefined, options?: ValidateOptions & {
18
+ /** Требовать наличие протокола (http:// или https://) */
19
+ requireProtocol?: boolean;
20
+ /** Разрешенные протоколы */
21
+ allowedProtocols?: string[];
22
+ }): void;
@@ -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
+ };