@reformer/core 11.0.0-beta.3 → 11.0.0-beta.4

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 (113) hide show
  1. package/dist/behaviors.d.ts +1 -1
  2. package/dist/behaviors.js +37 -37
  3. package/dist/create-model-Dxh9cfLp.js +97 -0
  4. package/dist/form/behaviors/collections.d.ts +50 -0
  5. package/dist/form/behaviors/context.d.ts +23 -0
  6. package/dist/form/behaviors/index.d.ts +28 -0
  7. package/dist/form/behaviors/internals.d.ts +26 -0
  8. package/dist/form/{behaviors-node.d.ts → behaviors/node.d.ts} +3 -3
  9. package/dist/form/behaviors/operators.d.ts +51 -0
  10. package/dist/form/behaviors/types.d.ts +17 -0
  11. package/dist/form/create-core-form.d.ts +3 -3
  12. package/dist/form/create-form.d.ts +1 -1
  13. package/dist/form/index.d.ts +10 -16
  14. package/dist/form/nodes/model-array-node.d.ts +1 -1
  15. package/dist/form/types/contracts.d.ts +9 -6
  16. package/dist/form/types/validation-schema.d.ts +1 -1
  17. package/dist/form/{validation-config.d.ts → validation/config.d.ts} +3 -3
  18. package/dist/form/validation/context.d.ts +27 -0
  19. package/dist/form/{error-handler.d.ts → validation/error-handler.d.ts} +1 -1
  20. package/dist/form/validation/index.d.ts +23 -28
  21. package/dist/form/validation/operators.d.ts +42 -0
  22. package/dist/form/validation/run.d.ts +45 -0
  23. package/dist/form/{validation-strategy.d.ts → validation/strategy.d.ts} +2 -2
  24. package/dist/form/validation/types.d.ts +28 -0
  25. package/dist/form/{validation/validators → validators}/date-utils.d.ts +1 -1
  26. package/dist/form/{validation/validators → validators}/email.d.ts +1 -1
  27. package/dist/form/{validation/validators → validators}/file-type.d.ts +1 -1
  28. package/dist/form/{validation/validators → validators}/file-utils.d.ts +1 -1
  29. package/dist/form/{validation/validators → validators}/future-date.d.ts +1 -1
  30. package/dist/form/{validation/validators → validators}/index.d.ts +6 -4
  31. package/dist/form/{validation/validators → validators}/integer.d.ts +1 -1
  32. package/dist/form/{validation/validators → validators}/is-date.d.ts +1 -1
  33. package/dist/form/{validation/validators → validators}/is-number.d.ts +1 -1
  34. package/dist/form/{validation/validators → validators}/max-age.d.ts +1 -1
  35. package/dist/form/{validation/validators → validators}/max-date.d.ts +1 -1
  36. package/dist/form/{validation/validators → validators}/max-file-size.d.ts +1 -1
  37. package/dist/form/{validation/validators → validators}/max-files.d.ts +1 -1
  38. package/dist/form/{validation/validators → validators}/max-length.d.ts +1 -1
  39. package/dist/form/{validation/validators → validators}/max-total-file-size.d.ts +1 -1
  40. package/dist/form/{validation/validators → validators}/max.d.ts +1 -1
  41. package/dist/form/{validation/validators → validators}/min-age.d.ts +1 -1
  42. package/dist/form/{validation/validators → validators}/min-date.d.ts +1 -1
  43. package/dist/form/{validation/validators → validators}/min-file-size.d.ts +1 -1
  44. package/dist/form/{validation/validators → validators}/min-files.d.ts +1 -1
  45. package/dist/form/{validation/validators → validators}/min-length.d.ts +1 -1
  46. package/dist/form/{validation/validators → validators}/min.d.ts +1 -1
  47. package/dist/form/{validation/validators → validators}/multiple-of.d.ts +1 -1
  48. package/dist/form/{validation/validators → validators}/non-negative.d.ts +1 -1
  49. package/dist/form/{validation/validators → validators}/non-zero.d.ts +1 -1
  50. package/dist/form/{validation/validators → validators}/past-date.d.ts +1 -1
  51. package/dist/form/{validation/validators → validators}/pattern.d.ts +1 -1
  52. package/dist/form/{validation/validators → validators}/phone.d.ts +1 -1
  53. package/dist/form/{validation/validators → validators}/required.d.ts +1 -1
  54. package/dist/form/{validation/validators → validators}/url.d.ts +1 -1
  55. package/dist/index.d.ts +7 -4
  56. package/dist/index.js +246 -71
  57. package/dist/{state/form-model.d.ts → model/create-model.d.ts} +0 -14
  58. package/dist/{state → model}/index.d.ts +10 -11
  59. package/dist/model/model-nodes.d.ts +60 -0
  60. package/dist/model/model-signals-proxy.d.ts +32 -0
  61. package/dist/model/model-value-proxy.d.ts +3 -0
  62. package/dist/{state → model}/safe-effect.d.ts +1 -1
  63. package/dist/model-signals-proxy-mV3WGdlO.js +233 -0
  64. package/dist/model.d.ts +2 -0
  65. package/dist/model.js +21 -0
  66. package/dist/{form → platforms/react}/hooks/types.d.ts +1 -1
  67. package/dist/{form → platforms/react}/hooks/use-form-bundle.d.ts +1 -1
  68. package/dist/{form → platforms/react}/hooks/use-form-validation.d.ts +3 -3
  69. package/dist/{form → platforms/react}/hooks/useArrayLength.d.ts +1 -1
  70. package/dist/{form → platforms/react}/hooks/useFormControl.d.ts +3 -3
  71. package/dist/{form → platforms/react}/hooks/useFormControlValue.d.ts +2 -2
  72. package/dist/platforms/react/index.d.ts +23 -0
  73. package/dist/signals.d.ts +1 -1
  74. package/dist/strategy-DA3JwxsR.js +170 -0
  75. package/dist/validation.d.ts +1 -1
  76. package/dist/validation.js +10 -165
  77. package/dist/validators/email.d.ts +1 -1
  78. package/dist/validators/future-date.d.ts +1 -1
  79. package/dist/validators/integer.d.ts +1 -1
  80. package/dist/validators/is-date.d.ts +1 -1
  81. package/dist/validators/is-number.d.ts +1 -1
  82. package/dist/validators/max-age.d.ts +1 -1
  83. package/dist/validators/max-date.d.ts +1 -1
  84. package/dist/validators/max-length.d.ts +1 -1
  85. package/dist/validators/max.d.ts +1 -1
  86. package/dist/validators/min-age.d.ts +1 -1
  87. package/dist/validators/min-date.d.ts +1 -1
  88. package/dist/validators/min-length.d.ts +1 -1
  89. package/dist/validators/min.d.ts +1 -1
  90. package/dist/validators/multiple-of.d.ts +1 -1
  91. package/dist/validators/non-negative.d.ts +1 -1
  92. package/dist/validators/non-zero.d.ts +1 -1
  93. package/dist/validators/past-date.d.ts +1 -1
  94. package/dist/validators/pattern.d.ts +1 -1
  95. package/dist/validators/phone.d.ts +1 -1
  96. package/dist/validators/required.d.ts +1 -1
  97. package/dist/validators/url.d.ts +1 -1
  98. package/dist/validators.d.ts +1 -1
  99. package/llms.txt +64 -43
  100. package/package.json +4 -4
  101. package/dist/form/behaviors.d.ts +0 -133
  102. package/dist/form/validation-schema.d.ts +0 -106
  103. package/dist/form/validators.d.ts +0 -11
  104. package/dist/form-model-DhW2HZOB.js +0 -323
  105. package/dist/state.d.ts +0 -2
  106. package/dist/state.js +0 -21
  107. package/dist/subscription-manager-705bls97.js +0 -171
  108. /package/dist/{state → form/nodes}/subscription-manager.d.ts +0 -0
  109. /package/dist/{state → model}/behaviors-value.d.ts +0 -0
  110. /package/dist/{state → model}/derived-registry.d.ts +0 -0
  111. /package/dist/{state → model}/types.d.ts +0 -0
  112. /package/dist/{behaviors-node-DGEFMTQu.js → node-DGEFMTQu.js} +0 -0
  113. /package/dist/{form → platforms/react}/hooks/useSignalSubscription.d.ts +0 -0
