zod-codegen 1.6.3 β†’ 1.7.1

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.
Files changed (120) hide show
  1. package/.github/workflows/ci.yml +50 -48
  2. package/.github/workflows/release.yml +13 -3
  3. package/.husky/commit-msg +1 -1
  4. package/.husky/pre-commit +1 -1
  5. package/.lintstagedrc.json +5 -1
  6. package/.nvmrc +1 -1
  7. package/.prettierrc.json +12 -5
  8. package/CHANGELOG.md +17 -0
  9. package/CONTRIBUTING.md +12 -12
  10. package/EXAMPLES.md +135 -57
  11. package/PERFORMANCE.md +4 -4
  12. package/README.md +87 -64
  13. package/SECURITY.md +1 -1
  14. package/dist/src/cli.js +11 -18
  15. package/dist/src/generator.d.ts +2 -2
  16. package/dist/src/generator.d.ts.map +1 -1
  17. package/dist/src/generator.js +5 -3
  18. package/dist/src/interfaces/code-generator.d.ts.map +1 -1
  19. package/dist/src/services/code-generator.service.d.ts +3 -1
  20. package/dist/src/services/code-generator.service.d.ts.map +1 -1
  21. package/dist/src/services/code-generator.service.js +236 -219
  22. package/dist/src/services/file-reader.service.d.ts +2 -0
  23. package/dist/src/services/file-reader.service.d.ts.map +1 -1
  24. package/dist/src/services/file-reader.service.js +25 -11
  25. package/dist/src/services/file-writer.service.d.ts.map +1 -1
  26. package/dist/src/services/file-writer.service.js +2 -2
  27. package/dist/src/services/import-builder.service.d.ts.map +1 -1
  28. package/dist/src/services/import-builder.service.js +3 -3
  29. package/dist/src/services/type-builder.service.d.ts.map +1 -1
  30. package/dist/src/types/generator-options.d.ts.map +1 -1
  31. package/dist/src/types/openapi.d.ts.map +1 -1
  32. package/dist/src/types/openapi.js +20 -20
  33. package/dist/src/utils/error-handler.d.ts.map +1 -1
  34. package/dist/src/utils/naming-convention.d.ts.map +1 -1
  35. package/dist/src/utils/naming-convention.js +6 -3
  36. package/dist/src/utils/signal-handler.d.ts.map +1 -1
  37. package/dist/tests/integration/cli-comprehensive.test.d.ts +2 -0
  38. package/dist/tests/integration/cli-comprehensive.test.d.ts.map +1 -0
  39. package/dist/tests/integration/cli-comprehensive.test.js +123 -0
  40. package/dist/tests/integration/cli.test.d.ts +2 -0
  41. package/dist/tests/integration/cli.test.d.ts.map +1 -0
  42. package/dist/tests/integration/cli.test.js +25 -0
  43. package/dist/tests/integration/error-scenarios.test.d.ts +2 -0
  44. package/dist/tests/integration/error-scenarios.test.d.ts.map +1 -0
  45. package/dist/tests/integration/error-scenarios.test.js +169 -0
  46. package/dist/tests/integration/snapshots.test.d.ts +2 -0
  47. package/dist/tests/integration/snapshots.test.d.ts.map +1 -0
  48. package/dist/tests/integration/snapshots.test.js +100 -0
  49. package/dist/tests/unit/code-generator-edge-cases.test.d.ts +2 -0
  50. package/dist/tests/unit/code-generator-edge-cases.test.d.ts.map +1 -0
  51. package/dist/tests/unit/code-generator-edge-cases.test.js +506 -0
  52. package/dist/tests/unit/code-generator.test.d.ts +2 -0
  53. package/dist/tests/unit/code-generator.test.d.ts.map +1 -0
  54. package/dist/tests/unit/code-generator.test.js +1364 -0
  55. package/dist/tests/unit/file-reader.test.d.ts +2 -0
  56. package/dist/tests/unit/file-reader.test.d.ts.map +1 -0
  57. package/dist/tests/unit/file-reader.test.js +153 -0
  58. package/dist/tests/unit/generator.test.d.ts +2 -0
  59. package/dist/tests/unit/generator.test.d.ts.map +1 -0
  60. package/dist/tests/unit/generator.test.js +119 -0
  61. package/dist/tests/unit/naming-convention.test.d.ts +2 -0
  62. package/dist/tests/unit/naming-convention.test.d.ts.map +1 -0
  63. package/dist/tests/unit/naming-convention.test.js +256 -0
  64. package/dist/tests/unit/reporter.test.d.ts +2 -0
  65. package/dist/tests/unit/reporter.test.d.ts.map +1 -0
  66. package/dist/tests/unit/reporter.test.js +44 -0
  67. package/dist/tests/unit/type-builder.test.d.ts +2 -0
  68. package/dist/tests/unit/type-builder.test.d.ts.map +1 -0
  69. package/dist/tests/unit/type-builder.test.js +108 -0
  70. package/dist/vitest.config.d.ts.map +1 -1
  71. package/dist/vitest.config.js +10 -20
  72. package/eslint.config.mjs +38 -28
  73. package/examples/.gitkeep +1 -1
  74. package/examples/README.md +4 -2
  75. package/examples/petstore/README.md +18 -17
  76. package/examples/petstore/{type.ts β†’ api.ts} +158 -74
  77. package/examples/petstore/authenticated-usage.ts +6 -4
  78. package/examples/petstore/basic-usage.ts +4 -3
  79. package/examples/petstore/error-handling-usage.ts +84 -0
  80. package/examples/petstore/retry-handler-usage.ts +11 -18
  81. package/examples/petstore/server-variables-usage.ts +10 -10
  82. package/examples/pokeapi/README.md +8 -8
  83. package/examples/pokeapi/api.ts +218 -0
  84. package/examples/pokeapi/basic-usage.ts +3 -2
  85. package/examples/pokeapi/custom-client.ts +5 -4
  86. package/package.json +17 -21
  87. package/src/cli.ts +20 -25
  88. package/src/generator.ts +13 -11
  89. package/src/interfaces/code-generator.ts +1 -1
  90. package/src/services/code-generator.service.ts +799 -1120
  91. package/src/services/file-reader.service.ts +35 -15
  92. package/src/services/file-writer.service.ts +7 -7
  93. package/src/services/import-builder.service.ts +9 -13
  94. package/src/services/type-builder.service.ts +8 -19
  95. package/src/types/generator-options.ts +1 -1
  96. package/src/types/openapi.ts +22 -22
  97. package/src/utils/error-handler.ts +2 -2
  98. package/src/utils/naming-convention.ts +13 -10
  99. package/src/utils/reporter.ts +2 -2
  100. package/src/utils/signal-handler.ts +7 -8
  101. package/tests/integration/cli-comprehensive.test.ts +53 -31
  102. package/tests/integration/cli.test.ts +5 -5
  103. package/tests/integration/error-scenarios.test.ts +20 -26
  104. package/tests/integration/snapshots.test.ts +19 -23
  105. package/tests/unit/code-generator-edge-cases.test.ts +133 -133
  106. package/tests/unit/code-generator.test.ts +431 -330
  107. package/tests/unit/file-reader.test.ts +58 -18
  108. package/tests/unit/generator.test.ts +30 -18
  109. package/tests/unit/naming-convention.test.ts +27 -27
  110. package/tests/unit/type-builder.test.ts +2 -2
  111. package/tsconfig.json +5 -3
  112. package/vitest.config.ts +11 -21
  113. package/dist/scripts/update-manifest.d.ts +0 -14
  114. package/dist/scripts/update-manifest.d.ts.map +0 -1
  115. package/dist/scripts/update-manifest.js +0 -33
  116. package/dist/src/assets/manifest.json +0 -5
  117. package/examples/pokeapi/type.ts +0 -109
  118. package/generated/type.ts +0 -371
  119. package/scripts/update-manifest.ts +0 -49
  120. package/src/assets/manifest.json +0 -5
