zod-codegen 1.6.2 β 1.7.0
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/.github/workflows/ci.yml +50 -48
- package/.github/workflows/release.yml +13 -3
- package/.husky/commit-msg +1 -1
- package/.husky/pre-commit +1 -1
- package/.lintstagedrc.json +5 -1
- package/.nvmrc +1 -1
- package/.prettierrc.json +12 -5
- package/CHANGELOG.md +15 -0
- package/CONTRIBUTING.md +12 -12
- package/EXAMPLES.md +135 -57
- package/PERFORMANCE.md +4 -4
- package/README.md +87 -64
- package/SECURITY.md +1 -1
- package/dist/src/cli.js +11 -18
- package/dist/src/generator.d.ts +2 -2
- package/dist/src/generator.d.ts.map +1 -1
- package/dist/src/generator.js +5 -3
- package/dist/src/interfaces/code-generator.d.ts.map +1 -1
- package/dist/src/services/code-generator.service.d.ts +24 -1
- package/dist/src/services/code-generator.service.d.ts.map +1 -1
- package/dist/src/services/code-generator.service.js +385 -216
- package/dist/src/services/file-reader.service.d.ts.map +1 -1
- package/dist/src/services/file-reader.service.js +1 -1
- package/dist/src/services/file-writer.service.d.ts.map +1 -1
- package/dist/src/services/file-writer.service.js +2 -2
- package/dist/src/services/import-builder.service.d.ts.map +1 -1
- package/dist/src/services/import-builder.service.js +3 -3
- package/dist/src/services/type-builder.service.d.ts.map +1 -1
- package/dist/src/types/generator-options.d.ts.map +1 -1
- package/dist/src/types/openapi.d.ts.map +1 -1
- package/dist/src/types/openapi.js +20 -20
- package/dist/src/utils/error-handler.d.ts.map +1 -1
- package/dist/src/utils/naming-convention.d.ts.map +1 -1
- package/dist/src/utils/naming-convention.js +6 -3
- package/dist/src/utils/signal-handler.d.ts.map +1 -1
- package/dist/tests/integration/cli-comprehensive.test.d.ts +2 -0
- package/dist/tests/integration/cli-comprehensive.test.d.ts.map +1 -0
- package/dist/tests/integration/cli-comprehensive.test.js +110 -0
- package/dist/tests/integration/cli.test.d.ts +2 -0
- package/dist/tests/integration/cli.test.d.ts.map +1 -0
- package/dist/tests/integration/cli.test.js +25 -0
- package/dist/tests/integration/error-scenarios.test.d.ts +2 -0
- package/dist/tests/integration/error-scenarios.test.d.ts.map +1 -0
- package/dist/tests/integration/error-scenarios.test.js +169 -0
- package/dist/tests/integration/snapshots.test.d.ts +2 -0
- package/dist/tests/integration/snapshots.test.d.ts.map +1 -0
- package/dist/tests/integration/snapshots.test.js +100 -0
- package/dist/tests/unit/code-generator-edge-cases.test.d.ts +2 -0
- package/dist/tests/unit/code-generator-edge-cases.test.d.ts.map +1 -0
- package/dist/tests/unit/code-generator-edge-cases.test.js +506 -0
- package/dist/tests/unit/code-generator.test.d.ts +2 -0
- package/dist/tests/unit/code-generator.test.d.ts.map +1 -0
- package/dist/tests/unit/code-generator.test.js +1364 -0
- package/dist/tests/unit/file-reader.test.d.ts +2 -0
- package/dist/tests/unit/file-reader.test.d.ts.map +1 -0
- package/dist/tests/unit/file-reader.test.js +125 -0
- package/dist/tests/unit/generator.test.d.ts +2 -0
- package/dist/tests/unit/generator.test.d.ts.map +1 -0
- package/dist/tests/unit/generator.test.js +119 -0
- package/dist/tests/unit/naming-convention.test.d.ts +2 -0
- package/dist/tests/unit/naming-convention.test.d.ts.map +1 -0
- package/dist/tests/unit/naming-convention.test.js +256 -0
- package/dist/tests/unit/reporter.test.d.ts +2 -0
- package/dist/tests/unit/reporter.test.d.ts.map +1 -0
- package/dist/tests/unit/reporter.test.js +44 -0
- package/dist/tests/unit/type-builder.test.d.ts +2 -0
- package/dist/tests/unit/type-builder.test.d.ts.map +1 -0
- package/dist/tests/unit/type-builder.test.js +108 -0
- package/dist/vitest.config.d.ts.map +1 -1
- package/dist/vitest.config.js +10 -20
- package/eslint.config.mjs +38 -28
- package/examples/.gitkeep +1 -1
- package/examples/README.md +4 -2
- package/examples/petstore/README.md +18 -17
- package/examples/petstore/{type.ts β api.ts} +158 -74
- package/examples/petstore/authenticated-usage.ts +6 -4
- package/examples/petstore/basic-usage.ts +4 -3
- package/examples/petstore/error-handling-usage.ts +84 -0
- package/examples/petstore/retry-handler-usage.ts +11 -18
- package/examples/petstore/server-variables-usage.ts +10 -10
- package/examples/pokeapi/README.md +8 -8
- package/examples/pokeapi/api.ts +218 -0
- package/examples/pokeapi/basic-usage.ts +3 -2
- package/examples/pokeapi/custom-client.ts +5 -4
- package/package.json +17 -21
- package/src/cli.ts +20 -25
- package/src/generator.ts +13 -11
- package/src/interfaces/code-generator.ts +1 -1
- package/src/services/code-generator.service.ts +989 -1099
- package/src/services/file-reader.service.ts +6 -5
- package/src/services/file-writer.service.ts +7 -7
- package/src/services/import-builder.service.ts +9 -13
- package/src/services/type-builder.service.ts +8 -19
- package/src/types/generator-options.ts +1 -1
- package/src/types/openapi.ts +22 -22
- package/src/utils/error-handler.ts +2 -2
- package/src/utils/naming-convention.ts +13 -10
- package/src/utils/reporter.ts +2 -2
- package/src/utils/signal-handler.ts +7 -8
- package/tests/integration/cli-comprehensive.test.ts +38 -32
- package/tests/integration/cli.test.ts +5 -5
- package/tests/integration/error-scenarios.test.ts +20 -26
- package/tests/integration/snapshots.test.ts +19 -23
- package/tests/unit/code-generator-edge-cases.test.ts +133 -133
- package/tests/unit/code-generator.test.ts +674 -268
- package/tests/unit/file-reader.test.ts +14 -14
- package/tests/unit/generator.test.ts +30 -18
- package/tests/unit/naming-convention.test.ts +27 -27
- package/tests/unit/type-builder.test.ts +2 -2
- package/tsconfig.json +5 -3
- package/vitest.config.ts +11 -21
- package/dist/scripts/update-manifest.d.ts +0 -14
- package/dist/scripts/update-manifest.d.ts.map +0 -1
- package/dist/scripts/update-manifest.js +0 -33
- package/dist/src/assets/manifest.json +0 -5
- package/examples/pokeapi/type.ts +0 -109
- package/generated/type.ts +0 -326
- package/scripts/update-manifest.ts +0 -49
- package/src/assets/manifest.json +0 -5
package/.github/workflows/ci.yml
CHANGED
|
@@ -13,11 +13,7 @@ concurrency:
|
|
|
13
13
|
jobs:
|
|
14
14
|
test:
|
|
15
15
|
name: Test
|
|
16
|
-
runs-on:
|
|
17
|
-
strategy:
|
|
18
|
-
matrix:
|
|
19
|
-
node-version: ['24.11.1']
|
|
20
|
-
os: [ubuntu-latest]
|
|
16
|
+
runs-on: ubuntu-latest
|
|
21
17
|
|
|
22
18
|
steps:
|
|
23
19
|
- name: Checkout code
|
|
@@ -25,12 +21,20 @@ jobs:
|
|
|
25
21
|
with:
|
|
26
22
|
fetch-depth: 0
|
|
27
23
|
|
|
28
|
-
- name: Setup Node.js
|
|
24
|
+
- name: Setup Node.js
|
|
29
25
|
uses: actions/setup-node@v5
|
|
30
26
|
with:
|
|
31
|
-
node-version:
|
|
27
|
+
node-version-file: '.nvmrc'
|
|
32
28
|
cache: 'npm'
|
|
33
29
|
|
|
30
|
+
- name: Cache node_modules
|
|
31
|
+
uses: actions/cache@v4
|
|
32
|
+
with:
|
|
33
|
+
path: node_modules
|
|
34
|
+
key: node-modules-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
|
|
35
|
+
restore-keys: |
|
|
36
|
+
node-modules-${{ runner.os }}-
|
|
37
|
+
|
|
34
38
|
- name: Install dependencies
|
|
35
39
|
run: npm ci
|
|
36
40
|
|
|
@@ -49,15 +53,29 @@ jobs:
|
|
|
49
53
|
- name: Run tests
|
|
50
54
|
run: npm run test:coverage
|
|
51
55
|
|
|
56
|
+
- name: Test CLI
|
|
57
|
+
run: |
|
|
58
|
+
echo '{"openapi": "3.0.0", "info": {"title": "Test", "version": "1.0.0"}, "paths": {}}' > test-openapi.json
|
|
59
|
+
node ./dist/src/cli.js --input ./test-openapi.json --output generated
|
|
60
|
+
ls -la generated/
|
|
61
|
+
test -f generated/api.ts
|
|
62
|
+
|
|
52
63
|
- name: Upload coverage to Codecov
|
|
53
|
-
if:
|
|
64
|
+
if: github.event_name == 'push'
|
|
54
65
|
uses: codecov/codecov-action@v5
|
|
55
66
|
with:
|
|
56
67
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
57
|
-
|
|
68
|
+
files: ./coverage/lcov.info
|
|
58
69
|
flags: unittests
|
|
59
70
|
name: codecov-umbrella
|
|
60
71
|
|
|
72
|
+
- name: Upload build artifacts
|
|
73
|
+
uses: actions/upload-artifact@v6
|
|
74
|
+
with:
|
|
75
|
+
name: build-${{ github.sha }}
|
|
76
|
+
path: dist/
|
|
77
|
+
retention-days: 30
|
|
78
|
+
|
|
61
79
|
security:
|
|
62
80
|
name: Security Audit
|
|
63
81
|
runs-on: ubuntu-latest
|
|
@@ -69,49 +87,22 @@ jobs:
|
|
|
69
87
|
- name: Setup Node.js
|
|
70
88
|
uses: actions/setup-node@v5
|
|
71
89
|
with:
|
|
72
|
-
node-version: '
|
|
90
|
+
node-version-file: '.nvmrc'
|
|
73
91
|
cache: 'npm'
|
|
74
92
|
|
|
75
|
-
- name:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
- name: Run security audit
|
|
79
|
-
run: npm audit --audit-level=high --omit=dev
|
|
80
|
-
|
|
81
|
-
build:
|
|
82
|
-
name: Build & Package
|
|
83
|
-
runs-on: ubuntu-latest
|
|
84
|
-
needs: [test, security]
|
|
85
|
-
|
|
86
|
-
steps:
|
|
87
|
-
- name: Checkout code
|
|
88
|
-
uses: actions/checkout@v6
|
|
89
|
-
|
|
90
|
-
- name: Setup Node.js
|
|
91
|
-
uses: actions/setup-node@v5
|
|
93
|
+
- name: Cache node_modules
|
|
94
|
+
uses: actions/cache@v4
|
|
92
95
|
with:
|
|
93
|
-
|
|
94
|
-
|
|
96
|
+
path: node_modules
|
|
97
|
+
key: node-modules-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
|
|
98
|
+
restore-keys: |
|
|
99
|
+
node-modules-${{ runner.os }}-
|
|
95
100
|
|
|
96
101
|
- name: Install dependencies
|
|
97
102
|
run: npm ci
|
|
98
103
|
|
|
99
|
-
- name:
|
|
100
|
-
run: npm
|
|
101
|
-
|
|
102
|
-
- name: Test CLI
|
|
103
|
-
run: |
|
|
104
|
-
echo '{"openapi": "3.0.0", "info": {"title": "Test", "version": "1.0.0"}, "paths": {}}' > test-openapi.json
|
|
105
|
-
node ./dist/src/cli.js --input ./test-openapi.json --output generated
|
|
106
|
-
ls -la generated/
|
|
107
|
-
test -e "generated/type.ts"
|
|
108
|
-
|
|
109
|
-
- name: Upload build artifacts
|
|
110
|
-
uses: actions/upload-artifact@v6
|
|
111
|
-
with:
|
|
112
|
-
name: build-${{ github.sha }}
|
|
113
|
-
path: dist/
|
|
114
|
-
retention-days: 30
|
|
104
|
+
- name: Run security audit
|
|
105
|
+
run: npm audit --audit-level=high --omit=dev
|
|
115
106
|
|
|
116
107
|
release-preview:
|
|
117
108
|
name: Release Preview
|
|
@@ -128,14 +119,25 @@ jobs:
|
|
|
128
119
|
- name: Setup Node.js
|
|
129
120
|
uses: actions/setup-node@v5
|
|
130
121
|
with:
|
|
131
|
-
node-version: '
|
|
122
|
+
node-version-file: '.nvmrc'
|
|
132
123
|
cache: 'npm'
|
|
133
124
|
|
|
125
|
+
- name: Cache node_modules
|
|
126
|
+
uses: actions/cache@v4
|
|
127
|
+
with:
|
|
128
|
+
path: node_modules
|
|
129
|
+
key: node-modules-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
|
|
130
|
+
restore-keys: |
|
|
131
|
+
node-modules-${{ runner.os }}-
|
|
132
|
+
|
|
134
133
|
- name: Install dependencies
|
|
135
134
|
run: npm ci
|
|
136
135
|
|
|
137
|
-
- name:
|
|
138
|
-
|
|
136
|
+
- name: Download build artifact
|
|
137
|
+
uses: actions/download-artifact@v4
|
|
138
|
+
with:
|
|
139
|
+
name: build-${{ github.sha }}
|
|
140
|
+
path: dist
|
|
139
141
|
|
|
140
142
|
- name: Verify build output
|
|
141
143
|
run: |
|
|
@@ -28,10 +28,17 @@ jobs:
|
|
|
28
28
|
- name: Setup Node.js
|
|
29
29
|
uses: actions/setup-node@v5
|
|
30
30
|
with:
|
|
31
|
-
node-version: '
|
|
31
|
+
node-version-file: '.nvmrc'
|
|
32
32
|
cache: 'npm'
|
|
33
33
|
registry-url: 'https://registry.npmjs.org'
|
|
34
34
|
|
|
35
|
+
- name: Cache node_modules
|
|
36
|
+
uses: actions/cache@v4
|
|
37
|
+
with:
|
|
38
|
+
path: node_modules
|
|
39
|
+
key: node-modules-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
|
|
40
|
+
# No restore-keys: avoid restoring stale cache from runs with different lockfile
|
|
41
|
+
|
|
35
42
|
- name: Install dependencies
|
|
36
43
|
run: npm ci
|
|
37
44
|
|
|
@@ -54,7 +61,7 @@ jobs:
|
|
|
54
61
|
run: |
|
|
55
62
|
echo '{"openapi": "3.0.0", "info": {"title": "Test", "version": "1.0.0"}, "paths": {}}' > test-openapi.json
|
|
56
63
|
node ./dist/src/cli.js --input ./test-openapi.json --output generated
|
|
57
|
-
test -
|
|
64
|
+
test -f generated/api.ts
|
|
58
65
|
rm -rf generated test-openapi.json
|
|
59
66
|
|
|
60
67
|
- name: Release and Publish
|
|
@@ -62,4 +69,7 @@ jobs:
|
|
|
62
69
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
63
70
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
64
71
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
65
|
-
|
|
72
|
+
# Run semantic-release via node (not npm run) so it uses the system npm
|
|
73
|
+
# instead of node_modules/npm, avoiding @npmcli/config errors from
|
|
74
|
+
# cached or incompatible local npm when running "npm version"
|
|
75
|
+
run: node ./node_modules/semantic-release/bin/semantic-release.js
|
package/.husky/commit-msg
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# Run commitlint to check commit message format
|
|
2
|
-
|
|
2
|
+
./node_modules/.bin/commitlint --edit "$1"
|
package/.husky/pre-commit
CHANGED
package/.lintstagedrc.json
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
2
|
+
"src/**/*.{ts,js}": ["eslint --fix", "prettier --write"],
|
|
3
|
+
"tests/**/*.{ts,js}": ["eslint --fix", "prettier --write"],
|
|
4
|
+
"scripts/**/*.{ts,js}": ["eslint --fix", "prettier --write"],
|
|
5
|
+
"vitest.config.ts": ["eslint --fix", "prettier --write"],
|
|
6
|
+
"examples/**/*.{ts,js}": ["prettier --write"],
|
|
3
7
|
"*.{json,md,yml,yaml}": ["prettier --write"]
|
|
4
8
|
}
|
package/.nvmrc
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
24.
|
|
1
|
+
24.14.0
|
package/.prettierrc.json
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"
|
|
4
|
-
"
|
|
2
|
+
"printWidth": 180,
|
|
3
|
+
"tabWidth": 2,
|
|
4
|
+
"useTabs": false,
|
|
5
|
+
"semi": true,
|
|
5
6
|
"singleQuote": true,
|
|
6
|
-
"
|
|
7
|
-
|
|
7
|
+
"quoteProps": "consistent",
|
|
8
|
+
"trailingComma": "none",
|
|
9
|
+
"bracketSpacing": true,
|
|
10
|
+
"bracketSameLine": false,
|
|
11
|
+
"arrowParens": "always",
|
|
12
|
+
"endOfLine": "lf",
|
|
13
|
+
"htmlWhitespaceSensitivity": "css"
|
|
14
|
+
}
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
## [1.7.0](https://github.com/julienandreu/zod-codegen/compare/v1.6.3...v1.7.0) (2026-03-09)
|
|
2
|
+
|
|
3
|
+
### π Features
|
|
4
|
+
|
|
5
|
+
- add API client generation, error handling examples, remove manifest ([#82](https://github.com/julienandreu/zod-codegen/issues/82)) ([0376803](https://github.com/julienandreu/zod-codegen/commit/0376803ad4025a742dbf48fd7fcb381eb43ad430))
|
|
6
|
+
|
|
7
|
+
### π Bug Fixes
|
|
8
|
+
|
|
9
|
+
- remove broken npm override causing release workflow failure ([#83](https://github.com/julienandreu/zod-codegen/issues/83)) ([03f285a](https://github.com/julienandreu/zod-codegen/commit/03f285a553f1e32e6e8747dc62724a48bcfaf525))
|
|
10
|
+
- use system npm for semantic-release to avoid @npmcli/config errors ([#84](https://github.com/julienandreu/zod-codegen/issues/84)) ([72401dd](https://github.com/julienandreu/zod-codegen/commit/72401dd41b8eb665cd7825d03d03329c1037c7df))
|
|
11
|
+
|
|
12
|
+
## <small>1.6.3 (2026-01-22)</small>
|
|
13
|
+
|
|
14
|
+
- fix: do not depend on inference anymore and build strict types all ar⦠(#60) ([b0b663e](https://github.com/julienandreu/zod-codegen/commit/b0b663e)), closes [#60](https://github.com/julienandreu/zod-codegen/issues/60)
|
|
15
|
+
|
|
1
16
|
## <small>1.6.2 (2026-01-19)</small>
|
|
2
17
|
|
|
3
18
|
- fix: improve URL construction and filter undefined query params (#58) ([b9c3d32](https://github.com/julienandreu/zod-codegen/commit/b9c3d32)), closes [#58](https://github.com/julienandreu/zod-codegen/issues/58)
|
package/CONTRIBUTING.md
CHANGED
|
@@ -22,7 +22,7 @@ This project adheres to a code of conduct. By participating, you are expected to
|
|
|
22
22
|
### Prerequisites
|
|
23
23
|
|
|
24
24
|
- Node.js >= 18.0.0
|
|
25
|
-
-
|
|
25
|
+
- npm
|
|
26
26
|
- Git
|
|
27
27
|
|
|
28
28
|
### Development Setup
|
|
@@ -37,24 +37,24 @@ This project adheres to a code of conduct. By participating, you are expected to
|
|
|
37
37
|
2. **Install Dependencies**
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
|
-
|
|
40
|
+
npm install
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
3. **Build the Project**
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
|
-
|
|
46
|
+
npm run build
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
4. **Run Tests**
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
|
-
|
|
52
|
+
npm test
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
5. **Run Development Mode**
|
|
56
56
|
```bash
|
|
57
|
-
|
|
57
|
+
npm run dev
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
## Making Changes
|
|
@@ -119,7 +119,7 @@ test: add integration tests for CLI
|
|
|
119
119
|
3. **Validate Your Changes**
|
|
120
120
|
|
|
121
121
|
```bash
|
|
122
|
-
|
|
122
|
+
npm run validate
|
|
123
123
|
```
|
|
124
124
|
|
|
125
125
|
This runs:
|
|
@@ -171,10 +171,10 @@ We use ESLint and Prettier for consistent code style:
|
|
|
171
171
|
|
|
172
172
|
```bash
|
|
173
173
|
# Auto-fix linting issues
|
|
174
|
-
|
|
174
|
+
npm run lint
|
|
175
175
|
|
|
176
176
|
# Format code
|
|
177
|
-
|
|
177
|
+
npm run format
|
|
178
178
|
```
|
|
179
179
|
|
|
180
180
|
### File Structure
|
|
@@ -218,16 +218,16 @@ tests/
|
|
|
218
218
|
|
|
219
219
|
```bash
|
|
220
220
|
# Run all tests
|
|
221
|
-
|
|
221
|
+
npm test
|
|
222
222
|
|
|
223
223
|
# Run tests in watch mode
|
|
224
|
-
|
|
224
|
+
npm run test:watch
|
|
225
225
|
|
|
226
226
|
# Run with coverage
|
|
227
|
-
|
|
227
|
+
npm run test:coverage
|
|
228
228
|
|
|
229
229
|
# Run specific test file
|
|
230
|
-
|
|
230
|
+
npx vitest run generator.test.ts
|
|
231
231
|
```
|
|
232
232
|
|
|
233
233
|
## Documentation
|