@@ -1,28 +1,23 @@
1
- export { required } from './validators/required';
2
- export { min } from './validators/min';
3
- export { max } from './validators/max';
4
- export { minLength } from './validators/min-length';
5
- export { maxLength } from './validators/max-length';
6
- export { email } from './validators/email';
7
- export { pattern } from './validators/pattern';
8
- export { url } from './validators/url';
9
- export { phone, type PhoneFormat } from './validators/phone';
10
- export { isNumber } from './validators/is-number';
11
- export { integer } from './validators/integer';
12
- export { multipleOf } from './validators/multiple-of';
13
- export { nonNegative } from './validators/non-negative';
14
- export { nonZero } from './validators/non-zero';
15
- export { isDate } from './validators/is-date';
16
- export { minDate } from './validators/min-date';
17
- export { maxDate } from './validators/max-date';
18
- export { pastDate } from './validators/past-date';
19
- export { futureDate } from './validators/future-date';
20
- export { minAge } from './validators/min-age';
21
- export { maxAge } from './validators/max-age';
22
- export { maxFileSize } from './validators/max-file-size';
23
- export { minFileSize } from './validators/min-file-size';
24
- export { fileType } from './validators/file-type';
25
- export { maxFiles } from './validators/max-files';
26
- export { minFiles } from './validators/min-files';
27
- export { maxTotalFileSize } from './validators/max-total-file-size';
28
- export { isFileLike, matchesFileAccept, toFileArray, type FileLike } from './validators/file-utils';
1
+ /**
2
+ * Декларативный контракт СХЕМЫ ВАЛИДАЦИИ — `@reformer/core/validation`.
3
+ *
4
+ * Схема валидации — обычная функция `(ctx: { model }) => void`. Внутри вызываются свободные операторы
5
+ * (`validate`/`validateAsync`/`validateWhen`/`cross`/`each`/`apply`), которые САМИ пишут ошибки в ambient-сток
6
+ * текущего прогона — автор не видит ни коллектора, ни `getNodeForSignal`, ни `.push`. Внешний раннер
7
+ * {@link validateModel} открывает ambient-окно на время СИНХРОННОГО прогона схемы, дожидается async-правил
8
+ * и разносит ошибки по нодам формы (`getNodeForSignal(sig).setErrors(...)`), гася поля, ставшие валидными.
9
+ *
10
+ * Зеркалит контракт поведения (`@reformer/core/behaviors`): тот же ambient-стиль, но отдельный слой —
11
+ * валидация НЕ реактивна (прогон по требованию: submit/шаг), поведение — реактивно (живые подписки).
12
+ *
13
+ * Модуль разложен по зонам ответственности: `./types` — контракт правил и схемы, `./context` —
14
+ * ambient-сток прогона, `./operators` — операторы схемы, `./run` — раннер, `./strategy` — КОГДА
15
+ * запускать (реэкспортируется отсюда, тот же сабпат).
16
+ *
17
+ * @group Validation
18
+ * @module form/validation
19
+ */
20
+ export type { Rule, AsyncRule, ValidationSchema } from './types';
21
+ export { validate, validateAsync, validateWhen, cross, each, apply } from './operators';
22
+ export { defineValidationSchema, validateModel } from './run';
23
+ export * from './strategy';
@@ -0,0 +1,42 @@
1
+ import { FormModel, ModelArray, PathAwareSignal, ValidationError } from '../../index';
2
+ import { AsyncRule, Rule, ValidationSchema } from './types';
3
+ /**
4
+ * Синхронные правила поля.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * validate(model.$.loanAmount, [required({ message: 'Сумма' }), min(50000)]);
9
+ * ```
10
+ */
11
+ export declare function validate<TField>(sig: PathAwareSignal<TField>, rules: Rule<TField>[]): void;
12
+ /**
13
+ * Асинхронные правила поля (зеркалит движковое разделение `validators` / `asyncValidators`).
14
+ * Раннер дожидается их и прокидывает `AbortSignal` для отмены устаревших ответов.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * validateAsync(model.$.username, [async (v, { signal }) => {
19
+ * const r = await fetch(`/api/free?u=${v}`, { signal });
20
+ * return (await r.json()).free ? null : { code: 'taken', message: 'Занято' };
21
+ * }]);
22
+ * ```
23
+ */
24
+ export declare function validateAsync<TField>(sig: PathAwareSignal<TField>, rules: AsyncRule<TField>[]): void;
25
+ /**
26
+ * Условная валидация: правила внутри `cb` активны, только пока `cond()` истинно; иначе их поля
27
+ * ГАСЯТСЯ (пустой bucket → `setErrors([])`). Не трогает включение/сброс поля — это дело поведения (`enableWhen`).
28
+ */
29
+ export declare function validateWhen(cond: () => boolean, cb: () => void): void;
30
+ /**
31
+ * Cross-field правило: `fn` получает СНАПШОТ модели текущего scope (`model.get()`) и вешает ошибку на `sig`.
32
+ * Для элементов массива / под-моделей захватывайте нужный снапшот в замыкание (`const item = im.get()`),
33
+ * т.к. `fn` всегда получает модель ТЕКУЩЕГО scope (корень прогона), а не под-модель.
34
+ */
35
+ export declare function cross<TSnapshot>(sig: PathAwareSignal<unknown>, fn: (form: TSnapshot) => ValidationError | null): void;
36
+ /**
37
+ * Применить под-правила к КАЖДОМУ элементу текущего массива модели.
38
+ * `U extends object` — элементы должны быть под-моделями (объектами); для массива примитивов валидируйте лист напрямую.
39
+ */
40
+ export declare function each<U extends object>(arr: ModelArray<U>, itemFn: (item: FormModel<U>) => void): void;
41
+ /** Композиция под-схем в текущую (над той же моделью scope). Заменяет пошаговую группировку. */
42
+ export declare function apply<T>(...schemas: ValidationSchema<T>[]): void;
@@ -0,0 +1,45 @@
1
+ import { FormModel } from '../../index';
2
+ import { ValidationSchema } from './types';
3
+ /**
4
+ * Тонкая identity-обёртка для типизации/discoverability (как `defineFormBehavior`). Возвращает схему как есть.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * export const step1 = defineValidationSchema<LoanForm>(({ model }) => {
9
+ * validate(model.$.loanAmount, [required(), min(50000)]);
10
+ * });
11
+ * ```
12
+ */
13
+ export declare function defineValidationSchema<T>(schema: ValidationSchema<T>): ValidationSchema<T>;
14
+ /**
15
+ * Провалидировать модель ЛЮБОЙ схемой (шаг или вся форма). Открывает ambient-окно на время
16
+ * синхронного прогона `schema`, дожидается async-правил, разносит ошибки по нодам формы и гасит
17
+ * поля, ставшие валидными. Возвращает `true`, если нет блокирующих ошибок (`severity:'warning'` не блокирует).
18
+ *
19
+ * Гашение — на пару (model, schema): `validateModel(model, step2)` и `validateModel(model, form)` не мешают
20
+ * друг другу. Устаревший прогон (быстрый повторный вызов той же (model, schema)) отменяется через `AbortSignal`
21
+ * и возвращает `false` (**fail-closed** — отменённому результату нельзя доверять для submit).
22
+ *
23
+ * ⚠️ `schema` должна быть СТАБИЛЬНОЙ ссылкой: отмена устаревших прогонов ключится по идентичности `schema`.
24
+ * Инлайн-стрелка (`validateModel(model, ({ model }) => …)`) каждый раз создаёт НОВЫЙ прогон без дедупликации —
25
+ * держите схемы в `const` / `defineValidationSchema`.
26
+ *
27
+ * `options.touch` (§6): по завершении помечает `touched` ИМЕННО поля, которые схема проверяла
28
+ * (не всё поддерево). Ошибки становятся видимыми (`shouldShowError = invalid && (touched||dirty)`)
29
+ * без ручного `form.markAsTouched()`; при пошаговой валидации следующий шаг не показывается
30
+ * «тронутым» до ввода. Валидные проверенные поля тоже метятся — это безвредно (ошибка не покажется).
31
+ *
32
+ * @param model - Модель данных формы.
33
+ * @param schema - Схема валидации (стабильная ссылка).
34
+ * @param options - `{ touch }` — пометить провалидированные поля `touched` для показа ошибок.
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * const ok = await validateModel(model, step2Validation); // один шаг
39
+ * const all = await validateModel(model, formValidation); // вся форма
40
+ * const stepOk = await validateModel(model, step2Validation, { touch: true }); // + показать ошибки шага
41
+ * ```
42
+ */
43
+ export declare function validateModel<T>(model: FormModel<T>, schema: ValidationSchema<T>, options?: {
44
+ touch?: boolean;
45
+ }): Promise<boolean>;
@@ -1,6 +1,6 @@
1
1
  import { ReadonlySignal } from '@preact/signals-core';
