@zod-to-form/cli 0.2.4 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +92 -8
- package/dist/codegen.d.ts.map +1 -1
- package/dist/codegen.js +183 -40
- package/dist/codegen.js.map +1 -1
- package/dist/filters.d.ts +4 -0
- package/dist/filters.d.ts.map +1 -0
- package/dist/filters.js +18 -0
- package/dist/filters.js.map +1 -0
- package/dist/index.d.ts +7 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +91 -74
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +17 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +458 -0
- package/dist/init.js.map +1 -0
- package/dist/loader.d.ts +11 -2
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +66 -51
- package/dist/loader.js.map +1 -1
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +20 -7
- package/dist/templates.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -22,12 +22,18 @@ pnpm add -D @zod-to-form/cli zod
|
|
|
22
22
|
## CLI Usage
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
|
-
|
|
25
|
+
zod-to-form generate --config ./z2f.config.ts --schema ./src/schema.ts --export userSchema
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
+
```bash
|
|
29
|
+
zod-to-form init
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Alias: `z2f`.
|
|
33
|
+
|
|
28
34
|
### Command
|
|
29
35
|
|
|
30
|
-
`
|
|
36
|
+
`zod-to-form generate`
|
|
31
37
|
|
|
32
38
|
Required options:
|
|
33
39
|
|
|
@@ -37,27 +43,63 @@ Required options:
|
|
|
37
43
|
Optional options:
|
|
38
44
|
|
|
39
45
|
- `--mode <mode>`: `submit | auto-save` (default `submit`)
|
|
40
|
-
- `--
|
|
46
|
+
- `--config <path>`: path to generate config (`.json` or `.ts`) **required**
|
|
41
47
|
- `--out <path>`: output directory or `.tsx` file path
|
|
42
48
|
- `--name <componentName>`: generated component name override
|
|
43
49
|
- `--ui <preset>`: `shadcn | unstyled` (default `shadcn`)
|
|
44
|
-
- `--force`: overwrite existing output file
|
|
45
50
|
- `--dry-run`: print generated code to stdout without writing files
|
|
46
51
|
- `--server-action`: generate Next.js server action next to form output
|
|
47
52
|
- `--watch`: watch schema file and regenerate on changes
|
|
48
53
|
|
|
54
|
+
Generation selection/overwrite is now config-driven:
|
|
55
|
+
|
|
56
|
+
- `overwrite`: overwrite existing output files
|
|
57
|
+
- `types`: explicit list of schema exports to generate (used when `--export` is omitted)
|
|
58
|
+
- `include`: wildcard include patterns for schema export names
|
|
59
|
+
- `exclude`: wildcard exclude patterns for schema export names
|
|
60
|
+
|
|
61
|
+
When generating with `--config`, component mapping and generation controls come from the same file.
|
|
62
|
+
Default config discovery order (used by runtime helpers / existing workflows) is still:
|
|
63
|
+
|
|
64
|
+
1. `z2f.config.ts`
|
|
65
|
+
2. `component-config.ts`
|
|
66
|
+
3. `z2f.config.js`
|
|
67
|
+
4. `component-config.js`
|
|
68
|
+
5. `z2f.config.json`
|
|
69
|
+
6. `component-config.json`
|
|
70
|
+
|
|
71
|
+
### Command
|
|
72
|
+
|
|
73
|
+
`zod-to-form init`
|
|
74
|
+
|
|
75
|
+
Creates `z2f.config.ts` using sensible defaults and introspection of shadcn `components.json` when available.
|
|
76
|
+
|
|
77
|
+
Optional options:
|
|
78
|
+
|
|
79
|
+
- `--out <path>`: output file or directory (default `z2f.config.ts`)
|
|
80
|
+
- `--components <modulePath>`: module path assigned to `components` in generated config (overrides inference)
|
|
81
|
+
- `--force`: overwrite existing config file
|
|
82
|
+
- `--dry-run`: print generated config and skip file writes
|
|
83
|
+
- `--verbose`: print detailed diagnostics for each step
|
|
84
|
+
|
|
85
|
+
Output behavior:
|
|
86
|
+
|
|
87
|
+
- default: concise progress + final summary
|
|
88
|
+
- `--verbose`: adds detailed diagnostics (detected config source/aliases)
|
|
89
|
+
|
|
49
90
|
## Examples
|
|
50
91
|
|
|
51
92
|
Generate to default output (`<DerivedName>Form.tsx`):
|
|
52
93
|
|
|
53
94
|
```bash
|
|
54
|
-
|
|
95
|
+
zod-to-form generate --schema ./src/user.schema.ts --export userSchema
|
|
55
96
|
```
|
|
56
97
|
|
|
57
98
|
Generate to specific directory with custom component name:
|
|
58
99
|
|
|
59
100
|
```bash
|
|
60
|
-
|
|
101
|
+
zod-to-form generate \
|
|
102
|
+
--config ./z2f.config.ts \
|
|
61
103
|
--schema ./src/user.schema.ts \
|
|
62
104
|
--export userSchema \
|
|
63
105
|
--out ./src/forms \
|
|
@@ -67,7 +109,8 @@ zodform generate \
|
|
|
67
109
|
Generate in auto-save mode with server action:
|
|
68
110
|
|
|
69
111
|
```bash
|
|
70
|
-
|
|
112
|
+
zod-to-form generate \
|
|
113
|
+
--config ./z2f.config.ts \
|
|
71
114
|
--schema ./src/user.schema.ts \
|
|
72
115
|
--export userSchema \
|
|
73
116
|
--mode auto-save \
|
|
@@ -77,7 +120,19 @@ zodform generate \
|
|
|
77
120
|
Dry run to inspect generated output:
|
|
78
121
|
|
|
79
122
|
```bash
|
|
80
|
-
|
|
123
|
+
zod-to-form generate --config ./z2f.config.ts --schema ./src/user.schema.ts --export userSchema --dry-run
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Initialize config with verbose diagnostics:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
zod-to-form init --verbose
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Initialize config with explicit components module path:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
zod-to-form init --components ../../src/components/zod-form-components
|
|
81
136
|
```
|
|
82
137
|
|
|
83
138
|
## Type-Safe Component Config
|
|
@@ -103,6 +158,15 @@ type Components = {
|
|
|
103
158
|
|
|
104
159
|
export default defineComponentConfig<Components, Values>({
|
|
105
160
|
components: '@/components/form-components',
|
|
161
|
+
overwrite: true,
|
|
162
|
+
types: ['userSchema'],
|
|
163
|
+
include: ['*Schema'],
|
|
164
|
+
exclude: ['Internal*'],
|
|
165
|
+
formPrimitives: {
|
|
166
|
+
field: 'Field',
|
|
167
|
+
label: 'FieldLabel',
|
|
168
|
+
control: 'FieldControl'
|
|
169
|
+
},
|
|
106
170
|
fieldTypes: {
|
|
107
171
|
Input: { component: 'TextInput' },
|
|
108
172
|
textarea: { component: 'TextareaInput' }
|
|
@@ -114,6 +178,26 @@ export default defineComponentConfig<Components, Values>({
|
|
|
114
178
|
});
|
|
115
179
|
```
|
|
116
180
|
|
|
181
|
+
`formPrimitives` is optional. When provided, generated fields use those wrappers instead of raw `div`/`label` markup.
|
|
182
|
+
|
|
183
|
+
Common examples:
|
|
184
|
+
|
|
185
|
+
```ts
|
|
186
|
+
formPrimitives: {
|
|
187
|
+
field: 'Field',
|
|
188
|
+
label: 'FieldLabel',
|
|
189
|
+
control: 'FieldControl'
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
```ts
|
|
194
|
+
formPrimitives: {
|
|
195
|
+
field: 'FormField',
|
|
196
|
+
label: 'FormLabel',
|
|
197
|
+
control: 'FormControl'
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
117
201
|
### `validateComponentConfig(...)`
|
|
118
202
|
|
|
119
203
|
Use at runtime when loading external config objects.
|
package/dist/codegen.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAEb,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAGpB,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC7B,eAAe,CAAC,EAAE,wBAAwB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpE,EAAE,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAyJF,wBAAgB,mBAAmB,CAAC,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7E,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,eAAe,EAAE,wBAAwB,CAAC,WAAW,CAAC,GAAG,SAAS,GACjE;IACD,KAAK,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,MAAM,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAC;CAC1C,CAuBA;AAkOD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,SAAS,EAAE,EACnB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC,CA6FjB"}
|
package/dist/codegen.js
CHANGED
|
@@ -24,11 +24,12 @@ function renderOverrideProps(props) {
|
|
|
24
24
|
function getMappedFieldComponent(field, componentConfig) {
|
|
25
25
|
const mapping = resolveFieldMapping(field.key, field.component, componentConfig);
|
|
26
26
|
if (!mapping.entry) {
|
|
27
|
-
return {};
|
|
27
|
+
return { source: mapping.source };
|
|
28
28
|
}
|
|
29
29
|
return {
|
|
30
30
|
componentName: mapping.entry.component,
|
|
31
|
-
override: mapping.override
|
|
31
|
+
override: mapping.override,
|
|
32
|
+
source: mapping.source
|
|
32
33
|
};
|
|
33
34
|
}
|
|
34
35
|
function collectMappedComponentNames(fields, componentConfig, out = new Set()) {
|
|
@@ -46,14 +47,79 @@ function collectMappedComponentNames(fields, componentConfig, out = new Set()) {
|
|
|
46
47
|
}
|
|
47
48
|
return out;
|
|
48
49
|
}
|
|
50
|
+
function collectFormPrimitiveNames(primitives) {
|
|
51
|
+
const names = new Set();
|
|
52
|
+
if (!primitives) {
|
|
53
|
+
return names;
|
|
54
|
+
}
|
|
55
|
+
if (primitives.field) {
|
|
56
|
+
names.add(primitives.field);
|
|
57
|
+
}
|
|
58
|
+
if (primitives.label) {
|
|
59
|
+
names.add(primitives.label);
|
|
60
|
+
}
|
|
61
|
+
if (primitives.control) {
|
|
62
|
+
names.add(primitives.control);
|
|
63
|
+
}
|
|
64
|
+
return names;
|
|
65
|
+
}
|
|
66
|
+
function renderFieldContainer(field, content, indent, primitives) {
|
|
67
|
+
const styleAttr = field.gridColumn ? ` style={{ gridColumn: '${field.gridColumn}' }}` : '';
|
|
68
|
+
const fieldTag = primitives?.field;
|
|
69
|
+
const labelTag = primitives?.label;
|
|
70
|
+
const controlTag = primitives?.control;
|
|
71
|
+
if (!fieldTag && !labelTag && !controlTag) {
|
|
72
|
+
return [
|
|
73
|
+
`${indent}<div${styleAttr}>`,
|
|
74
|
+
`${indent} <label htmlFor="${field.key}">${field.label}</label>`,
|
|
75
|
+
`${indent} ${content}`,
|
|
76
|
+
`${indent}</div>`
|
|
77
|
+
].join('\n');
|
|
78
|
+
}
|
|
79
|
+
const openField = fieldTag ? `<${fieldTag}${styleAttr}>` : `<div${styleAttr}>`;
|
|
80
|
+
const closeField = fieldTag ? `</${fieldTag}>` : `</div>`;
|
|
81
|
+
const openLabel = labelTag
|
|
82
|
+
? `<${labelTag} htmlFor="${field.key}">`
|
|
83
|
+
: `<label htmlFor="${field.key}">`;
|
|
84
|
+
const closeLabel = labelTag ? `</${labelTag}>` : `</label>`;
|
|
85
|
+
if (!controlTag) {
|
|
86
|
+
return [
|
|
87
|
+
`${indent}${openField}`,
|
|
88
|
+
`${indent} ${openLabel}${field.label}${closeLabel}`,
|
|
89
|
+
`${indent} ${content}`,
|
|
90
|
+
`${indent}${closeField}`
|
|
91
|
+
].join('\n');
|
|
92
|
+
}
|
|
93
|
+
return [
|
|
94
|
+
`${indent}${openField}`,
|
|
95
|
+
`${indent} ${openLabel}${field.label}${closeLabel}`,
|
|
96
|
+
`${indent} <${controlTag}>`,
|
|
97
|
+
`${indent} ${content}`,
|
|
98
|
+
`${indent} </${controlTag}>`,
|
|
99
|
+
`${indent}${closeField}`
|
|
100
|
+
].join('\n');
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Normalise a concrete field key (e.g. `attributes.0.typeCall.type` or
|
|
104
|
+
* `attributes.${index}.typeCall.type`) to the bracket notation used in
|
|
105
|
+
* the user-facing `fields` config (e.g. `attributes[].typeCall.type`).
|
|
106
|
+
*/
|
|
107
|
+
function normalizeFieldKey(key) {
|
|
108
|
+
// Replace `.0.` or `.${index}.` segments with `[].`
|
|
109
|
+
let result = key.replace(/\.(?:0|\$\{index\})\./g, '[].');
|
|
110
|
+
// Replace trailing `.0` or `.${index}`
|
|
111
|
+
result = result.replace(/\.(?:0|\$\{index\})$/, '[]');
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
49
114
|
export function resolveFieldMapping(fieldKey, fieldType, componentConfig) {
|
|
50
115
|
if (!componentConfig) {
|
|
51
116
|
return { source: 'none' };
|
|
52
117
|
}
|
|
53
|
-
|
|
118
|
+
// Try exact match first, then normalised bracket-notation match
|
|
119
|
+
const override = componentConfig.fields?.[fieldKey] ?? componentConfig.fields?.[normalizeFieldKey(fieldKey)];
|
|
54
120
|
if (override) {
|
|
55
121
|
return {
|
|
56
|
-
entry: componentConfig.fieldTypes[override.fieldType],
|
|
122
|
+
entry: override.fieldType ? componentConfig.fieldTypes[override.fieldType] : undefined,
|
|
57
123
|
override,
|
|
58
124
|
source: 'fields'
|
|
59
125
|
};
|
|
@@ -70,10 +136,11 @@ function getSchemaImportPath(config) {
|
|
|
70
136
|
const relative = path
|
|
71
137
|
.relative(path.dirname(config.outputPath), config.schemaPath)
|
|
72
138
|
.replace(/\\/g, '/');
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
139
|
+
const withDot = relative.startsWith('.') ? relative : `./${relative}`;
|
|
140
|
+
return withDot
|
|
141
|
+
.replace(/\.mts$/i, '.mjs')
|
|
142
|
+
.replace(/\.cts$/i, '.cjs')
|
|
143
|
+
.replace(/\.tsx?$/i, '.js');
|
|
77
144
|
}
|
|
78
145
|
/** Convert a field key to a safe camelCase variable prefix (e.g. 'address.street' → 'addressStreet') */
|
|
79
146
|
function toVarName(key) {
|
|
@@ -83,7 +150,7 @@ function toVarName(key) {
|
|
|
83
150
|
function collectArrayFields(fields) {
|
|
84
151
|
const result = [];
|
|
85
152
|
for (const field of fields) {
|
|
86
|
-
if (field.component === 'ArrayField') {
|
|
153
|
+
if (field.component === 'ArrayField' && !field.key.includes('.0.')) {
|
|
87
154
|
result.push(field);
|
|
88
155
|
}
|
|
89
156
|
if (field.component === 'Fieldset' && field.children) {
|
|
@@ -92,9 +159,74 @@ function collectArrayFields(fields) {
|
|
|
92
159
|
}
|
|
93
160
|
return result;
|
|
94
161
|
}
|
|
95
|
-
function
|
|
162
|
+
function replaceArrayIndexToken(key, arrayKey) {
|
|
163
|
+
const prefix = `${arrayKey}.0`;
|
|
164
|
+
if (key === prefix) {
|
|
165
|
+
return `${arrayKey}.${'${index}'}`;
|
|
166
|
+
}
|
|
167
|
+
if (key.startsWith(`${prefix}.`)) {
|
|
168
|
+
return `${arrayKey}.${'${index}'}.${key.slice(prefix.length + 1)}`;
|
|
169
|
+
}
|
|
170
|
+
return key;
|
|
171
|
+
}
|
|
172
|
+
function cloneFieldWithArrayIndex(field, arrayKey) {
|
|
173
|
+
return {
|
|
174
|
+
...field,
|
|
175
|
+
key: replaceArrayIndexToken(field.key, arrayKey),
|
|
176
|
+
children: field.children?.map((child) => cloneFieldWithArrayIndex(child, arrayKey)),
|
|
177
|
+
arrayItem: field.arrayItem ? cloneFieldWithArrayIndex(field.arrayItem, arrayKey) : undefined
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
function getObjectPropertyName(path) {
|
|
181
|
+
const lastSegment = path.split('.').at(-1) ?? path;
|
|
182
|
+
return JSON.stringify(lastSegment);
|
|
183
|
+
}
|
|
184
|
+
function getDefaultArrayItemExpression(field) {
|
|
185
|
+
if (!field) {
|
|
186
|
+
return `''`;
|
|
187
|
+
}
|
|
188
|
+
if (field.defaultValue !== undefined) {
|
|
189
|
+
return JSON.stringify(field.defaultValue);
|
|
190
|
+
}
|
|
191
|
+
if (field.options && field.options.length > 0) {
|
|
192
|
+
return JSON.stringify(field.options[0].value);
|
|
193
|
+
}
|
|
194
|
+
if (field.component === 'Checkbox' || field.component === 'Switch') {
|
|
195
|
+
return 'false';
|
|
196
|
+
}
|
|
197
|
+
if (field.component === 'Input') {
|
|
198
|
+
const inputType = typeof field.props['type'] === 'string' ? field.props['type'] : 'text';
|
|
199
|
+
if (inputType === 'number') {
|
|
200
|
+
return '0';
|
|
201
|
+
}
|
|
202
|
+
if (inputType === 'checkbox') {
|
|
203
|
+
return 'false';
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
if (field.component === 'Fieldset') {
|
|
207
|
+
const children = field.children ?? [];
|
|
208
|
+
if (children.length === 0) {
|
|
209
|
+
return '{}';
|
|
210
|
+
}
|
|
211
|
+
const entries = children
|
|
212
|
+
.map((child) => `${getObjectPropertyName(child.key)}: ${getDefaultArrayItemExpression(child)}`)
|
|
213
|
+
.join(', ');
|
|
214
|
+
return `{ ${entries} }`;
|
|
215
|
+
}
|
|
216
|
+
if (field.component === 'ArrayField') {
|
|
217
|
+
return '[]';
|
|
218
|
+
}
|
|
219
|
+
if (field.zodType === 'number' || field.zodType === 'bigint') {
|
|
220
|
+
return '0';
|
|
221
|
+
}
|
|
222
|
+
if (field.zodType === 'boolean') {
|
|
223
|
+
return 'false';
|
|
224
|
+
}
|
|
225
|
+
return `''`;
|
|
226
|
+
}
|
|
227
|
+
function renderNestedBlock(field, componentConfig, primitives, indent) {
|
|
96
228
|
const children = (field.children ?? [])
|
|
97
|
-
.map((child) => renderFieldBlockWithConfig(child, componentConfig, `${indent} `))
|
|
229
|
+
.map((child) => renderFieldBlockWithConfig(child, componentConfig, primitives, `${indent} `))
|
|
98
230
|
.join('\n');
|
|
99
231
|
return [
|
|
100
232
|
`${indent}<div>`,
|
|
@@ -106,32 +238,43 @@ function renderNestedBlock(field, componentConfig, indent) {
|
|
|
106
238
|
`${indent}</div>`
|
|
107
239
|
].join('\n');
|
|
108
240
|
}
|
|
109
|
-
function renderArrayBlock(field, componentConfig, indent) {
|
|
241
|
+
function renderArrayBlock(field, componentConfig, primitives, indent) {
|
|
242
|
+
if (field.key.includes('${')) {
|
|
243
|
+
return [
|
|
244
|
+
`${indent}<div>`,
|
|
245
|
+
`${indent} <label>${field.label}</label>`,
|
|
246
|
+
`${indent} <p>Nested array editing is not auto-generated for dynamic paths. Use a custom renderer for ${field.key}.</p>`,
|
|
247
|
+
`${indent}</div>`
|
|
248
|
+
].join('\n');
|
|
249
|
+
}
|
|
110
250
|
const varName = toVarName(field.key);
|
|
111
251
|
const itemField = field.arrayItem;
|
|
112
|
-
const
|
|
113
|
-
const
|
|
252
|
+
const indexedItemField = itemField ? cloneFieldWithArrayIndex(itemField, field.key) : undefined;
|
|
253
|
+
const mappedItem = indexedItemField
|
|
254
|
+
? getMappedFieldComponent(indexedItemField, componentConfig)
|
|
255
|
+
: { source: 'none' };
|
|
256
|
+
const itemJsx = indexedItemField
|
|
114
257
|
? mappedItem.componentName
|
|
115
|
-
? `<${mappedItem.componentName} {...register(
|
|
116
|
-
:
|
|
117
|
-
:
|
|
258
|
+
? `<${mappedItem.componentName} {...register(\`${indexedItemField.key}\`)}${renderOverrideProps(mappedItem.override?.props)} />`
|
|
259
|
+
: renderFieldBlockWithConfig(indexedItemField, componentConfig, primitives, `${indent} `)
|
|
260
|
+
: `${indent} <input {...register(\`${field.key}.\${index}\`)} />`;
|
|
118
261
|
return [
|
|
119
262
|
`${indent}<div>`,
|
|
120
263
|
`${indent} <label>${field.label}</label>`,
|
|
121
264
|
`${indent} {${varName}Fields.map((item, index) => (`,
|
|
122
265
|
`${indent} <div key={item.id}>`,
|
|
123
|
-
|
|
266
|
+
itemJsx,
|
|
124
267
|
`${indent} <button type="button" onClick={() => remove${capitalize(varName)}(index)}>Remove</button>`,
|
|
125
268
|
`${indent} </div>`,
|
|
126
269
|
`${indent} ))}`,
|
|
127
|
-
`${indent} <button type="button" onClick={() => append${capitalize(varName)}(
|
|
270
|
+
`${indent} <button type="button" onClick={() => append${capitalize(varName)}(${getDefaultArrayItemExpression(itemField)})}>Add</button>`,
|
|
128
271
|
`${indent}</div>`
|
|
129
272
|
].join('\n');
|
|
130
273
|
}
|
|
131
274
|
function capitalize(s) {
|
|
132
275
|
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
133
276
|
}
|
|
134
|
-
function renderFieldBlockWithConfig(field, componentConfig, indent = ' ') {
|
|
277
|
+
function renderFieldBlockWithConfig(field, componentConfig, primitives, indent = ' ') {
|
|
135
278
|
const mapping = getMappedFieldComponent(field, componentConfig);
|
|
136
279
|
if (field.hasCustomRender) {
|
|
137
280
|
const styleAttr = field.gridColumn ? ` style={{ gridColumn: '${field.gridColumn}' }}` : '';
|
|
@@ -142,47 +285,47 @@ function renderFieldBlockWithConfig(field, componentConfig, indent = ' ') {
|
|
|
142
285
|
`${indent}</div>`
|
|
143
286
|
].join('\n');
|
|
144
287
|
}
|
|
288
|
+
// If a fields override maps this nested/array field to a custom component,
|
|
289
|
+
// render that component instead of expanding children.
|
|
290
|
+
if (mapping.source === 'fields' && mapping.componentName) {
|
|
291
|
+
const overrideProps = renderOverrideProps(mapping.override?.props);
|
|
292
|
+
const regExpr = field.key.includes('${') ? `register(\`${field.key}\`)` : `register('${field.key}')`;
|
|
293
|
+
const content = `<${mapping.componentName} id="${field.key}" {...${regExpr}}${overrideProps} />`;
|
|
294
|
+
return renderFieldContainer(field, content, indent, primitives);
|
|
295
|
+
}
|
|
145
296
|
if (field.component === 'Fieldset') {
|
|
146
|
-
return renderNestedBlock(field, componentConfig, indent);
|
|
297
|
+
return renderNestedBlock(field, componentConfig, primitives, indent);
|
|
147
298
|
}
|
|
148
299
|
if (field.component === 'ArrayField') {
|
|
149
|
-
return renderArrayBlock(field, componentConfig, indent);
|
|
300
|
+
return renderArrayBlock(field, componentConfig, primitives, indent);
|
|
150
301
|
}
|
|
151
302
|
if (mapping.componentName) {
|
|
152
|
-
const styleAttr = field.gridColumn ? ` style={{ gridColumn: '${field.gridColumn}' }}` : '';
|
|
153
303
|
const overrideProps = renderOverrideProps(mapping.override?.props);
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
`${indent} <label htmlFor="${field.key}">${field.label}</label>`,
|
|
157
|
-
`${indent} <${mapping.componentName} id="${field.key}" {...register('${field.key}')}${overrideProps} />`,
|
|
158
|
-
`${indent}</div>`
|
|
159
|
-
].join('\n');
|
|
304
|
+
const content = `<${mapping.componentName} id="${field.key}" {...${field.key.includes('${') ? `register(\`${field.key}\`)` : `register('${field.key}')`}}${overrideProps} />`;
|
|
305
|
+
return renderFieldContainer(field, content, indent, primitives);
|
|
160
306
|
}
|
|
161
|
-
|
|
162
|
-
return [
|
|
163
|
-
`${indent}<div${styleAttr}>`,
|
|
164
|
-
`${indent} <label htmlFor="${field.key}">${field.label}</label>`,
|
|
165
|
-
`${indent} ${renderField(field)}`,
|
|
166
|
-
`${indent}</div>`
|
|
167
|
-
].join('\n');
|
|
307
|
+
return renderFieldContainer(field, renderField(field), indent, primitives);
|
|
168
308
|
}
|
|
169
309
|
export async function generateFormComponent(fields, config) {
|
|
170
310
|
const schemaImportPath = getSchemaImportPath(config);
|
|
171
311
|
const arrayFields = collectArrayFields(fields);
|
|
172
312
|
const hasArrays = arrayFields.length > 0;
|
|
313
|
+
const formPrimitives = config.componentConfig?.formPrimitives;
|
|
173
314
|
const mappedComponents = collectMappedComponentNames(fields, config.componentConfig);
|
|
174
|
-
const
|
|
175
|
-
|
|
315
|
+
const primitiveComponents = collectFormPrimitiveNames(formPrimitives);
|
|
316
|
+
const importNames = new Set([...mappedComponents, ...primitiveComponents]);
|
|
317
|
+
const componentImportLine = config.componentConfig && importNames.size > 0
|
|
318
|
+
? `import { ${Array.from(importNames).sort().join(', ')} } from '${config.componentConfig.components}';`
|
|
176
319
|
: undefined;
|
|
177
320
|
const header = getFileHeader(schemaImportPath, config.exportName, hasArrays, config.mode, componentImportLine);
|
|
178
321
|
const body = fields
|
|
179
|
-
.map((field) => renderFieldBlockWithConfig(field, config.componentConfig, ' '))
|
|
322
|
+
.map((field) => renderFieldBlockWithConfig(field, config.componentConfig, formPrimitives, ' '))
|
|
180
323
|
.join('\n');
|
|
181
324
|
// useFieldArray hook declarations
|
|
182
325
|
const arrayHooks = arrayFields
|
|
183
326
|
.map((f) => {
|
|
184
327
|
const varName = toVarName(f.key);
|
|
185
|
-
return ` const { fields: ${varName}Fields, append: append${capitalize(varName)}, remove: remove${capitalize(varName)} } = useFieldArray({ control, name: '${f.key}' });`;
|
|
328
|
+
return ` const { fields: ${varName}Fields, append: append${capitalize(varName)}, remove: remove${capitalize(varName)} } = useFieldArray<FormData, '${f.key}'>({ control, name: '${f.key}' });`;
|
|
186
329
|
})
|
|
187
330
|
.join('\n');
|
|
188
331
|
const useFormDestructure = config.mode === 'auto-save'
|
package/dist/codegen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function wildcardPatternToRegExp(pattern: string): RegExp;
|
|
2
|
+
export declare function matchesAnyPattern(value: string, patterns: string[] | undefined): boolean;
|
|
3
|
+
export declare function applyExportFilters(exports: string[], include: string[] | undefined, exclude: string[] | undefined): string[];
|
|
4
|
+
//# sourceMappingURL=filters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../src/filters.ts"],"names":[],"mappings":"AAAA,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,OAAO,CAMxF;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAC7B,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAC5B,MAAM,EAAE,CAOV"}
|
package/dist/filters.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function wildcardPatternToRegExp(pattern) {
|
|
2
|
+
const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '.*');
|
|
3
|
+
return new RegExp(`^${escaped}$`);
|
|
4
|
+
}
|
|
5
|
+
export function matchesAnyPattern(value, patterns) {
|
|
6
|
+
if (!patterns || patterns.length === 0) {
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
return patterns.some((pattern) => wildcardPatternToRegExp(pattern).test(value));
|
|
10
|
+
}
|
|
11
|
+
export function applyExportFilters(exports, include, exclude) {
|
|
12
|
+
const included = exports.filter((name) => matchesAnyPattern(name, include));
|
|
13
|
+
if (!exclude || exclude.length === 0) {
|
|
14
|
+
return included;
|
|
15
|
+
}
|
|
16
|
+
return included.filter((name) => !matchesAnyPattern(name, exclude));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../src/filters.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,uBAAuB,CAAC,OAAe,EAAU;IAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnF,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;AAAA,CACnC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,QAA8B,EAAW;IACxF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAAA,CACjF;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAiB,EACjB,OAA6B,EAC7B,OAA6B,EACnB;IACV,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAAA,CACrE"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,36 +3,22 @@
|
|
|
3
3
|
* @zod-to-form/cli — Build-time code generator for Zod v4 forms
|
|
4
4
|
*/
|
|
5
5
|
import { Command } from 'commander';
|
|
6
|
-
import type
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
render?: () => Promise<unknown>;
|
|
10
|
-
};
|
|
11
|
-
type NormalizeArrayPath<TPath extends string> = TPath extends `${infer Prefix}[${number}]${infer Suffix}` ? NormalizeArrayPath<`${Prefix}[]${Suffix}`> : TPath extends `${infer Prefix}.${number}.${infer Suffix}` ? NormalizeArrayPath<`${Prefix}[].${Suffix}`> : TPath extends `${infer Prefix}.${number}` ? NormalizeArrayPath<`${Prefix}[]`> : TPath;
|
|
12
|
-
export type FieldPath<TValues extends Record<string, unknown>> = TypeFestPaths<TValues> extends infer TPath ? TPath extends string ? TPath | NormalizeArrayPath<TPath> : never : never;
|
|
13
|
-
export type FieldOverride = {
|
|
14
|
-
fieldType: string;
|
|
15
|
-
props?: Record<string, unknown>;
|
|
16
|
-
};
|
|
17
|
-
export type ZodToFormComponentConfig<T extends Record<string, unknown> = Record<string, unknown>, TFieldPath extends string = string> = {
|
|
18
|
-
components: string;
|
|
19
|
-
fieldTypes: Record<string, ComponentEntry<T>>;
|
|
20
|
-
fields?: Partial<Record<TFieldPath, FieldOverride>>;
|
|
21
|
-
};
|
|
22
|
-
export declare function defineComponentConfig<TComponents extends Record<string, unknown>, TValues extends Record<string, unknown>>(config: ZodToFormComponentConfig<TComponents, FieldPath<TValues>>): ZodToFormComponentConfig<TComponents, FieldPath<TValues>>;
|
|
23
|
-
export declare function validateComponentConfig(value: unknown, source?: string): ZodToFormComponentConfig<Record<string, unknown>>;
|
|
6
|
+
import { defineConfig, validateConfig, defineComponentConfig, validateComponentConfig, type ComponentEntry, type FieldConfig, type FieldOverride, type FormPrimitivesConfig, type ZodFormsConfig, type ZodToFormComponentConfig } from '@zod-to-form/core';
|
|
7
|
+
export { defineConfig, validateConfig, defineComponentConfig, validateComponentConfig };
|
|
8
|
+
export type { ComponentEntry, FieldConfig, FormPrimitivesConfig, ZodFormsConfig, FieldOverride, ZodToFormComponentConfig };
|
|
24
9
|
type GenerateOptions = {
|
|
10
|
+
config: string;
|
|
25
11
|
schema: string;
|
|
26
|
-
export
|
|
12
|
+
export?: string;
|
|
27
13
|
mode?: 'submit' | 'auto-save';
|
|
28
|
-
componentConfig?: string;
|
|
29
14
|
out?: string;
|
|
30
15
|
name?: string;
|
|
31
16
|
ui?: 'shadcn' | 'unstyled';
|
|
32
|
-
force?: boolean;
|
|
33
17
|
dryRun?: boolean;
|
|
34
18
|
serverAction?: boolean;
|
|
35
19
|
watch?: boolean;
|
|
20
|
+
/** Pre-loaded config to avoid redundant file loads */
|
|
21
|
+
_loadedConfig?: ZodFormsConfig<Record<string, unknown>>;
|
|
36
22
|
};
|
|
37
23
|
export declare function runGenerate(options: GenerateOptions): Promise<{
|
|
38
24
|
outputPath: string;
|
|
@@ -42,5 +28,4 @@ export declare function runGenerate(options: GenerateOptions): Promise<{
|
|
|
42
28
|
actionCode?: string;
|
|
43
29
|
}>;
|
|
44
30
|
export declare function createProgram(): Command;
|
|
45
|
-
export {};
|
|
46
31
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;GAEG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;GAEG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,cAAc,EAGd,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAE9B,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EACL,YAAY,EACZ,cAAc,EAEd,qBAAqB,EACrB,uBAAuB,EACxB,CAAC;AAEF,YAAY,EACV,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,cAAc,EAEd,aAAa,EACb,wBAAwB,EACzB,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sDAAsD;IACtD,aAAa,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACzD,CAAC;AA0CF,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAmED;AAED,wBAAgB,aAAa,IAAI,OAAO,CAkGvC"}
|