@reformer/core 10.2.0 → 11.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.
- package/README.md +90 -68
- package/dist/behaviors-value-D05z3my6.js +109 -0
- package/dist/behaviors.d.ts +1 -1
- package/dist/behaviors.js +376 -211
- package/dist/create-model-DPSG3I0O.js +30 -0
- package/dist/date-utils-90-qZbse.js +43 -0
- package/dist/en-HP8XEych.js +44 -0
- package/dist/form/aggregate-signals.d.ts +21 -63
- package/dist/form/behaviors/collections.d.ts +84 -0
- package/dist/form/behaviors/context.d.ts +56 -0
- package/dist/form/behaviors/index.d.ts +30 -0
- package/dist/form/behaviors/internals.d.ts +41 -0
- package/dist/form/{behaviors-node.d.ts → behaviors/node.d.ts} +28 -5
- package/dist/form/behaviors/operators.d.ts +59 -0
- package/dist/form/behaviors/schema-operators.d.ts +83 -0
- package/dist/form/behaviors/types.d.ts +37 -0
- package/dist/form/create-form.d.ts +59 -70
- package/dist/form/flow/flow.d.ts +87 -0
- package/dist/form/form-bundle.d.ts +153 -0
- package/dist/form/form-level.d.ts +121 -0
- package/dist/form/form-proxy-builder.d.ts +6 -22
- package/dist/form/index.d.ts +23 -27
- package/dist/form/nodes/form-array-node.d.ts +100 -0
- package/dist/form/nodes/form-control-node.d.ts +73 -0
- package/dist/form/nodes/form-group-node.d.ts +66 -0
- package/dist/form/nodes/node-kind.d.ts +29 -0
- package/dist/form/nodes/state/availability.d.ts +6 -0
- package/dist/form/nodes/state/component.d.ts +6 -0
- package/dist/form/nodes/state/index.d.ts +12 -0
- package/dist/form/nodes/state/interaction.d.ts +13 -0
- package/dist/form/nodes/state/issues.d.ts +9 -0
- package/dist/form/nodes/state/pending.d.ts +6 -0
- package/dist/form/schema/compile.d.ts +59 -0
- package/dist/form/schema/compiled.d.ts +143 -0
- package/dist/form/schema/row-key.d.ts +11 -0
- package/dist/form/schema-controller.d.ts +159 -0
- package/dist/form/schema-subtree.d.ts +28 -0
- package/dist/form/signal-node-registry.d.ts +27 -22
- package/dist/form/submission.d.ts +93 -0
- package/dist/form/type-guards.d.ts +14 -73
- package/dist/form/types/contracts.d.ts +21 -91
- package/dist/form/types/field-config.d.ts +27 -0
- package/dist/form/types/index.d.ts +5 -91
- package/dist/form/types/nodes.d.ts +159 -0
- package/dist/form/types/schema-node.d.ts +148 -50
- package/dist/form/types/validation-schema.d.ts +24 -41
- package/dist/form/validation/context.d.ts +67 -0
- package/dist/form/validation/index.d.ts +24 -28
- package/dist/form/validation/operators.d.ts +101 -0
- package/dist/form/validation/run.d.ts +120 -0
- package/dist/form/validation/strategy.d.ts +89 -0
- package/dist/form/validation/types.d.ts +83 -0
- package/dist/form/validators/date-utils.d.ts +42 -0
- package/dist/form/validators/email.d.ts +23 -0
- package/dist/form/{validation/validators → validators}/file-type.d.ts +10 -10
- package/dist/form/{validation/validators → validators}/file-utils.d.ts +3 -2
- package/dist/form/validators/future-date.d.ts +23 -0
- package/dist/form/{validation/validators → validators}/index.d.ts +7 -4
- package/dist/form/validators/integer.d.ts +22 -0
- package/dist/form/validators/is-date.d.ts +24 -0
- package/dist/form/validators/is-number.d.ts +25 -0
- package/dist/form/validators/max-age.d.ts +28 -0
- package/dist/form/validators/max-date.d.ts +25 -0
- package/dist/form/{validation/validators → validators}/max-file-size.d.ts +10 -10
- package/dist/form/validators/max-files.d.ts +26 -0
- package/dist/form/validators/max-length.d.ts +33 -0
- package/dist/form/validators/max-total-file-size.d.ts +26 -0
- package/dist/form/validators/max.d.ts +26 -0
- package/dist/form/validators/min-age.d.ts +27 -0
- package/dist/form/validators/min-date.d.ts +25 -0
- package/dist/form/{validation/validators → validators}/min-file-size.d.ts +10 -10
- package/dist/form/validators/min-files.d.ts +27 -0
- package/dist/form/validators/min-length.d.ts +33 -0
- package/dist/form/validators/min.d.ts +26 -0
- package/dist/form/validators/multiple-of.d.ts +25 -0
- package/dist/form/validators/non-negative.d.ts +22 -0
- package/dist/form/validators/non-zero.d.ts +22 -0
- package/dist/form/validators/past-date.d.ts +23 -0
- package/dist/form/validators/pattern.d.ts +26 -0
- package/dist/form/{validation/validators → validators}/phone.d.ts +11 -11
- package/dist/form/validators/required.d.ts +29 -0
- package/dist/form/validators/url.d.ts +45 -0
- package/dist/form/validators/validation-issue.d.ts +8 -0
- package/dist/i18n/descriptor.d.ts +54 -0
- package/dist/i18n/en.json.d.ts +49 -0
- package/dist/i18n/loader.d.ts +71 -0
- package/dist/i18n/locale-store.d.ts +46 -0
- package/dist/i18n/locale.d.ts +90 -0
- package/dist/i18n/message-format.d.ts +136 -0
- package/dist/i18n/resolve-localized.d.ts +17 -0
- package/dist/i18n/ru.json.d.ts +49 -0
- package/dist/i18n/translator.d.ts +61 -0
- package/dist/i18n/validation-message.d.ts +53 -0
- package/dist/i18n.d.ts +26 -0
- package/dist/i18n.js +86 -0
- package/dist/index.d.ts +18 -6
- package/dist/index.js +932 -2779
- package/dist/loader-BWkigpVe.js +52 -0
- package/dist/locale/en.d.ts +2 -0
- package/dist/locale/en.js +5 -0
- package/dist/locale/en.json +45 -0
- package/dist/locale/index.d.ts +18 -0
- package/dist/locale/ru.d.ts +2 -0
- package/dist/locale/ru.js +44 -0
- package/dist/locale/ru.json +45 -0
- package/dist/locale-CG54AU2Q.js +219 -0
- package/dist/locale.d.ts +2 -0
- package/dist/locale.js +9 -0
- package/dist/{state → model}/behaviors-value.d.ts +24 -6
- package/dist/{state/form-model.d.ts → model/create-model.d.ts} +18 -4
- package/dist/{state → model}/derived-registry.d.ts +1 -1
- package/dist/model/index.d.ts +42 -0
- package/dist/model/model-nodes.d.ts +190 -0
- package/dist/model/model-signals-proxy.d.ts +63 -0
- package/dist/model/model-value-proxy.d.ts +84 -0
- package/dist/{state → model}/safe-effect.d.ts +50 -2
- package/dist/model/types.d.ts +239 -0
- package/dist/model.d.ts +2 -0
- package/dist/model.js +27 -0
- package/dist/node-kind-C-r6ZMdo.js +15 -0
- package/dist/platforms/react/field-binding/field-adapter.d.ts +87 -0
- package/dist/platforms/react/field-binding/field-handle.d.ts +53 -0
- package/dist/platforms/react/form-bundle-context.d.ts +27 -0
- package/dist/{form → platforms/react}/hooks/types.d.ts +60 -38
- package/dist/platforms/react/hooks/use-form-bundle.d.ts +41 -0
- package/dist/platforms/react/hooks/use-form-flow.d.ts +40 -0
- package/dist/{form → platforms/react}/hooks/use-form-validation.d.ts +13 -7
- package/dist/{form → platforms/react}/hooks/useArrayLength.d.ts +6 -6
- package/dist/{form → platforms/react}/hooks/useFormControl.d.ts +7 -9
- package/dist/{form → platforms/react}/hooks/useFormControlValue.d.ts +18 -18
- package/dist/{form → platforms/react}/hooks/useSignalSubscription.d.ts +9 -1
- package/dist/platforms/react/i18n/context.d.ts +18 -0
- package/dist/platforms/react/i18n/hooks.d.ts +65 -0
- package/dist/platforms/react/i18n/provider.d.ts +59 -0
- package/dist/platforms/react/index.d.ts +30 -0
- package/dist/react.d.ts +22 -0
- package/dist/react.js +505 -0
- package/dist/runtime-token.d.ts +22 -0
- package/dist/safe-effect-BazLOv1g.js +669 -0
- package/dist/schema-controller-CpiO2JoK.js +143 -0
- package/dist/signals.d.ts +15 -9
- package/dist/signals.js +11 -6
- package/dist/strategy-DzvnsWLh.js +375 -0
- package/dist/type-guards-D-N_5Ddh.js +19 -0
- package/dist/validation-issue-B9mjI8jz.js +7 -0
- package/dist/validation-message-Ced9MGxs.js +194 -0
- package/dist/validation.d.ts +1 -1
- package/dist/validation.js +11 -165
- package/dist/validators/email.d.ts +1 -1
- package/dist/validators/email.js +5 -8
- package/dist/validators/future-date.d.ts +1 -1
- package/dist/validators/future-date.js +10 -13
- package/dist/validators/integer.d.ts +1 -1
- package/dist/validators/integer.js +4 -7
- package/dist/validators/is-date.d.ts +1 -1
- package/dist/validators/is-date.js +5 -8
- package/dist/validators/is-number.d.ts +1 -1
- package/dist/validators/is-number.js +4 -7
- package/dist/validators/max-age.d.ts +1 -1
- package/dist/validators/max-age.js +8 -12
- package/dist/validators/max-date.d.ts +1 -1
- package/dist/validators/max-date.js +10 -13
- package/dist/validators/max-length.d.ts +1 -1
- package/dist/validators/max-length.js +7 -10
- package/dist/validators/max.d.ts +1 -1
- package/dist/validators/max.js +4 -7
- package/dist/validators/min-age.d.ts +1 -1
- package/dist/validators/min-age.js +10 -11
- package/dist/validators/min-date.d.ts +1 -1
- package/dist/validators/min-date.js +8 -11
- package/dist/validators/min-length.d.ts +1 -1
- package/dist/validators/min-length.js +4 -7
- package/dist/validators/min.d.ts +1 -1
- package/dist/validators/min.js +4 -7
- package/dist/validators/multiple-of.d.ts +1 -1
- package/dist/validators/multiple-of.js +11 -10
- package/dist/validators/non-negative.d.ts +1 -1
- package/dist/validators/non-negative.js +2 -5
- package/dist/validators/non-zero.d.ts +1 -1
- package/dist/validators/non-zero.js +4 -7
- package/dist/validators/past-date.d.ts +1 -1
- package/dist/validators/past-date.js +10 -13
- package/dist/validators/pattern.d.ts +1 -1
- package/dist/validators/pattern.js +5 -8
- package/dist/validators/phone.d.ts +1 -1
- package/dist/validators/phone.js +10 -11
- package/dist/validators/required.d.ts +1 -1
- package/dist/validators/required.js +4 -7
- package/dist/validators/url.d.ts +1 -1
- package/dist/validators/url.js +48 -17
- package/dist/validators.d.ts +1 -5
- package/dist/validators.js +98 -154
- package/docs/llms/01-api-reference.md +89 -0
- package/docs/llms/02-quick-start.md +181 -0
- package/docs/llms/03-api-signatures.md +494 -0
- package/docs/llms/04-common-patterns.md +204 -0
- package/docs/llms/05-common-mistakes.md +192 -0
- package/docs/llms/06-troubleshooting.md +16 -0
- package/docs/llms/07-complete-import.md +130 -0
- package/docs/llms/08-form-types.md +54 -0
- package/docs/llms/09-formschema.md +191 -0
- package/docs/llms/10-arrays.md +241 -0
- package/docs/llms/11-async-watchfield.md +53 -0
- package/docs/llms/12-array-cleanup.md +31 -0
- package/docs/llms/13-multi-step.md +162 -0
- package/docs/llms/14-extended-mistakes.md +101 -0
- package/docs/llms/15-project-structure.md +279 -0
- package/docs/llms/16-ui-components.md +229 -0
- package/docs/llms/17-nonexistent-api.md +278 -0
- package/docs/llms/18-conditional-fields.md +222 -0
- package/docs/llms/19-reading-values.md +100 -0
- package/docs/llms/20-compute-vs-watch.md +153 -0
- package/docs/llms/21-array-operations.md +163 -0
- package/docs/llms/22-cycle-detection.md +86 -0
- package/docs/llms/23-copy-from.md +141 -0
- package/docs/llms/24-sync-fields.md +115 -0
- package/docs/llms/25-reset-when.md +122 -0
- package/docs/llms/26-transform-value.md +136 -0
- package/docs/llms/27-revalidate-when.md +133 -0
- package/docs/llms/28-submit-and-reset.md +409 -0
- package/docs/llms/29-async-preload.md +203 -0
- package/docs/llms/30-type-safety-recipes.md +213 -0
- package/docs/llms/31-async-validator-debounce.md +178 -0
- package/docs/llms/32-async-options-loading.md +108 -0
- package/docs/llms/33-validation-strategy.md +305 -0
- package/docs/llms/34-i18n.md +298 -0
- package/docs/llms/35-unified-contract.md +309 -0
- package/docs/llms/36-issue-messages.md +284 -0
- package/docs/llms/37-compiled-schema.md +332 -0
- package/docs/llms/38-form-flow.md +396 -0
- package/llms-index.json +1 -0
- package/llms.txt +10014 -3826
- package/package.json +77 -15
- package/dist/behaviors-node-DGEFMTQu.js +0 -18
- package/dist/behaviors-value-C7dSEhCc.js +0 -134
- package/dist/date-utils-dTT_x_Be.js +0 -31
- package/dist/derived-registry-CluZCQ7U.js +0 -16
- package/dist/form/behaviors.d.ts +0 -133
- package/dist/form/error-handler.d.ts +0 -166
- package/dist/form/factories/index.d.ts +0 -6
- package/dist/form/factories/node-factory.d.ts +0 -188
- package/dist/form/form-submitter.d.ts +0 -125
- package/dist/form/nodes/array-node.d.ts +0 -360
- package/dist/form/nodes/field-node.d.ts +0 -294
- package/dist/form/nodes/form-node.d.ts +0 -340
- package/dist/form/nodes/group-node.d.ts +0 -288
- package/dist/form/nodes/model-array-node.d.ts +0 -121
- package/dist/form/status-machine.d.ts +0 -153
- package/dist/form/types/deep-schema.d.ts +0 -116
- package/dist/form/types/form-proxy.d.ts +0 -141
- package/dist/form/unique-id.d.ts +0 -53
- package/dist/form/validation/validators/date-utils.d.ts +0 -30
- package/dist/form/validation/validators/email.d.ts +0 -23
- package/dist/form/validation/validators/future-date.d.ts +0 -23
- package/dist/form/validation/validators/integer.d.ts +0 -22
- package/dist/form/validation/validators/is-date.d.ts +0 -23
- package/dist/form/validation/validators/is-number.d.ts +0 -24
- package/dist/form/validation/validators/max-age.d.ts +0 -25
- package/dist/form/validation/validators/max-date.d.ts +0 -25
- package/dist/form/validation/validators/max-files.d.ts +0 -26
- package/dist/form/validation/validators/max-length.d.ts +0 -27
- package/dist/form/validation/validators/max-total-file-size.d.ts +0 -26
- package/dist/form/validation/validators/max.d.ts +0 -25
- package/dist/form/validation/validators/min-age.d.ts +0 -25
- package/dist/form/validation/validators/min-date.d.ts +0 -25
- package/dist/form/validation/validators/min-files.d.ts +0 -26
- package/dist/form/validation/validators/min-length.d.ts +0 -27
- package/dist/form/validation/validators/min.d.ts +0 -25
- package/dist/form/validation/validators/multiple-of.d.ts +0 -24
- package/dist/form/validation/validators/non-negative.d.ts +0 -22
- package/dist/form/validation/validators/non-zero.d.ts +0 -22
- package/dist/form/validation/validators/past-date.d.ts +0 -23
- package/dist/form/validation/validators/pattern.d.ts +0 -33
- package/dist/form/validation/validators/required.d.ts +0 -32
- package/dist/form/validation/validators/url.d.ts +0 -43
- package/dist/form/validation-schema.d.ts +0 -106
- package/dist/form/validation-strategy.d.ts +0 -55
- package/dist/form/validators.d.ts +0 -6
- package/dist/form-model-DYCzGGKF.js +0 -286
- package/dist/state/index.d.ts +0 -31
- package/dist/state/subscription-manager.d.ts +0 -180
- package/dist/state/types.d.ts +0 -144
- package/dist/state.d.ts +0 -2
- package/dist/state.js +0 -21
- package/dist/subscription-manager-705bls97.js +0 -171
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
"format.fileSize.b": "{value} Б",
|
|
3
|
+
"format.fileSize.kb": "{value} КБ",
|
|
4
|
+
"format.fileSize.mb": "{value} МБ",
|
|
5
|
+
"format.fileSize.gb": "{value} ГБ",
|
|
6
|
+
"format.fileSize.tb": "{value} ТБ",
|
|
7
|
+
|
|
8
|
+
"validation.required": "Обязательное поле",
|
|
9
|
+
"validation.pattern": "Неверный формат",
|
|
10
|
+
"validation.email": "Введите корректный email",
|
|
11
|
+
"validation.url": "Введите корректный адрес (URL)",
|
|
12
|
+
"validation.url_protocol": "Адрес должен начинаться с одного из протоколов: {allowedProtocols}",
|
|
13
|
+
"validation.phone": "Введите корректный номер телефона",
|
|
14
|
+
|
|
15
|
+
"validation.min": "Не меньше {min}",
|
|
16
|
+
"validation.max": "Не больше {max}",
|
|
17
|
+
"validation.minLength": "Не меньше {minLength, plural, one{# символа} few{# символов} many{# символов} other{# символа}}",
|
|
18
|
+
"validation.maxLength": "Не больше {maxLength, plural, one{# символа} few{# символов} many{# символов} other{# символа}}",
|
|
19
|
+
"validation.minItems": "Не меньше {minLength, plural, one{# элемента} few{# элементов} many{# элементов} other{# элемента}}",
|
|
20
|
+
"validation.maxItems": "Не больше {maxLength, plural, one{# элемента} few{# элементов} many{# элементов} other{# элемента}}",
|
|
21
|
+
"validation.isNumber": "Введите число",
|
|
22
|
+
"validation.integer": "Введите целое число",
|
|
23
|
+
"validation.multipleOf": "Число должно быть кратно {multipleOf}",
|
|
24
|
+
"validation.nonNegative": "Число не может быть отрицательным",
|
|
25
|
+
"validation.nonZero": "Число не может быть нулём",
|
|
26
|
+
|
|
27
|
+
"validation.date_invalid": "Введите корректную дату",
|
|
28
|
+
"validation.date_min": "Дата не раньше {minDate}",
|
|
29
|
+
"validation.date_max": "Дата не позже {maxDate}",
|
|
30
|
+
"validation.date_past": "Дата не может быть в прошлом",
|
|
31
|
+
"validation.date_future": "Дата не может быть в будущем",
|
|
32
|
+
"validation.date_min_age": "Возраст не меньше {minAge, plural, one{# года} few{# лет} many{# лет} other{# года}}",
|
|
33
|
+
"validation.date_max_age": "Возраст не больше {maxAge, plural, one{# года} few{# лет} many{# лет} other{# года}}",
|
|
34
|
+
|
|
35
|
+
"validation.fileType": "Недопустимый тип файла {fileName}. Разрешено: {accept}",
|
|
36
|
+
"validation.maxFileSize": "Файл {fileName} больше {maxFileSize}",
|
|
37
|
+
"validation.minFileSize": "Файл {fileName} меньше {minFileSize}",
|
|
38
|
+
"validation.maxFiles": "Не больше {maxFiles, plural, one{# файла} few{# файлов} many{# файлов} other{# файла}}",
|
|
39
|
+
"validation.minFiles": "Не меньше {minFiles, plural, one{# файла} few{# файлов} many{# файлов} other{# файла}}",
|
|
40
|
+
"validation.maxTotalFileSize": "Суммарный размер файлов больше {maxTotalFileSize}",
|
|
41
|
+
"validation.fileExists": "Файл {fileName} уже добавлен",
|
|
42
|
+
"validation.uploadAborted": "Загрузка прервана",
|
|
43
|
+
"validation.uploadFailed": "Не удалось загрузить файл {fileName}",
|
|
44
|
+
|
|
45
|
+
"validation.ruleFailed": "Не удалось проверить поле. Повторите попытку"
|
|
46
|
+
}
|
|
47
|
+
;
|
|
48
|
+
|
|
49
|
+
export default _default;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { FormLocale, Messages } from './locale';
|
|
2
|
+
import { MessageValues } from './message-format';
|
|
3
|
+
/**
|
|
4
|
+
* Сообщение произвольного словаря по правилам языка `code`; `undefined`, если ключа нет, значение
|
|
5
|
+
* не строка либо шаблон не разобрался. Разбор кэшируется по объекту словаря, поэтому словарь
|
|
6
|
+
* должен быть стабильной ссылкой (константа модуля), а не литералом в теле компонента.
|
|
7
|
+
*
|
|
8
|
+
* @param messages - Словарь: ключ → шаблон сообщения. Нестроковые значения пропускаются.
|
|
9
|
+
* @param code - Код языка для `plural` и форматирования чисел.
|
|
10
|
+
* @param key - Ключ сообщения.
|
|
11
|
+
* @param values - Значения подстановок.
|
|
12
|
+
*/
|
|
13
|
+
export declare function formatMessage(messages: Readonly<Record<string, unknown>>, code: string, key: string, values?: MessageValues): string | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Перевод ключа пакета: словарь локали, затем встроенная английская таблица пакета, затем сам
|
|
16
|
+
* ключ. Английская таблица форматируется по английским правилам — её множественные формы и
|
|
17
|
+
* группировка чисел не зависят от активного языка.
|
|
18
|
+
*
|
|
19
|
+
* @param locale - Активная локаль.
|
|
20
|
+
* @param builtin - Встроенная английская таблица пакета-владельца ключа.
|
|
21
|
+
* @param key - Ключ сообщения.
|
|
22
|
+
* @param values - Значения подстановок.
|
|
23
|
+
*/
|
|
24
|
+
export declare function translateBuiltin(locale: FormLocale, builtin: Messages, key: string, values?: MessageValues): string;
|
|
25
|
+
/** Ручка локали: перевод и форматирование по одному языку. */
|
|
26
|
+
export interface I18nHandle {
|
|
27
|
+
/** Локаль, по которой работает ручка. */
|
|
28
|
+
readonly locale: FormLocale;
|
|
29
|
+
/** Код языка — то же, что `locale.code`. */
|
|
30
|
+
readonly code: string;
|
|
31
|
+
/** Есть ли ключ в словаре локали (встроенные английские таблицы не учитываются). */
|
|
32
|
+
has(key: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Перевод ключа приложения: словарь локали → `defaultMessage` → встроенная таблица ядра → ключ.
|
|
35
|
+
*
|
|
36
|
+
* @param key - Ключ сообщения.
|
|
37
|
+
* @param values - Значения подстановок.
|
|
38
|
+
* @param defaultMessage - Английский текст на случай, если ключа в локали нет.
|
|
39
|
+
*/
|
|
40
|
+
t(key: string, values?: MessageValues, defaultMessage?: string): string;
|
|
41
|
+
/** Число по правилам языка. */
|
|
42
|
+
number(value: number, options?: Intl.NumberFormatOptions): string;
|
|
43
|
+
/** Дата по правилам языка. */
|
|
44
|
+
date(value: Date | number, options?: Intl.DateTimeFormatOptions): string;
|
|
45
|
+
/** Размер файла: `1536` → `1.5 KB` (`1,5 КБ` в русской локали). База — 1024. */
|
|
46
|
+
fileSize(bytes: number): string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Ручка для локали. Для одного и того же объекта локали возвращается один и тот же объект —
|
|
50
|
+
* ручку можно держать в зависимостях хуков.
|
|
51
|
+
*
|
|
52
|
+
* @param locale - Локаль; см. {@link FormLocale}.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* const i18n = createI18n({ code: 'ru', messages: { 'cart.items': '{count, plural, one{# товар} few{# товара} other{# товаров}}' } });
|
|
57
|
+
* i18n.t('cart.items', { count: 3 }); // '3 товара'
|
|
58
|
+
* i18n.fileSize(1536); // '1,5 КБ'
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function createI18n(locale: FormLocale): I18nHandle;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { ValidationIssue } from '../form/types/contracts';
|
|
2
|
+
import { I18nHandle } from './translator';
|
|
3
|
+
/**
|
|
4
|
+
* Текст замечания в словаре формы: шаблон с параметрами либо функция.
|
|
5
|
+
*
|
|
6
|
+
* Шаблон — тот же формат сообщений, что в словарях локали: `{minLength}`, `plural`, `select`.
|
|
7
|
+
* Параметры в него приходят подготовленными: дата — по языку, массив — перечнем, размер файла —
|
|
8
|
+
* строкой с единицей. Число шаблон печатает как есть, без разрядов: «50 000 ₽» пишут готовым
|
|
9
|
+
* текстом либо функцией, которая форматирует число сама.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const byTemplate: IssueMessage = 'Не меньше {minLength} символов';
|
|
14
|
+
* const byFunction: IssueMessage = (params, i18n) => `Не меньше ${i18n.number(Number(params.min))} ₽`;
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export type IssueMessage = string | ((params: Readonly<Record<string, unknown>>, i18n: I18nHandle) => string);
|
|
18
|
+
/**
|
|
19
|
+
* Словарь формы: код замечания → текст. Ключ — `code` замечания: встроенный (`required`) либо
|
|
20
|
+
* свой (`loanAmount.required`).
|
|
21
|
+
*/
|
|
22
|
+
export type IssueMessages = Readonly<Record<string, IssueMessage>>;
|
|
23
|
+
/**
|
|
24
|
+
* Объявить словарь формы. Возвращает аргумент как есть — функция нужна типам: коды остаются
|
|
25
|
+
* литералами, а значения проверяются как {@link IssueMessage}.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* export const loanMessages = defineIssueMessages({
|
|
30
|
+
* 'loanAmount.required': 'Укажите сумму кредита',
|
|
31
|
+
* 'loanPurpose.minLength': 'Минимум {minLength} символов',
|
|
32
|
+
* 'carYear.max': (params) => `Не позднее ${String(params.max)}`,
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function defineIssueMessages<const Messages extends IssueMessages>(messages: Messages): Messages;
|
|
37
|
+
/**
|
|
38
|
+
* Отображаемый текст замечания валидации. Порядок источников — в шапке модуля.
|
|
39
|
+
*
|
|
40
|
+
* @param issue - Замечание от правила: `code` и `params`.
|
|
41
|
+
* @param i18n - Ручка активной локали (`createI18n` / `useI18n`).
|
|
42
|
+
* @param messages - Словарь формы; его записи важнее словаря локали.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* resolveIssueMessage({ code: 'minLength', params: { minLength: 8 } }, i18n);
|
|
47
|
+
* // 'Enter at least 8 characters' · в русской локали — 'Не меньше 8 символов'
|
|
48
|
+
*
|
|
49
|
+
* resolveIssueMessage({ code: 'phone.required' }, i18n, { 'phone.required': 'Укажите телефон' });
|
|
50
|
+
* // 'Укажите телефон' — текст поля из словаря формы
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function resolveIssueMessage(issue: ValidationIssue, i18n: I18nHandle, messages?: IssueMessages): string;
|
package/dist/i18n.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Подпуть `@reformer/core/i18n` — локализация форм без React: объект локали, загрузка словарей,
|
|
3
|
+
* перевод и форматирование, тексты ошибок, описатели авторских подписей.
|
|
4
|
+
*
|
|
5
|
+
* Провайдер и хуки (`I18nProvider`, `useI18n`, `useMessages`, `useIssueMessage`) отдаёт вход
|
|
6
|
+
* `@reformer/core/react`. Из главной бочки `@reformer/core` этот модуль не реэкспортируется:
|
|
7
|
+
* канонический импорт один.
|
|
8
|
+
*
|
|
9
|
+
* @group i18n
|
|
10
|
+
* @module i18n
|
|
11
|
+
*/
|
|
12
|
+
export { parseMessage, formatPattern, createMessageFormatter, MessageSyntaxError, } from './i18n/message-format';
|
|
13
|
+
export type { MessageNode, MessagePattern, MessageBranches, MessageValues, MessageFormatOptions, } from './i18n/message-format';
|
|
14
|
+
export { DEFAULT_LOCALE, extendLocale, validateLocale, messageArguments } from './i18n/locale';
|
|
15
|
+
export type { FormLocale, Messages, WeekStart, LocaleIssue } from './i18n/locale';
|
|
16
|
+
export { createLocaleLoader, fetchMessages, bundledLocaleSource } from './i18n/loader';
|
|
17
|
+
export type { LocaleLoader, LocaleSource, LocaleSourceResult } from './i18n/loader';
|
|
18
|
+
export { createLocaleStore } from './i18n/locale-store';
|
|
19
|
+
export type { LocaleLoad, LocaleStore, LocaleStoreState, LocaleStoreOptions, } from './i18n/locale-store';
|
|
20
|
+
export { createI18n, translateBuiltin } from './i18n/translator';
|
|
21
|
+
export type { I18nHandle } from './i18n/translator';
|
|
22
|
+
export { resolveIssueMessage, defineIssueMessages } from './i18n/validation-message';
|
|
23
|
+
export type { IssueMessage, IssueMessages } from './i18n/validation-message';
|
|
24
|
+
export { msg, defineMessages, isMessageDescriptor, MESSAGE_DESCRIPTOR } from './i18n/descriptor';
|
|
25
|
+
export type { MessageDescriptor, LocalizableText } from './i18n/descriptor';
|
|
26
|
+
export { resolveLocalized } from './i18n/resolve-localized';
|
package/dist/i18n.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { D as j, M as x, c as A, e as E, f as _, m as k, p as l, v as D } from "./locale-CG54AU2Q.js";
|
|
2
|
+
import { b as P, c as z, f as C } from "./loader-BWkigpVe.js";
|
|
3
|
+
import { a as R, c as T, d as $, r as q, t as w } from "./validation-message-Ced9MGxs.js";
|
|
4
|
+
import { isSignal as a } from "./signals.js";
|
|
5
|
+
const d = Symbol.for("reformer.i18n.message");
|
|
6
|
+
function g(e, r, t) {
|
|
7
|
+
return Object.freeze({
|
|
8
|
+
[d]: !0,
|
|
9
|
+
key: e,
|
|
10
|
+
...r === void 0 ? {} : { values: r },
|
|
11
|
+
...t === void 0 ? {} : { defaultMessage: t }
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
function m(e) {
|
|
15
|
+
return e !== null && typeof e == "object" && e[d] === !0;
|
|
16
|
+
}
|
|
17
|
+
function L(e) {
|
|
18
|
+
return { msg: (r, t) => g(r, t, e[r]) };
|
|
19
|
+
}
|
|
20
|
+
function u(e) {
|
|
21
|
+
const r = Object.getPrototypeOf(e);
|
|
22
|
+
return r === Object.prototype || r === null;
|
|
23
|
+
}
|
|
24
|
+
function p(e) {
|
|
25
|
+
if (a(e)) return !0;
|
|
26
|
+
const r = e;
|
|
27
|
+
return r.$$typeof !== void 0 || r.__path !== void 0 || r.__kind !== void 0;
|
|
28
|
+
}
|
|
29
|
+
function y(e) {
|
|
30
|
+
if (e === void 0) return;
|
|
31
|
+
const r = {};
|
|
32
|
+
for (const t of Object.keys(e)) {
|
|
33
|
+
const o = e[t];
|
|
34
|
+
r[t] = a(o) ? o.value : o;
|
|
35
|
+
}
|
|
36
|
+
return r;
|
|
37
|
+
}
|
|
38
|
+
function f(e, r, t) {
|
|
39
|
+
if (e === null || typeof e != "object") return e;
|
|
40
|
+
if (m(e))
|
|
41
|
+
return r.t(e.key, y(e.values), e.defaultMessage);
|
|
42
|
+
if (p(e) || t.has(e)) return e;
|
|
43
|
+
if (Array.isArray(e)) {
|
|
44
|
+
t.add(e);
|
|
45
|
+
let s = !1;
|
|
46
|
+
const c = e.map((n) => {
|
|
47
|
+
const i = f(n, r, t);
|
|
48
|
+
return i !== n && (s = !0), i;
|
|
49
|
+
});
|
|
50
|
+
return t.delete(e), s ? c : e;
|
|
51
|
+
}
|
|
52
|
+
if (!u(e)) return e;
|
|
53
|
+
t.add(e);
|
|
54
|
+
let o;
|
|
55
|
+
for (const s of Object.keys(e)) {
|
|
56
|
+
const c = e[s], n = f(c, r, t);
|
|
57
|
+
n !== c && (o ??= { ...e }, o[s] = n);
|
|
58
|
+
}
|
|
59
|
+
return t.delete(e), o ?? e;
|
|
60
|
+
}
|
|
61
|
+
function M(e, r) {
|
|
62
|
+
return f(e, r, /* @__PURE__ */ new Set());
|
|
63
|
+
}
|
|
64
|
+
export {
|
|
65
|
+
j as DEFAULT_LOCALE,
|
|
66
|
+
d as MESSAGE_DESCRIPTOR,
|
|
67
|
+
x as MessageSyntaxError,
|
|
68
|
+
P as bundledLocaleSource,
|
|
69
|
+
R as createI18n,
|
|
70
|
+
z as createLocaleLoader,
|
|
71
|
+
T as createLocaleStore,
|
|
72
|
+
A as createMessageFormatter,
|
|
73
|
+
$ as defineIssueMessages,
|
|
74
|
+
L as defineMessages,
|
|
75
|
+
E as extendLocale,
|
|
76
|
+
C as fetchMessages,
|
|
77
|
+
_ as formatPattern,
|
|
78
|
+
m as isMessageDescriptor,
|
|
79
|
+
k as messageArguments,
|
|
80
|
+
g as msg,
|
|
81
|
+
l as parseMessage,
|
|
82
|
+
q as resolveIssueMessage,
|
|
83
|
+
M as resolveLocalized,
|
|
84
|
+
w as translateBuiltin,
|
|
85
|
+
D as validateLocale
|
|
86
|
+
};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Публичный barrel `@reformer/core` — зонтик над
|
|
2
|
+
* Публичный barrel `@reformer/core` — зонтик над слоями `model` и `form`.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* `model` — реактивная модель данных (сабпат `@reformer/core/model`); `form` — узлы, поведение и
|
|
5
|
+
* валидация поверх её сигналов. React здесь нет ни в рантайме, ни в типах: хуки, связка поля с
|
|
6
|
+
* контролом и React-привязки локализации живут в отдельном входе `@reformer/core/react`
|
|
7
|
+
* (`src/react.ts`), поэтому корень работает на сервере и с любым слоем представления.
|
|
8
|
+
*
|
|
9
|
+
* @module index
|
|
10
|
+
* @mergeModuleWith <project>
|
|
6
11
|
*/
|
|
7
12
|
export * from './form/types/index';
|
|
8
|
-
export
|
|
9
|
-
export
|
|
13
|
+
export { createModel, eachLeafSignal, eachValueSignal } from './model/create-model';
|
|
14
|
+
export { arrayOf } from './model/model-nodes';
|
|
15
|
+
export type { DeepPartial, FormModel, ModelArray, ModelArraySignals, ModelGroupSignals, ModelObject, ModelValue, ModelSignals, ModelApi, PathAwareSignal, } from './model/types';
|
|
16
|
+
export { isModelContainerSignal, isValueSignal } from './model/model-signals-proxy';
|
|
17
|
+
export { modelOf } from './model/model-value-proxy';
|
|
18
|
+
export type { ModelOf } from './model/model-value-proxy';
|
|
19
|
+
export type { BehaviorCleanup } from './model/behaviors-value';
|
|
20
|
+
export { markDerived, isDerived, unmarkDerived } from './model/derived-registry';
|
|
21
|
+
export { runOutsideEffect, safeCallback, safeDebouncedCallback } from './model/safe-effect';
|
|
10
22
|
export * from './form/index';
|
|
11
|
-
export
|
|
23
|
+
export { CORE_RUNTIME_TOKEN } from './runtime-token';
|