Skip to content

Commit 809ba78

Browse files
authored
Merge pull request #318 from OpenAPI-Qraft/fix/315-handle-empty-respones-properly
fix(315): handle empty response with `null`
2 parents 9081b2a + c9afb3b commit 809ba78

File tree

14 files changed

+1050
-15
lines changed

14 files changed

+1050
-15
lines changed

.changeset/red-mirrors-add.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
'@openapi-qraft/tanstack-query-react-plugin': minor
3+
'@openapi-qraft/test-fixtures': minor
4+
'@openapi-qraft/react': minor
5+
---
6+
7+
Generate `null` type and return `null` data for the empty (204) responses instead of an empty object `{}`.

.changeset/strong-mugs-fry.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ Generate types for empty responses
88

99
Now, for both successful and error responses, we generate types for all possible response outcomes.
1010
For instance, if a 204 (No Content) response is possible, we now explicitly generate a type for it
11-
(represented as `undefined` in the generated code) instead of omitting it.
11+
(represented as `null` in the generated code) instead of omitting it.

packages/openapi-typescript-plugin/src/__snapshots__/no-extra-options.ts.snapshot.ts

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,23 @@ export interface paths {
7171
patch?: never;
7272
trace?: never;
7373
};
74+
"/files/trash": {
75+
parameters: {
76+
query?: never;
77+
header?: never;
78+
path?: never;
79+
cookie?: never;
80+
};
81+
get?: never;
82+
put?: never;
83+
post?: never;
84+
/** Trash files */
85+
delete: operations["trash_files"];
86+
options?: never;
87+
head?: never;
88+
patch?: never;
89+
trace?: never;
90+
};
7491
"/files/list": {
7592
parameters: {
7693
query?: never;
@@ -554,6 +571,7 @@ export interface operations {
554571
parameters: {
555572
query?: {
556573
all?: boolean;
574+
pendingOnly?: boolean;
557575
};
558576
header?: never;
559577
path?: never;
@@ -572,7 +590,6 @@ export interface operations {
572590
all?: boolean;
573591
};
574592
};
575-
"application/octet-stream": unknown;
576593
};
577594
};
578595
/** @description No Content - Operation completed successfully, no data returned */
@@ -593,6 +610,49 @@ export interface operations {
593610
};
594611
};
595612
};
613+
trash_files: {
614+
parameters: {
615+
query?: {
616+
pendingOnly?: boolean;
617+
};
618+
header?: never;
619+
path?: never;
620+
cookie?: never;
621+
};
622+
requestBody?: never;
623+
responses: {
624+
/** @description Successful Response */
625+
200: {
626+
headers: {
627+
[name: string]: unknown;
628+
};
629+
content: {
630+
"application/json": {
631+
query?: {
632+
all?: boolean;
633+
};
634+
};
635+
"application/octet-stream": unknown;
636+
};
637+
};
638+
/** @description No files trashed */
639+
204: {
640+
headers: {
641+
[name: string]: unknown;
642+
};
643+
content?: never;
644+
};
645+
/** @description Internal Server Error */
646+
default: {
647+
headers: {
648+
[name: string]: unknown;
649+
};
650+
content: {
651+
"application/json": components["schemas"]["ErrorSchemaResponse"];
652+
};
653+
};
654+
};
655+
};
596656
get_file_list: {
597657
parameters: {
598658
query?: {

packages/openapi-typescript-plugin/src/__snapshots__/with-explicit-component-enum-exports.ts.snapshot.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ export interface operations {
217217
parameters: {
218218
query?: {
219219
all?: boolean;
220+
pendingOnly?: boolean;
220221
};
221222
header?: never;
222223
path?: never;
@@ -235,7 +236,6 @@ export interface operations {
235236
all?: boolean;
236237
};
237238
};
238-
"application/octet-stream": unknown;
239239
};
240240
};
241241
/** @description No Content - Operation completed successfully, no data returned */

packages/openapi-typescript-plugin/src/__snapshots__/with-explicit-component-exports.ts.snapshot.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ export interface operations {
217217
parameters: {
218218
query?: {
219219
all?: boolean;
220+
pendingOnly?: boolean;
220221
};
221222
header?: never;
222223
path?: never;
@@ -235,7 +236,6 @@ export interface operations {
235236
all?: boolean;
236237
};
237238
};
238-
"application/octet-stream": unknown;
239239
};
240240
};
241241
/** @description No Content - Operation completed successfully, no data returned */

packages/openapi-typescript-plugin/src/__snapshots__/with-extra-options.ts.snapshot.ts

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,23 @@ export interface paths {
2323
patch?: never;
2424
trace?: never;
2525
};
26+
"/files/trash": {
27+
parameters: {
28+
query?: never;
29+
header?: never;
30+
path?: never;
31+
cookie?: never;
32+
};
33+
get?: never;
34+
put?: never;
35+
post?: never;
36+
/** Trash files */
37+
delete: operations["trash_files"];
38+
options?: never;
39+
head?: never;
40+
patch?: never;
41+
trace?: never;
42+
};
2643
"/files/list": {
2744
parameters: {
2845
query?: never;
@@ -237,6 +254,7 @@ export interface operations {
237254
parameters: {
238255
query?: {
239256
all?: boolean;
257+
pendingOnly?: boolean;
240258
};
241259
header?: never;
242260
path?: never;
@@ -255,7 +273,6 @@ export interface operations {
255273
all?: boolean;
256274
};
257275
};
258-
"application/octet-stream": unknown;
259276
};
260277
};
261278
/** @description No Content - Operation completed successfully, no data returned */
@@ -276,6 +293,49 @@ export interface operations {
276293
};
277294
};
278295
};
296+
trash_files: {
297+
parameters: {
298+
query?: {
299+
pendingOnly?: boolean;
300+
};
301+
header?: never;
302+
path?: never;
303+
cookie?: never;
304+
};
305+
requestBody?: never;
306+
responses: {
307+
/** @description Successful Response */
308+
200: {
309+
headers: {
310+
[name: string]: unknown;
311+
};
312+
content: {
313+
"application/json": {
314+
query?: {
315+
all?: boolean;
316+
};
317+
};
318+
"application/octet-stream": unknown;
319+
};
320+
};
321+
/** @description No files trashed */
322+
204: {
323+
headers: {
324+
[name: string]: unknown;
325+
};
326+
content?: never;
327+
};
328+
/** @description Internal Server Error */
329+
default: {
330+
headers: {
331+
[name: string]: unknown;
332+
};
333+
content: {
334+
"application/json": components["schemas"]["ErrorSchemaResponse"];
335+
};
336+
};
337+
};
338+
};
279339
get_file_list: {
280340
parameters: {
281341
query?: {

0 commit comments

Comments
 (0)