2
- import { FormModel } from '../index';
3
- import { ValidationSchema } from './validation-schema';
2
+ import { FormModel } from '../../index';
3
+ import { ValidationSchema } from './types';
4
4
  /**
5
5
  * Когда запускается schema-валидация:
6
6
  * - `submit` (по умолчанию) — только явным вызовом `validate()` (на отправке);
@@ -0,0 +1,28 @@
1
+ import { FormModel, ValidationError } from '../../index';
2
+ /**
3
+ * Внутренний callable-вид правила: value-only фабрики игнорируют 2-й/3-й аргумент.
4
+ *
5
+ * @internal
6
+ */
7
+ export type CallableRule = (value: unknown, model: unknown, root: unknown) => ValidationError | null;
8
+ /**
9
+ * Синхронное правило поля типа `TField`. Проверяется ТОЛЬКО значение (`value`).
10
+ *
11
+ * Позиционные `scope`/`root` помечены `never` намеренно: так встроенные value-only фабрики
12
+ * (`required()`/`min()`/… — они `(value, model, root) => …`) и inline-правила `(value) => …`
13
+ * ОБА присваиваются в `Rule<TField>[]` без `any`, при этом сохраняется проверка типа поля
14
+ * (`validate(model.$.age, [email()])` подсветится — `email` ждёт `string`, поле `number`).
15
+ * На вызове раннер приводит правило к callable и передаёт `(value, model, model)`.
16
+ */
17
+ export type Rule<TField> = (value: TField, scope: never, root: never) => ValidationError | null;
18
+ /**
19
+ * Асинхронное правило поля. Получает `AbortSignal` для отмены устаревших ответов (быстрый повторный
20
+ * прогон той же схемы отменяет предыдущий). Сетевой сбой не должен блокировать — ловите и возвращайте `null`.
21
+ */
22
+ export type AsyncRule<TField> = (value: TField, ctx: {
23
+ signal: AbortSignal;
24
+ }) => Promise<ValidationError | null>;
25
+ /** Схема валидации — обычная функция над (под)моделью. First-class значение (можно `apply`/тестировать/переиспользовать). */
26
+ export type ValidationSchema<T> = (ctx: {
27
+ model: FormModel<T>;
28
+ }) => void;
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @group Validation
5
5
  * @category Validators
