@zod-to-form/core 0.6.2 → 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 +21 -27
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +18 -17
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- 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 +9 -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 +157 -17
- 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
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,6 +47,9 @@ 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
55
|
ui?: 'shadcn' | 'html';
|
|
@@ -65,6 +58,8 @@ export type ConfigDefaults = {
|
|
|
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,7 +94,7 @@ 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 — Radix-based components need controlled mode +
|
|
97
|
+
/** shadcn preset — Radix-based components need controlled mode + field expression props */
|
|
104
98
|
export declare const SHADCN_OVERRIDES: Record<string, ComponentOverride>;
|
|
105
99
|
/** Default HTML preset — no controlled components by default */
|
|
106
100
|
export declare const DEFAULT_OVERRIDES: Record<string, ComponentOverride>;
|
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":"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"}
|
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
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,19 +153,19 @@ function formatValidationError(error, source) {
|
|
|
152
153
|
return new Error(`${source} is invalid: ${issue.message}`);
|
|
153
154
|
}
|
|
154
155
|
// ─── Preset Override Maps ─────────────────────────────────────────────
|
|
155
|
-
/** shadcn preset — Radix-based components need controlled mode +
|
|
156
|
+
/** shadcn preset — Radix-based components need controlled mode + field expression props */
|
|
156
157
|
export const SHADCN_OVERRIDES = {
|
|
157
158
|
Select: {
|
|
158
159
|
controlled: true,
|
|
159
|
-
|
|
160
|
+
props: { onValueChange: 'field.onChange' }
|
|
160
161
|
},
|
|
161
162
|
Checkbox: {
|
|
162
163
|
controlled: true,
|
|
163
|
-
|
|
164
|
+
props: { checked: 'field.value', onCheckedChange: 'field.onChange' }
|
|
164
165
|
},
|
|
165
166
|
Switch: {
|
|
166
167
|
controlled: true,
|
|
167
|
-
|
|
168
|
+
props: { checked: 'field.value', onCheckedChange: 'field.onChange' }
|
|
168
169
|
}
|
|
169
170
|
};
|
|
170
171
|
/** Default HTML preset — no controlled components by default */
|
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,5 +1,7 @@
|
|
|
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';
|
|
5
7
|
export { normalizeFormValues } from './normalize.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,5 +1,6 @@
|
|
|
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';
|
|
5
6
|
export { normalizeFormValues } from './normalize.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,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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/** L1: stores per-field zodSchema for decomposed validation. */
|
|
2
|
+
const l1Optimizer = (schema, _ctx, field) => {
|
|
3
|
+
field.zodSchema = schema;
|
|
4
|
+
field.validation = { mode: 'zodSchema' };
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* All Zod def.types that L1 handles. Each gets the same base optimizer
|
|
8
|
+
* that stores the schema and sets zodSchema mode.
|
|
9
|
+
*/
|
|
10
|
+
const L1_TYPES = [
|
|
11
|
+
// Leaf types
|
|
12
|
+
'string',
|
|
13
|
+
'number',
|
|
14
|
+
'bigint',
|
|
15
|
+
'boolean',
|
|
16
|
+
'date',
|
|
17
|
+
'enum',
|
|
18
|
+
'literal',
|
|
19
|
+
'file',
|
|
20
|
+
'template_literal',
|
|
21
|
+
// Container types
|
|
22
|
+
'object',
|
|
23
|
+
'array',
|
|
24
|
+
'tuple',
|
|
25
|
+
'union',
|
|
26
|
+
'intersection',
|
|
27
|
+
'record',
|
|
28
|
+
'map',
|
|
29
|
+
'set',
|
|
30
|
+
// Wrapper types (delegate to inner, but the schema reference is the wrapper)
|
|
31
|
+
'optional',
|
|
32
|
+
'nullable',
|
|
33
|
+
'default',
|
|
34
|
+
'prefault',
|
|
35
|
+
'readonly',
|
|
36
|
+
'pipe',
|
|
37
|
+
'lazy',
|
|
38
|
+
// Fallback types — still get zodSchema mode for safety
|
|
39
|
+
'transform',
|
|
40
|
+
'custom',
|
|
41
|
+
'any',
|
|
42
|
+
'unknown',
|
|
43
|
+
'nan',
|
|
44
|
+
'void',
|
|
45
|
+
'never',
|
|
46
|
+
'null',
|
|
47
|
+
'undefined',
|
|
48
|
+
'symbol',
|
|
49
|
+
'function',
|
|
50
|
+
'promise',
|
|
51
|
+
'catch',
|
|
52
|
+
'success',
|
|
53
|
+
'nonoptional'
|
|
54
|
+
];
|
|
55
|
+
/**
|
|
56
|
+
* Build the L1 optimizer registry: every type gets the same optimizer.
|
|
57
|
+
*/
|
|
58
|
+
export function buildL1Optimizers() {
|
|
59
|
+
const registry = {};
|
|
60
|
+
for (const type of L1_TYPES) {
|
|
61
|
+
registry[type] = [l1Optimizer];
|
|
62
|
+
}
|
|
63
|
+
return registry;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=l1-decompose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"l1-decompose.js","sourceRoot":"","sources":["../../src/optimizers/l1-decompose.ts"],"names":[],"mappings":"AAGA,gEAAgE;AAChE,MAAM,WAAW,GAAkB,CAAC,MAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IACnE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAC3C,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,QAAQ,GAAG;IACf,aAAa;IACb,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;IACN,MAAM;IACN,SAAS;IACT,MAAM;IACN,kBAAkB;IAClB,kBAAkB;IAClB,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,cAAc;IACd,QAAQ;IACR,KAAK;IACL,KAAK;IACL,6EAA6E;IAC7E,UAAU;IACV,UAAU;IACV,SAAS;IACT,UAAU;IACV,UAAU;IACV,MAAM;IACN,MAAM;IACN,uDAAuD;IACvD,WAAW;IACX,QAAQ;IACR,KAAK;IACL,SAAS;IACT,KAAK;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,WAAW;IACX,QAAQ;IACR,UAAU;IACV,SAAS;IACT,OAAO;IACP,SAAS;IACT,aAAa;CACL,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,QAAQ,GAAoC,EAAE,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"l2-native-rules.d.ts","sourceRoot":"","sources":["../../src/optimizers/l2-native-rules.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA+DhD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAMnE"}
|