@zod-to-form/cli 0.2.3 → 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 +234 -0
- package/dist/codegen.d.ts +8 -0
- package/dist/codegen.d.ts.map +1 -1
- package/dist/codegen.js +287 -33
- 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 +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +91 -15
- 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 -0
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +97 -1
- package/dist/loader.js.map +1 -1
- package/dist/templates.d.ts +1 -1
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +24 -8
- package/dist/templates.js.map +1 -1
- package/package.json +6 -5
package/dist/templates.js
CHANGED
|
@@ -1,33 +1,49 @@
|
|
|
1
|
-
export function getFileHeader(schemaImportPath, exportName, hasArrays = false) {
|
|
1
|
+
export function getFileHeader(schemaImportPath, exportName, hasArrays = false, mode = 'submit', componentImportLine) {
|
|
2
2
|
const rhfImports = hasArrays
|
|
3
3
|
? `import { useForm, useFieldArray } from 'react-hook-form';`
|
|
4
4
|
: `import { useForm } from 'react-hook-form';`;
|
|
5
|
+
const reactImports = mode === 'auto-save' ? `import { useEffect } from 'react';` : '';
|
|
5
6
|
return [
|
|
7
|
+
...(reactImports ? [reactImports] : []),
|
|
6
8
|
rhfImports,
|
|
7
9
|
`import { zodResolver } from '@hookform/resolvers/zod';`,
|
|
10
|
+
`import { z } from 'zod';`,
|
|
11
|
+
...(componentImportLine ? [componentImportLine] : []),
|
|
8
12
|
`import { ${exportName} } from '${schemaImportPath}';`,
|
|
9
13
|
``,
|
|
10
|
-
`type
|
|
14
|
+
`type StripIndexSignature<T> = T extends readonly (infer U)[]`,
|
|
15
|
+
` ? StripIndexSignature<U>[]`,
|
|
16
|
+
` : T extends object`,
|
|
17
|
+
` ? { [K in keyof T as string extends K ? never : number extends K ? never : symbol extends K ? never : K]: StripIndexSignature<T[K]> }`,
|
|
18
|
+
` : T;`,
|
|
19
|
+
``,
|
|
20
|
+
`type FormData = StripIndexSignature<z.output<typeof ${exportName}>>;`
|
|
11
21
|
].join('\n');
|
|
12
22
|
}
|
|
23
|
+
function registerPathExpr(path) {
|
|
24
|
+
return path.includes('${') ? `register(\`${path}\`)` : `register('${path}')`;
|
|
25
|
+
}
|
|
13
26
|
function renderInput(field) {
|
|
14
27
|
const inputType = typeof field.props['type'] === 'string' ? field.props['type'] : 'text';
|
|
15
|
-
return `<input id="${field.key}" type="${inputType}" {
|
|
28
|
+
return `<input id="${field.key}" type="${inputType}" {...${registerPathExpr(field.key)}} />`;
|
|
16
29
|
}
|
|
17
30
|
function renderCheckbox(field) {
|
|
18
|
-
return `<input id="${field.key}" type="checkbox" {
|
|
31
|
+
return `<input id="${field.key}" type="checkbox" {...${registerPathExpr(field.key)}} />`;
|
|
19
32
|
}
|
|
20
33
|
function renderDatePicker(field) {
|
|
21
|
-
|
|
34
|
+
const registerExpr = field.key.includes('${')
|
|
35
|
+
? `register(\`${field.key}\`, { valueAsDate: true })`
|
|
36
|
+
: `register('${field.key}', { valueAsDate: true })`;
|
|
37
|
+
return `<input id="${field.key}" type="date" {...${registerExpr}} />`;
|
|
22
38
|
}
|
|
23
39
|
function renderFileInput(field) {
|
|
24
|
-
return `<input id="${field.key}" type="file" {
|
|
40
|
+
return `<input id="${field.key}" type="file" {...${registerPathExpr(field.key)}} />`;
|
|
25
41
|
}
|
|
26
42
|
function renderSelect(field) {
|
|
27
43
|
const options = (field.options ?? [])
|
|
28
44
|
.map((option) => `<option value="${String(option.value)}">${option.label}</option>`)
|
|
29
45
|
.join('');
|
|
30
|
-
return `<select id="${field.key}" {
|
|
46
|
+
return `<select id="${field.key}" {...${registerPathExpr(field.key)}}>${options}</select>`;
|
|
31
47
|
}
|
|
32
48
|
export function renderField(field) {
|
|
33
49
|
switch (field.component) {
|
|
@@ -42,7 +58,7 @@ export function renderField(field) {
|
|
|
42
58
|
case 'RadioGroup':
|
|
43
59
|
return renderSelect(field);
|
|
44
60
|
case 'Textarea':
|
|
45
|
-
return `<textarea id="${field.key}" {
|
|
61
|
+
return `<textarea id="${field.key}" {...${registerPathExpr(field.key)}} />`;
|
|
46
62
|
default:
|
|
47
63
|
return renderInput(field);
|
|
48
64
|
}
|
package/dist/templates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAC3B,gBAAwB,EACxB,UAAkB,EAClB,SAAS,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zod-to-form/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"description": "Build-time code generator for Zod v4 form components",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"homepage": "https://github.com/pradeepmouli/
|
|
6
|
+
"homepage": "https://github.com/pradeepmouli/zod-to-form#readme",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "https://github.com/pradeepmouli/
|
|
9
|
+
"url": "https://github.com/pradeepmouli/zod-to-form.git",
|
|
10
10
|
"directory": "packages/cli"
|
|
11
11
|
},
|
|
12
12
|
"keywords": [
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
],
|
|
20
20
|
"type": "module",
|
|
21
21
|
"bin": {
|
|
22
|
-
"
|
|
22
|
+
"zod-to-form": "./dist/index.js",
|
|
23
|
+
"z2f": "./dist/index.js"
|
|
23
24
|
},
|
|
24
25
|
"exports": {
|
|
25
26
|
".": {
|
|
@@ -36,7 +37,7 @@
|
|
|
36
37
|
"chokidar": "^5.0.0",
|
|
37
38
|
"commander": "^14.0.3",
|
|
38
39
|
"jiti": "^2.6.1",
|
|
39
|
-
"@zod-to-form/core": "0.2.
|
|
40
|
+
"@zod-to-form/core": "0.2.5"
|
|
40
41
|
},
|
|
41
42
|
"devDependencies": {
|
|
42
43
|
"zod": "^4.3.6"
|