6
- * @module validators/date-utils
6
+ * @module form/validators/date-utils
7
7
  */
8
8
  /**
9
9
  * Парсит значение в объект Date
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора формата email.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора типа файла.
4
4
  *
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * @group Validation
9
9
  * @category Validators
10
- * @module validators/file-utils
10
+ * @module form/validators/file-utils
11
11
  */
12
12
  /**
13
13
  * Минимальный файлоподобный контракт, с которым работают file-валидаторы:
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора, проверяющего что дата не в прошлом.
4
4
  *
@@ -1,9 +1,11 @@
1
1
  /**
2
- * Reusable validator factories.
2
+ * Точка входа сабпата `@reformer/core/validators` — все фабрики правил одним импортом.
3
3
  *
4
- * Все примитивы — фабрики, возвращающие чистый Validator<TForm, TField>.
5
- * Импортируются из `@reformer/core/validators` и передаются в массив `validators`
6
- * поля схемы формы: `validators: [required(), min(18)]`.
4
+ * Все примитивы — фабрики, возвращающие чистый `Validator<TForm, TField>`; передаются в
5
+ * массив `validators` поля схемы формы: `validators: [required(), min(18)]`.
6
+ *
7
+ * Гранулярные сабпаты (`@reformer/core/validators/required` и ещё 20) собираются отдельными
8
+ * entry для tree-shaking; этот модуль отдаёт полный набор для случаев, когда правил много.
7
9
  */
