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
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {beforeEach, describe, expect, it} from 'vitest';
|
|
2
|
-
import {TypeScriptCodeGeneratorService} from '../../src/services/code-generator.service';
|
|
3
|
-
import type {OpenApiSpecType} from '../../src/types/openapi';
|
|
1
|
+
import { beforeEach, describe, expect, it } from 'vitest';
|
|
2
|
+
import { TypeScriptCodeGeneratorService } from '../../src/services/code-generator.service';
|
|
3
|
+
import type { OpenApiSpecType } from '../../src/types/openapi';
|
|
4
4
|
|
|
5
5
|
describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
6
6
|
let generator: TypeScriptCodeGeneratorService;
|
|
@@ -15,16 +15,16 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
15
15
|
openapi: '3.0.0',
|
|
16
16
|
info: {
|
|
17
17
|
title: 'Test API',
|
|
18
|
-
version: '1.0.0'
|
|
18
|
+
version: '1.0.0'
|
|
19
19
|
},
|
|
20
20
|
paths: {},
|
|
21
21
|
components: {
|
|
22
22
|
schemas: {
|
|
23
23
|
UnknownType: {
|
|
24
|
-
anyOf: [{type: 'custom' as any}]
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
24
|
+
anyOf: [{ type: 'custom' as any }]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
28
|
};
|
|
29
29
|
|
|
30
30
|
const code = generator.generate(spec);
|
|
@@ -36,16 +36,16 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
36
36
|
openapi: '3.0.0',
|
|
37
37
|
info: {
|
|
38
38
|
title: 'Test API',
|
|
39
|
-
version: '1.0.0'
|
|
39
|
+
version: '1.0.0'
|
|
40
40
|
},
|
|
41
41
|
paths: {},
|
|
42
42
|
components: {
|
|
43
43
|
schemas: {
|
|
44
44
|
DirectUnknownType: {
|
|
45
|
-
type: 'custom' as any
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
45
|
+
type: 'custom' as any
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
49
|
};
|
|
50
50
|
|
|
51
51
|
const code = generator.generate(spec);
|
|
@@ -63,7 +63,7 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
63
63
|
openapi: '3.0.0',
|
|
64
64
|
info: {
|
|
65
65
|
title: 'Test API',
|
|
66
|
-
version: '1.0.0'
|
|
66
|
+
version: '1.0.0'
|
|
67
67
|
},
|
|
68
68
|
paths: {},
|
|
69
69
|
components: {
|
|
@@ -75,7 +75,7 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
75
75
|
// by having invalid nested structure that causes parse to fail
|
|
76
76
|
// but still has the type property accessible
|
|
77
77
|
(() => {
|
|
78
|
-
const obj: any = {type: 'object', properties: {name: {type: 'string'}}};
|
|
78
|
+
const obj: any = { type: 'object', properties: { name: { type: 'string' } } };
|
|
79
79
|
// Make it fail parse by adding circular reference or invalid structure
|
|
80
80
|
// Actually, let's try making properties invalid in a way that causes top-level parse to fail
|
|
81
81
|
obj.properties = new Proxy(
|
|
@@ -83,15 +83,15 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
83
83
|
{
|
|
84
84
|
get() {
|
|
85
85
|
throw new Error('Proxy error');
|
|
86
|
-
}
|
|
87
|
-
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
88
|
);
|
|
89
89
|
return obj;
|
|
90
|
-
})()
|
|
91
|
-
]
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
90
|
+
})()
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
95
|
};
|
|
96
96
|
|
|
97
97
|
// This might throw, but let's see
|
|
@@ -108,16 +108,16 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
108
108
|
openapi: '3.0.0',
|
|
109
109
|
info: {
|
|
110
110
|
title: 'Test API',
|
|
111
|
-
version: '1.0.0'
|
|
111
|
+
version: '1.0.0'
|
|
112
112
|
},
|
|
113
113
|
paths: {},
|
|
114
114
|
components: {
|
|
115
115
|
schemas: {
|
|
116
116
|
NoType: {
|
|
117
|
-
anyOf: [{} as any]
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
117
|
+
anyOf: [{} as any]
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
121
|
};
|
|
122
122
|
|
|
123
123
|
const code = generator.generate(spec);
|
|
@@ -129,16 +129,16 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
129
129
|
openapi: '3.0.0',
|
|
130
130
|
info: {
|
|
131
131
|
title: 'Test API',
|
|
132
|
-
version: '1.0.0'
|
|
132
|
+
version: '1.0.0'
|
|
133
133
|
},
|
|
134
134
|
paths: {},
|
|
135
135
|
components: {
|
|
136
136
|
schemas: {
|
|
137
137
|
NullSchema: {
|
|
138
|
-
anyOf: [null as any]
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
138
|
+
anyOf: [null as any]
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
142
|
};
|
|
143
143
|
|
|
144
144
|
const code = generator.generate(spec);
|
|
@@ -153,16 +153,16 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
153
153
|
openapi: '3.0.0',
|
|
154
154
|
info: {
|
|
155
155
|
title: 'Test API',
|
|
156
|
-
version: '1.0.0'
|
|
156
|
+
version: '1.0.0'
|
|
157
157
|
},
|
|
158
158
|
paths: {},
|
|
159
159
|
components: {
|
|
160
160
|
schemas: {
|
|
161
161
|
EmptyObject: {
|
|
162
|
-
anyOf: [{type: 'object', properties: {}}]
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
162
|
+
anyOf: [{ type: 'object', properties: {} }]
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
166
|
};
|
|
167
167
|
|
|
168
168
|
const code = generator.generate(spec);
|
|
@@ -175,7 +175,7 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
175
175
|
openapi: '3.0.0',
|
|
176
176
|
info: {
|
|
177
177
|
title: 'Test API',
|
|
178
|
-
version: '1.0.0'
|
|
178
|
+
version: '1.0.0'
|
|
179
179
|
},
|
|
180
180
|
paths: {},
|
|
181
181
|
components: {
|
|
@@ -185,14 +185,14 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
185
185
|
{
|
|
186
186
|
type: 'object',
|
|
187
187
|
properties: {
|
|
188
|
-
name: {type: 'string'},
|
|
189
|
-
age: {type: 'number'}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
]
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
188
|
+
name: { type: 'string' },
|
|
189
|
+
age: { type: 'number' }
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
196
|
};
|
|
197
197
|
|
|
198
198
|
const code = generator.generate(spec);
|
|
@@ -205,7 +205,7 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
205
205
|
openapi: '3.0.0',
|
|
206
206
|
info: {
|
|
207
207
|
title: 'Test API',
|
|
208
|
-
version: '1.0.0'
|
|
208
|
+
version: '1.0.0'
|
|
209
209
|
},
|
|
210
210
|
paths: {},
|
|
211
211
|
components: {
|
|
@@ -213,12 +213,12 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
213
213
|
DirectObject: {
|
|
214
214
|
type: 'object',
|
|
215
215
|
properties: {
|
|
216
|
-
name: {type: 'string'},
|
|
217
|
-
age: {type: 'number'}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
216
|
+
name: { type: 'string' },
|
|
217
|
+
age: { type: 'number' }
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
222
|
};
|
|
223
223
|
|
|
224
224
|
const code = generator.generate(spec);
|
|
@@ -232,17 +232,17 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
232
232
|
openapi: '3.0.0',
|
|
233
233
|
info: {
|
|
234
234
|
title: 'Test API',
|
|
235
|
-
version: '1.0.0'
|
|
235
|
+
version: '1.0.0'
|
|
236
236
|
},
|
|
237
237
|
paths: {},
|
|
238
238
|
components: {
|
|
239
239
|
schemas: {
|
|
240
240
|
EmptyDirectObject: {
|
|
241
241
|
type: 'object',
|
|
242
|
-
properties: {}
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
}
|
|
242
|
+
properties: {}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
246
|
};
|
|
247
247
|
|
|
248
248
|
const code = generator.generate(spec);
|
|
@@ -257,16 +257,16 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
257
257
|
openapi: '3.0.0',
|
|
258
258
|
info: {
|
|
259
259
|
title: 'Test API',
|
|
260
|
-
version: '1.0.0'
|
|
260
|
+
version: '1.0.0'
|
|
261
261
|
},
|
|
262
262
|
paths: {},
|
|
263
263
|
components: {
|
|
264
264
|
schemas: {
|
|
265
265
|
ArrayNoItems: {
|
|
266
|
-
anyOf: [{type: 'array'}]
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
266
|
+
anyOf: [{ type: 'array' }]
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
270
|
};
|
|
271
271
|
|
|
272
272
|
const code = generator.generate(spec);
|
|
@@ -279,7 +279,7 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
279
279
|
openapi: '3.0.0',
|
|
280
280
|
info: {
|
|
281
281
|
title: 'Test API',
|
|
282
|
-
version: '1.0.0'
|
|
282
|
+
version: '1.0.0'
|
|
283
283
|
},
|
|
284
284
|
paths: {},
|
|
285
285
|
components: {
|
|
@@ -288,12 +288,12 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
288
288
|
anyOf: [
|
|
289
289
|
{
|
|
290
290
|
type: 'array',
|
|
291
|
-
items: {type: 'string'}
|
|
292
|
-
}
|
|
293
|
-
]
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
291
|
+
items: { type: 'string' }
|
|
292
|
+
}
|
|
293
|
+
]
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
297
|
};
|
|
298
298
|
|
|
299
299
|
const code = generator.generate(spec);
|
|
@@ -306,17 +306,17 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
306
306
|
openapi: '3.0.0',
|
|
307
307
|
info: {
|
|
308
308
|
title: 'Test API',
|
|
309
|
-
version: '1.0.0'
|
|
309
|
+
version: '1.0.0'
|
|
310
310
|
},
|
|
311
311
|
paths: {},
|
|
312
312
|
components: {
|
|
313
313
|
schemas: {
|
|
314
314
|
DirectArray: {
|
|
315
315
|
type: 'array',
|
|
316
|
-
items: {type: 'string'}
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
}
|
|
316
|
+
items: { type: 'string' }
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
320
|
};
|
|
321
321
|
|
|
322
322
|
const code = generator.generate(spec);
|
|
@@ -330,16 +330,16 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
330
330
|
openapi: '3.0.0',
|
|
331
331
|
info: {
|
|
332
332
|
title: 'Test API',
|
|
333
|
-
version: '1.0.0'
|
|
333
|
+
version: '1.0.0'
|
|
334
334
|
},
|
|
335
335
|
paths: {},
|
|
336
336
|
components: {
|
|
337
337
|
schemas: {
|
|
338
338
|
DirectArrayNoItems: {
|
|
339
|
-
type: 'array'
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
}
|
|
339
|
+
type: 'array'
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
343
|
};
|
|
344
344
|
|
|
345
345
|
const code = generator.generate(spec);
|
|
@@ -354,7 +354,7 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
354
354
|
openapi: '3.0.0',
|
|
355
355
|
info: {
|
|
356
356
|
title: 'Test API',
|
|
357
|
-
version: '1.0.0'
|
|
357
|
+
version: '1.0.0'
|
|
358
358
|
},
|
|
359
359
|
paths: {},
|
|
360
360
|
components: {
|
|
@@ -362,18 +362,18 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
362
362
|
NestedLogical: {
|
|
363
363
|
allOf: [
|
|
364
364
|
{
|
|
365
|
-
anyOf: [{type: 'string'}, {type: 'number'}]
|
|
365
|
+
anyOf: [{ type: 'string' }, { type: 'number' }]
|
|
366
366
|
},
|
|
367
367
|
{
|
|
368
368
|
type: 'object',
|
|
369
369
|
properties: {
|
|
370
|
-
id: {type: 'string'}
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
]
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
}
|
|
370
|
+
id: { type: 'string' }
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
]
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
377
|
};
|
|
378
378
|
|
|
379
379
|
const code = generator.generate(spec);
|
|
@@ -386,7 +386,7 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
386
386
|
openapi: '3.0.0',
|
|
387
387
|
info: {
|
|
388
388
|
title: 'Test API',
|
|
389
|
-
version: '1.0.0'
|
|
389
|
+
version: '1.0.0'
|
|
390
390
|
},
|
|
391
391
|
paths: {},
|
|
392
392
|
components: {
|
|
@@ -395,12 +395,12 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
395
395
|
not: {
|
|
396
396
|
type: 'object',
|
|
397
397
|
properties: {
|
|
398
|
-
forbidden: {type: 'string'}
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
}
|
|
398
|
+
forbidden: { type: 'string' }
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
404
|
};
|
|
405
405
|
|
|
406
406
|
const code = generator.generate(spec);
|
|
@@ -417,7 +417,7 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
417
417
|
openapi: '3.0.0',
|
|
418
418
|
info: {
|
|
419
419
|
title: 'Test API',
|
|
420
|
-
version: '1.0.0'
|
|
420
|
+
version: '1.0.0'
|
|
421
421
|
},
|
|
422
422
|
paths: {},
|
|
423
423
|
components: {
|
|
@@ -425,12 +425,12 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
425
425
|
UnknownTypeInLogical: {
|
|
426
426
|
anyOf: [
|
|
427
427
|
{
|
|
428
|
-
type: 'custom' as any
|
|
429
|
-
}
|
|
430
|
-
]
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
}
|
|
428
|
+
type: 'custom' as any // Unknown type that hits default case
|
|
429
|
+
}
|
|
430
|
+
]
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
434
|
};
|
|
435
435
|
|
|
436
436
|
const code = generator.generate(spec);
|
|
@@ -442,7 +442,7 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
442
442
|
openapi: '3.0.0',
|
|
443
443
|
info: {
|
|
444
444
|
title: 'Test API',
|
|
445
|
-
version: '1.0.0'
|
|
445
|
+
version: '1.0.0'
|
|
446
446
|
},
|
|
447
447
|
paths: {},
|
|
448
448
|
components: {
|
|
@@ -451,12 +451,12 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
451
451
|
anyOf: [
|
|
452
452
|
{
|
|
453
453
|
type: 'object',
|
|
454
|
-
properties: {}
|
|
455
|
-
}
|
|
456
|
-
]
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
}
|
|
454
|
+
properties: {}
|
|
455
|
+
}
|
|
456
|
+
]
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
460
|
};
|
|
461
461
|
|
|
462
462
|
const code = generator.generate(spec);
|
|
@@ -469,7 +469,7 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
469
469
|
openapi: '3.0.0',
|
|
470
470
|
info: {
|
|
471
471
|
title: 'Test API',
|
|
472
|
-
version: '1.0.0'
|
|
472
|
+
version: '1.0.0'
|
|
473
473
|
},
|
|
474
474
|
paths: {},
|
|
475
475
|
components: {
|
|
@@ -479,14 +479,14 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
479
479
|
{
|
|
480
480
|
type: 'object',
|
|
481
481
|
properties: {
|
|
482
|
-
name: {type: 'string'},
|
|
483
|
-
value: {type: 'number'}
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
]
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
}
|
|
482
|
+
name: { type: 'string' },
|
|
483
|
+
value: { type: 'number' }
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
]
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
490
|
};
|
|
491
491
|
|
|
492
492
|
const code = generator.generate(spec);
|
|
@@ -500,7 +500,7 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
500
500
|
openapi: '3.0.0',
|
|
501
501
|
info: {
|
|
502
502
|
title: 'Test API',
|
|
503
|
-
version: '1.0.0'
|
|
503
|
+
version: '1.0.0'
|
|
504
504
|
},
|
|
505
505
|
paths: {},
|
|
506
506
|
components: {
|
|
@@ -508,13 +508,13 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
508
508
|
ArrayNoItemsInLogical: {
|
|
509
509
|
anyOf: [
|
|
510
510
|
{
|
|
511
|
-
type: 'array'
|
|
511
|
+
type: 'array'
|
|
512
512
|
// No items property
|
|
513
|
-
}
|
|
514
|
-
]
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
}
|
|
513
|
+
}
|
|
514
|
+
]
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
518
|
};
|
|
519
519
|
|
|
520
520
|
const code = generator.generate(spec);
|
|
@@ -526,7 +526,7 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
526
526
|
openapi: '3.0.0',
|
|
527
527
|
info: {
|
|
528
528
|
title: 'Test API',
|
|
529
|
-
version: '1.0.0'
|
|
529
|
+
version: '1.0.0'
|
|
530
530
|
},
|
|
531
531
|
paths: {},
|
|
532
532
|
components: {
|
|
@@ -535,12 +535,12 @@ describe('TypeScriptCodeGeneratorService - Edge Cases', () => {
|
|
|
535
535
|
anyOf: [
|
|
536
536
|
{
|
|
537
537
|
type: 'array',
|
|
538
|
-
items: {type: 'string'}
|
|
539
|
-
}
|
|
540
|
-
]
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
}
|
|
538
|
+
items: { type: 'string' }
|
|
539
|
+
}
|
|
540
|
+
]
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
544
|
};
|
|
545
545
|
|
|
546
546
|
const code = generator.generate(spec);
|