mlform 0.1.2 → 0.1.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.
- package/README.md +241 -88
- package/dist/design-system-CrrSGfFB.js +1352 -0
- package/dist/engine-nnhWPT2L.js +5301 -0
- package/dist/kit-Dt_1Fxlc.js +76 -0
- package/dist/mlform/design-system.mjs +2 -0
- package/dist/mlform/engine.mjs +3 -0
- package/dist/mlform/kit.mjs +3 -0
- package/dist/mlform/primitives.mjs +2 -0
- package/dist/mlform/questionnaire.mjs +640 -0
- package/dist/mlform/transport.mjs +2 -0
- package/dist/mlform.mjs +4 -709
- package/dist/primitives-Pi-ztAr6.js +5063 -0
- package/dist/transport-A1RsnZhD.js +2143 -0
- package/dist/types/src/design-system/constants.d.ts +34 -0
- package/dist/types/src/design-system/contract/component-keys.d.ts +2 -0
- package/dist/types/src/design-system/contract/component-tokens.d.ts +5 -0
- package/dist/types/src/design-system/contract/global-tokens.d.ts +7 -0
- package/dist/types/src/design-system/contract/index.d.ts +4 -0
- package/dist/types/src/design-system/contract/token-keys.d.ts +12 -0
- package/dist/types/src/design-system/index.d.ts +8 -0
- package/dist/types/src/design-system/recipes/contrast.d.ts +2 -0
- package/dist/types/src/design-system/recipes/default.d.ts +2 -0
- package/dist/types/src/design-system/recipes/index.d.ts +4 -0
- package/dist/types/src/design-system/recipes/minimal.d.ts +2 -0
- package/dist/types/src/design-system/recipes/soft.d.ts +2 -0
- package/dist/types/src/design-system/registry/builtins.d.ts +5 -0
- package/dist/types/src/design-system/registry/create-registry.d.ts +2 -0
- package/dist/types/src/design-system/registry/deep-freeze.d.ts +5 -0
- package/dist/types/src/design-system/registry/define-recipe.d.ts +2 -0
- package/dist/types/src/design-system/registry/define-theme.d.ts +2 -0
- package/dist/types/src/design-system/registry/define-token-maps.d.ts +6 -0
- package/dist/types/src/design-system/registry/index.d.ts +5 -0
- package/dist/types/src/design-system/resolve/diagnostics.d.ts +9 -0
- package/dist/types/src/design-system/resolve/index.d.ts +5 -0
- package/dist/types/src/design-system/resolve/merge-config.d.ts +2 -0
- package/dist/types/src/design-system/resolve/migrate-tokens.d.ts +44 -0
- package/dist/types/src/design-system/resolve/resolve-mode.d.ts +6 -0
- package/dist/types/src/design-system/resolve/resolve-recipe.d.ts +2 -0
- package/dist/types/src/design-system/resolve/resolve-theme.d.ts +2 -0
- package/dist/types/src/design-system/resolve/resolve-tokens.d.ts +2 -0
- package/dist/types/src/design-system/runtime/apply-tokens.d.ts +4 -0
- package/dist/types/src/design-system/runtime/attach-design-system.d.ts +11 -0
- package/dist/types/src/design-system/runtime/create-stylesheet.d.ts +11 -0
- package/dist/types/src/design-system/runtime/declarations.d.ts +5 -0
- package/dist/types/src/design-system/runtime/design-system-controller.d.ts +9 -0
- package/dist/types/src/design-system/runtime/host-state.d.ts +3 -0
- package/dist/types/src/design-system/runtime/hydrate-design-system.d.ts +25 -0
- package/dist/types/src/design-system/runtime/index.d.ts +8 -0
- package/dist/types/src/design-system/themes/cobalt.d.ts +2 -0
- package/dist/types/src/design-system/themes/graphite.d.ts +2 -0
- package/dist/types/src/design-system/themes/index.d.ts +5 -0
- package/dist/types/src/design-system/themes/neutral.d.ts +2 -0
- package/dist/types/src/design-system/themes/sage.d.ts +2 -0
- package/dist/types/src/design-system/themes/sunset.d.ts +2 -0
- package/dist/types/src/design-system/tokens/base.d.ts +5 -0
- package/dist/types/src/design-system/tokens/contrast.d.ts +8 -0
- package/dist/types/src/design-system/tokens/density.d.ts +9 -0
- package/dist/types/src/design-system/tokens/forced-colors.d.ts +12 -0
- package/dist/types/src/design-system/tokens/index.d.ts +5 -0
- package/dist/types/src/design-system/tokens/motion.d.ts +2 -0
- package/dist/types/src/design-system/types.d.ts +225 -0
- package/dist/types/src/engine/builtins/fields/boolean.d.ts +8 -0
- package/dist/types/src/engine/builtins/fields/category.d.ts +11 -0
- package/dist/types/src/engine/builtins/fields/date.d.ts +9 -0
- package/dist/types/src/engine/builtins/fields/long-text.d.ts +10 -0
- package/dist/types/src/engine/builtins/fields/multi-choice.d.ts +12 -0
- package/dist/types/src/engine/builtins/fields/number.d.ts +11 -0
- package/dist/types/src/engine/builtins/fields/rating.d.ts +9 -0
- package/dist/types/src/engine/builtins/fields/series.d.ts +20 -0
- package/dist/types/src/engine/builtins/fields/single-choice.d.ts +12 -0
- package/dist/types/src/engine/builtins/fields/text.d.ts +10 -0
- package/dist/types/src/engine/builtins/index.d.ts +97 -0
- package/dist/types/src/engine/builtins/reports/classifier.d.ts +8 -0
- package/dist/types/src/engine/builtins/reports/regressor.d.ts +8 -0
- package/dist/types/src/engine/builtins/shared.d.ts +49 -0
- package/dist/types/src/engine/comparison.d.ts +2 -0
- package/dist/types/src/engine/constants.d.ts +51 -0
- package/dist/types/src/engine/declarative/explanation.d.ts +2 -0
- package/dist/types/src/engine/declarative/field.d.ts +2 -0
- package/dist/types/src/engine/declarative/presentation.d.ts +61 -0
- package/dist/types/src/engine/declarative/report.d.ts +2 -0
- package/dist/types/src/engine/equality.d.ts +4 -0
- package/dist/types/src/engine/errors.d.ts +28 -0
- package/dist/types/src/engine/explanations/controller.d.ts +13 -0
- package/dist/types/src/engine/explanations/index.d.ts +1 -0
- package/dist/types/src/engine/fields/controller.d.ts +30 -0
- package/dist/types/src/engine/fields/index.d.ts +1 -0
- package/dist/types/src/engine/form.d.ts +2 -0
- package/dist/types/src/engine/index.d.ts +11 -0
- package/dist/types/src/engine/paths.d.ts +2 -0
- package/dist/types/src/engine/registry/index.d.ts +26 -0
- package/dist/types/src/engine/reports/controller.d.ts +19 -0
- package/dist/types/src/engine/reports/index.d.ts +1 -0
- package/dist/types/src/engine/schema/index.d.ts +7 -0
- package/dist/types/src/engine/state/engine.d.ts +60 -0
- package/dist/types/src/engine/state/index.d.ts +3 -0
- package/dist/types/src/engine/state/snapshots.d.ts +5 -0
- package/dist/types/src/engine/state/store.d.ts +13 -0
- package/dist/types/src/engine/submission/abort.d.ts +15 -0
- package/dist/types/src/engine/submission/explanations.d.ts +2 -0
- package/dist/types/src/engine/submission/index.d.ts +5 -0
- package/dist/types/src/engine/submission/lifecycle.d.ts +16 -0
- package/dist/types/src/engine/submission/pipeline.d.ts +2 -0
- package/dist/types/src/engine/submission/reports.d.ts +12 -0
- package/dist/types/src/engine/submission/request.d.ts +23 -0
- package/dist/types/src/engine/submission/result.d.ts +4 -0
- package/dist/types/src/engine/submission/submitter.d.ts +40 -0
- package/dist/types/src/engine/types/explanation.d.ts +109 -0
- package/dist/types/src/engine/types/field.d.ts +172 -0
- package/dist/types/src/engine/types/form.d.ts +120 -0
- package/dist/types/src/engine/types/index.d.ts +9 -0
- package/dist/types/src/engine/types/pipeline.d.ts +31 -0
- package/dist/types/src/engine/types/registry.d.ts +17 -0
- package/dist/types/src/engine/types/report.d.ts +87 -0
- package/dist/types/src/engine/types/transport.d.ts +41 -0
- package/dist/types/src/engine/utils.d.ts +9 -0
- package/dist/types/src/engine/validation/conditions.d.ts +11 -0
- package/dist/types/src/engine/validation/field.d.ts +29 -0
- package/dist/types/src/engine/validation/form.d.ts +35 -0
- package/dist/types/src/engine/validation/index.d.ts +3 -0
- package/dist/types/src/engine/values.d.ts +2 -0
- package/dist/types/src/index.d.ts +7 -0
- package/dist/types/src/kit/constants.d.ts +4 -0
- package/dist/types/src/kit/defaults.d.ts +11 -0
- package/dist/types/src/kit/index.d.ts +4 -0
- package/dist/types/src/kit/mount-form.d.ts +3 -0
- package/dist/types/src/kit/types.d.ts +52 -0
- package/dist/types/src/primitives/base-async-report-element.d.ts +19 -0
- package/dist/types/src/primitives/base-explanation-element.d.ts +21 -0
- package/dist/types/src/primitives/base-field-element.d.ts +21 -0
- package/dist/types/src/primitives/base-report-element.d.ts +15 -0
- package/dist/types/src/primitives/components/declarative-explanation.d.ts +5 -0
- package/dist/types/src/primitives/components/declarative-field.d.ts +6 -0
- package/dist/types/src/primitives/components/declarative-report.d.ts +5 -0
- package/dist/types/src/primitives/components/explanation-panel.d.ts +22 -0
- package/dist/types/src/primitives/components/field-frame.d.ts +21 -0
- package/dist/types/src/primitives/components/form-errors.d.ts +19 -0
- package/dist/types/src/primitives/components/form-root.d.ts +29 -0
- package/dist/types/src/primitives/components/presentation.d.ts +4 -0
- package/dist/types/src/primitives/components/report-frame.d.ts +22 -0
- package/dist/types/src/primitives/components/submit-button.d.ts +21 -0
- package/dist/types/src/primitives/components/unsupported-component.d.ts +14 -0
- package/dist/types/src/primitives/constants.d.ts +94 -0
- package/dist/types/src/primitives/controller-binding.d.ts +32 -0
- package/dist/types/src/primitives/fields/boolean-field.d.ts +6 -0
- package/dist/types/src/primitives/fields/category-field.d.ts +6 -0
- package/dist/types/src/primitives/fields/date-field.d.ts +6 -0
- package/dist/types/src/primitives/fields/long-text-field.d.ts +6 -0
- package/dist/types/src/primitives/fields/multi-choice-field.d.ts +6 -0
- package/dist/types/src/primitives/fields/number-field.d.ts +8 -0
- package/dist/types/src/primitives/fields/rating-field.d.ts +6 -0
- package/dist/types/src/primitives/fields/series-field.d.ts +8 -0
- package/dist/types/src/primitives/fields/single-choice-field.d.ts +6 -0
- package/dist/types/src/primitives/fields/text-field.d.ts +6 -0
- package/dist/types/src/primitives/index.d.ts +8 -0
- package/dist/types/src/primitives/mount-form.d.ts +4 -0
- package/dist/types/src/primitives/register.d.ts +0 -0
- package/dist/types/src/primitives/registry.d.ts +3 -0
- package/dist/types/src/primitives/reports/classifier-report.d.ts +5 -0
- package/dist/types/src/primitives/reports/regressor-report.d.ts +5 -0
- package/dist/types/src/primitives/types.d.ts +128 -0
- package/dist/types/src/primitives/utils.d.ts +3 -0
- package/dist/types/src/questionnaire/constants.d.ts +31 -0
- package/dist/types/src/questionnaire/defaults.d.ts +8 -0
- package/dist/types/src/questionnaire/engine/controller.d.ts +12 -0
- package/dist/types/src/questionnaire/engine/schema.d.ts +9 -0
- package/dist/types/src/questionnaire/errors.d.ts +3 -0
- package/dist/types/src/questionnaire/index.d.ts +6 -0
- package/dist/types/src/questionnaire/mount.d.ts +3 -0
- package/dist/types/src/questionnaire/primitives/components/questionnaire-root.d.ts +23 -0
- package/dist/types/src/questionnaire/primitives/components/step-indicator.d.ts +14 -0
- package/dist/types/src/questionnaire/primitives/register.d.ts +0 -0
- package/dist/types/src/questionnaire/types.d.ts +69 -0
- package/dist/types/src/shared/errors.d.ts +3 -0
- package/dist/types/src/shared/index.d.ts +1 -0
- package/dist/types/src/transport/capabilities.d.ts +7 -0
- package/dist/types/src/transport/clone.d.ts +6 -0
- package/dist/types/src/transport/composition/fallback.d.ts +2 -0
- package/dist/types/src/transport/composition/fanout.d.ts +3 -0
- package/dist/types/src/transport/composition/hedged.d.ts +2 -0
- package/dist/types/src/transport/composition/index.d.ts +7 -0
- package/dist/types/src/transport/composition/load-balancing.d.ts +2 -0
- package/dist/types/src/transport/composition/pipeline.d.ts +2 -0
- package/dist/types/src/transport/composition/racing.d.ts +2 -0
- package/dist/types/src/transport/composition/routing.d.ts +3 -0
- package/dist/types/src/transport/constants.d.ts +34 -0
- package/dist/types/src/transport/errors.d.ts +36 -0
- package/dist/types/src/transport/index.d.ts +9 -0
- package/dist/types/src/transport/internal.d.ts +110 -0
- package/dist/types/src/transport/middleware/auth.d.ts +2 -0
- package/dist/types/src/transport/middleware/cache.d.ts +2 -0
- package/dist/types/src/transport/middleware/circuit-breaker.d.ts +2 -0
- package/dist/types/src/transport/middleware/dedup.d.ts +2 -0
- package/dist/types/src/transport/middleware/index.d.ts +12 -0
- package/dist/types/src/transport/middleware/logging.d.ts +2 -0
- package/dist/types/src/transport/middleware/metrics.d.ts +2 -0
- package/dist/types/src/transport/middleware/pipe.d.ts +2 -0
- package/dist/types/src/transport/middleware/rate-limit.d.ts +2 -0
- package/dist/types/src/transport/middleware/retry.d.ts +2 -0
- package/dist/types/src/transport/middleware/timeout.d.ts +2 -0
- package/dist/types/src/transport/middleware/tracing.d.ts +2 -0
- package/dist/types/src/transport/middleware/transform.d.ts +3 -0
- package/dist/types/src/transport/policy-context.d.ts +3 -0
- package/dist/types/src/transport/protocols/graphql.d.ts +2 -0
- package/dist/types/src/transport/protocols/grpc.d.ts +5 -0
- package/dist/types/src/transport/protocols/index.d.ts +5 -0
- package/dist/types/src/transport/protocols/json.d.ts +2 -0
- package/dist/types/src/transport/protocols/sse.d.ts +2 -0
- package/dist/types/src/transport/protocols/websocket.d.ts +2 -0
- package/dist/types/src/transport/runtime.d.ts +4 -0
- package/dist/types/src/transport/state/cache-store.d.ts +2 -0
- package/dist/types/src/transport/state/circuit-breaker.d.ts +2 -0
- package/dist/types/src/transport/state/health.d.ts +2 -0
- package/dist/types/src/transport/state/index.d.ts +5 -0
- package/dist/types/src/transport/state/rate-limiter.d.ts +2 -0
- package/dist/types/src/transport/state/session.d.ts +2 -0
- package/dist/types/src/transport/types/capabilities.d.ts +35 -0
- package/dist/types/src/transport/types/core.d.ts +57 -0
- package/dist/types/src/transport/types/events.d.ts +50 -0
- package/dist/types/src/transport/types/index.d.ts +7 -0
- package/dist/types/src/transport/types/middleware.d.ts +3 -0
- package/dist/types/src/transport/types/options.d.ts +258 -0
- package/dist/types/src/transport/types/session.d.ts +48 -0
- package/dist/types/src/transport/types/state.d.ts +46 -0
- package/package.json +93 -37
- package/dist/FieldStrategy-pPekBtH-.js +0 -2318
- package/dist/ModelTypes-B9_veCKB.js +0 -5
- package/dist/ReportStrategy-DY3GC_mJ.js +0 -23
- package/dist/boolean-field-Cd3uhIPj.js +0 -104
- package/dist/category-field-D_Ms1x9u.js +0 -73
- package/dist/classifier-prediction-C5QzorTo.js +0 -193
- package/dist/custom-element-ttkHUa8w.js +0 -13
- package/dist/date-field-Cg_ja679.js +0 -162
- package/dist/error-card-BwjPChwf.js +0 -195
- package/dist/field-wrapper-DqIQl76d.js +0 -177
- package/dist/ml-layout-Dx63KKf7.js +0 -332
- package/dist/mlform/extensions.mjs +0 -38
- package/dist/mlform/strategies.mjs +0 -292
- package/dist/number-field-CC2DrVEb.js +0 -165
- package/dist/property-jKFNMQpR.js +0 -561
- package/dist/range-field-Cr7LEtsJ.js +0 -98
- package/dist/regressor-prediction-C18dHlfK.js +0 -236
- package/dist/src/core/app/DescriptorItem.d.ts +0 -6
- package/dist/src/core/app/DescriptorRegistry.d.ts +0 -13
- package/dist/src/core/app/DescriptorService.d.ts +0 -22
- package/dist/src/core/app/DescriptorStrategy.d.ts +0 -11
- package/dist/src/core/app/index.d.ts +0 -4
- package/dist/src/core/domain/index.d.ts +0 -24
- package/dist/src/core/index.d.ts +0 -3
- package/dist/src/core/ui/error-card.d.ts +0 -38
- package/dist/src/core/ui/field-wrapper.d.ts +0 -23
- package/dist/src/core/ui/index.d.ts +0 -3
- package/dist/src/core/ui/ml-layout.d.ts +0 -23
- package/dist/src/extensions/app/FieldStrategy.d.ts +0 -10
- package/dist/src/extensions/app/ReportStrategy.d.ts +0 -9
- package/dist/src/extensions/app/index.d.ts +0 -2
- package/dist/src/extensions/domain/BaseField.d.ts +0 -7
- package/dist/src/extensions/domain/BaseModel.d.ts +0 -6
- package/dist/src/extensions/domain/index.d.ts +0 -2
- package/dist/src/extensions/index.d.ts +0 -3
- package/dist/src/extensions/ui/field-element.d.ts +0 -9
- package/dist/src/extensions/ui/index.d.ts +0 -1
- package/dist/src/index.d.ts +0 -1
- package/dist/src/mlform/index.d.ts +0 -1
- package/dist/src/mlform/mlform.d.ts +0 -27
- package/dist/src/mlform/mlform.types.d.ts +0 -11
- package/dist/src/strategies/app/BooleanStrategy.d.ts +0 -12
- package/dist/src/strategies/app/CategoryStrategy.d.ts +0 -13
- package/dist/src/strategies/app/ClassifierStrategy.d.ts +0 -15
- package/dist/src/strategies/app/DateStrategy.d.ts +0 -15
- package/dist/src/strategies/app/NumberStrategy.d.ts +0 -29
- package/dist/src/strategies/app/RegressorStrategy.d.ts +0 -15
- package/dist/src/strategies/app/TextStrategy.d.ts +0 -16
- package/dist/src/strategies/app/index.d.ts +0 -7
- package/dist/src/strategies/domain/BooleanField.d.ts +0 -10
- package/dist/src/strategies/domain/CategoryField.d.ts +0 -11
- package/dist/src/strategies/domain/ClassifierModel.d.ts +0 -11
- package/dist/src/strategies/domain/DateField.d.ts +0 -13
- package/dist/src/strategies/domain/FieldTypes.d.ts +0 -7
- package/dist/src/strategies/domain/ModelTypes.d.ts +0 -4
- package/dist/src/strategies/domain/NumberField.d.ts +0 -15
- package/dist/src/strategies/domain/RegressorModel.d.ts +0 -11
- package/dist/src/strategies/domain/TextField.d.ts +0 -14
- package/dist/src/strategies/domain/index.d.ts +0 -9
- package/dist/src/strategies/index.d.ts +0 -1
- package/dist/src/strategies/ui/boolean-field.d.ts +0 -13
- package/dist/src/strategies/ui/category-field.d.ts +0 -14
- package/dist/src/strategies/ui/classifier-prediction.d.ts +0 -39
- package/dist/src/strategies/ui/date-field.d.ts +0 -18
- package/dist/src/strategies/ui/index.d.ts +0 -8
- package/dist/src/strategies/ui/number-field.d.ts +0 -19
- package/dist/src/strategies/ui/range-field.d.ts +0 -17
- package/dist/src/strategies/ui/regressor-prediction.d.ts +0 -29
- package/dist/src/strategies/ui/text-field.d.ts +0 -17
- package/dist/state-CLlTRyl1.js +0 -12
- package/dist/test/_fixtures/DummyField.d.ts +0 -9
- package/dist/test/setup.d.ts +0 -1
- package/dist/test/unit/DummyField.test.d.ts +0 -1
- package/dist/text-field-DwP-Fa1w.js +0 -114
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { ZodType } from 'zod';
|
|
2
|
+
import { FormStatus } from './form';
|
|
3
|
+
type MaybePromise<T> = T | PromiseLike<T>;
|
|
4
|
+
export type FieldStatus = "idle" | "validating" | "valid" | "invalid";
|
|
5
|
+
export type InactiveFieldPolicy = "include" | "omit" | "reset-on-hide";
|
|
6
|
+
export interface FieldDescriptor {
|
|
7
|
+
component: string;
|
|
8
|
+
props: Record<string, unknown>;
|
|
9
|
+
meta?: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
export interface BaseFieldConfig {
|
|
12
|
+
id?: string;
|
|
13
|
+
kind: string;
|
|
14
|
+
label: string;
|
|
15
|
+
description?: string;
|
|
16
|
+
required?: boolean;
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
hidden?: boolean;
|
|
19
|
+
readOnly?: boolean;
|
|
20
|
+
disabledWhen?: FieldCondition;
|
|
21
|
+
hiddenWhen?: FieldCondition;
|
|
22
|
+
readOnlyWhen?: FieldCondition;
|
|
23
|
+
asyncValidationDebounceMs?: number;
|
|
24
|
+
inactiveFieldPolicy?: InactiveFieldPolicy;
|
|
25
|
+
valuePath?: string | string[];
|
|
26
|
+
defaultValue?: unknown;
|
|
27
|
+
ui?: Record<string, unknown>;
|
|
28
|
+
[key: string]: unknown;
|
|
29
|
+
}
|
|
30
|
+
export type FieldConfig = BaseFieldConfig;
|
|
31
|
+
export type NormalizedFieldConfig<TConfig extends FieldConfig = FieldConfig> = TConfig & {
|
|
32
|
+
id: string;
|
|
33
|
+
};
|
|
34
|
+
export interface FieldStateSnapshot {
|
|
35
|
+
value: unknown;
|
|
36
|
+
initialValue: unknown;
|
|
37
|
+
touched: boolean;
|
|
38
|
+
dirty: boolean;
|
|
39
|
+
valid: boolean;
|
|
40
|
+
visible: boolean;
|
|
41
|
+
disabled: boolean;
|
|
42
|
+
readOnly: boolean;
|
|
43
|
+
errors: string[];
|
|
44
|
+
status: FieldStatus;
|
|
45
|
+
}
|
|
46
|
+
export interface FieldValidationResult {
|
|
47
|
+
fieldId: string;
|
|
48
|
+
valid: boolean;
|
|
49
|
+
errors: string[];
|
|
50
|
+
}
|
|
51
|
+
export interface FieldValidationContext<TConfig extends FieldConfig = FieldConfig> {
|
|
52
|
+
field: NormalizedFieldConfig<TConfig>;
|
|
53
|
+
values: Record<string, unknown>;
|
|
54
|
+
submitCount: number;
|
|
55
|
+
validationVersion: number;
|
|
56
|
+
signal?: AbortSignal;
|
|
57
|
+
}
|
|
58
|
+
export interface FieldConditionContext<TConfig extends FieldConfig = FieldConfig> {
|
|
59
|
+
field: NormalizedFieldConfig<TConfig>;
|
|
60
|
+
values: Record<string, unknown>;
|
|
61
|
+
submitCount: number;
|
|
62
|
+
formStatus: FormStatus;
|
|
63
|
+
}
|
|
64
|
+
export interface FieldValueCondition {
|
|
65
|
+
kind: "field-value";
|
|
66
|
+
field: string;
|
|
67
|
+
equals?: unknown;
|
|
68
|
+
notEquals?: unknown;
|
|
69
|
+
greaterThan?: unknown;
|
|
70
|
+
greaterThanOrEqual?: unknown;
|
|
71
|
+
lessThan?: unknown;
|
|
72
|
+
lessThanOrEqual?: unknown;
|
|
73
|
+
in?: unknown[];
|
|
74
|
+
notIn?: unknown[];
|
|
75
|
+
empty?: boolean;
|
|
76
|
+
notEmpty?: boolean;
|
|
77
|
+
truthy?: boolean;
|
|
78
|
+
falsy?: boolean;
|
|
79
|
+
}
|
|
80
|
+
export interface FieldComparisonCondition {
|
|
81
|
+
kind: "field-comparison";
|
|
82
|
+
field: string;
|
|
83
|
+
otherField: string;
|
|
84
|
+
operator: "eq" | "neq" | "gt" | "gte" | "lt" | "lte";
|
|
85
|
+
}
|
|
86
|
+
export interface FormStatusCondition {
|
|
87
|
+
kind: "form-status";
|
|
88
|
+
equals: FormStatus | FormStatus[];
|
|
89
|
+
}
|
|
90
|
+
export interface SubmitCountCondition {
|
|
91
|
+
kind: "submit-count";
|
|
92
|
+
eq?: number;
|
|
93
|
+
gte?: number;
|
|
94
|
+
lte?: number;
|
|
95
|
+
}
|
|
96
|
+
export interface AllConditions {
|
|
97
|
+
kind: "all";
|
|
98
|
+
conditions: DeclarativeFieldCondition[];
|
|
99
|
+
}
|
|
100
|
+
export interface AnyConditions {
|
|
101
|
+
kind: "any";
|
|
102
|
+
conditions: DeclarativeFieldCondition[];
|
|
103
|
+
}
|
|
104
|
+
export interface NotCondition {
|
|
105
|
+
kind: "not";
|
|
106
|
+
condition: DeclarativeFieldCondition;
|
|
107
|
+
}
|
|
108
|
+
export type DeclarativeFieldCondition = FieldValueCondition | FieldComparisonCondition | FormStatusCondition | SubmitCountCondition | AllConditions | AnyConditions | NotCondition;
|
|
109
|
+
export type FieldCondition<TConfig extends FieldConfig = FieldConfig> = DeclarativeFieldCondition | ((context: FieldConditionContext<TConfig>) => boolean);
|
|
110
|
+
export interface FieldDescriptorContext {
|
|
111
|
+
fieldId: string;
|
|
112
|
+
state: FieldStateSnapshot;
|
|
113
|
+
}
|
|
114
|
+
export type FieldWidget = "text" | "number" | "boolean" | "select" | "date" | "series";
|
|
115
|
+
export type FieldRenderHints = Record<string, unknown>;
|
|
116
|
+
export interface FieldValueAdapter<TConfig extends FieldConfig = FieldConfig, TValue = unknown> {
|
|
117
|
+
default?: (config: TConfig) => TValue;
|
|
118
|
+
normalize?: (value: unknown, config: TConfig) => TValue;
|
|
119
|
+
clone?: (value: TValue, config: TConfig) => TValue;
|
|
120
|
+
isEqual?: (previous: TValue, next: TValue, config: TConfig) => boolean;
|
|
121
|
+
serialize?: (value: TValue, config: TConfig) => unknown;
|
|
122
|
+
}
|
|
123
|
+
export interface FieldValidationFnContext<TConfig extends FieldConfig = FieldConfig, TValue = unknown> extends FieldValidationContext<TConfig> {
|
|
124
|
+
config: TConfig;
|
|
125
|
+
value: TValue;
|
|
126
|
+
}
|
|
127
|
+
export interface FieldRenderSpecContext<TConfig extends FieldConfig = FieldConfig, TValue = unknown> {
|
|
128
|
+
config: TConfig;
|
|
129
|
+
fieldId: string;
|
|
130
|
+
state: FieldStateSnapshot;
|
|
131
|
+
value: TValue;
|
|
132
|
+
}
|
|
133
|
+
export interface FieldRenderSpec<TConfig extends FieldConfig = FieldConfig, TValue = unknown> {
|
|
134
|
+
widget: FieldWidget;
|
|
135
|
+
hints?: FieldRenderHints | ((context: FieldRenderSpecContext<TConfig, TValue>) => FieldRenderHints);
|
|
136
|
+
}
|
|
137
|
+
export interface DeclarativeFieldKind<TConfig extends FieldConfig = FieldConfig, TValue = unknown> {
|
|
138
|
+
kind: string;
|
|
139
|
+
schema: ZodType<TConfig>;
|
|
140
|
+
value?: FieldValueAdapter<TConfig, TValue>;
|
|
141
|
+
validate?: (context: FieldValidationFnContext<TConfig, TValue>) => MaybePromise<string[]>;
|
|
142
|
+
render: FieldRenderSpec<TConfig, TValue>;
|
|
143
|
+
}
|
|
144
|
+
export interface FieldDefinition<TConfig extends FieldConfig = FieldConfig, TValue = unknown> {
|
|
145
|
+
kind: string;
|
|
146
|
+
schema: ZodType<TConfig>;
|
|
147
|
+
getDefaultValue?: (config: TConfig) => TValue;
|
|
148
|
+
normalizeValue?: (value: unknown, config: TConfig) => TValue;
|
|
149
|
+
cloneValue?: (value: TValue, config: TConfig) => TValue;
|
|
150
|
+
isEqual?: (previous: TValue, next: TValue, config: TConfig) => boolean;
|
|
151
|
+
serializeValue?: (value: TValue, config: TConfig) => unknown;
|
|
152
|
+
validate?: (value: TValue, config: TConfig, context: FieldValidationContext<TConfig>) => MaybePromise<string[]>;
|
|
153
|
+
describe: (config: TConfig, context: FieldDescriptorContext) => FieldDescriptor;
|
|
154
|
+
}
|
|
155
|
+
export interface FieldController {
|
|
156
|
+
readonly id: string;
|
|
157
|
+
readonly kind: string;
|
|
158
|
+
readonly config: NormalizedFieldConfig;
|
|
159
|
+
readonly state: FieldStateSnapshot;
|
|
160
|
+
readonly descriptor: FieldDescriptor;
|
|
161
|
+
setValue(value: unknown): void;
|
|
162
|
+
blur(): void;
|
|
163
|
+
focus(): void;
|
|
164
|
+
validate(): Promise<FieldValidationResult>;
|
|
165
|
+
reset(): void;
|
|
166
|
+
subscribe(listener: (state: FieldStateSnapshot) => void): () => void;
|
|
167
|
+
}
|
|
168
|
+
export interface SelectorSubscriptionOptions<TSelected> {
|
|
169
|
+
emitInitial?: boolean;
|
|
170
|
+
equality?: (previous: TSelected, next: TSelected) => boolean;
|
|
171
|
+
}
|
|
172
|
+
export {};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { FieldConfig, FieldController, FieldStateSnapshot, InactiveFieldPolicy, NormalizedFieldConfig, SelectorSubscriptionOptions } from './field';
|
|
2
|
+
import { ExplanationConfig, ExplanationController, ExplanationStateSnapshot } from './explanation';
|
|
3
|
+
import { NormalizedReportConfig, ReportConfig, ReportController, ReportStateSnapshot } from './report';
|
|
4
|
+
import { AfterSubmitContext, BeforeSubmitContext, SubmitOptions, SubmitResult, Transport, TransportStreamEvent, SubmitErrorContext } from './transport';
|
|
5
|
+
import { Registry } from './registry';
|
|
6
|
+
type MaybePromise<T> = T | PromiseLike<T>;
|
|
7
|
+
export type FormStatus = "idle" | "editing" | "validating" | "submitting" | "success" | "error";
|
|
8
|
+
export interface FormValidationResult {
|
|
9
|
+
valid: boolean;
|
|
10
|
+
fields: Record<string, string[]>;
|
|
11
|
+
formErrors: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface SubmissionProgressState {
|
|
14
|
+
loaded?: number;
|
|
15
|
+
total?: number;
|
|
16
|
+
message?: string;
|
|
17
|
+
meta: Record<string, unknown>;
|
|
18
|
+
chunkCount: number;
|
|
19
|
+
sessionState?: "opening" | "open" | "closing" | "closed";
|
|
20
|
+
bufferedMessages?: number;
|
|
21
|
+
sessionMessageCount?: number;
|
|
22
|
+
lastSessionMessageType?: string;
|
|
23
|
+
lastEventType?: TransportStreamEvent["type"];
|
|
24
|
+
}
|
|
25
|
+
export interface FormState {
|
|
26
|
+
status: FormStatus;
|
|
27
|
+
submitCount: number;
|
|
28
|
+
valid: boolean;
|
|
29
|
+
dirty: boolean;
|
|
30
|
+
touched: boolean;
|
|
31
|
+
values: Record<string, unknown>;
|
|
32
|
+
reportStates: Record<string, ReportStateSnapshot>;
|
|
33
|
+
explanationStates: Record<string, ExplanationStateSnapshot>;
|
|
34
|
+
submissionProgress: SubmissionProgressState | null;
|
|
35
|
+
errors: {
|
|
36
|
+
form: string[];
|
|
37
|
+
fields: Record<string, string[]>;
|
|
38
|
+
};
|
|
39
|
+
lastResult: SubmitResult | null;
|
|
40
|
+
}
|
|
41
|
+
export interface FormValidationIssue {
|
|
42
|
+
form?: string[];
|
|
43
|
+
fields?: Record<string, string[]>;
|
|
44
|
+
}
|
|
45
|
+
export interface FormValidationContext {
|
|
46
|
+
values: Record<string, unknown>;
|
|
47
|
+
submitCount: number;
|
|
48
|
+
formStatus: FormStatus;
|
|
49
|
+
fields: Record<string, FieldStateSnapshot>;
|
|
50
|
+
schema: {
|
|
51
|
+
fields: readonly NormalizedFieldConfig[];
|
|
52
|
+
reports: readonly NormalizedReportConfig[];
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export type FormValidator = (context: FormValidationContext) => MaybePromise<FormValidationIssue | string[] | void>;
|
|
56
|
+
export interface BeforeValidateContext {
|
|
57
|
+
values: Record<string, unknown>;
|
|
58
|
+
submitCount: number;
|
|
59
|
+
}
|
|
60
|
+
export interface AfterValidateContext {
|
|
61
|
+
values: Record<string, unknown>;
|
|
62
|
+
result: FormValidationResult;
|
|
63
|
+
submitCount: number;
|
|
64
|
+
}
|
|
65
|
+
export interface AfterExplanationContext {
|
|
66
|
+
explanationId: string;
|
|
67
|
+
kind: string;
|
|
68
|
+
result: unknown;
|
|
69
|
+
}
|
|
70
|
+
export interface ExplanationErrorContext {
|
|
71
|
+
explanationId: string;
|
|
72
|
+
kind: string;
|
|
73
|
+
error: unknown;
|
|
74
|
+
}
|
|
75
|
+
export interface FormHooks {
|
|
76
|
+
beforeValidate?: (context: BeforeValidateContext) => MaybePromise<void>;
|
|
77
|
+
afterValidate?: (context: AfterValidateContext) => MaybePromise<void>;
|
|
78
|
+
beforeSubmit?: (context: BeforeSubmitContext) => MaybePromise<void>;
|
|
79
|
+
afterSubmit?: (context: AfterSubmitContext) => MaybePromise<void>;
|
|
80
|
+
onSubmitError?: (context: SubmitErrorContext) => MaybePromise<void>;
|
|
81
|
+
afterExplanation?: (context: AfterExplanationContext) => MaybePromise<void>;
|
|
82
|
+
onExplanationError?: (context: ExplanationErrorContext) => MaybePromise<void>;
|
|
83
|
+
}
|
|
84
|
+
export interface FormSchema {
|
|
85
|
+
fields: FieldConfig[];
|
|
86
|
+
reports?: ReportConfig[];
|
|
87
|
+
explanations?: ExplanationConfig[];
|
|
88
|
+
}
|
|
89
|
+
export interface CreateFormConfig {
|
|
90
|
+
schema: FormSchema;
|
|
91
|
+
registry: Registry;
|
|
92
|
+
transport: Transport;
|
|
93
|
+
initialValues?: Record<string, unknown>;
|
|
94
|
+
validators?: FormValidator[];
|
|
95
|
+
hooks?: FormHooks;
|
|
96
|
+
hookFailurePolicy?: {
|
|
97
|
+
afterSubmit?: "fail-submit" | "preserve-success";
|
|
98
|
+
};
|
|
99
|
+
inactiveFieldPolicy?: InactiveFieldPolicy;
|
|
100
|
+
listenerErrorPolicy?: "ignore" | "throw-aggregate";
|
|
101
|
+
onListenerError?: (error: unknown) => void;
|
|
102
|
+
}
|
|
103
|
+
export interface FormController {
|
|
104
|
+
readonly fields: readonly FieldController[];
|
|
105
|
+
readonly reports: readonly ReportController[];
|
|
106
|
+
readonly explanations: readonly ExplanationController[];
|
|
107
|
+
readonly state: FormState;
|
|
108
|
+
getField(id: string): FieldController | undefined;
|
|
109
|
+
getReport(id: string): ReportController | undefined;
|
|
110
|
+
getExplanation(id: string): ExplanationController | undefined;
|
|
111
|
+
getValues(): Record<string, unknown>;
|
|
112
|
+
setValues(values: Record<string, unknown>): void;
|
|
113
|
+
validate(): Promise<FormValidationResult>;
|
|
114
|
+
submit(options?: SubmitOptions): Promise<SubmitResult>;
|
|
115
|
+
abortSubmit(reason?: string): void;
|
|
116
|
+
reset(): void;
|
|
117
|
+
subscribe(listener: (state: FormState) => void): () => void;
|
|
118
|
+
subscribeSelector<TSelected>(selector: (state: FormState) => TSelected, listener: (selected: TSelected, state: FormState) => void, options?: SelectorSubscriptionOptions<TSelected>): () => void;
|
|
119
|
+
}
|
|
120
|
+
export type { SubmitErrorContext } from './transport';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type MaybePromise<T> = T | PromiseLike<T>;
|
|
2
|
+
export * from './explanation';
|
|
3
|
+
export * from './field';
|
|
4
|
+
export * from './form';
|
|
5
|
+
export * from './pipeline';
|
|
6
|
+
export * from './registry';
|
|
7
|
+
export * from './report';
|
|
8
|
+
export * from './transport';
|
|
9
|
+
export * from '../declarative/presentation';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ExplanationController, ExplanationFetchRequest } from './explanation';
|
|
2
|
+
import { FormController } from './form';
|
|
3
|
+
import { SubmitOptions, SubmitResult } from './transport';
|
|
4
|
+
export interface ExplanationExecutionResult {
|
|
5
|
+
results: Record<string, unknown>;
|
|
6
|
+
errors: Record<string, string>;
|
|
7
|
+
}
|
|
8
|
+
export interface PipelineArtifactContext {
|
|
9
|
+
submitResult: SubmitResult;
|
|
10
|
+
explanationResults: Record<string, unknown>;
|
|
11
|
+
explanationErrors: Record<string, string>;
|
|
12
|
+
}
|
|
13
|
+
export interface PipelineArtifactAdapter<TArtifacts extends Record<string, unknown> = {}> {
|
|
14
|
+
derive(context: PipelineArtifactContext): TArtifacts | Promise<TArtifacts>;
|
|
15
|
+
}
|
|
16
|
+
export interface ExecuteFormPipelineOptions<TArtifacts extends Record<string, unknown> = {}> {
|
|
17
|
+
form: FormController;
|
|
18
|
+
submit?: SubmitOptions;
|
|
19
|
+
artifactAdapter?: PipelineArtifactAdapter<TArtifacts>;
|
|
20
|
+
explanationMode?: "none" | "all";
|
|
21
|
+
}
|
|
22
|
+
export interface PipelineResult<TArtifacts extends Record<string, unknown> = {}> {
|
|
23
|
+
submitResult: SubmitResult;
|
|
24
|
+
explanationResults: Record<string, unknown>;
|
|
25
|
+
explanationErrors: Record<string, string>;
|
|
26
|
+
artifacts: TArtifacts;
|
|
27
|
+
}
|
|
28
|
+
export interface ExplanationExecutionContext {
|
|
29
|
+
explanations: readonly ExplanationController[];
|
|
30
|
+
request: ExplanationFetchRequest;
|
|
31
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FieldConfig, FieldDefinition } from './field';
|
|
2
|
+
import { ExplanationConfig, ExplanationDefinition } from './explanation';
|
|
3
|
+
import { ReportConfig, ReportDefinition } from './report';
|
|
4
|
+
export interface Registry {
|
|
5
|
+
registerField<TConfig extends FieldConfig, TValue>(definition: FieldDefinition<TConfig, TValue>): Registry;
|
|
6
|
+
unregisterField(kind: string): Registry;
|
|
7
|
+
getField<TConfig extends FieldConfig = FieldConfig, TValue = unknown>(kind: string): FieldDefinition<TConfig, TValue> | undefined;
|
|
8
|
+
listFields(): FieldDefinition<FieldConfig, unknown>[];
|
|
9
|
+
registerReport<TConfig extends ReportConfig>(definition: ReportDefinition<TConfig>): Registry;
|
|
10
|
+
unregisterReport(kind: string): Registry;
|
|
11
|
+
getReport<TConfig extends ReportConfig = ReportConfig>(kind: string): ReportDefinition<TConfig> | undefined;
|
|
12
|
+
listReports(): ReportDefinition<ReportConfig>[];
|
|
13
|
+
registerExplanation<TConfig extends ExplanationConfig>(definition: ExplanationDefinition<TConfig>): Registry;
|
|
14
|
+
unregisterExplanation(kind: string): Registry;
|
|
15
|
+
getExplanation<TConfig extends ExplanationConfig = ExplanationConfig>(kind: string): ExplanationDefinition<TConfig> | undefined;
|
|
16
|
+
listExplanations(): ExplanationDefinition<ExplanationConfig>[];
|
|
17
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { ZodType } from 'zod';
|
|
2
|
+
import { PresentationContent, PresentationSummary } from '../declarative/presentation';
|
|
3
|
+
import { SubmitResult } from './transport';
|
|
4
|
+
type MaybePromise<T> = T | PromiseLike<T>;
|
|
5
|
+
export type ReportStatus = "idle" | "loading" | "ready" | "error";
|
|
6
|
+
export interface ReportDescriptor {
|
|
7
|
+
component: string;
|
|
8
|
+
props: Record<string, unknown>;
|
|
9
|
+
meta?: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
export interface BaseReportConfig {
|
|
12
|
+
id?: string;
|
|
13
|
+
kind: string;
|
|
14
|
+
label?: string;
|
|
15
|
+
description?: string;
|
|
16
|
+
source?: string;
|
|
17
|
+
ui?: Record<string, unknown>;
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}
|
|
20
|
+
export type ReportConfig = BaseReportConfig;
|
|
21
|
+
export type NormalizedReportConfig<TConfig extends ReportConfig = ReportConfig> = TConfig & {
|
|
22
|
+
id: string;
|
|
23
|
+
source: string;
|
|
24
|
+
};
|
|
25
|
+
export interface ReportStateSnapshot {
|
|
26
|
+
payload: unknown;
|
|
27
|
+
error: string | null;
|
|
28
|
+
status: ReportStatus;
|
|
29
|
+
}
|
|
30
|
+
export interface ReportDescriptorContext {
|
|
31
|
+
reportId: string;
|
|
32
|
+
state: ReportStateSnapshot;
|
|
33
|
+
payload: unknown;
|
|
34
|
+
result: SubmitResult | null;
|
|
35
|
+
}
|
|
36
|
+
export interface ReportPayloadContext<TConfig extends ReportConfig = ReportConfig> {
|
|
37
|
+
report: NormalizedReportConfig<TConfig>;
|
|
38
|
+
result: SubmitResult;
|
|
39
|
+
}
|
|
40
|
+
export interface ReportResolveContext<TConfig extends ReportConfig = ReportConfig> {
|
|
41
|
+
config: NormalizedReportConfig<TConfig>;
|
|
42
|
+
report: NormalizedReportConfig<TConfig>;
|
|
43
|
+
result: SubmitResult;
|
|
44
|
+
}
|
|
45
|
+
export interface ReportRenderSpecContext<TConfig extends ReportConfig = ReportConfig, TPayload = unknown> {
|
|
46
|
+
config: NormalizedReportConfig<TConfig>;
|
|
47
|
+
report: NormalizedReportConfig<TConfig>;
|
|
48
|
+
reportId: string;
|
|
49
|
+
state: ReportStateSnapshot;
|
|
50
|
+
payload: TPayload;
|
|
51
|
+
result: SubmitResult | null;
|
|
52
|
+
}
|
|
53
|
+
export interface ReportRenderSpec<TConfig extends ReportConfig = ReportConfig, TPayload = unknown> {
|
|
54
|
+
summary?: (context: ReportRenderSpecContext<TConfig, TPayload>) => PresentationSummary | undefined;
|
|
55
|
+
content: (context: ReportRenderSpecContext<TConfig, TPayload>) => PresentationContent;
|
|
56
|
+
}
|
|
57
|
+
export interface DeclarativeReportKind<TConfig extends ReportConfig = ReportConfig, TPayload = unknown> {
|
|
58
|
+
kind: string;
|
|
59
|
+
schema: ZodType<TConfig>;
|
|
60
|
+
payloadSchema?: ZodType<unknown>;
|
|
61
|
+
payloadValidationPolicy?: ReportPayloadValidationPolicy;
|
|
62
|
+
partialUpdatePolicy?: PartialReportUpdatePolicy;
|
|
63
|
+
clonePayload?: (payload: TPayload, config: TConfig) => TPayload;
|
|
64
|
+
resolve: (context: ReportResolveContext<TConfig>) => MaybePromise<TPayload>;
|
|
65
|
+
render: ReportRenderSpec<TConfig, TPayload>;
|
|
66
|
+
}
|
|
67
|
+
export type ReportPayloadValidationPolicy = "report-error" | "fail-submit";
|
|
68
|
+
export type PartialReportUpdatePolicy = "trust" | "validate" | "defer";
|
|
69
|
+
export interface ReportDefinition<TConfig extends ReportConfig = ReportConfig> {
|
|
70
|
+
kind: string;
|
|
71
|
+
schema: ZodType<TConfig>;
|
|
72
|
+
payloadSchema?: ZodType<unknown>;
|
|
73
|
+
payloadValidationPolicy?: ReportPayloadValidationPolicy;
|
|
74
|
+
partialUpdatePolicy?: PartialReportUpdatePolicy;
|
|
75
|
+
clonePayload?: (payload: unknown, config: TConfig) => unknown;
|
|
76
|
+
resolvePayload?: (config: TConfig, context: ReportPayloadContext<TConfig>) => MaybePromise<unknown>;
|
|
77
|
+
describe: (config: TConfig, context: ReportDescriptorContext) => ReportDescriptor | null;
|
|
78
|
+
}
|
|
79
|
+
export interface ReportController {
|
|
80
|
+
readonly id: string;
|
|
81
|
+
readonly kind: string;
|
|
82
|
+
readonly config: NormalizedReportConfig;
|
|
83
|
+
readonly state: ReportStateSnapshot;
|
|
84
|
+
readonly descriptor: ReportDescriptor | null;
|
|
85
|
+
subscribe(listener: (state: ReportStateSnapshot) => void): () => void;
|
|
86
|
+
}
|
|
87
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { SubmitRequest as BaseSubmitRequest, SubmitResult as BaseSubmitResult, Transport as BaseTransport, TransportStreamEvent as BaseTransportStreamEvent } from '../../../transport';
|
|
2
|
+
import { NormalizedFieldConfig } from './field';
|
|
3
|
+
import { NormalizedReportConfig, ReportStateSnapshot } from './report';
|
|
4
|
+
export type { CapabilityRequirement, CircuitBreakerSharedState, CircuitBreakerStateSnapshot, RateLimitLeaseRequest, SharedRateLimiter, SharedRateLimiterLease, SubmitRequestMetadata, SubmitRequestTransportContext, TransportAuthKind, TransportBackpressureMode, TransportCacheEntry, TransportCacheStore, TransportCapabilities, TransportCollection, TransportConsistency, TransportDeliveryMode, TransportHealthSnapshot, TransportHealthState, TransportPolicyContext, TransportResponse, TransportSession, TransportSessionCloseEvent, TransportSessionErrorEvent, TransportSessionEvent, TransportSessionMessage, TransportSessionMessageEvent, TransportSessionMetaEvent, TransportSessionProgressEvent, TransportSessionResultEvent, TransportStreamChunkEvent, TransportStreamErrorEvent, TransportStreamMetaEvent, TransportStreamProgressEvent, TransportStreamReportPatchEvent, TransportStreamReportReplaceEvent, } from '../../../transport';
|
|
5
|
+
export type SubmitRequest = BaseSubmitRequest<NormalizedFieldConfig, NormalizedReportConfig>;
|
|
6
|
+
export type SubmitResult = Omit<BaseSubmitResult, "reportStates"> & {
|
|
7
|
+
reportStates: Record<string, ReportStateSnapshot>;
|
|
8
|
+
};
|
|
9
|
+
export type Transport = BaseTransport<NormalizedFieldConfig, NormalizedReportConfig>;
|
|
10
|
+
export type TransportStreamEvent = BaseTransportStreamEvent;
|
|
11
|
+
export interface SubmitOptions {
|
|
12
|
+
signal?: AbortSignal;
|
|
13
|
+
backend?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface BeforeSubmitContext {
|
|
16
|
+
backend?: string;
|
|
17
|
+
values: Record<string, unknown>;
|
|
18
|
+
fieldValues: Record<string, unknown>;
|
|
19
|
+
serializedValues: Record<string, unknown>;
|
|
20
|
+
serializedFieldValues: Record<string, unknown>;
|
|
21
|
+
submitCount: number;
|
|
22
|
+
signal: AbortSignal;
|
|
23
|
+
}
|
|
24
|
+
export interface AfterSubmitContext {
|
|
25
|
+
backend?: string;
|
|
26
|
+
values: Record<string, unknown>;
|
|
27
|
+
fieldValues: Record<string, unknown>;
|
|
28
|
+
serializedValues: Record<string, unknown>;
|
|
29
|
+
serializedFieldValues: Record<string, unknown>;
|
|
30
|
+
submitCount: number;
|
|
31
|
+
result: SubmitResult;
|
|
32
|
+
}
|
|
33
|
+
export interface SubmitErrorContext {
|
|
34
|
+
backend?: string;
|
|
35
|
+
values: Record<string, unknown>;
|
|
36
|
+
fieldValues: Record<string, unknown>;
|
|
37
|
+
serializedValues: Record<string, unknown>;
|
|
38
|
+
serializedFieldValues: Record<string, unknown>;
|
|
39
|
+
submitCount: number;
|
|
40
|
+
error: unknown;
|
|
41
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MaybePromise } from './types';
|
|
2
|
+
export declare const slugify: (value: string) => string;
|
|
3
|
+
export declare const isRecord: (value: unknown) => value is Record<string, unknown>;
|
|
4
|
+
export declare const isPromiseLike: <T>(value: MaybePromise<T>) => value is PromiseLike<T>;
|
|
5
|
+
export declare const isEmptyValue: (value: unknown) => boolean;
|
|
6
|
+
export declare const toDate: (value: unknown) => Date | null;
|
|
7
|
+
export declare const identity: <T>(value: T) => T;
|
|
8
|
+
export declare const deepFreeze: <T>(value: T) => T;
|
|
9
|
+
export declare const delay: (ms: number, signal?: AbortSignal) => Promise<void>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DeclarativeFieldCondition, FieldComparisonCondition, FieldCondition, FieldConditionContext, FormStatus, NormalizedFieldConfig } from '../types';
|
|
2
|
+
export type DerivedFieldFlags = {
|
|
3
|
+
visible: boolean;
|
|
4
|
+
disabled: boolean;
|
|
5
|
+
readOnly: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare const evaluateCondition: (condition: FieldCondition | undefined, context: FieldConditionContext, fallback: boolean) => boolean;
|
|
8
|
+
export declare const matchesValueList: (value: unknown, list: unknown[]) => boolean;
|
|
9
|
+
export declare const matchesComparison: (left: unknown, right: unknown, operator: FieldComparisonCondition["operator"]) => boolean;
|
|
10
|
+
export declare const evaluateDeclarativeCondition: (condition: DeclarativeFieldCondition, context: FieldConditionContext) => boolean;
|
|
11
|
+
export declare const resolveDerivedFlags: (config: NormalizedFieldConfig, values: Record<string, unknown>, submitCount: number, formStatus: FormStatus) => DerivedFieldFlags;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { EngineStore, InternalFieldState } from '../state';
|
|
2
|
+
import { FieldDefinition, FieldValidationResult, FormStatus, NormalizedFieldConfig } from '../types';
|
|
3
|
+
import { DerivedFieldFlags } from './conditions';
|
|
4
|
+
export type FieldStateCommitter = (fieldId: string, nextState: InternalFieldState) => void;
|
|
5
|
+
export type FieldValidator = {
|
|
6
|
+
abort(reason?: string): void;
|
|
7
|
+
validate(currentState: InternalFieldState, validationVersion?: number): Promise<FieldValidationResult>;
|
|
8
|
+
};
|
|
9
|
+
export declare const combineErrors: (state: Pick<InternalFieldState, "syncErrors" | "validationErrors" | "externalErrors">) => string[];
|
|
10
|
+
export declare const toSnapshotState: (state: InternalFieldState) => InternalFieldState;
|
|
11
|
+
export declare const toValidatingState: (state: InternalFieldState) => InternalFieldState;
|
|
12
|
+
export declare const requiredErrors: (config: NormalizedFieldConfig, value: unknown) => string[];
|
|
13
|
+
export declare const normalizeValue: (definition: FieldDefinition, config: NormalizedFieldConfig, value: unknown) => unknown;
|
|
14
|
+
export declare const cloneFieldValue: (definition: FieldDefinition, config: NormalizedFieldConfig, value: unknown) => unknown;
|
|
15
|
+
export declare const areFieldValuesEqual: (definition: FieldDefinition, config: NormalizedFieldConfig, previous: unknown, next: unknown) => boolean;
|
|
16
|
+
export declare const runSyncValidation: (definition: FieldDefinition, config: NormalizedFieldConfig, value: unknown, values: Record<string, unknown>, submitCount: number) => string[];
|
|
17
|
+
export declare const computeSyncErrors: (definition: FieldDefinition, config: NormalizedFieldConfig, value: unknown, values: Record<string, unknown>, submitCount: number, flags: DerivedFieldFlags) => string[];
|
|
18
|
+
export declare const makeFieldState: (definition: FieldDefinition, config: NormalizedFieldConfig, initialValue: unknown, values: Record<string, unknown>, submitCount: number, formStatus: FormStatus) => InternalFieldState;
|
|
19
|
+
type CreateFieldValidatorOptions = {
|
|
20
|
+
config: NormalizedFieldConfig;
|
|
21
|
+
definition: FieldDefinition;
|
|
22
|
+
store: EngineStore;
|
|
23
|
+
getValues: () => Record<string, unknown>;
|
|
24
|
+
getSubmitCount: () => number;
|
|
25
|
+
getFormStatus: () => FormStatus;
|
|
26
|
+
commitState: FieldStateCommitter;
|
|
27
|
+
};
|
|
28
|
+
export declare const createFieldValidator: ({ config, definition, store, getValues, getSubmitCount, getFormStatus, commitState, }: CreateFieldValidatorOptions) => FieldValidator;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { NormalizedFormSchema } from '../schema';
|
|
2
|
+
import { EngineStore } from '../state';
|
|
3
|
+
import { FieldValidationResult, FormHooks, FormStatus, FormValidationIssue, FormValidationResult, FormValidator, InactiveFieldPolicy } from '../types';
|
|
4
|
+
type FormValidationField = {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
validate(validationVersion?: number): Promise<FieldValidationResult>;
|
|
7
|
+
setExternalErrors(errors: string[]): void;
|
|
8
|
+
};
|
|
9
|
+
type SyncDerivedFieldStateOptions = {
|
|
10
|
+
values?: Record<string, unknown>;
|
|
11
|
+
preserveValidationErrors?: boolean;
|
|
12
|
+
preserveExternalErrors?: boolean;
|
|
13
|
+
resetInactiveToInitial?: boolean;
|
|
14
|
+
inactiveFieldPolicy?: InactiveFieldPolicy;
|
|
15
|
+
};
|
|
16
|
+
type CreateFormValidatorOptions = {
|
|
17
|
+
store: EngineStore;
|
|
18
|
+
fields: readonly FormValidationField[];
|
|
19
|
+
normalizedSchema: NormalizedFormSchema;
|
|
20
|
+
validators?: FormValidator[];
|
|
21
|
+
hooks?: FormHooks;
|
|
22
|
+
getValues: () => Record<string, unknown>;
|
|
23
|
+
getSubmitCount: () => number;
|
|
24
|
+
getFormStatus: () => FormStatus;
|
|
25
|
+
syncDerivedFieldState: (options?: SyncDerivedFieldStateOptions) => void;
|
|
26
|
+
setRestingStatus: () => void;
|
|
27
|
+
shouldResetInactiveFields: () => boolean;
|
|
28
|
+
inactiveFieldPolicy?: InactiveFieldPolicy;
|
|
29
|
+
};
|
|
30
|
+
export declare const createValidationResult: (store: EngineStore) => FormValidationResult;
|
|
31
|
+
export declare const mergeValidationIssue: (fieldErrors: Record<string, string[]>, formErrors: string[], issue: FormValidationIssue | string[] | void) => void;
|
|
32
|
+
export declare const createFormValidator: ({ store, fields, normalizedSchema, validators, hooks, getValues, getSubmitCount, getFormStatus, syncDerivedFieldState, setRestingStatus, shouldResetInactiveFields, inactiveFieldPolicy, }: CreateFormValidatorOptions) => {
|
|
33
|
+
validate(): Promise<FormValidationResult>;
|
|
34
|
+
};
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { defaultKitDesignSystem, defaultKitLabels, mountForm, unmountForm } from '../kit';
|
|
2
|
+
export { assertPayloadWithinLimits, assertTransportCapabilities, cloneCapabilities, createFanoutTransport, createFallbackTransport, createGraphqlTransport, createGrpcSessionTransport, createGrpcStreamTransport, createGrpcTransport, createGrpcUnaryTransport, createHedgedTransport, createJsonTransport, createLoadBalancedTransport, createMemoryCircuitBreakerState, createMemorySharedRateLimiter, createMemoryTransportCacheStore, createMemoryTransportHealthState, createPipelineTransport, createQuorumFanoutTransport, createRacingTransport, createRoutingTransport, createSessionTransport, createSseTransport, createWebSocketSessionTransport, createWeightedRoutingTransport, inferTransportCapabilities, mergeTransportCapabilities, normalizeTransportCapabilities, pipe, transportDefaults, transportErrorMessages, transportErrorCodes, TransportError, withAuth, withCache, withCircuitBreaker, withDedup, withLogging, withMetrics, withRateLimit, withRequestTransform, withResponseTransform, withRetry, withTracing, withTimeout, } from '../transport';
|
|
3
|
+
export type { ApiKeyAuthOptions, AuthOptions, BearerAuthOptions, CacheOptions, CapabilityRequirement, CircuitBreakerOptions, CircuitBreakerSharedState, CircuitBreakerStateSnapshot, CustomAuthOptions, DedupOptions, FanoutTransportFailure, FanoutTransportOptions, FanoutTransportResult, FallbackTransportFailure, FallbackTransportOptions, GraphqlTransportOptions, GrpcSessionTransportOptions, GrpcStreamTransportOptions, GrpcTransportOptions, GrpcUnaryTransportOptions, HedgedTransportOptions, JsonTransportMethod, JsonTransportOptions, LoadBalancingTransportOptions, PipelineStage, PipelineTransportOptions, QuorumFanoutTransportOptions, RateLimitLeaseRequest, RateLimitOptions, RacingTransportOptions, RetryOptions, RoutingTransportOptions, SessionTransportOptions, SharedRateLimiter, SharedRateLimiterLease, SseTransportOptions, TransportBackpressureMode, TransportCacheEntry, TransportCacheStore, TransportCapabilities, TransportCollection, TransportConsistency, TransportContextAuthOptions, TransportDeliveryMode, TransportErrorCode, TransportHealthSnapshot, TransportHealthState, TransportLogOptions, TransportMetricsOptions, TransportMiddleware, TransportTelemetryEvent, TransportTraceOptions, WebSocketSessionTransportOptions, WeightedRoutingTransportOptions, } from '../transport';
|
|
4
|
+
export type { KitDesignSystemSnapshot, KitLabels, MountFormOptions, MountedForm } from '../kit';
|
|
5
|
+
export type { ExplanationRequest, ExplanationTransport, PrimitiveFieldRenderContext, PrimitiveExplanationRenderContext, PrimitiveExplanationRendererElement, PrimitiveFieldRendererElement, PrimitiveReportRenderContext, PrimitiveReportRendererElement, } from '../primitives';
|
|
6
|
+
export { createExplanationController, defineExplanationDefinition, defineExplanationKind, defineFieldKind, defineReportKind, executeExplanations, executeFormPipeline, } from '../engine';
|
|
7
|
+
export type { AfterExplanationContext, DeclarativeExplanationKind, DeclarativeFieldKind, DeclarativeReportKind, ExplanationConfig, ExplanationController, ExplanationDefinition, ExplanationDescriptor, ExplanationDescriptorContext, ExplanationErrorContext, ExplanationExecutionContext, ExplanationExecutionResult, ExplanationFetchContext, ExplanationFetchFactory, ExplanationFetchRequest, ExplanationFetchTransport, ExplanationRenderSpec, ExplanationRenderSpecContext, ExplanationStateSnapshot, ExplanationStatus, FieldRenderHints, FieldRenderSpec, FieldRenderSpecContext, FieldValidationFnContext, FieldValueAdapter, FieldWidget, NormalizedExplanationConfig, PipelineArtifactAdapter, PipelineArtifactContext, PipelineResult, ExecuteFormPipelineOptions, PresentationNode, PresentationSummary, ReportRenderSpec, ReportRenderSpecContext, ReportResolveContext, } from '../engine';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DesignSystemConfig, DesignSystemRegistry } from '../../design-system';
|
|
2
|
+
import { Registry } from '../../engine';
|
|
3
|
+
import { PrimitiveRegistry } from '../../primitives';
|
|
4
|
+
import { KitLabels } from './types';
|
|
5
|
+
export declare const defaultKitLabels: Required<KitLabels>;
|
|
6
|
+
export declare const defaultKitDesignSystem: DesignSystemConfig;
|
|
7
|
+
export declare const cloneEngineRegistry: (registry?: Registry) => Registry;
|
|
8
|
+
export declare const resolvePrimitiveRegistry: (registry?: PrimitiveRegistry) => PrimitiveRegistry;
|
|
9
|
+
export declare const resolveDesignSystemRegistry: (registry?: DesignSystemRegistry) => DesignSystemRegistry;
|
|
10
|
+
export declare const resolveKitLabels: (labels?: KitLabels) => Required<KitLabels>;
|
|
11
|
+
export declare const resolveKitDesignSystem: (config?: DesignSystemConfig) => DesignSystemConfig;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { defaultKitDesignSystem, defaultKitLabels } from './defaults';
|
|
2
|
+
export { mountForm, unmountForm } from './mount-form';
|
|
3
|
+
export { assertPayloadWithinLimits, assertTransportCapabilities, createFanoutTransport, createFallbackTransport, createGraphqlTransport, createGrpcSessionTransport, createGrpcStreamTransport, createGrpcTransport, createGrpcUnaryTransport, createHedgedTransport, createJsonTransport, createLoadBalancedTransport, createMemoryCircuitBreakerState, createMemorySharedRateLimiter, createMemoryTransportCacheStore, createMemoryTransportHealthState, createPipelineTransport, createQuorumFanoutTransport, createRacingTransport, createRoutingTransport, createSseTransport, createSessionTransport, createWebSocketSessionTransport, createWeightedRoutingTransport, pipe, withAuth, withCache, withCircuitBreaker, withDedup, withLogging, withMetrics, withRateLimit, withRequestTransform, withResponseTransform, withRetry, withTracing, withTimeout, } from '../../transport';
|
|
4
|
+
export type { ApiKeyAuthOptions, AuthOptions, BearerAuthOptions, CapabilityRequirement, CacheOptions, CircuitBreakerSharedState, CircuitBreakerOptions, CustomAuthOptions, DedupOptions, FanoutTransportFailure, FanoutTransportOptions, FanoutTransportResult, FallbackTransportFailure, FallbackTransportOptions, GraphqlTransportOptions, GrpcSessionTransportOptions, GrpcStreamTransportOptions, GrpcTransportOptions, GrpcUnaryTransportOptions, HedgedTransportOptions, JsonTransportMethod, JsonTransportOptions, KitDesignSystemSnapshot, KitLabels, LoadBalancingTransportOptions, MountFormOptions, MountedForm, PipelineStage, PipelineTransportOptions, QuorumFanoutTransportOptions, RateLimitLeaseRequest, SharedRateLimiter, SharedRateLimiterLease, SessionTransportOptions, TransportCacheEntry, TransportCacheStore, TransportHealthSnapshot, TransportHealthState, RateLimitOptions, RacingTransportOptions, RetryOptions, RoutingTransportOptions, TransportContextAuthOptions, TransportCollection, TransportMetricsOptions, TransportTelemetryEvent, TransportLogOptions, TransportMiddleware, TransportTraceOptions, SseTransportOptions, WebSocketSessionTransportOptions, WeightedRoutingTransportOptions, } from './types';
|