@zod-to-form/core 0.6.1 → 0.6.3
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/dist/config.d.ts +24 -30
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +32 -18
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/normalize.d.ts +17 -0
- package/dist/normalize.d.ts.map +1 -0
- package/dist/normalize.js +48 -0
- package/dist/normalize.js.map +1 -0
- package/dist/optimizers/constraint-map.d.ts +14 -0
- package/dist/optimizers/constraint-map.d.ts.map +1 -0
- package/dist/optimizers/constraint-map.js +117 -0
- package/dist/optimizers/constraint-map.js.map +1 -0
- package/dist/optimizers/index.d.ts +10 -0
- package/dist/optimizers/index.d.ts.map +1 -0
- package/dist/optimizers/index.js +31 -0
- package/dist/optimizers/index.js.map +1 -0
- package/dist/optimizers/l1-decompose.d.ts +6 -0
- package/dist/optimizers/l1-decompose.d.ts.map +1 -0
- package/dist/optimizers/l1-decompose.js +65 -0
- package/dist/optimizers/l1-decompose.js.map +1 -0
- package/dist/optimizers/l2-native-rules.d.ts +6 -0
- package/dist/optimizers/l2-native-rules.d.ts.map +1 -0
- package/dist/optimizers/l2-native-rules.js +66 -0
- package/dist/optimizers/l2-native-rules.js.map +1 -0
- package/dist/optimizers/l3-cross-field.d.ts +2 -0
- package/dist/optimizers/l3-cross-field.d.ts.map +1 -0
- package/dist/optimizers/l3-cross-field.js +43 -0
- package/dist/optimizers/l3-cross-field.js.map +1 -0
- package/dist/optimizers/schema-lite.d.ts +11 -0
- package/dist/optimizers/schema-lite.d.ts.map +1 -0
- package/dist/optimizers/schema-lite.js +71 -0
- package/dist/optimizers/schema-lite.js.map +1 -0
- package/dist/optimizers/types.d.ts +47 -0
- package/dist/optimizers/types.d.ts.map +1 -0
- package/dist/optimizers/types.js +2 -0
- package/dist/optimizers/types.js.map +1 -0
- package/dist/processors/array.d.ts +3 -3
- package/dist/processors/array.d.ts.map +1 -1
- package/dist/processors/array.js +3 -6
- package/dist/processors/array.js.map +1 -1
- package/dist/processors/boolean.d.ts +2 -2
- package/dist/processors/boolean.d.ts.map +1 -1
- package/dist/processors/boolean.js.map +1 -1
- package/dist/processors/collections.d.ts +13 -0
- package/dist/processors/collections.d.ts.map +1 -0
- package/dist/processors/collections.js +36 -0
- package/dist/processors/collections.js.map +1 -0
- package/dist/processors/date.d.ts +2 -2
- package/dist/processors/date.d.ts.map +1 -1
- package/dist/processors/date.js.map +1 -1
- package/dist/processors/enum.d.ts +3 -3
- package/dist/processors/enum.d.ts.map +1 -1
- package/dist/processors/enum.js +5 -7
- package/dist/processors/enum.js.map +1 -1
- package/dist/processors/fallback.d.ts.map +1 -1
- package/dist/processors/fallback.js +1 -13
- package/dist/processors/fallback.js.map +1 -1
- package/dist/processors/index.d.ts +3 -1
- package/dist/processors/index.d.ts.map +1 -1
- package/dist/processors/index.js +3 -1
- package/dist/processors/index.js.map +1 -1
- package/dist/processors/number.d.ts +2 -2
- package/dist/processors/number.d.ts.map +1 -1
- package/dist/processors/number.js +3 -4
- package/dist/processors/number.js.map +1 -1
- package/dist/processors/object.d.ts +3 -3
- package/dist/processors/object.d.ts.map +1 -1
- package/dist/processors/object.js +12 -12
- package/dist/processors/object.js.map +1 -1
- package/dist/processors/record.d.ts +4 -0
- package/dist/processors/record.d.ts.map +1 -0
- package/dist/processors/record.js +8 -0
- package/dist/processors/record.js.map +1 -0
- package/dist/processors/string.d.ts +3 -3
- package/dist/processors/string.d.ts.map +1 -1
- package/dist/processors/string.js +22 -7
- package/dist/processors/string.js.map +1 -1
- package/dist/processors/union.d.ts +3 -2
- package/dist/processors/union.d.ts.map +1 -1
- package/dist/processors/union.js +20 -19
- package/dist/processors/union.js.map +1 -1
- package/dist/processors/wrappers.d.ts +7 -7
- package/dist/processors/wrappers.d.ts.map +1 -1
- package/dist/processors/wrappers.js +10 -16
- package/dist/processors/wrappers.js.map +1 -1
- package/dist/register.d.ts.map +1 -1
- package/dist/register.js +5 -6
- package/dist/register.js.map +1 -1
- package/dist/registry.d.ts +0 -3
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +27 -6
- package/dist/registry.js.map +1 -1
- package/dist/types.d.ts +68 -13
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +0 -6
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +2 -6
- package/dist/utils.js.map +1 -1
- package/dist/walker.d.ts +7 -4
- package/dist/walker.d.ts.map +1 -1
- package/dist/walker.js +172 -19
- package/dist/walker.js.map +1 -1
- package/package.json +1 -1
- package/dist/processors/_utils.d.ts +0 -5
- package/dist/processors/_utils.d.ts.map +0 -1
- package/dist/processors/_utils.js +0 -17
- package/dist/processors/_utils.js.map +0 -1
package/dist/config.d.ts
CHANGED
|
@@ -5,48 +5,38 @@ import type { FieldConfig } from './types.js';
|
|
|
5
5
|
export type ComponentOverride = {
|
|
6
6
|
/** When true, use Controller/useController instead of register() spread */
|
|
7
7
|
controlled?: boolean;
|
|
8
|
-
/**
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Default props for this component type.
|
|
10
|
+
* Values matching a known field expression string are resolved from the RHF controller.
|
|
11
|
+
* Per-field props override these via shallow merge (field config wins).
|
|
12
|
+
*/
|
|
13
|
+
props?: Record<string, unknown>;
|
|
10
14
|
};
|
|
11
|
-
export type ComponentPreset = 'shadcn' | '
|
|
15
|
+
export type ComponentPreset = 'shadcn' | 'html';
|
|
12
16
|
export type ComponentsConfig<T extends Record<string, unknown> = Record<string, unknown>> = {
|
|
13
17
|
/** Import path for the components module */
|
|
14
18
|
source: string;
|
|
15
|
-
/** Preset that provides base overrides */
|
|
19
|
+
/** Preset that provides base overrides and default field template */
|
|
16
20
|
preset?: ComponentPreset;
|
|
21
|
+
/**
|
|
22
|
+
* Custom field template component path.
|
|
23
|
+
* Controls the composition of label + input + description + helpText + error.
|
|
24
|
+
* Overrides the preset's default template.
|
|
25
|
+
*/
|
|
26
|
+
fieldTemplate?: string;
|
|
17
27
|
/** Per-component overrides, strongly typed to module export keys */
|
|
18
28
|
overrides?: {
|
|
19
29
|
[K in keyof T & string]?: ComponentOverride;
|
|
20
30
|
};
|
|
21
31
|
};
|
|
22
|
-
export type FormPrimitivesConfig<T extends Record<string, unknown> = Record<string, unknown>> = {
|
|
23
|
-
field?: keyof T & string;
|
|
24
|
-
label?: keyof T & string;
|
|
25
|
-
control?: keyof T & string;
|
|
26
|
-
};
|
|
27
32
|
/** Field config with props constrained to a specific component's prop type */
|
|
28
|
-
type TypedFieldConfigForComponent<TComponents extends Record<string, unknown>, K extends keyof TComponents & string> = {
|
|
33
|
+
type TypedFieldConfigForComponent<TComponents extends Record<string, unknown>, K extends keyof TComponents & string> = Omit<FieldConfig, 'component' | 'props'> & {
|
|
29
34
|
component: K;
|
|
30
|
-
order?: number;
|
|
31
|
-
hidden?: boolean;
|
|
32
|
-
gridColumn?: string;
|
|
33
35
|
props?: TComponents[K] extends Record<string, unknown> ? Partial<TComponents[K]> : Record<string, unknown>;
|
|
34
|
-
/** Per-field prop mapping override (merges over ComponentOverride.propMap) */
|
|
35
|
-
propMap?: Record<string, string>;
|
|
36
|
-
/** Group into a named section component */
|
|
37
|
-
section?: string;
|
|
38
36
|
};
|
|
39
37
|
/** Field config with no component specified (untyped props) */
|
|
40
|
-
type UntypedFieldConfig = {
|
|
38
|
+
type UntypedFieldConfig = Omit<FieldConfig, 'component'> & {
|
|
41
39
|
component?: undefined;
|
|
42
|
-
order?: number;
|
|
43
|
-
hidden?: boolean;
|
|
44
|
-
gridColumn?: string;
|
|
45
|
-
props?: Record<string, unknown>;
|
|
46
|
-
/** Per-field prop mapping override (merges over ComponentOverride.propMap) */
|
|
47
|
-
propMap?: Record<string, string>;
|
|
48
|
-
/** Group into a named section component */
|
|
49
|
-
section?: string;
|
|
50
40
|
};
|
|
51
41
|
/**
|
|
52
42
|
* Discriminated union over component keys.
|
|
@@ -57,14 +47,19 @@ type UntypedFieldConfig = {
|
|
|
57
47
|
export type TypedFieldConfig<TComponents extends Record<string, unknown> = Record<string, unknown>> = {
|
|
58
48
|
[K in keyof TComponents & string]: TypedFieldConfigForComponent<TComponents, K>;
|
|
59
49
|
}[keyof TComponents & string] | UntypedFieldConfig;
|
|
50
|
+
export type OptimizationConfig = {
|
|
51
|
+
level?: 1 | 2 | 3;
|
|
52
|
+
};
|
|
60
53
|
export type ConfigDefaults = {
|
|
61
54
|
mode?: 'submit' | 'auto-save';
|
|
62
|
-
ui?: 'shadcn' | '
|
|
55
|
+
ui?: 'shadcn' | 'html';
|
|
63
56
|
out?: string;
|
|
64
57
|
overwrite?: boolean;
|
|
65
58
|
serverAction?: boolean;
|
|
66
59
|
/** Wrap generated form in <FormProvider {...form}> */
|
|
67
60
|
formProvider?: boolean;
|
|
61
|
+
/** Validation optimization configuration */
|
|
62
|
+
optimization?: OptimizationConfig;
|
|
68
63
|
};
|
|
69
64
|
export type ZodTypeConfig<TFieldKeys extends string = string, TComponents extends Record<string, unknown> = Record<string, unknown>> = {
|
|
70
65
|
name?: string;
|
|
@@ -75,7 +70,6 @@ export type ZodTypeConfig<TFieldKeys extends string = string, TComponents extend
|
|
|
75
70
|
};
|
|
76
71
|
export type ZodFormsConfig<TComponents extends Record<string, unknown> = Record<string, unknown>, TSchemas extends Record<string, unknown> = Record<string, unknown>> = {
|
|
77
72
|
components: ComponentsConfig<TComponents>;
|
|
78
|
-
formPrimitives?: FormPrimitivesConfig<TComponents>;
|
|
79
73
|
defaults?: ConfigDefaults;
|
|
80
74
|
types?: string[];
|
|
81
75
|
include?: string[];
|
|
@@ -100,9 +94,9 @@ type NormalizeArrayPath<TPath extends string> = TPath extends `${infer Prefix}.$
|
|
|
100
94
|
type FieldPath<TValues extends Record<string, unknown>> = DotPath<TValues> extends infer TPath ? TPath extends string ? TPath | NormalizeArrayPath<TPath> : never : never;
|
|
101
95
|
/** Extracts dot-notation field paths from a Zod schema's inferred type */
|
|
102
96
|
type SchemaFieldPath<T extends $ZodType> = z.infer<T> extends infer O ? (O extends Record<string, unknown> ? FieldPath<O> : string) : string;
|
|
103
|
-
/** shadcn preset —
|
|
97
|
+
/** shadcn preset — Radix-based components need controlled mode + field expression props */
|
|
104
98
|
export declare const SHADCN_OVERRIDES: Record<string, ComponentOverride>;
|
|
105
|
-
/** Default
|
|
99
|
+
/** Default HTML preset — no controlled components by default */
|
|
106
100
|
export declare const DEFAULT_OVERRIDES: Record<string, ComponentOverride>;
|
|
107
101
|
export declare function defineConfig<TComponents extends Record<string, unknown> = Record<string, unknown>, TSchemas extends Record<string, unknown> = Record<string, unknown>>(config: ZodFormsConfig<TComponents, TSchemas>): ZodFormsConfig<TComponents, TSchemas>;
|
|
108
102
|
export declare function validateConfig(value: unknown, source?: string): ZodFormsConfig<Record<string, unknown>>;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,gGAAgG;AAChG,MAAM,MAAM,iBAAiB,GAAG;IAC9B,2EAA2E;IAC3E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,gGAAgG;AAChG,MAAM,MAAM,iBAAiB,GAAG;IAC9B,2EAA2E;IAC3E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC;AAIF,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhD,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IAC1F,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,SAAS,CAAC,EAAE;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,iBAAiB;KAAE,CAAC;CAC7D,CAAC;AAIF,8EAA8E;AAC9E,KAAK,4BAA4B,CAC/B,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3C,CAAC,SAAS,MAAM,WAAW,GAAG,MAAM,IAClC,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG;IAC7C,SAAS,EAAE,CAAC,CAAC;IACb,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClD,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7B,CAAC;AAEF,+DAA+D;AAC/D,KAAK,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG;IACzD,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,CAC1B,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAEnE;KACG,CAAC,IAAI,MAAM,WAAW,GAAG,MAAM,GAAG,4BAA4B,CAAC,WAAW,EAAE,CAAC,CAAC;CAChF,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,GAC7B,kBAAkB,CAAC;AAIvB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC9B,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sDAAsD;IACtD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,aAAa,CACvB,UAAU,SAAS,MAAM,GAAG,MAAM,EAClC,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACnE;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,cAAc,CACxB,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrE,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAChE;IACF,UAAU,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC1C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE;SACP,CAAC,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,EAAE,aAAa,CAC5C,QAAQ,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EACpE,WAAW,CACZ;KACF,CAAC;CACH,CAAC;AAIF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC/D,mBAAmB,CAAC,CAAC,CAAC,EAAE,GACxB,CAAC,SAAS,MAAM,GACd;KACG,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,SAAS,CAAC,GAC7B,KAAK,GACL,MAAM,SAAS,CAAC,GACd,KAAK,GACL,MAAM,SAAS,CAAC,GACd,KAAK,GACL,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC,GACD,CAAC,CAAC;AAIR,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAEvF,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GACjC,KAAK,GACL,CAAC,SAAS,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,GAChC,GAAG,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,GAC3C;KACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GACzD,IAAI,GACJ,IAAI,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;CACzC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAElC,KAAK,kBAAkB,CAAC,KAAK,SAAS,MAAM,IAC1C,KAAK,SAAS,GAAG,MAAM,MAAM,IAAI,MAAM,IAAI,MAAM,MAAM,EAAE,GACrD,kBAAkB,CAAC,GAAG,MAAM,MAAM,MAAM,EAAE,CAAC,GAC3C,KAAK,SAAS,GAAG,MAAM,MAAM,IAAI,MAAM,EAAE,GACvC,kBAAkB,CAAC,GAAG,MAAM,IAAI,CAAC,GACjC,KAAK,CAAC;AAEd,KAAK,SAAS,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACpD,OAAO,CAAC,OAAO,CAAC,SAAS,MAAM,KAAK,GAChC,KAAK,SAAS,MAAM,GAClB,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,GACjC,KAAK,GACP,KAAK,CAAC;AAEZ,0EAA0E;AAC1E,KAAK,eAAe,CAAC,CAAC,SAAS,QAAQ,IACrC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AA8LpG,2FAA2F;AAC3F,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAa9D,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAM,CAAC;AASvE,wBAAgB,YAAY,CAC1B,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrE,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,MAAM,EAAE,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,CActF;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,MAAM,SAAW,GAChB,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAOzC;AAED,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,EACrD,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,GAAG,SAAS,GAC7D,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CA2B7B;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC9C,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAiBzC"}
|
package/dist/config.js
CHANGED
|
@@ -4,13 +4,14 @@ const nonEmptyStringSchema = z.string().trim().min(1);
|
|
|
4
4
|
const componentOverrideSchema = z
|
|
5
5
|
.object({
|
|
6
6
|
controlled: z.boolean().optional(),
|
|
7
|
-
|
|
7
|
+
props: z.record(z.string(), z.unknown()).optional()
|
|
8
8
|
})
|
|
9
9
|
.loose();
|
|
10
10
|
const componentsConfigSchema = z
|
|
11
11
|
.object({
|
|
12
12
|
source: nonEmptyStringSchema,
|
|
13
|
-
preset: z.enum(['shadcn', '
|
|
13
|
+
preset: z.enum(['shadcn', 'html']).optional(),
|
|
14
|
+
fieldTemplate: nonEmptyStringSchema.optional(),
|
|
14
15
|
overrides: z.record(z.string(), componentOverrideSchema).optional()
|
|
15
16
|
})
|
|
16
17
|
.loose();
|
|
@@ -19,10 +20,10 @@ const fieldConfigSchema = z
|
|
|
19
20
|
component: nonEmptyStringSchema.optional(),
|
|
20
21
|
order: z.number().optional(),
|
|
21
22
|
hidden: z.boolean().optional(),
|
|
22
|
-
|
|
23
|
+
disabled: z.boolean().optional(),
|
|
23
24
|
props: z.record(z.string(), z.unknown()).optional(),
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
section: z.string().optional(),
|
|
26
|
+
helpText: z.string().optional()
|
|
26
27
|
})
|
|
27
28
|
.loose();
|
|
28
29
|
const fieldOverrideSchema = z
|
|
@@ -31,6 +32,12 @@ const fieldOverrideSchema = z
|
|
|
31
32
|
props: z.record(z.string(), z.unknown()).optional()
|
|
32
33
|
})
|
|
33
34
|
.loose();
|
|
35
|
+
const optimizationConfigSchema = z
|
|
36
|
+
.object({
|
|
37
|
+
level: z.union([z.literal(1), z.literal(2), z.literal(3)]).optional()
|
|
38
|
+
})
|
|
39
|
+
.loose()
|
|
40
|
+
.optional();
|
|
34
41
|
const defaultsSchema = z
|
|
35
42
|
.object({
|
|
36
43
|
mode: z.string().optional(),
|
|
@@ -38,7 +45,8 @@ const defaultsSchema = z
|
|
|
38
45
|
out: z.string().optional(),
|
|
39
46
|
overwrite: z.boolean().optional(),
|
|
40
47
|
serverAction: z.boolean().optional(),
|
|
41
|
-
formProvider: z.boolean().optional()
|
|
48
|
+
formProvider: z.boolean().optional(),
|
|
49
|
+
optimization: optimizationConfigSchema
|
|
42
50
|
})
|
|
43
51
|
.loose()
|
|
44
52
|
.optional();
|
|
@@ -58,7 +66,6 @@ const configSchema = z
|
|
|
58
66
|
include: z.array(z.string()).optional(),
|
|
59
67
|
exclude: z.array(z.string()).optional(),
|
|
60
68
|
types: z.array(z.string()).optional(),
|
|
61
|
-
formPrimitives: z.record(z.string(), nonEmptyStringSchema).optional(),
|
|
62
69
|
fields: z.record(z.string(), fieldOverrideSchema.or(fieldConfigSchema)).optional(),
|
|
63
70
|
defaults: defaultsSchema,
|
|
64
71
|
schemas: z.record(z.string(), zodTypeConfigSchema).optional()
|
|
@@ -66,7 +73,7 @@ const configSchema = z
|
|
|
66
73
|
.loose();
|
|
67
74
|
// ─── Error Formatting ─────────────────────────────────────────────────
|
|
68
75
|
function formatValidationError(error, source) {
|
|
69
|
-
const
|
|
76
|
+
const issue = error.issues[0];
|
|
70
77
|
if (!issue) {
|
|
71
78
|
return new Error(`${source} is invalid.`);
|
|
72
79
|
}
|
|
@@ -90,12 +97,6 @@ function formatValidationError(error, source) {
|
|
|
90
97
|
}
|
|
91
98
|
return new Error(`${source}.components.${entry} is invalid.`);
|
|
92
99
|
}
|
|
93
|
-
if (root === 'formPrimitives') {
|
|
94
|
-
if (!entry) {
|
|
95
|
-
return new Error(`${source}.formPrimitives must be an object when provided.`);
|
|
96
|
-
}
|
|
97
|
-
return new Error(`${source}.formPrimitives.${entry} must be a non-empty string when provided.`);
|
|
98
|
-
}
|
|
99
100
|
if (root === 'fields') {
|
|
100
101
|
if (!entry) {
|
|
101
102
|
return new Error(`${source}.fields must be an object when provided.`);
|
|
@@ -152,14 +153,27 @@ function formatValidationError(error, source) {
|
|
|
152
153
|
return new Error(`${source} is invalid: ${issue.message}`);
|
|
153
154
|
}
|
|
154
155
|
// ─── Preset Override Maps ─────────────────────────────────────────────
|
|
155
|
-
/** shadcn preset —
|
|
156
|
-
export const SHADCN_OVERRIDES = {
|
|
157
|
-
|
|
156
|
+
/** shadcn preset — Radix-based components need controlled mode + field expression props */
|
|
157
|
+
export const SHADCN_OVERRIDES = {
|
|
158
|
+
Select: {
|
|
159
|
+
controlled: true,
|
|
160
|
+
props: { onValueChange: 'field.onChange' }
|
|
161
|
+
},
|
|
162
|
+
Checkbox: {
|
|
163
|
+
controlled: true,
|
|
164
|
+
props: { checked: 'field.value', onCheckedChange: 'field.onChange' }
|
|
165
|
+
},
|
|
166
|
+
Switch: {
|
|
167
|
+
controlled: true,
|
|
168
|
+
props: { checked: 'field.value', onCheckedChange: 'field.onChange' }
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
/** Default HTML preset — no controlled components by default */
|
|
158
172
|
export const DEFAULT_OVERRIDES = {};
|
|
159
173
|
// ─── Public Functions ─────────────────────────────────────────────────
|
|
160
174
|
const PRESET_MAP = {
|
|
161
175
|
shadcn: SHADCN_OVERRIDES,
|
|
162
|
-
|
|
176
|
+
html: DEFAULT_OVERRIDES
|
|
163
177
|
};
|
|
164
178
|
export function defineConfig(config) {
|
|
165
179
|
const preset = config.components.preset;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
export type { FormField, FormFieldOption, FormFieldConstraints, FormProcessor, FormProcessorContext, FormMeta, FieldConfig, ProcessParams, WalkOptions, ZodFormRegistry } from './types.js';
|
|
2
|
-
export type { ComponentOverride, ComponentPreset, ComponentsConfig,
|
|
1
|
+
export type { FormField, FormFieldOption, FormFieldConstraints, FormProcessor, FormProcessorContext, FormMeta, FieldConfig, FieldExpression, ProcessParams, WalkOptions, ZodFormRegistry, NativeRules, ValidationStrategy } from './types.js';
|
|
2
|
+
export type { ComponentOverride, ComponentPreset, ComponentsConfig, TypedFieldConfig, ZodFormsConfig, ZodTypeConfig, ConfigDefaults, OptimizationConfig, StripIndexSignature } from './config.js';
|
|
3
|
+
export type { FormOptimizer, FormOptimizerContext, WalkResult, SchemaLiteCollector, SchemaLiteInfo } from './optimizers/index.js';
|
|
4
|
+
export { createOptimizers, builtinOptimizers, createSchemaLiteCollector } from './optimizers/index.js';
|
|
3
5
|
export { defineConfig, validateConfig, resolveFieldConfig, normalizeConfig, SHADCN_OVERRIDES, DEFAULT_OVERRIDES } from './config.js';
|
|
4
6
|
export { inferLabel, joinPath, createBaseField, getEmptyDefault, normalizeFieldKey, collectFieldSections } from './utils.js';
|
|
7
|
+
export { normalizeFormValues } from './normalize.js';
|
|
5
8
|
export { walkSchema } from './walker.js';
|
|
6
9
|
export { builtinProcessors, createProcessors } from './registry.js';
|
|
7
10
|
export { registerDeep, registerFlat } from './register.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACX,aAAa,EACb,WAAW,EACX,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACX,eAAe,EACf,aAAa,EACb,WAAW,EACX,eAAe,EACf,WAAW,EACX,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,UAAU,EACV,mBAAmB,EACnB,cAAc,EACf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,UAAU,EACV,QAAQ,EACR,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
// @zod-to-form/core — Public API
|
|
2
2
|
// All exports are named exports only (no default, no `export *`) for full tree-shakeability.
|
|
3
|
+
export { createOptimizers, builtinOptimizers, createSchemaLiteCollector } from './optimizers/index.js';
|
|
3
4
|
export { defineConfig, validateConfig, resolveFieldConfig, normalizeConfig, SHADCN_OVERRIDES, DEFAULT_OVERRIDES } from './config.js';
|
|
4
5
|
export { inferLabel, joinPath, createBaseField, getEmptyDefault, normalizeFieldKey, collectFieldSections } from './utils.js';
|
|
6
|
+
export { normalizeFormValues } from './normalize.js';
|
|
5
7
|
export { walkSchema } from './walker.js';
|
|
6
8
|
export { builtinProcessors, createProcessors } from './registry.js';
|
|
7
9
|
export { registerDeep, registerFlat } from './register.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,6FAA6F;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,6FAA6F;AAsC7F,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,UAAU,EACV,QAAQ,EACR,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalize raw HTML form values for Zod parsing.
|
|
3
|
+
*
|
|
4
|
+
* HTML inputs produce values that don't match Zod's expectations:
|
|
5
|
+
* - Empty strings "" for unset optional fields (Zod .optional() accepts undefined, not "")
|
|
6
|
+
* - FileList objects for file inputs (Zod expects File or undefined)
|
|
7
|
+
*
|
|
8
|
+
* This function recursively normalizes these mismatches so that
|
|
9
|
+
* schema.safeParse(normalizeFormValues(values)) works correctly.
|
|
10
|
+
*
|
|
11
|
+
* Called unconditionally in the resolver wrapper to ensure consistent
|
|
12
|
+
* behavior across all component libraries. While shadcn components handle
|
|
13
|
+
* most value conversions natively, normalization provides a safety net for
|
|
14
|
+
* edge cases like FileList objects.
|
|
15
|
+
*/
|
|
16
|
+
export declare function normalizeFormValues(value: unknown): unknown;
|
|
17
|
+
//# sourceMappingURL=normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAuB3D"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalize raw HTML form values for Zod parsing.
|
|
3
|
+
*
|
|
4
|
+
* HTML inputs produce values that don't match Zod's expectations:
|
|
5
|
+
* - Empty strings "" for unset optional fields (Zod .optional() accepts undefined, not "")
|
|
6
|
+
* - FileList objects for file inputs (Zod expects File or undefined)
|
|
7
|
+
*
|
|
8
|
+
* This function recursively normalizes these mismatches so that
|
|
9
|
+
* schema.safeParse(normalizeFormValues(values)) works correctly.
|
|
10
|
+
*
|
|
11
|
+
* Called unconditionally in the resolver wrapper to ensure consistent
|
|
12
|
+
* behavior across all component libraries. While shadcn components handle
|
|
13
|
+
* most value conversions natively, normalization provides a safety net for
|
|
14
|
+
* edge cases like FileList objects.
|
|
15
|
+
*/
|
|
16
|
+
export function normalizeFormValues(value) {
|
|
17
|
+
if (isFileListLike(value)) {
|
|
18
|
+
return value.length > 0 ? (value.item(0) ?? value[0]) : undefined;
|
|
19
|
+
}
|
|
20
|
+
if (value === '') {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
if (Array.isArray(value)) {
|
|
24
|
+
return value.map((item) => normalizeFormValues(item));
|
|
25
|
+
}
|
|
26
|
+
if (isPlainObject(value)) {
|
|
27
|
+
const entries = Object.entries(value).map(([key, nested]) => [
|
|
28
|
+
key,
|
|
29
|
+
normalizeFormValues(nested)
|
|
30
|
+
]);
|
|
31
|
+
return Object.fromEntries(entries);
|
|
32
|
+
}
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
function isPlainObject(value) {
|
|
36
|
+
if (!value || typeof value !== 'object') {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
return Object.prototype.toString.call(value) === '[object Object]';
|
|
40
|
+
}
|
|
41
|
+
function isFileListLike(value) {
|
|
42
|
+
if (!value || typeof value !== 'object') {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
const candidate = value;
|
|
46
|
+
return typeof candidate.length === 'number' && typeof candidate.item === 'function';
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,CAAC;IAED,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;YACtF,GAAG;YACH,mBAAmB,CAAC,MAAM,CAAC;SAC5B,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAC;AACrE,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,KAGjB,CAAC;IAEF,OAAO,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC;AACtF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { $ZodType } from 'zod/v4/core';
|
|
2
|
+
import type { NativeRules } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Extract native RHF rules from a Zod schema's constraint bag.
|
|
5
|
+
*
|
|
6
|
+
* Uses _zod.bag exclusively (Constitution Principle I) — the same substrate
|
|
7
|
+
* API as the existing processors (string.ts, number.ts).
|
|
8
|
+
*
|
|
9
|
+
* Returns NativeRules if all constraints can be mapped to native rules,
|
|
10
|
+
* or null if the schema has effects (refine/transform) that prevent
|
|
11
|
+
* native conversion (strict equivalence — FR-017).
|
|
12
|
+
*/
|
|
13
|
+
export declare function extractNativeRules(schema: $ZodType): NativeRules | null;
|
|
14
|
+
//# sourceMappingURL=constraint-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constraint-map.d.ts","sourceRoot":"","sources":["../../src/optimizers/constraint-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,IAAI,CAkFvE"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract native RHF rules from a Zod schema's constraint bag.
|
|
3
|
+
*
|
|
4
|
+
* Uses _zod.bag exclusively (Constitution Principle I) — the same substrate
|
|
5
|
+
* API as the existing processors (string.ts, number.ts).
|
|
6
|
+
*
|
|
7
|
+
* Returns NativeRules if all constraints can be mapped to native rules,
|
|
8
|
+
* or null if the schema has effects (refine/transform) that prevent
|
|
9
|
+
* native conversion (strict equivalence — FR-017).
|
|
10
|
+
*/
|
|
11
|
+
export function extractNativeRules(schema) {
|
|
12
|
+
const bag = schema._zod.bag;
|
|
13
|
+
const def = schema._zod.def;
|
|
14
|
+
const checks = def['checks'];
|
|
15
|
+
// If any check is a refine/transform/custom, the entire chain stays as atomic Zod
|
|
16
|
+
if (checks) {
|
|
17
|
+
for (const check of checks) {
|
|
18
|
+
const checkDef = check._zod?.def ?? check;
|
|
19
|
+
const checkType = checkDef['check'];
|
|
20
|
+
if (checkType === 'custom' || checkType === 'transform' || checkType === undefined) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const rules = {};
|
|
26
|
+
// String constraints: minimum → minLength, maximum → maxLength
|
|
27
|
+
const minimum = bag['minimum'];
|
|
28
|
+
if (typeof minimum === 'number') {
|
|
29
|
+
rules.minLength = {
|
|
30
|
+
value: minimum,
|
|
31
|
+
message: extractMessage(checks, 'min_length', `Minimum ${minimum} characters`)
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
const maximum = bag['maximum'];
|
|
35
|
+
if (typeof maximum === 'number') {
|
|
36
|
+
rules.maxLength = {
|
|
37
|
+
value: maximum,
|
|
38
|
+
message: extractMessage(checks, 'max_length', `Maximum ${maximum} characters`)
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// Number constraints: Zod v4 uses bag['minimum'] for inclusive (min/gte)
|
|
42
|
+
// and bag['exclusiveMinimum'] for exclusive (gt). RHF min/max are always
|
|
43
|
+
// inclusive, so exclusive bounds cannot be mapped — fall back to atomic Zod.
|
|
44
|
+
const schemaType = def['type'] ?? '';
|
|
45
|
+
if (schemaType === 'number' || schemaType === 'bigint') {
|
|
46
|
+
const exclusiveMin = bag['exclusiveMinimum'];
|
|
47
|
+
const exclusiveMax = bag['exclusiveMaximum'];
|
|
48
|
+
// Exclusive bounds → can't map to native RHF rules
|
|
49
|
+
if (typeof exclusiveMin === 'number' || typeof exclusiveMax === 'number') {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
if (typeof minimum === 'number') {
|
|
53
|
+
rules.min = {
|
|
54
|
+
value: minimum,
|
|
55
|
+
message: extractMessage(checks, 'greater_than', `Must be at least ${minimum}`)
|
|
56
|
+
};
|
|
57
|
+
delete rules.minLength; // was string interpretation, replace with number
|
|
58
|
+
}
|
|
59
|
+
if (typeof maximum === 'number') {
|
|
60
|
+
rules.max = {
|
|
61
|
+
value: maximum,
|
|
62
|
+
message: extractMessage(checks, 'less_than', `Must be at most ${maximum}`)
|
|
63
|
+
};
|
|
64
|
+
delete rules.maxLength;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Format-based patterns (email, url, uuid) — extract exact Zod regex from bag.
|
|
68
|
+
// Multiple patterns (e.g. z.string().email().url()) can't be represented as a
|
|
69
|
+
// single RHF pattern rule — fall back to atomic Zod for strict equivalence.
|
|
70
|
+
const patternsSet = bag['patterns'];
|
|
71
|
+
if (patternsSet instanceof Set && patternsSet.size > 1) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
if (patternsSet instanceof Set && patternsSet.size === 1) {
|
|
75
|
+
const firstPattern = [...patternsSet][0];
|
|
76
|
+
if (firstPattern instanceof RegExp) {
|
|
77
|
+
rules.pattern = {
|
|
78
|
+
value: firstPattern,
|
|
79
|
+
message: extractMessage(checks, 'string_format', 'Invalid format')
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return rules;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Extract the error message for a specific check type from the checks array.
|
|
87
|
+
* Falls back to the provided default message.
|
|
88
|
+
*/
|
|
89
|
+
function extractMessage(checks, checkName, fallback) {
|
|
90
|
+
if (!checks)
|
|
91
|
+
return fallback;
|
|
92
|
+
for (const check of checks) {
|
|
93
|
+
const checkDef = check._zod?.def ?? check;
|
|
94
|
+
if (checkDef['check'] === checkName) {
|
|
95
|
+
const error = checkDef['error'];
|
|
96
|
+
if (typeof error === 'function') {
|
|
97
|
+
try {
|
|
98
|
+
const result = error();
|
|
99
|
+
if (typeof result === 'string')
|
|
100
|
+
return result;
|
|
101
|
+
if (result && typeof result === 'object' && 'message' in result) {
|
|
102
|
+
const msg = result.message;
|
|
103
|
+
if (typeof msg === 'string')
|
|
104
|
+
return msg;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
// Fall through to fallback
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (typeof error === 'string')
|
|
112
|
+
return error;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return fallback;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=constraint-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constraint-map.js","sourceRoot":"","sources":["../../src/optimizers/constraint-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type { FormOptimizer, FormOptimizerContext, WalkResult, SchemaLiteCollector, SchemaLiteInfo } from './types.js';
|
|
2
|
+
export { createSchemaLiteCollector } from './schema-lite.js';
|
|
3
|
+
import type { FormOptimizer } from './types.js';
|
|
4
|
+
export declare const builtinOptimizers: Record<string, FormOptimizer[]>;
|
|
5
|
+
/**
|
|
6
|
+
* Create an optimizer registry by merging custom optimizers with builtins.
|
|
7
|
+
* Custom optimizers for a type replace the entire chain for that type.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createOptimizers(custom?: Record<string, FormOptimizer[]>): Record<string, FormOptimizer[]>;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/optimizers/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,UAAU,EACV,mBAAmB,EACnB,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA0BhD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAA4B,CAAC;AAE3F;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAM,GAC3C,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAEjC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export { createSchemaLiteCollector } from './schema-lite.js';
|
|
2
|
+
import { buildL1Optimizers } from './l1-decompose.js';
|
|
3
|
+
import { buildL2Optimizers } from './l2-native-rules.js';
|
|
4
|
+
/**
|
|
5
|
+
* Built-in optimizers, populated by L1/L2 registration.
|
|
6
|
+
* Keyed by def.type, each entry is an ordered chain of optimizers (L1 → L2).
|
|
7
|
+
*/
|
|
8
|
+
function buildBuiltinOptimizers() {
|
|
9
|
+
const l1 = buildL1Optimizers();
|
|
10
|
+
const l2 = buildL2Optimizers();
|
|
11
|
+
const combined = { ...l1 };
|
|
12
|
+
// Append L2 optimizers after L1 for types that have both
|
|
13
|
+
for (const [type, optimizers] of Object.entries(l2)) {
|
|
14
|
+
if (combined[type]) {
|
|
15
|
+
combined[type] = [...combined[type], ...optimizers];
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
combined[type] = optimizers;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return combined;
|
|
22
|
+
}
|
|
23
|
+
export const builtinOptimizers = buildBuiltinOptimizers();
|
|
24
|
+
/**
|
|
25
|
+
* Create an optimizer registry by merging custom optimizers with builtins.
|
|
26
|
+
* Custom optimizers for a type replace the entire chain for that type.
|
|
27
|
+
*/
|
|
28
|
+
export function createOptimizers(custom = {}) {
|
|
29
|
+
return { ...builtinOptimizers, ...custom };
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/optimizers/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAG7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;;GAGG;AACH,SAAS,sBAAsB;IAC7B,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAC/B,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAE/B,MAAM,QAAQ,GAAoC,EAAE,GAAG,EAAE,EAAE,CAAC;IAE5D,yDAAyD;IACzD,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACpD,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAoC,sBAAsB,EAAE,CAAC;AAE3F;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAM,GAAoC,EAAE;IAE5C,OAAO,EAAE,GAAG,iBAAiB,EAAE,GAAG,MAAM,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"l1-decompose.d.ts","sourceRoot":"","sources":["../../src/optimizers/l1-decompose.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA0DhD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAMnE"}
|