@@ -13,11 +13,7 @@ concurrency:
13
13
  jobs:
14
14
  test:
15
15
  name: Test
16
- runs-on: ${{ matrix.os }}
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 ${{ matrix.node-version }}
24
+ - name: Setup Node.js
29
25
  uses: actions/setup-node@v5
30
26
  with:
31
- node-version: ${{ matrix.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: matrix.node-version == '24.11.1' && matrix.os == 'ubuntu-latest'
64
+ if: github.event_name == 'push'
54
65
  uses: codecov/codecov-action@v5
55
66
  with:
56
67
  token: ${{ secrets.CODECOV_TOKEN }}
57
- file: ./coverage/lcov.info
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: '24.11.1'
90
+ node-version-file: '.nvmrc'
73
91
  cache: 'npm'
74
92
 
75
- - name: Install dependencies
76
- run: npm ci
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
- node-version: '24.11.1'
94
- cache: 'npm'
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: Build project
100
- run: npm run build
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: '24.11.1'
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: Build project
138
- run: npm run build
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: '24.11.1'
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 -e "generated/type.ts"
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
- run: npm run release
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
- npx --no -- commitlint --edit $1
2
+ ./node_modules/.bin/commitlint --edit "$1"
package/.husky/pre-commit CHANGED
@@ -1,5 +1,5 @@
1
1
  # Run lint-staged for staged files
2
- npx lint-staged
2
+ ./node_modules/.bin/lint-staged
3
3
 
4
4
  # Run type checking
5
5
  npm run type-check
@@ -1,4 +1,8 @@
1
1
  {
2
- "*.{ts,tsx,js,jsx}": ["eslint --fix", "prettier --write"],
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.11.1
1
+ 24.14.0
package/.prettierrc.json CHANGED
@@ -1,7 +1,14 @@
1
1
  {
2
- "bracketSameLine": true,
3
- "bracketSpacing": false,
4
- "printWidth": 120,
2
+ "printWidth": 180,
3
+ "tabWidth": 2,
4
+ "useTabs": false,
5
+ "semi": true,
5
6
  "singleQuote": true,
6
- "trailingComma": "all"
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,20 @@
1
+ ## [1.7.1](https://github.com/julienandreu/zod-codegen/compare/v1.7.0...v1.7.1) (2026-03-10)
2
+
3
+ ### πŸ› Bug Fixes
4
+
5
+ - properly handle URL inputs with authentication support ([#87](https://github.com/julienandreu/zod-codegen/issues/87)) ([49ba2c4](https://github.com/julienandreu/zod-codegen/commit/49ba2c483458397d9f12e03b8f6c634981e4454a))
6
+
7
+ ## [1.7.0](https://github.com/julienandreu/zod-codegen/compare/v1.6.3...v1.7.0) (2026-03-09)
8
+
9
+ ### πŸš€ Features
10
+
11
+ - 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))
12
+
13
+ ### πŸ› Bug Fixes
14
+
15
+ - 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))
16
+ - 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))
17
+
1
18
  ## <small>1.6.3 (2026-01-22)</small>
2
19
 
3
20
  - 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)
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
- - yarn
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
- yarn install
40
+ npm install
41
41
  ```
42
42
 
43
43
  3. **Build the Project**
44
44
 
45
45
  ```bash
46
- yarn build
46
+ npm run build
47
47
  ```
48
48
 
49
49
  4. **Run Tests**
50
50
 
51
51
  ```bash
52
- yarn test
52
+ npm test
53
53
  ```
54
54
 
55
55
  5. **Run Development Mode**
56
56
  ```bash
57
- yarn dev
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
- yarn validate
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
- yarn lint
174
+ npm run lint
175
175
 
176
176
  # Format code
177
- yarn format
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
- yarn test
221
+ npm test
222
222
 
223
223
  # Run tests in watch mode
224
- yarn test:watch
224
+ npm run test:watch
225
225
 
226
226
  # Run with coverage
227
- yarn test:coverage
227
+ npm run test:coverage
228
228
 
229
229
  # Run specific test file
230
- yarn vitest run generator.test.ts
230
+ npx vitest run generator.test.ts
231
231
  ```
232
232
 
233
233
  ## Documentation