@reformer/core 11.0.0-beta.7 → 11.0.0-beta.9
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-HA_Q03hc.js +108 -0
- package/dist/behaviors.js +382 -217
- package/dist/create-model-BvcbNPgL.js +30 -0
- package/dist/date-utils-90-qZbse.js +43 -0
- package/dist/{en-CjAqn7h0.js → en-HP8XEych.js} +6 -3
- package/dist/form/aggregate-signals.d.ts +21 -63
- package/dist/form/behaviors/collections.d.ts +42 -8
- package/dist/form/behaviors/context.d.ts +37 -4
- package/dist/form/behaviors/index.d.ts +6 -4
- package/dist/form/behaviors/internals.d.ts +9 -3
- package/dist/form/behaviors/node.d.ts +25 -2
- package/dist/form/behaviors/operators.d.ts +17 -9
- package/dist/form/behaviors/schema-operators.d.ts +78 -0
- package/dist/form/behaviors/types.d.ts +25 -5
- package/dist/form/create-form.d.ts +57 -70
- package/dist/form/flow/flow.d.ts +87 -0
- package/dist/form/form-bundle.d.ts +153 -0
- package/dist/form/form-config-base.d.ts +46 -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 +20 -20
- 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 +153 -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 +19 -92
- package/dist/form/types/field-config.d.ts +27 -0
- package/dist/form/types/index.d.ts +5 -57
- package/dist/form/types/nodes.d.ts +159 -0
- package/dist/form/types/schema-node.d.ts +147 -46
- package/dist/form/types/validation-schema.d.ts +23 -27
- package/dist/form/validation/context.d.ts +46 -6
- package/dist/form/validation/index.d.ts +9 -8
- package/dist/form/validation/operators.d.ts +71 -17
- package/dist/form/validation/run.d.ts +93 -18
- package/dist/form/validation/strategy.d.ts +41 -13
- package/dist/form/validation/types.d.ts +74 -19
- package/dist/form/validators/date-utils.d.ts +13 -1
- package/dist/form/validators/email.d.ts +8 -7
- package/dist/form/validators/file-type.d.ts +8 -7
- package/dist/form/validators/file-utils.d.ts +2 -1
- package/dist/form/validators/future-date.d.ts +8 -7
- package/dist/form/validators/index.d.ts +1 -1
- package/dist/form/validators/integer.d.ts +8 -7
- package/dist/form/validators/is-date.d.ts +11 -9
- package/dist/form/validators/is-number.d.ts +11 -9
- package/dist/form/validators/max-age.d.ts +13 -9
- package/dist/form/validators/max-date.d.ts +8 -7
- package/dist/form/validators/max-file-size.d.ts +8 -7
- package/dist/form/validators/max-files.d.ts +8 -7
- package/dist/form/validators/max-length.d.ts +14 -7
- package/dist/form/validators/max-total-file-size.d.ts +8 -7
- package/dist/form/validators/max.d.ts +10 -8
- package/dist/form/validators/min-age.d.ts +12 -9
- package/dist/form/validators/min-date.d.ts +8 -7
- package/dist/form/validators/min-file-size.d.ts +8 -7
- package/dist/form/validators/min-files.d.ts +11 -9
- package/dist/form/validators/min-length.d.ts +14 -7
- package/dist/form/validators/min.d.ts +10 -8
- package/dist/form/validators/multiple-of.d.ts +10 -8
- package/dist/form/validators/non-negative.d.ts +8 -7
- package/dist/form/validators/non-zero.d.ts +8 -7
- package/dist/form/validators/past-date.d.ts +8 -7
- package/dist/form/validators/pattern.d.ts +9 -8
- package/dist/form/validators/phone.d.ts +8 -7
- package/dist/form/validators/required.d.ts +11 -9
- package/dist/form/validators/url.d.ts +20 -13
- package/dist/form/validators/validation-issue.d.ts +8 -0
- package/dist/i18n/descriptor.d.ts +1 -1
- package/dist/i18n/en.json.d.ts +5 -1
- package/dist/i18n/locale-store.d.ts +7 -0
- package/dist/i18n/message-format.d.ts +24 -4
- package/dist/i18n/ru.json.d.ts +5 -1
- package/dist/i18n/translator.d.ts +11 -0
- package/dist/i18n/validation-message.d.ts +42 -7
- package/dist/i18n.d.ts +7 -12
- package/dist/i18n.js +66 -283
- package/dist/index.d.ts +16 -7
- package/dist/index.js +958 -2798
- package/dist/loader-BWkigpVe.js +52 -0
- package/dist/locale/en.js +1 -1
- package/dist/locale/en.json +4 -1
- package/dist/locale/ru.js +4 -1
- package/dist/locale/ru.json +4 -1
- package/dist/locale-CG54AU2Q.js +219 -0
- package/dist/locale.js +1 -1
- package/dist/model/behaviors-value.d.ts +24 -6
- package/dist/model/create-model.d.ts +2 -2
- package/dist/model/derived-registry.d.ts +1 -1
- package/dist/model/index.d.ts +16 -5
- package/dist/model/model-nodes.d.ts +138 -8
- package/dist/model/model-signals-proxy.d.ts +11 -5
- package/dist/model/model-value-proxy.d.ts +84 -3
- package/dist/model/safe-effect.d.ts +33 -1
- package/dist/model/types.d.ts +70 -17
- package/dist/model.js +21 -17
- package/dist/node-kind-C-r6ZMdo.js +15 -0
- package/dist/platforms/react/field-binding/field-adapter.d.ts +1 -1
- package/dist/platforms/react/field-binding/field-handle.d.ts +5 -2
- package/dist/platforms/react/form-bundle-context.d.ts +27 -0
- package/dist/platforms/react/hooks/types.d.ts +57 -38
- package/dist/platforms/react/hooks/use-form-bundle.d.ts +19 -4
- package/dist/platforms/react/hooks/use-form-flow.d.ts +40 -0
- package/dist/platforms/react/hooks/use-form-validation.d.ts +12 -6
- package/dist/platforms/react/hooks/useArrayLength.d.ts +6 -6
- package/dist/platforms/react/hooks/useFormControl.d.ts +7 -9
- package/dist/platforms/react/hooks/useFormControlValue.d.ts +18 -19
- package/dist/platforms/react/hooks/useSignalSubscription.d.ts +9 -1
- package/dist/platforms/react/i18n/context.d.ts +6 -1
- package/dist/platforms/react/i18n/hooks.d.ts +16 -10
- package/dist/platforms/react/i18n/provider.d.ts +9 -2
- package/dist/platforms/react/index.d.ts +7 -4
- package/dist/react.d.ts +22 -0
- package/dist/react.js +505 -0
- package/dist/runtime-token.d.ts +1 -2
- package/dist/safe-effect-BbtX3KuN.js +643 -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-CoFSemuP.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.js +9 -8
- package/dist/validators/email.js +5 -5
- package/dist/validators/future-date.js +8 -8
- package/dist/validators/integer.js +3 -3
- package/dist/validators/is-date.js +4 -4
- package/dist/validators/is-number.js +4 -4
- package/dist/validators/max-age.js +8 -9
- package/dist/validators/max-date.js +8 -8
- package/dist/validators/max-length.js +7 -7
- package/dist/validators/max.js +4 -4
- package/dist/validators/min-age.js +10 -8
- package/dist/validators/min-date.js +3 -3
- package/dist/validators/min-length.js +5 -5
- package/dist/validators/min.js +4 -4
- package/dist/validators/multiple-of.js +11 -7
- package/dist/validators/non-negative.js +3 -3
- package/dist/validators/non-zero.js +3 -3
- package/dist/validators/past-date.js +8 -8
- package/dist/validators/pattern.js +5 -5
- package/dist/validators/phone.js +11 -9
- package/dist/validators/required.js +2 -2
- package/dist/validators/url.js +48 -12
- package/dist/validators.js +17 -17
- package/docs/llms/01-api-reference.md +60 -34
- package/docs/llms/02-quick-start.md +111 -80
- package/docs/llms/03-api-signatures.md +368 -153
- package/docs/llms/04-common-patterns.md +58 -56
- package/docs/llms/05-common-mistakes.md +69 -44
- package/docs/llms/06-troubleshooting.md +14 -9
- package/docs/llms/07-complete-import.md +74 -43
- package/docs/llms/08-form-types.md +11 -4
- package/docs/llms/09-formschema.md +131 -83
- package/docs/llms/10-arrays.md +119 -69
- package/docs/llms/11-async-watchfield.md +2 -2
- package/docs/llms/13-multi-step.md +134 -63
- package/docs/llms/14-extended-mistakes.md +20 -17
- package/docs/llms/15-project-structure.md +221 -74
- package/docs/llms/16-ui-components.md +55 -42
- package/docs/llms/17-nonexistent-api.md +199 -32
- package/docs/llms/18-conditional-fields.md +66 -32
- package/docs/llms/19-reading-values.md +15 -3
- package/docs/llms/20-compute-vs-watch.md +16 -10
- package/docs/llms/21-array-operations.md +76 -26
- package/docs/llms/22-cycle-detection.md +1 -1
- package/docs/llms/23-copy-from.md +2 -2
- package/docs/llms/24-sync-fields.md +6 -5
- package/docs/llms/25-reset-when.md +14 -7
- package/docs/llms/26-transform-value.md +4 -4
- package/docs/llms/27-revalidate-when.md +16 -15
- package/docs/llms/28-submit-and-reset.md +276 -128
- package/docs/llms/29-async-preload.md +40 -30
- package/docs/llms/30-type-safety-recipes.md +105 -51
- package/docs/llms/31-async-validator-debounce.md +96 -53
- package/docs/llms/33-validation-strategy.md +178 -66
- package/docs/llms/34-i18n.md +69 -43
- package/docs/llms/35-unified-contract.md +307 -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 +397 -0
- package/llms-index.json +1 -1
- package/llms.txt +6968 -3278
- package/package.json +23 -4
- package/dist/behaviors-value-C7dSEhCc.js +0 -134
- package/dist/create-model-B8U-COv-.js +0 -103
- package/dist/date-utils-dTT_x_Be.js +0 -31
- package/dist/form/create-core-form.d.ts +0 -70
- package/dist/form/factories/index.d.ts +0 -6
- package/dist/form/factories/node-factory.d.ts +0 -189
- package/dist/form/form-submitter.d.ts +0 -121
- package/dist/form/nodes/array-node.d.ts +0 -276
- package/dist/form/nodes/field-node.d.ts +0 -297
- package/dist/form/nodes/form-node.d.ts +0 -326
- package/dist/form/nodes/group-node.d.ts +0 -284
- package/dist/form/nodes/model-array-node.d.ts +0 -121
- package/dist/form/nodes/subscription-manager.d.ts +0 -180
- package/dist/form/status-machine.d.ts +0 -115
- package/dist/form/types/deep-schema.d.ts +0 -107
- package/dist/form/types/form-proxy.d.ts +0 -141
- package/dist/form/unique-id.d.ts +0 -45
- package/dist/form/validation/config.d.ts +0 -73
- package/dist/form/validation/error-handler.d.ts +0 -166
- package/dist/form/validators/validation-error.d.ts +0 -8
- package/dist/index-BrNkQj1y.js +0 -105
- package/dist/loader-Dv_Hl7JC.js +0 -216
- package/dist/model-signals-proxy-2vqS243J.js +0 -250
- package/dist/node-DGEFMTQu.js +0 -18
- package/dist/strategy-BXS_gBfz.js +0 -170
- package/dist/validation-error-B-U3RsV0.js +0 -11
package/dist/form/unique-id.d.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Генератор уникальных идентификаторов
|
|
3
|
-
*
|
|
4
|
-
* Использует атомный счётчик для генерации гарантированно уникальных ключей.
|
|
5
|
-
* Решает проблему возможного дублирования ключей при использовании
|
|
6
|
-
* Date.now() + Math.random() в быстрых последовательных вызовах.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* const key1 = uniqueId(SubscriptionKey.Watch); // "watch-1"
|
|
11
|
-
* const key2 = uniqueId(SubscriptionKey.Watch); // "watch-2"
|
|
12
|
-
* const key3 = uniqueId(SubscriptionKey.ComputeFrom); // "computeFrom-3"
|
|
13
|
-
* ```
|
|
14
|
-
*/
|
|
15
|
-
/**
|
|
16
|
-
* Типобезопасные ключи для подписок
|
|
17
|
-
* Используются с uniqueId() для генерации уникальных идентификаторов
|
|
18
|
-
*/
|
|
19
|
-
export declare const SubscriptionKey: {
|
|
20
|
-
/** FieldNode.watch() */
|
|
21
|
-
readonly Watch: "watch";
|
|
22
|
-
/** FieldNode.computeFrom() */
|
|
23
|
-
readonly ComputeFrom: "computeFrom";
|
|
24
|
-
/** GroupNode.linkFields() */
|
|
25
|
-
readonly LinkFields: "linkFields";
|
|
26
|
-
/** GroupNode.watchField() */
|
|
27
|
-
readonly WatchField: "watchField";
|
|
28
|
-
};
|
|
29
|
-
export type SubscriptionKeyType = (typeof SubscriptionKey)[keyof typeof SubscriptionKey];
|
|
30
|
-
/**
|
|
31
|
-
* Генерирует уникальный идентификатор с указанным префиксом.
|
|
32
|
-
*
|
|
33
|
-
* @param prefix - Префикс для идентификатора (используйте {@link SubscriptionKey}).
|
|
34
|
-
* @returns Уникальный идентификатор в формате `${prefix}-${counter}`.
|
|
35
|
-
*
|
|
36
|
-
* ⚠️ `SubscriptionKey`/`SubscriptionKeyType` — внутренние: барель `@reformer/core` их не отдаёт,
|
|
37
|
-
* поэтому вызвать `uniqueId` извне пакета типобезопасно нельзя. Пример ниже — внутрипакетный.
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```typescript
|
|
41
|
-
* uniqueId(SubscriptionKey.WatchField); // → 'watchField-1'
|
|
42
|
-
* uniqueId(SubscriptionKey.WatchField); // → 'watchField-2'
|
|
43
|
-
* ```
|
|
44
|
-
*/
|
|
45
|
-
export declare function uniqueId(prefix: SubscriptionKeyType): string;
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { ReadonlySignal } from '@preact/signals-core';
|
|
2
|
-
import { FormModel } from '../../model/types';
|
|
3
|
-
import { ValidationSchema } from './types';
|
|
4
|
-
import { FormValidationController, ValidationStrategyKind } from './strategy';
|
|
5
|
-
/**
|
|
6
|
-
* Правила валидации формы — ДАННЫЕ (без привязки к рендеру).
|
|
7
|
-
*
|
|
8
|
-
* ⚠️ `schema` и значения `steps` обязаны быть **стабильными ссылками**: отмена устаревших прогонов
|
|
9
|
-
* ключуется по паре `(model, schema)` через `WeakMap`, поэтому инлайн-стрелка ломает дедупликацию —
|
|
10
|
-
* валидация начнёт возвращать `false` от уже отменённых прогонов. Держите их
|
|
11
|
-
* module-level-константами (`defineValidationSchema`).
|
|
12
|
-
*/
|
|
13
|
-
export interface FormValidation<T> {
|
|
14
|
-
/** Полный набор правил — для submit и `validateAll`. Без него собирается из `steps` + `extras`. */
|
|
15
|
-
schema?: ValidationSchema<T>;
|
|
16
|
-
/**
|
|
17
|
-
* Пошаговая валидация визарда: ключ = `selector` шага. `null` означает «шаг без правил» ЯВНО —
|
|
18
|
-
* чтобы опечатка в ключе не выглядела как пустой шаг.
|
|
19
|
-
*/
|
|
20
|
-
steps?: Record<string, ValidationSchema<T> | null>;
|
|
21
|
-
/** Cross-field правила, которые проверяются только целиком (в `validateAll`), но не по шагам. */
|
|
22
|
-
extras?: ValidationSchema<T>;
|
|
23
|
-
/** Когда запускать живую валидацию. По умолчанию `'submit'` (реактивно молчит). */
|
|
24
|
-
strategy?: ValidationStrategyKind;
|
|
25
|
-
debounce?: number;
|
|
26
|
-
/** Режим live-фазы для `afterFirstSubmit`. По умолчанию `'change'`. */
|
|
27
|
-
liveAfterSubmit?: 'change' | 'blur';
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Собранная валидация формы. Структурно совместима с `FormWizardConfig` и `StepValidationConfig`
|
|
31
|
-
* из `@reformer/cdk`, поэтому уходит в визард как есть: `config={bundle.validation}` либо
|
|
32
|
-
* `patchProps({ form, ...bundle.validation })`.
|
|
33
|
-
*/
|
|
34
|
-
export interface FormValidationBundle<T> {
|
|
35
|
-
/** Полная схема (стабильная ссылка) — та, по которой идёт `validateAll`. */
|
|
36
|
-
readonly schema: ValidationSchema<T>;
|
|
37
|
-
/** Селекторы шагов в порядке объявления. Пусто, если `steps` не заданы. */
|
|
38
|
-
readonly stepSelectors: readonly string[];
|
|
39
|
-
/** Полный прогон с раскрытием ошибок. Синоним {@link FormValidationBundle.validateAll}. */
|
|
40
|
-
validate(): Promise<boolean>;
|
|
41
|
-
validateAll(): Promise<boolean>;
|
|
42
|
-
/** Прогон правил одного шага: по номеру (1-based, как у визарда) или по селектору. */
|
|
43
|
-
validateStep(step: number | string): Promise<boolean>;
|
|
44
|
-
/** Контроллер живой валидации ШАГА; `null` — у шага нет правил либо стратегия `submit`. */
|
|
45
|
-
createStepController(step: number | string): FormValidationController | null;
|
|
46
|
-
/** Контроллер живой валидации ФОРМЫ. Армится хуком (`useFormBundle`), не фабрикой. */
|
|
47
|
-
readonly controller: FormValidationController;
|
|
48
|
-
/** Идёт ли прогон — реактивный сигнал (для тонкой подписки в UI). */
|
|
49
|
-
readonly validating: ReadonlySignal<boolean>;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Собрать {@link FormValidationBundle} из правил. Принимает либо готовую схему (сахар для простых
|
|
53
|
-
* форм), либо {@link FormValidation} с шагами и стратегией.
|
|
54
|
-
*
|
|
55
|
-
* Схема для `validateAll` собирается ОДИН раз на бандл — иначе ломается дедупликация прогонов.
|
|
56
|
-
*
|
|
57
|
-
* @typeParam T - Форма данных модели.
|
|
58
|
-
* @param model - Модель, по которой идут прогоны.
|
|
59
|
-
* @param validation - Правила; `undefined` — валидации у формы нет.
|
|
60
|
-
* @returns Бандл валидации либо `undefined`, если правила не заданы.
|
|
61
|
-
*
|
|
62
|
-
* @example
|
|
63
|
-
* ```ts
|
|
64
|
-
* const v = buildValidation(model, {
|
|
65
|
-
* steps: { loan: loanRules, applicant: applicantRules, confirm: null },
|
|
66
|
-
* extras: crossFieldRules,
|
|
67
|
-
* strategy: 'blur',
|
|
68
|
-
* });
|
|
69
|
-
* await v!.validateStep(1); // правила шага `loan`
|
|
70
|
-
* await v!.validateAll(); // все шаги + extras
|
|
71
|
-
* ```
|
|
72
|
-
*/
|
|
73
|
-
export declare function buildValidation<T>(model: FormModel<T>, validation?: FormValidation<T> | ValidationSchema<T>): FormValidationBundle<T> | undefined;
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import { ValidationError } from '../types/contracts';
|
|
2
|
-
/**
|
|
3
|
-
* Стратегия обработки ошибок
|
|
4
|
-
*
|
|
5
|
-
* Определяет, что делать с ошибкой после логирования
|
|
6
|
-
*/
|
|
7
|
-
export declare enum ErrorStrategy {
|
|
8
|
-
/**
|
|
9
|
-
* Пробросить ошибку дальше (throw)
|
|
10
|
-
* Используется когда ошибка критична и должна остановить выполнение
|
|
11
|
-
*/
|
|
12
|
-
THROW = "throw",
|
|
13
|
-
/**
|
|
14
|
-
* Залогировать и проглотить ошибку (продолжить выполнение)
|
|
15
|
-
* Используется когда ошибка не критична
|
|
16
|
-
*/
|
|
17
|
-
LOG = "log",
|
|
18
|
-
/**
|
|
19
|
-
* Конвертировать ошибку в ValidationError
|
|
20
|
-
* Используется в async validators для отображения ошибки валидации пользователю
|
|
21
|
-
*/
|
|
22
|
-
CONVERT = "convert"
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Централизованный обработчик ошибок для форм
|
|
26
|
-
*
|
|
27
|
-
* Обеспечивает:
|
|
28
|
-
* - Единообразное логирование ошибок в DEV режиме
|
|
29
|
-
* - Гибкие стратегии обработки (throw/log/convert)
|
|
30
|
-
* - Типобезопасное извлечение сообщений из Error/string/unknown
|
|
31
|
-
*
|
|
32
|
-
* @example
|
|
33
|
-
* ```typescript
|
|
34
|
-
* // В async validator (конвертировать в ValidationError)
|
|
35
|
-
* try {
|
|
36
|
-
* await validateEmail(value);
|
|
37
|
-
* } catch (error) {
|
|
38
|
-
* return FormErrorHandler.handle(error, 'EmailValidator', ErrorStrategy.CONVERT);
|
|
39
|
-
* }
|
|
40
|
-
*
|
|
41
|
-
* // В behavior applicator (пробросить критичную ошибку)
|
|
42
|
-
* try {
|
|
43
|
-
* applyBehavior(schema);
|
|
44
|
-
* } catch (error) {
|
|
45
|
-
* FormErrorHandler.handle(error, 'BehaviorApplicator', ErrorStrategy.THROW);
|
|
46
|
-
* }
|
|
47
|
-
*
|
|
48
|
-
* // В validator (залогировать и продолжить)
|
|
49
|
-
* try {
|
|
50
|
-
* validator(value);
|
|
51
|
-
* } catch (error) {
|
|
52
|
-
* FormErrorHandler.handle(error, 'Validator', ErrorStrategy.LOG);
|
|
53
|
-
* }
|
|
54
|
-
* ```
|
|
55
|
-
*/
|
|
56
|
-
export declare class FormErrorHandler {
|
|
57
|
-
/**
|
|
58
|
-
* Обработать ошибку согласно заданной стратегии
|
|
59
|
-
*
|
|
60
|
-
* @param error Ошибка для обработки (Error | string | unknown)
|
|
61
|
-
* @param context Контекст ошибки для логирования (например, 'AsyncValidator', 'BehaviorRegistry')
|
|
62
|
-
* @param strategy Стратегия обработки (THROW | LOG | CONVERT)
|
|
63
|
-
* @returns ValidationError если strategy = CONVERT, undefined если strategy = LOG, никогда не возвращается если strategy = THROW
|
|
64
|
-
*
|
|
65
|
-
* @example
|
|
66
|
-
* ```typescript
|
|
67
|
-
* // THROW - пробросить ошибку
|
|
68
|
-
* try {
|
|
69
|
-
* riskyOperation();
|
|
70
|
-
* } catch (error) {
|
|
71
|
-
* FormErrorHandler.handle(error, 'RiskyOperation', ErrorStrategy.THROW);
|
|
72
|
-
* // Этот код никогда не выполнится
|
|
73
|
-
* }
|
|
74
|
-
*
|
|
75
|
-
* // LOG - залогировать и продолжить
|
|
76
|
-
* try {
|
|
77
|
-
* nonCriticalOperation();
|
|
78
|
-
* } catch (error) {
|
|
79
|
-
* FormErrorHandler.handle(error, 'NonCritical', ErrorStrategy.LOG);
|
|
80
|
-
* // Продолжаем выполнение
|
|
81
|
-
* }
|
|
82
|
-
*
|
|
83
|
-
* // CONVERT - конвертировать в ValidationError
|
|
84
|
-
* try {
|
|
85
|
-
* await validator(value);
|
|
86
|
-
* } catch (error) {
|
|
87
|
-
* const validationError = FormErrorHandler.handle(
|
|
88
|
-
* error,
|
|
89
|
-
* 'AsyncValidator',
|
|
90
|
-
* ErrorStrategy.CONVERT
|
|
91
|
-
* );
|
|
92
|
-
* return validationError;
|
|
93
|
-
* }
|
|
94
|
-
* ```
|
|
95
|
-
*/
|
|
96
|
-
static handle(error: unknown, context: string, strategy: ErrorStrategy.CONVERT): ValidationError;
|
|
97
|
-
static handle(error: unknown, context: string, strategy: ErrorStrategy.THROW): never;
|
|
98
|
-
static handle(error: unknown, context: string, strategy: ErrorStrategy.LOG): void;
|
|
99
|
-
static handle(error: unknown, context: string): never;
|
|
100
|
-
/**
|
|
101
|
-
* Извлечь сообщение из ошибки
|
|
102
|
-
*
|
|
103
|
-
* Обрабатывает различные типы ошибок:
|
|
104
|
-
* - Error объекты → error.message
|
|
105
|
-
* - Строки → возвращает как есть
|
|
106
|
-
* - Объекты с message → извлекает message
|
|
107
|
-
* - Другое → String(error)
|
|
108
|
-
*
|
|
109
|
-
* @param error Ошибка для извлечения сообщения
|
|
110
|
-
* @returns Сообщение ошибки
|
|
111
|
-
* @private
|
|
112
|
-
*
|
|
113
|
-
* @example
|
|
114
|
-
* ```typescript
|
|
115
|
-
* FormErrorHandler.extractMessage(new Error('Test'));
|
|
116
|
-
* // 'Test'
|
|
117
|
-
*
|
|
118
|
-
* FormErrorHandler.extractMessage('String error');
|
|
119
|
-
* // 'String error'
|
|
120
|
-
*
|
|
121
|
-
* FormErrorHandler.extractMessage({ message: 'Object error' });
|
|
122
|
-
* // 'Object error'
|
|
123
|
-
*
|
|
124
|
-
* FormErrorHandler.extractMessage(null);
|
|
125
|
-
* // 'null'
|
|
126
|
-
* ```
|
|
127
|
-
*/
|
|
128
|
-
private static extractMessage;
|
|
129
|
-
/**
|
|
130
|
-
* Создать ValidationError с заданными параметрами
|
|
131
|
-
*
|
|
132
|
-
* Утилитная функция для создания ValidationError объектов
|
|
133
|
-
*
|
|
134
|
-
* @param code Код ошибки
|
|
135
|
-
* @param message Сообщение ошибки
|
|
136
|
-
* @param field Поле (опционально)
|
|
137
|
-
* @returns ValidationError объект
|
|
138
|
-
*
|
|
139
|
-
* @example
|
|
140
|
-
* ```typescript
|
|
141
|
-
* const error = FormErrorHandler.createValidationError(
|
|
142
|
-
* 'required',
|
|
143
|
-
* 'This field is required',
|
|
144
|
-
* 'email'
|
|
145
|
-
* );
|
|
146
|
-
* // { code: 'required', message: 'This field is required', field: 'email' }
|
|
147
|
-
* ```
|
|
148
|
-
*/
|
|
149
|
-
static createValidationError(code: string, message: string, field?: string): ValidationError;
|
|
150
|
-
/**
|
|
151
|
-
* Проверить, является ли объект ValidationError
|
|
152
|
-
*
|
|
153
|
-
* Type guard для ValidationError
|
|
154
|
-
*
|
|
155
|
-
* @param value Значение для проверки
|
|
156
|
-
* @returns true если value является ValidationError
|
|
157
|
-
*
|
|
158
|
-
* @example
|
|
159
|
-
* ```typescript
|
|
160
|
-
* if (FormErrorHandler.isValidationError(result)) {
|
|
161
|
-
* console.log(result.code); // OK, типобезопасно
|
|
162
|
-
* }
|
|
163
|
-
* ```
|
|
164
|
-
*/
|
|
165
|
-
static isValidationError(value: unknown): value is ValidationError;
|
|
166
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { FormValue, ValidationError } from '../types/contracts';
|
|
2
|
-
import { ValidateOptions } from '../types/validation-schema';
|
|
3
|
-
/**
|
|
4
|
-
* @param code - Код ошибки; по нему ищется текст в словаре локали (`validation.<code>`).
|
|
5
|
-
* @param options - Опции правила: явное сообщение, ключ сообщения, дополнительные параметры.
|
|
6
|
-
* @param params - Параметры, которые правило заполняет само; параметры из `options` важнее.
|
|
7
|
-
*/
|
|
8
|
-
export declare function validationError(code: string, options: ValidateOptions | undefined, params?: Record<string, FormValue>): ValidationError;
|
package/dist/index-BrNkQj1y.js
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import T from "react";
|
|
2
|
-
var l = { exports: {} }, y = {};
|
|
3
|
-
var L;
|
|
4
|
-
function A() {
|
|
5
|
-
if (L) return y;
|
|
6
|
-
L = 1;
|
|
7
|
-
var i = T;
|
|
8
|
-
function _(t, o) {
|
|
9
|
-
return t === o && (t !== 0 || 1 / t === 1 / o) || t !== t && o !== o;
|
|
10
|
-
}
|
|
11
|
-
var c = typeof Object.is == "function" ? Object.is : _, p = i.useState, u = i.useEffect, S = i.useLayoutEffect, E = i.useDebugValue;
|
|
12
|
-
function O(t, o) {
|
|
13
|
-
var e = o(), r = p({ inst: { value: e, getSnapshot: o } }), n = r[0].inst, a = r[1];
|
|
14
|
-
return S(
|
|
15
|
-
function() {
|
|
16
|
-
n.value = e, n.getSnapshot = o, f(n) && a({ inst: n });
|
|
17
|
-
},
|
|
18
|
-
[t, e, o]
|
|
19
|
-
), u(
|
|
20
|
-
function() {
|
|
21
|
-
return f(n) && a({ inst: n }), t(function() {
|
|
22
|
-
f(n) && a({ inst: n });
|
|
23
|
-
});
|
|
24
|
-
},
|
|
25
|
-
[t]
|
|
26
|
-
), E(e), e;
|
|
27
|
-
}
|
|
28
|
-
function f(t) {
|
|
29
|
-
var o = t.getSnapshot;
|
|
30
|
-
t = t.value;
|
|
31
|
-
try {
|
|
32
|
-
var e = o();
|
|
33
|
-
return !c(t, e);
|
|
34
|
-
} catch {
|
|
35
|
-
return !0;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
function v(t, o) {
|
|
39
|
-
return o();
|
|
40
|
-
}
|
|
41
|
-
var d = typeof window > "u" || typeof window.document > "u" || typeof window.document.createElement > "u" ? v : O;
|
|
42
|
-
return y.useSyncExternalStore = i.useSyncExternalStore !== void 0 ? i.useSyncExternalStore : d, y;
|
|
43
|
-
}
|
|
44
|
-
var m = {};
|
|
45
|
-
var x;
|
|
46
|
-
function g() {
|
|
47
|
-
return x || (x = 1, process.env.NODE_ENV !== "production" && (function() {
|
|
48
|
-
function i(e, r) {
|
|
49
|
-
return e === r && (e !== 0 || 1 / e === 1 / r) || e !== e && r !== r;
|
|
50
|
-
}
|
|
51
|
-
function _(e, r) {
|
|
52
|
-
d || u.startTransition === void 0 || (d = !0, console.error(
|
|
53
|
-
"You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."
|
|
54
|
-
));
|
|
55
|
-
var n = r();
|
|
56
|
-
if (!t) {
|
|
57
|
-
var a = r();
|
|
58
|
-
S(n, a) || (console.error(
|
|
59
|
-
"The result of getSnapshot should be cached to avoid an infinite loop"
|
|
60
|
-
), t = !0);
|
|
61
|
-
}
|
|
62
|
-
a = E({
|
|
63
|
-
inst: { value: n, getSnapshot: r }
|
|
64
|
-
});
|
|
65
|
-
var s = a[0].inst, h = a[1];
|
|
66
|
-
return f(
|
|
67
|
-
function() {
|
|
68
|
-
s.value = n, s.getSnapshot = r, c(s) && h({ inst: s });
|
|
69
|
-
},
|
|
70
|
-
[e, n, r]
|
|
71
|
-
), O(
|
|
72
|
-
function() {
|
|
73
|
-
return c(s) && h({ inst: s }), e(function() {
|
|
74
|
-
c(s) && h({ inst: s });
|
|
75
|
-
});
|
|
76
|
-
},
|
|
77
|
-
[e]
|
|
78
|
-
), v(n), n;
|
|
79
|
-
}
|
|
80
|
-
function c(e) {
|
|
81
|
-
var r = e.getSnapshot;
|
|
82
|
-
e = e.value;
|
|
83
|
-
try {
|
|
84
|
-
var n = r();
|
|
85
|
-
return !S(e, n);
|
|
86
|
-
} catch {
|
|
87
|
-
return !0;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
function p(e, r) {
|
|
91
|
-
return r();
|
|
92
|
-
}
|
|
93
|
-
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ < "u" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart == "function" && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
|
|
94
|
-
var u = T, S = typeof Object.is == "function" ? Object.is : i, E = u.useState, O = u.useEffect, f = u.useLayoutEffect, v = u.useDebugValue, d = !1, t = !1, o = typeof window > "u" || typeof window.document > "u" || typeof window.document.createElement > "u" ? p : _;
|
|
95
|
-
m.useSyncExternalStore = u.useSyncExternalStore !== void 0 ? u.useSyncExternalStore : o, typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ < "u" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop == "function" && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
|
|
96
|
-
})()), m;
|
|
97
|
-
}
|
|
98
|
-
var w;
|
|
99
|
-
function D() {
|
|
100
|
-
return w || (w = 1, process.env.NODE_ENV === "production" ? l.exports = A() : l.exports = g()), l.exports;
|
|
101
|
-
}
|
|
102
|
-
var G = D();
|
|
103
|
-
export {
|
|
104
|
-
G as s
|
|
105
|
-
};
|
package/dist/loader-Dv_Hl7JC.js
DELETED
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
class $ extends Error {
|
|
2
|
-
name = "MessageSyntaxError";
|
|
3
|
-
}
|
|
4
|
-
const v = (t) => `⟦${t}⟧`, b = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Map();
|
|
5
|
-
function g(t) {
|
|
6
|
-
let e = 0;
|
|
7
|
-
const s = (r) => {
|
|
8
|
-
throw new $(`${r} (позиция ${e}) в сообщении: ${t}`);
|
|
9
|
-
}, o = (r, i) => r === "{" || r === "}" || i && r === "#", n = () => {
|
|
10
|
-
for (; e < t.length && /\s/.test(t[e]); ) e++;
|
|
11
|
-
}, f = () => {
|
|
12
|
-
const r = e;
|
|
13
|
-
for (; e < t.length && !/[\s,{}#]/.test(t[e]); ) e++;
|
|
14
|
-
return e === r && s("ожидалось имя"), t.slice(r, e);
|
|
15
|
-
}, l = (r) => {
|
|
16
|
-
if (e++, t[e] === "'")
|
|
17
|
-
return e++, "'";
|
|
18
|
-
if (!o(t[e], r)) return "'";
|
|
19
|
-
let i = "";
|
|
20
|
-
for (; e < t.length; )
|
|
21
|
-
if (t[e] !== "'") i += t[e++];
|
|
22
|
-
else if (t[e + 1] === "'")
|
|
23
|
-
i += "'", e += 2;
|
|
24
|
-
else
|
|
25
|
-
return e++, i;
|
|
26
|
-
return i;
|
|
27
|
-
}, h = (r, i) => {
|
|
28
|
-
const u = [];
|
|
29
|
-
let m = "";
|
|
30
|
-
const p = () => {
|
|
31
|
-
m !== "" && (u.push({ kind: "text", value: m }), m = "");
|
|
32
|
-
};
|
|
33
|
-
for (; e < t.length; ) {
|
|
34
|
-
const d = t[e];
|
|
35
|
-
if (d === "}") {
|
|
36
|
-
r || s("непарная «}» — литерал пишется как '}'");
|
|
37
|
-
break;
|
|
38
|
-
}
|
|
39
|
-
d === "'" ? m += l(i !== null) : d === "#" && i !== null ? (e++, p(), u.push({ kind: "number", name: i })) : d === "{" ? (p(), u.push(a(i))) : (m += d, e++);
|
|
40
|
-
}
|
|
41
|
-
return p(), u;
|
|
42
|
-
}, c = (r, i, u) => {
|
|
43
|
-
const m = /* @__PURE__ */ new Map();
|
|
44
|
-
for (n(); e < t.length && t[e] !== "}"; ) {
|
|
45
|
-
const p = f();
|
|
46
|
-
n(), t[e] !== "{" && s(`ожидалась «{» после ветки «${p}»`), e++, m.set(p, h(!0, u)), t[e] !== "}" && s(`ветка «${p}» не закрыта`), e++, n();
|
|
47
|
-
}
|
|
48
|
-
return t[e] !== "}" && s(`«${r}, ${i}» не закрыт «}»`), e++, m.has("other") || s(`в «${r}, ${i}» нет обязательной ветки other`), m;
|
|
49
|
-
}, a = (r) => {
|
|
50
|
-
e++, n();
|
|
51
|
-
const i = f();
|
|
52
|
-
if (n(), t[e] === "}")
|
|
53
|
-
return e++, { kind: "arg", name: i };
|
|
54
|
-
t[e] !== "," && s(`ожидались «,» или «}» после аргумента «${i}»`), e++, n();
|
|
55
|
-
const u = f();
|
|
56
|
-
return u !== "plural" && u !== "select" && s(`неизвестный тип «${u}» у «${i}» — поддерживаются plural и select`), n(), t[e] !== "," && s(`ожидалась «,» после «${u}»`), e++, {
|
|
57
|
-
kind: u,
|
|
58
|
-
name: i,
|
|
59
|
-
branches: c(i, u, u === "plural" ? i : r)
|
|
60
|
-
};
|
|
61
|
-
};
|
|
62
|
-
return h(!1, null);
|
|
63
|
-
}
|
|
64
|
-
function M(t, e, s, o = {}) {
|
|
65
|
-
const n = o.onMissingArgument ?? v, f = (h) => {
|
|
66
|
-
const c = e[h];
|
|
67
|
-
return typeof c == "number" && Number.isFinite(c) ? c : null;
|
|
68
|
-
}, l = (h) => {
|
|
69
|
-
let c = "";
|
|
70
|
-
for (const a of h)
|
|
71
|
-
if (a.kind === "text") c += a.value;
|
|
72
|
-
else if (a.kind === "arg")
|
|
73
|
-
c += e[a.name] === void 0 ? n(a.name) : String(e[a.name]);
|
|
74
|
-
else if (a.kind === "number") {
|
|
75
|
-
const r = f(a.name);
|
|
76
|
-
c += r === null ? n(a.name) : j(s).format(r);
|
|
77
|
-
} else if (a.kind === "plural") {
|
|
78
|
-
const r = f(a.name);
|
|
79
|
-
c += r === null ? n(a.name) : l(
|
|
80
|
-
a.branches.get(`=${r}`) ?? a.branches.get(x(s).select(r)) ?? a.branches.get("other")
|
|
81
|
-
);
|
|
82
|
-
} else {
|
|
83
|
-
const r = e[a.name];
|
|
84
|
-
c += r === void 0 ? n(a.name) : l(a.branches.get(String(r)) ?? a.branches.get("other"));
|
|
85
|
-
}
|
|
86
|
-
return c;
|
|
87
|
-
};
|
|
88
|
-
return l(t);
|
|
89
|
-
}
|
|
90
|
-
function x(t) {
|
|
91
|
-
let e = b.get(t);
|
|
92
|
-
return e === void 0 && b.set(t, e = new Intl.PluralRules(t)), e;
|
|
93
|
-
}
|
|
94
|
-
function j(t) {
|
|
95
|
-
let e = y.get(t);
|
|
96
|
-
return e === void 0 && y.set(t, e = new Intl.NumberFormat(t)), e;
|
|
97
|
-
}
|
|
98
|
-
function E(t, e = {}) {
|
|
99
|
-
const s = /* @__PURE__ */ new Map();
|
|
100
|
-
return (o, n = {}) => {
|
|
101
|
-
let f = s.get(o);
|
|
102
|
-
return f === void 0 && s.set(o, f = g(o)), M(f, n, t, e);
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
const P = Object.freeze({
|
|
106
|
-
code: "en",
|
|
107
|
-
messages: Object.freeze({})
|
|
108
|
-
});
|
|
109
|
-
function O(t, e) {
|
|
110
|
-
const { messages: s, ...o } = e;
|
|
111
|
-
return {
|
|
112
|
-
...t,
|
|
113
|
-
...o,
|
|
114
|
-
messages: s === void 0 ? t.messages : { ...t.messages, ...s }
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
function k(t, e) {
|
|
118
|
-
return Object.prototype.hasOwnProperty.call(t, e);
|
|
119
|
-
}
|
|
120
|
-
function w(t, e = /* @__PURE__ */ new Set()) {
|
|
121
|
-
for (const s of t)
|
|
122
|
-
if (s.kind !== "text" && (e.add(s.name), s.kind === "plural" || s.kind === "select"))
|
|
123
|
-
for (const o of s.branches.values()) w(o, e);
|
|
124
|
-
return e;
|
|
125
|
-
}
|
|
126
|
-
function F(t, e) {
|
|
127
|
-
const s = [], o = /* @__PURE__ */ new Map();
|
|
128
|
-
for (const [n, f] of Object.entries(t))
|
|
129
|
-
try {
|
|
130
|
-
o.set(n, g(f));
|
|
131
|
-
} catch (l) {
|
|
132
|
-
s.push({
|
|
133
|
-
key: n,
|
|
134
|
-
kind: "syntax",
|
|
135
|
-
message: l instanceof Error ? l.message : String(l)
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
if (e === void 0) return s;
|
|
139
|
-
for (const n of Object.keys(t))
|
|
140
|
-
k(e, n) || s.push({ key: n, kind: "extra", message: "ключа нет в образце" });
|
|
141
|
-
for (const [n, f] of Object.entries(e)) {
|
|
142
|
-
if (!k(t, n)) {
|
|
143
|
-
s.push({ key: n, kind: "missing", message: "ключ есть в образце, но не переведён" });
|
|
144
|
-
continue;
|
|
145
|
-
}
|
|
146
|
-
const l = o.get(n);
|
|
147
|
-
if (l === void 0) continue;
|
|
148
|
-
const h = [...w(g(f))].sort().join(", "), c = [...w(l)].sort().join(", ");
|
|
149
|
-
h !== c && s.push({
|
|
150
|
-
key: n,
|
|
151
|
-
kind: "arguments",
|
|
152
|
-
message: `образец ждёт {${h}}, словарь — {${c}}`
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
return s;
|
|
156
|
-
}
|
|
157
|
-
function S(t) {
|
|
158
|
-
const e = t.messages;
|
|
159
|
-
return e !== null && typeof e == "object";
|
|
160
|
-
}
|
|
161
|
-
function L(t) {
|
|
162
|
-
if (t != null) {
|
|
163
|
-
if (typeof t != "object" || Array.isArray(t))
|
|
164
|
-
throw new TypeError("источник локали вернул не объект");
|
|
165
|
-
return S(t) ? t : { messages: t };
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
function A(t) {
|
|
169
|
-
const e = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map(), o = (n) => {
|
|
170
|
-
const f = e.get(n);
|
|
171
|
-
if (f !== void 0) return Promise.resolve(f);
|
|
172
|
-
const l = s.get(n);
|
|
173
|
-
if (l !== void 0) return l;
|
|
174
|
-
const h = Promise.all(t.map(async (c) => L(await c(n)))).then((c) => {
|
|
175
|
-
let a = { code: n, messages: {} };
|
|
176
|
-
for (const r of c)
|
|
177
|
-
r !== void 0 && (a = O(a, r));
|
|
178
|
-
return a = { ...a, code: n }, e.set(n, a), a;
|
|
179
|
-
}).finally(() => {
|
|
180
|
-
s.delete(n);
|
|
181
|
-
});
|
|
182
|
-
return s.set(n, h), h;
|
|
183
|
-
};
|
|
184
|
-
return Object.assign(o, {
|
|
185
|
-
peek: (n) => e.get(n),
|
|
186
|
-
preload: o
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
function N(t, e) {
|
|
190
|
-
return async (s) => {
|
|
191
|
-
const o = t(s), n = await fetch(o, e);
|
|
192
|
-
if (!n.ok)
|
|
193
|
-
throw new Error(`локаль «${s}»: ${o} ответил ${n.status}`);
|
|
194
|
-
return await n.json();
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
function C(t) {
|
|
198
|
-
return (e) => {
|
|
199
|
-
const s = e.split("-")[0].toLowerCase(), n = (Object.prototype.hasOwnProperty.call(t, e) ? t[e] : void 0) ?? (Object.prototype.hasOwnProperty.call(t, s) ? t[s] : void 0);
|
|
200
|
-
return n === void 0 ? null : n();
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
export {
|
|
204
|
-
P as D,
|
|
205
|
-
$ as M,
|
|
206
|
-
A as a,
|
|
207
|
-
C as b,
|
|
208
|
-
E as c,
|
|
209
|
-
N as d,
|
|
210
|
-
O as e,
|
|
211
|
-
M as f,
|
|
212
|
-
k as h,
|
|
213
|
-
w as m,
|
|
214
|
-
g as p,
|
|
215
|
-
F as v
|
|
216
|
-
};
|