@businessdash/sdk 0.9.60
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/LICENSE +21 -0
- package/README.md +899 -0
- package/dist/adapters-revalidate.d.ts +44 -0
- package/dist/adapters-revalidate.d.ts.map +1 -0
- package/dist/adapters-revalidate.js +68 -0
- package/dist/adapters-revalidate.js.map +1 -0
- package/dist/alpha.d.ts +21 -0
- package/dist/alpha.d.ts.map +1 -0
- package/dist/alpha.js +21 -0
- package/dist/alpha.js.map +1 -0
- package/dist/analytics-core.d.ts +34 -0
- package/dist/analytics-core.d.ts.map +1 -0
- package/dist/analytics-core.js +138 -0
- package/dist/analytics-core.js.map +1 -0
- package/dist/analytics-server.d.ts +54 -0
- package/dist/analytics-server.d.ts.map +1 -0
- package/dist/analytics-server.js +78 -0
- package/dist/analytics-server.js.map +1 -0
- package/dist/attribution-logo.d.ts +2 -0
- package/dist/attribution-logo.d.ts.map +1 -0
- package/dist/attribution-logo.js +5 -0
- package/dist/attribution-logo.js.map +1 -0
- package/dist/auth-handler.d.ts +92 -0
- package/dist/auth-handler.d.ts.map +1 -0
- package/dist/auth-handler.js +277 -0
- package/dist/auth-handler.js.map +1 -0
- package/dist/biab-forms.css +484 -0
- package/dist/cli.d.ts +46 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1824 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +1681 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +2845 -0
- package/dist/client.js.map +1 -0
- package/dist/collections.d.ts +13 -0
- package/dist/collections.d.ts.map +1 -0
- package/dist/collections.js +13 -0
- package/dist/collections.js.map +1 -0
- package/dist/contracts.d.ts +14609 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +2428 -0
- package/dist/contracts.js.map +1 -0
- package/dist/data-model-schema.d.ts +962 -0
- package/dist/data-model-schema.d.ts.map +1 -0
- package/dist/data-model-schema.js +2295 -0
- package/dist/data-model-schema.js.map +1 -0
- package/dist/distribution.d.ts +38 -0
- package/dist/distribution.d.ts.map +1 -0
- package/dist/distribution.js +61 -0
- package/dist/distribution.js.map +1 -0
- package/dist/element.d.ts +121 -0
- package/dist/element.d.ts.map +1 -0
- package/dist/element.js +276 -0
- package/dist/element.js.map +1 -0
- package/dist/enums.d.ts +25 -0
- package/dist/enums.d.ts.map +1 -0
- package/dist/enums.js +38 -0
- package/dist/enums.js.map +1 -0
- package/dist/errors.d.ts +195 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +188 -0
- package/dist/errors.js.map +1 -0
- package/dist/forms-core/autocomplete.d.ts +37 -0
- package/dist/forms-core/autocomplete.d.ts.map +1 -0
- package/dist/forms-core/autocomplete.js +82 -0
- package/dist/forms-core/autocomplete.js.map +1 -0
- package/dist/forms-core/business-function.d.ts +61 -0
- package/dist/forms-core/business-function.d.ts.map +1 -0
- package/dist/forms-core/business-function.js +149 -0
- package/dist/forms-core/business-function.js.map +1 -0
- package/dist/forms-core/calculation.d.ts +72 -0
- package/dist/forms-core/calculation.d.ts.map +1 -0
- package/dist/forms-core/calculation.js +103 -0
- package/dist/forms-core/calculation.js.map +1 -0
- package/dist/forms-core/controller.d.ts +249 -0
- package/dist/forms-core/controller.d.ts.map +1 -0
- package/dist/forms-core/controller.js +590 -0
- package/dist/forms-core/controller.js.map +1 -0
- package/dist/forms-core/elements.d.ts +44 -0
- package/dist/forms-core/elements.d.ts.map +1 -0
- package/dist/forms-core/elements.js +68 -0
- package/dist/forms-core/elements.js.map +1 -0
- package/dist/forms-core/email-domains.d.ts +10 -0
- package/dist/forms-core/email-domains.d.ts.map +1 -0
- package/dist/forms-core/email-domains.js +69 -0
- package/dist/forms-core/email-domains.js.map +1 -0
- package/dist/forms-core/file-rules.d.ts +51 -0
- package/dist/forms-core/file-rules.d.ts.map +1 -0
- package/dist/forms-core/file-rules.js +105 -0
- package/dist/forms-core/file-rules.js.map +1 -0
- package/dist/forms-core/formula.d.ts +114 -0
- package/dist/forms-core/formula.d.ts.map +1 -0
- package/dist/forms-core/formula.js +1170 -0
- package/dist/forms-core/formula.js.map +1 -0
- package/dist/forms-core/index.d.ts +24 -0
- package/dist/forms-core/index.d.ts.map +1 -0
- package/dist/forms-core/index.js +28 -0
- package/dist/forms-core/index.js.map +1 -0
- package/dist/forms-core/units.d.ts +49 -0
- package/dist/forms-core/units.d.ts.map +1 -0
- package/dist/forms-core/units.js +255 -0
- package/dist/forms-core/units.js.map +1 -0
- package/dist/forms-core/us-states.d.ts +14 -0
- package/dist/forms-core/us-states.d.ts.map +1 -0
- package/dist/forms-core/us-states.js +66 -0
- package/dist/forms-core/us-states.js.map +1 -0
- package/dist/forms-core/validation.d.ts +266 -0
- package/dist/forms-core/validation.d.ts.map +1 -0
- package/dist/forms-core/validation.js +850 -0
- package/dist/forms-core/validation.js.map +1 -0
- package/dist/forms.d.ts +19 -0
- package/dist/forms.d.ts.map +1 -0
- package/dist/forms.js +29 -0
- package/dist/forms.js.map +1 -0
- package/dist/gallery-types.d.ts +32 -0
- package/dist/gallery-types.d.ts.map +1 -0
- package/dist/gallery-types.js +2 -0
- package/dist/gallery-types.js.map +1 -0
- package/dist/graphql.d.ts +97 -0
- package/dist/graphql.d.ts.map +1 -0
- package/dist/graphql.js +212 -0
- package/dist/graphql.js.map +1 -0
- package/dist/index.cjs +19448 -0
- package/dist/index.d.cts +19 -0
- package/dist/index.d.mts +19 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/marketing-schema.d.ts +216 -0
- package/dist/marketing-schema.d.ts.map +1 -0
- package/dist/marketing-schema.js +200 -0
- package/dist/marketing-schema.js.map +1 -0
- package/dist/mcp.d.ts +42 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +87 -0
- package/dist/mcp.js.map +1 -0
- package/dist/native.d.ts +45 -0
- package/dist/native.d.ts.map +1 -0
- package/dist/native.js +43 -0
- package/dist/native.js.map +1 -0
- package/dist/next-revalidate.d.ts +43 -0
- package/dist/next-revalidate.d.ts.map +1 -0
- package/dist/next-revalidate.js +84 -0
- package/dist/next-revalidate.js.map +1 -0
- package/dist/parallel-pages.d.ts +102 -0
- package/dist/parallel-pages.d.ts.map +1 -0
- package/dist/parallel-pages.js +108 -0
- package/dist/parallel-pages.js.map +1 -0
- package/dist/payment-icons.d.ts +66 -0
- package/dist/payment-icons.d.ts.map +1 -0
- package/dist/payment-icons.js +160 -0
- package/dist/payment-icons.js.map +1 -0
- package/dist/proxy.d.ts +67 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +97 -0
- package/dist/proxy.js.map +1 -0
- package/dist/react-analytics.d.ts +39 -0
- package/dist/react-analytics.d.ts.map +1 -0
- package/dist/react-analytics.js +59 -0
- package/dist/react-analytics.js.map +1 -0
- package/dist/react-attribution.d.ts +99 -0
- package/dist/react-attribution.d.ts.map +1 -0
- package/dist/react-attribution.js +52 -0
- package/dist/react-attribution.js.map +1 -0
- package/dist/react-marketing.d.ts +181 -0
- package/dist/react-marketing.d.ts.map +1 -0
- package/dist/react-marketing.js +215 -0
- package/dist/react-marketing.js.map +1 -0
- package/dist/react.d.ts +727 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +2418 -0
- package/dist/react.js.map +1 -0
- package/dist/reserved-paths.d.ts +24 -0
- package/dist/reserved-paths.d.ts.map +1 -0
- package/dist/reserved-paths.js +60 -0
- package/dist/reserved-paths.js.map +1 -0
- package/dist/revalidate-verify.d.ts +30 -0
- package/dist/revalidate-verify.d.ts.map +1 -0
- package/dist/revalidate-verify.js +74 -0
- package/dist/revalidate-verify.js.map +1 -0
- package/dist/sdk.d.ts +678 -0
- package/dist/sdk.d.ts.map +1 -0
- package/dist/sdk.js +801 -0
- package/dist/sdk.js.map +1 -0
- package/dist/seo.d.ts +218 -0
- package/dist/seo.d.ts.map +1 -0
- package/dist/seo.js +309 -0
- package/dist/seo.js.map +1 -0
- package/dist/socials.d.ts +47 -0
- package/dist/socials.d.ts.map +1 -0
- package/dist/socials.js +172 -0
- package/dist/socials.js.map +1 -0
- package/dist/static.d.ts +14 -0
- package/dist/static.d.ts.map +1 -0
- package/dist/static.js +14 -0
- package/dist/static.js.map +1 -0
- package/dist/url-pattern.d.ts +47 -0
- package/dist/url-pattern.d.ts.map +1 -0
- package/dist/url-pattern.js +124 -0
- package/dist/url-pattern.js.map +1 -0
- package/dist/vanilla.d.ts +77 -0
- package/dist/vanilla.d.ts.map +1 -0
- package/dist/vanilla.js +903 -0
- package/dist/vanilla.js.map +1 -0
- package/openapi.json +13779 -0
- package/package.json +204 -0
- package/src/adapters-revalidate.ts +88 -0
- package/src/alpha.ts +89 -0
- package/src/analytics-core.ts +175 -0
- package/src/analytics-server.ts +99 -0
- package/src/angular/biab-form.component.ts +1443 -0
- package/src/angular/index.ts +26 -0
- package/src/attribution-logo.ts +5 -0
- package/src/auth-handler.ts +352 -0
- package/src/cli.ts +2517 -0
- package/src/client.ts +3578 -0
- package/src/collections.ts +101 -0
- package/src/contracts.ts +3390 -0
- package/src/data-model-schema.ts +4042 -0
- package/src/distribution.ts +73 -0
- package/src/element.ts +321 -0
- package/src/enums.ts +65 -0
- package/src/errors.ts +338 -0
- package/src/forms-core/autocomplete.ts +97 -0
- package/src/forms-core/business-function.ts +209 -0
- package/src/forms-core/calculation.ts +167 -0
- package/src/forms-core/controller.ts +922 -0
- package/src/forms-core/elements.ts +86 -0
- package/src/forms-core/email-domains.ts +68 -0
- package/src/forms-core/file-rules.ts +123 -0
- package/src/forms-core/formula.ts +1339 -0
- package/src/forms-core/index.ts +122 -0
- package/src/forms-core/units.ts +308 -0
- package/src/forms-core/us-states.ts +68 -0
- package/src/forms-core/validation.ts +1037 -0
- package/src/forms.ts +63 -0
- package/src/gallery-types.ts +31 -0
- package/src/graphql.ts +295 -0
- package/src/index.ts +505 -0
- package/src/marketing-schema.ts +395 -0
- package/src/mcp.ts +108 -0
- package/src/native.ts +73 -0
- package/src/next-revalidate.ts +124 -0
- package/src/parallel-pages.ts +192 -0
- package/src/payment-icons.ts +205 -0
- package/src/proxy.ts +173 -0
- package/src/qwik.tsx +1234 -0
- package/src/react-analytics.tsx +76 -0
- package/src/react-attribution.tsx +192 -0
- package/src/react-marketing.tsx +338 -0
- package/src/react.tsx +5495 -0
- package/src/reserved-paths.ts +65 -0
- package/src/revalidate-verify.ts +98 -0
- package/src/sdk.ts +1671 -0
- package/src/seo.ts +488 -0
- package/src/socials.ts +230 -0
- package/src/solid.tsx +1466 -0
- package/src/static.ts +21 -0
- package/src/styles/biab-forms.css +484 -0
- package/src/svelte/BiabForm.svelte +1069 -0
- package/src/svelte/context.ts +57 -0
- package/src/svelte/index.ts +79 -0
- package/src/url-pattern.ts +153 -0
- package/src/vanilla.ts +1290 -0
- package/src/vue/BiabForm.vue +1538 -0
- package/src/vue/index.ts +119 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework-agnostic, isomorphic form validation + condition evaluation.
|
|
3
|
+
*
|
|
4
|
+
* Zero UI deps, zero React, zero DOM. This is the single source of truth every
|
|
5
|
+
* `<BiabForm>` binding (React / Vue / Svelte / Solid / Qwik / Angular / Element /
|
|
6
|
+
* vanilla) shares. It is a faithful port of three existing BIAB modules so the
|
|
7
|
+
* client never disagrees with the server:
|
|
8
|
+
*
|
|
9
|
+
* - `src/server/forms/validate.ts` — isEmpty / validateValue /
|
|
10
|
+
* evalCondition / findMissingRequired
|
|
11
|
+
* - `src/app/.../builder/FormPreview.tsx` — seedInitialData / concurrentRevealCount /
|
|
12
|
+
* the or_condition + condition_block walk
|
|
13
|
+
* - `biab-dev/src/sdk.ts` validateFormSubmission — the wire-level submission check
|
|
14
|
+
*
|
|
15
|
+
* The schema published by `client.forms.schema(slug)` carries the FULL nested
|
|
16
|
+
* field tree (layout nodes, `condition_block`, `or_condition`, `input_group`,
|
|
17
|
+
* `flex_row` with `children`, plus the resolved output `key` on each
|
|
18
|
+
* value-bearing field). These helpers walk that tree, NOT the flattened
|
|
19
|
+
* `FormFieldDef[]` view.
|
|
20
|
+
*/
|
|
21
|
+
/** A condition clause: one operator (+ optional target value) on a field. */
|
|
22
|
+
export interface FormConditionClause {
|
|
23
|
+
operator: string;
|
|
24
|
+
value?: string;
|
|
25
|
+
}
|
|
26
|
+
/** A field's `conditionRule` — supports the modern multi-clause form and the
|
|
27
|
+
* legacy single `{ operator, value }` form (read as one clause). */
|
|
28
|
+
export interface FormConditionRule {
|
|
29
|
+
fieldId?: string;
|
|
30
|
+
operator?: string;
|
|
31
|
+
value?: string;
|
|
32
|
+
clauses?: FormConditionClause[];
|
|
33
|
+
/** How clauses combine: "all" (default, AND) or "any" (OR). This was missing
|
|
34
|
+
* from the type, so a rule the builder saved as "ANY of" silently evaluated
|
|
35
|
+
* as "ALL of" once it rendered through the SDK. */
|
|
36
|
+
match?: "all" | "any";
|
|
37
|
+
/** Collection pickers store record IDS — compare THIS column of the chosen
|
|
38
|
+
* record instead ("__label__" = the displayed label). Resolved by surfaces
|
|
39
|
+
* that load the picker's options; unresolved falls back to the raw value. */
|
|
40
|
+
matchField?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Structural view of a form field as it arrives on the wire from
|
|
44
|
+
* `client.forms.schema()`. Deliberately permissive: every binding renders by
|
|
45
|
+
* `type`, reads the value-bearing fields, and treats the rest as layout. This
|
|
46
|
+
* mirrors the server `FormField` + the builder's `FieldX`.
|
|
47
|
+
*/
|
|
48
|
+
export interface FormCoreField {
|
|
49
|
+
id: string;
|
|
50
|
+
/** Stable output key for the submission payload (preferred over `id`). */
|
|
51
|
+
key?: string;
|
|
52
|
+
type: string;
|
|
53
|
+
label?: string | null;
|
|
54
|
+
/** Explicit HTML `autocomplete` token for this field (e.g. "email",
|
|
55
|
+
* "given-name", "off"). Overrides the SDK's inference. Optional / forward-
|
|
56
|
+
* compatible — set by the form builder when present. */
|
|
57
|
+
autocomplete?: string;
|
|
58
|
+
required?: boolean;
|
|
59
|
+
/** Consent semantic for boolean fields — the value must be `true` to submit
|
|
60
|
+
* (independent of the toggle/checkbox `display`). */
|
|
61
|
+
mustBeTrue?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Render variant for a field whose validated type stays the same:
|
|
64
|
+
* boolean → toggle/checkbox, checkbox group → dropdown, select → combobox
|
|
65
|
+
* (the searchable "ComboBox" palette card). Display-only — never affects the
|
|
66
|
+
* submitted value or its validation.
|
|
67
|
+
*/
|
|
68
|
+
display?: "toggle" | "checkbox" | "dropdown" | "combobox";
|
|
69
|
+
/** select / radio / checkbox: accept a free-text "Other…" value outside
|
|
70
|
+
* `options` (the options whitelist isn't enforced when on). */
|
|
71
|
+
allowCustom?: boolean;
|
|
72
|
+
placeholder?: string;
|
|
73
|
+
helpText?: string;
|
|
74
|
+
options?: string[];
|
|
75
|
+
defaultValue?: string | boolean | number | null;
|
|
76
|
+
content?: string;
|
|
77
|
+
stepTitle?: string;
|
|
78
|
+
outputKey?: string | null;
|
|
79
|
+
regexPattern?: string;
|
|
80
|
+
concurrentReveal?: boolean;
|
|
81
|
+
showGroupLabel?: boolean;
|
|
82
|
+
children?: FormCoreField[] | null;
|
|
83
|
+
conditionRule?: FormConditionRule;
|
|
84
|
+
validation?: {
|
|
85
|
+
min?: number;
|
|
86
|
+
max?: number;
|
|
87
|
+
};
|
|
88
|
+
sliderConfig?: {
|
|
89
|
+
min?: number;
|
|
90
|
+
max?: number;
|
|
91
|
+
step?: number;
|
|
92
|
+
unit?: string;
|
|
93
|
+
};
|
|
94
|
+
starRatingConfig?: {
|
|
95
|
+
maxStars?: number;
|
|
96
|
+
defaultValue?: number;
|
|
97
|
+
};
|
|
98
|
+
fileConfig?: {
|
|
99
|
+
allowedTypes?: string[];
|
|
100
|
+
maxFiles?: number;
|
|
101
|
+
maxSize?: number;
|
|
102
|
+
};
|
|
103
|
+
/** `icon_select`: which icons may be picked, and the grid width. The value is
|
|
104
|
+
* the icon's kebab-case name. */
|
|
105
|
+
iconConfig?: {
|
|
106
|
+
set?: "lucide";
|
|
107
|
+
allowedIcons?: string[];
|
|
108
|
+
columns?: number;
|
|
109
|
+
};
|
|
110
|
+
/** `image_input`: upload OR paste a URL — the value is one URL string. */
|
|
111
|
+
imageInputConfig?: {
|
|
112
|
+
allowedTypes?: string[];
|
|
113
|
+
maxSize?: number;
|
|
114
|
+
showPreview?: boolean;
|
|
115
|
+
sources?: "both" | "upload" | "url";
|
|
116
|
+
};
|
|
117
|
+
phoneConfig?: {
|
|
118
|
+
international?: boolean;
|
|
119
|
+
showFlags?: boolean;
|
|
120
|
+
};
|
|
121
|
+
timeConfig?: {
|
|
122
|
+
mode?: "simple" | "time_block" | "appointment";
|
|
123
|
+
format?: "12h" | "24h";
|
|
124
|
+
stepMinutes?: number;
|
|
125
|
+
};
|
|
126
|
+
orConditionConfig?: {
|
|
127
|
+
leftLabel?: string;
|
|
128
|
+
rightLabel?: string;
|
|
129
|
+
};
|
|
130
|
+
/** choice_cards: icon + label options. `single` = radio (value is the chosen
|
|
131
|
+
* label string); `multi` = checkbox (value is a string[] of chosen labels).
|
|
132
|
+
* Options can also carry richer card content (image/price/etc.) — purely
|
|
133
|
+
* display + metadata; the submitted value is always the `label`. */
|
|
134
|
+
choiceConfig?: {
|
|
135
|
+
mode?: "single" | "multi";
|
|
136
|
+
options?: Array<{
|
|
137
|
+
label: string;
|
|
138
|
+
icon?: string;
|
|
139
|
+
imageUrl?: string;
|
|
140
|
+
price?: string;
|
|
141
|
+
description?: string;
|
|
142
|
+
productId?: string;
|
|
143
|
+
href?: string;
|
|
144
|
+
}>;
|
|
145
|
+
};
|
|
146
|
+
/** bullet_list display element: "bullets" = optional title + plain bullets;
|
|
147
|
+
* "details" = icon + heading + description per point. Carries no value. */
|
|
148
|
+
listConfig?: {
|
|
149
|
+
variant?: "bullets" | "details";
|
|
150
|
+
title?: string;
|
|
151
|
+
items?: Array<{
|
|
152
|
+
text: string;
|
|
153
|
+
description?: string;
|
|
154
|
+
icon?: string;
|
|
155
|
+
}>;
|
|
156
|
+
};
|
|
157
|
+
/** table display element: columns (header/type/align) + rows of cells. A
|
|
158
|
+
* "check" column renders ✓/– from a truthy/falsy cell. Carries no value. */
|
|
159
|
+
tableConfig?: {
|
|
160
|
+
columns?: Array<{
|
|
161
|
+
header: string;
|
|
162
|
+
type?: "text" | "check";
|
|
163
|
+
align?: "left" | "center" | "right";
|
|
164
|
+
}>;
|
|
165
|
+
rows?: Array<{
|
|
166
|
+
cells: string[];
|
|
167
|
+
}>;
|
|
168
|
+
highlightColumn?: number;
|
|
169
|
+
};
|
|
170
|
+
/** multi_populator repeater: value is an array of instance records (each keyed
|
|
171
|
+
* by the child field ids). `maxInstances` caps the count (default 10). */
|
|
172
|
+
populatorConfig?: {
|
|
173
|
+
maxInstances?: number;
|
|
174
|
+
minInstances?: number;
|
|
175
|
+
addButtonLabel?: string;
|
|
176
|
+
itemLabel?: string;
|
|
177
|
+
};
|
|
178
|
+
/** measurement field: number + unit. Value is { value, unit, base, baseUnit }. */
|
|
179
|
+
unitConfig?: {
|
|
180
|
+
category?: string;
|
|
181
|
+
units?: string[];
|
|
182
|
+
mode?: "select" | "fixed";
|
|
183
|
+
defaultUnit?: string;
|
|
184
|
+
outputUnit?: string;
|
|
185
|
+
allowDecimal?: boolean;
|
|
186
|
+
};
|
|
187
|
+
/** number field: when false, only whole numbers are accepted. */
|
|
188
|
+
allowDecimal?: boolean;
|
|
189
|
+
/** number field: when false, negatives are rejected (enforce >= 0). */
|
|
190
|
+
allowNegative?: boolean;
|
|
191
|
+
/** currency field config. */
|
|
192
|
+
currencyConfig?: {
|
|
193
|
+
currency?: string;
|
|
194
|
+
symbol?: string;
|
|
195
|
+
allowNegative?: boolean;
|
|
196
|
+
allowDecimal?: boolean;
|
|
197
|
+
};
|
|
198
|
+
[key: string]: unknown;
|
|
199
|
+
}
|
|
200
|
+
/** A submission's working data — keyed by field `id` internally. */
|
|
201
|
+
export type FormData = Record<string, unknown>;
|
|
202
|
+
/** A required-field gap, surfaced to the UI for inline error display. */
|
|
203
|
+
export interface MissingField {
|
|
204
|
+
id: string;
|
|
205
|
+
label: string;
|
|
206
|
+
}
|
|
207
|
+
/** True when a field's value should be treated as missing for required checks. */
|
|
208
|
+
export declare function isEmpty(field: FormCoreField, value: unknown): boolean;
|
|
209
|
+
/**
|
|
210
|
+
* Validate one value against its field definition. Returns an error reason
|
|
211
|
+
* (`"type"`, `"format"`, `"min"`, `"max"`, `"options"`, `"regex"`), or null when
|
|
212
|
+
* the value conforms. Lenient where the renderer's output is ambiguous (numeric
|
|
213
|
+
* fields accept numeric strings) so legitimate live submissions never break.
|
|
214
|
+
* Faithful port of `validateValue` in src/server/forms/validate.ts.
|
|
215
|
+
*/
|
|
216
|
+
export declare function validateValue(field: FormCoreField, value: unknown): string | null;
|
|
217
|
+
/**
|
|
218
|
+
* A condition passes when its field satisfies ALL clauses (AND). Back-compat: a
|
|
219
|
+
* legacy single `{ operator, value }` rule is read as one clause. An absent rule
|
|
220
|
+
* (or one without a `fieldId`) passes. Faithful port of `evalCondition`.
|
|
221
|
+
*/
|
|
222
|
+
export declare function evalCondition(rule: FormConditionRule | undefined, data: FormData): boolean;
|
|
223
|
+
/**
|
|
224
|
+
* Is a gating container currently visible?
|
|
225
|
+
*
|
|
226
|
+
* `condition_block` has always gated on its rule. `input_group` now does too:
|
|
227
|
+
* at the root of a consecutive form a group IS a page, so a rule there makes the
|
|
228
|
+
* whole page conditional. Every other type is unconditionally visible — a stray
|
|
229
|
+
* rule on a text field is ignored rather than hiding it.
|
|
230
|
+
*/
|
|
231
|
+
export declare function isNodeVisible(node: {
|
|
232
|
+
type?: string;
|
|
233
|
+
conditionRule?: FormConditionRule;
|
|
234
|
+
}, data: FormData): boolean;
|
|
235
|
+
/**
|
|
236
|
+
* Returns the required fields that haven't been filled in, evaluated under the
|
|
237
|
+
* current condition state. A `condition_block` whose rule is false is skipped
|
|
238
|
+
* with its children; an `or_condition` requires at least one side filled, then
|
|
239
|
+
* recurses only into filled sides. Non-empty text/number values must also
|
|
240
|
+
* satisfy the field's regex pattern. Faithful port of FormPreview's
|
|
241
|
+
* `findMissingRequired`.
|
|
242
|
+
*/
|
|
243
|
+
export declare function findMissingRequired(fields: FormCoreField[], data: FormData): MissingField[];
|
|
244
|
+
/**
|
|
245
|
+
* For a "concurrent questions" group: how many leading children to reveal. Shows
|
|
246
|
+
* every already-satisfied child plus the first unsatisfied one (the active
|
|
247
|
+
* question), so each required field gates the next. Optional/empty fields count
|
|
248
|
+
* as satisfied. Faithful port of FormPreview's `concurrentRevealCount`.
|
|
249
|
+
*/
|
|
250
|
+
export declare function concurrentRevealCount(children: FormCoreField[], data: FormData): number;
|
|
251
|
+
/**
|
|
252
|
+
* Walk the field tree once and seed every value-bearing input's id with a
|
|
253
|
+
* type-appropriate default. Static/layout/container nodes are skipped so no
|
|
254
|
+
* UUID-keyed empty string leaks into the payload (which the server would reject
|
|
255
|
+
* as an unknown field). Faithful port of FormPreview's `seedInitialData`.
|
|
256
|
+
*/
|
|
257
|
+
export declare function seedInitialData(fields: FormCoreField[]): FormData;
|
|
258
|
+
/** Flat list of value-bearing fields (depth-first, document order). */
|
|
259
|
+
export declare function flattenValueFields(fields: FormCoreField[]): FormCoreField[];
|
|
260
|
+
/**
|
|
261
|
+
* Re-key working data (keyed by field `id`) to the published output `key` for
|
|
262
|
+
* the wire payload. Fields without a published `key` keep their `id`. Only
|
|
263
|
+
* value-bearing fields present in `data` are emitted.
|
|
264
|
+
*/
|
|
265
|
+
export declare function toSubmissionPayload(fields: FormCoreField[], data: FormData): FormData;
|
|
266
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/forms-core/validation.ts"],"names":[],"mappings":"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"}
|