8
10
  export { required } from './required';
9
11
  export { min } from './min';
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора, проверяющего что число — целое.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора, проверяющего что значение — валидная дата.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора, проверяющего что значение — конечное число (не NaN, не строка).
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора максимального возраста (по дате рождения).
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора максимальной даты (включительно).
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора максимального размера файла.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора максимального количества файлов.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора максимальной длины строки или массива.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора суммарного размера всех файлов.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора максимального числового значения.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора минимального возраста (по дате рождения).
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора минимальной даты (включительно).
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора минимального размера файла.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора минимального количества файлов.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора минимальной длины строки или массива.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора минимального числового значения.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора, проверяющего что число кратно заданному.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора, проверяющего что число неотрицательное (`≥ 0`).
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора, проверяющего что число не равно нулю.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора, проверяющего что дата не в будущем.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора регулярного выражения.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Формат проверки номера телефона для валидатора {@link phone}.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Фабрика валидатора обязательного поля.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { Validator, ValidateOptions } from '../../types/validation-schema';
1
+ import { Validator, ValidateOptions } from '../types/validation-schema';
2
2
  /**
3
3
  * Опции валидатора {@link url}. Расширяют {@link ValidateOptions} (`message`, `params`)
4
4
  * настройками проверки протокола.
package/dist/index.d.ts CHANGED
@@ -1,11 +1,14 @@
1
1
  /**
2
- * Публичный barrel `@reformer/core` — зонтик над модулями `model` (state) и `form`.
2
+ * Публичный barrel `@reformer/core` — зонтик над слоями `model`, `form` и `platforms/react`.
3
3
  *
4
- * Состав экспортов НЕ изменился при модуляризации (реорг в src/model + src/form): реализация
5
- * разложена по модулям, а этот barrel по-прежнему отдаёт единую поверхность.
4
+ * `model` — реактивная модель данных (сабпат `@reformer/core/model`); `form` — узлы, поведение и
5
+ * валидация поверх её сигналов; `platforms/react` — биндинги в React, единственный слой с
6
+ * рантайм-зависимостью от `react`. Состав экспортов зонтика не меняется при реорганизациях:
7
+ * реализация разложена по слоям, а barrel по-прежнему отдаёт единую поверхность.
6
8
  */
7
9
  export * from './form/types/index';
8
10
  export * from './form/factories/index';
9
- export * from './state/index';
11
+ export * from './model/index';
10
12
  export * from './form/index';
13
+ export * from './platforms/react/index';
11
14
  export { CORE_RUNTIME_TOKEN } from './runtime-token';