Skip to content

Commit 0153b1a

Browse files
committed
Add support for returning null instead of undefined.
1 parent c8cf2ec commit 0153b1a

File tree

13 files changed

+37
-2
lines changed

13 files changed

+37
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ $ openapi --help
4343
--name <value> Custom client class name
4444
--useOptions Use options instead of arguments
4545
--useUnionTypes Use union types instead of enums
46+
--useNullForNoContent Use null for returning instead of undefined if a response returns 204 no content
4647
--exportCore <value> Write core files to disk (default: true)
4748
--exportServices <value> Write services to disk (default: true)
4849
--exportModels <value> Write models to disk (default: true)

bin/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ const params = program
1616
.option('--name <value>', 'Custom client class name')
1717
.option('--useOptions', 'Use options instead of arguments')
1818
.option('--useUnionTypes', 'Use union types instead of enums')
19+
.option('--useNullForNoContent', 'Use null for returning instead of undefined if a response returns 204 no content')
1920
.option('--exportCore <value>', 'Write core files to disk', true)
2021
.option('--exportServices <value>', 'Write services to disk', true)
2122
.option('--exportModels <value>', 'Write models to disk', true)
@@ -38,6 +39,7 @@ if (OpenAPI) {
3839
clientName: params.name,
3940
useOptions: params.useOptions,
4041
useUnionTypes: params.useUnionTypes,
42+
useNullForNoContent: params.useNullForNoContent,
4143
exportCore: JSON.parse(params.exportCore) === true,
4244
exportServices: JSON.parse(params.exportServices) === true,
4345
exportModels: JSON.parse(params.exportModels) === true,

bin/index.spec.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ describe('bin', () => {
2424
'fetch',
2525
'--useOptions',
2626
'--useUnionTypes',
27+
'--useNullForNoContent',
2728
'--exportCore',
2829
'true',
2930
'--exportServices',

docs/basic-usage.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ $ openapi --help
1313
--name <value> Custom client class name
1414
--useOptions Use options instead of arguments
1515
--useUnionTypes Use union types instead of enums
16+
--useNullForNoContent Use null for returning instead of undefined if a response returns 204 no content
1617
--exportCore <value> Write core files to disk (default: true)
1718
--exportServices <value> Write services to disk (default: true)
1819
--exportModels <value> Write models to disk (default: true)

src/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export type Options = {
1919
clientName?: string;
2020
useOptions?: boolean;
2121
useUnionTypes?: boolean;
22+
useNullForNoContent?: boolean;
2223
exportCore?: boolean;
2324
exportServices?: boolean;
2425
exportModels?: boolean;
@@ -40,6 +41,7 @@ export type Options = {
4041
* @param clientName Custom client class name
4142
* @param useOptions Use options or arguments functions
4243
* @param useUnionTypes Use union types instead of enums
44+
* @param useNullForNoContent Use null for no content responses
4345
* @param exportCore Generate core client classes
4446
* @param exportServices Generate services
4547
* @param exportModels Generate models
@@ -57,6 +59,7 @@ export const generate = async ({
5759
clientName,
5860
useOptions = false,
5961
useUnionTypes = false,
62+
useNullForNoContent = false,
6063
exportCore = true,
6164
exportServices = true,
6265
exportModels = true,
@@ -72,6 +75,7 @@ export const generate = async ({
7275
const templates = registerHandlebarTemplates({
7376
httpClient,
7477
useUnionTypes,
78+
useNullForNoContent,
7579
useOptions,
7680
});
7781

@@ -87,6 +91,7 @@ export const generate = async ({
8791
httpClient,
8892
useOptions,
8993
useUnionTypes,
94+
useNullForNoContent,
9095
exportCore,
9196
exportServices,
9297
exportModels,
@@ -111,6 +116,7 @@ export const generate = async ({
111116
httpClient,
112117
useOptions,
113118
useUnionTypes,
119+
useNullForNoContent,
114120
exportCore,
115121
exportServices,
116122
exportModels,

src/templates/core/angular/getResponseBody.hbs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,9 @@ const getResponseBody = <T>(response: HttpResponse<T>): T | undefined => {
22
if (response.status !== 204 && response.body !== null) {
33
return response.body;
44
}
5+
{{#if @root.useNullForNoContent}}
6+
return null;
7+
{{else}}
58
return undefined;
9+
{{/if}}
610
};

src/templates/core/axios/getResponseBody.hbs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,9 @@ const getResponseBody = (response: AxiosResponse<any>): any => {
22
if (response.status !== 204) {
33
return response.data;
44
}
5+
{{#if @root.useNullForNoContent}}
6+
return null;
7+
{{else}}
58
return undefined;
9+
{{/if}}
610
};

src/templates/core/fetch/getResponseBody.hbs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,9 @@ const getResponseBody = async (response: Response): Promise<any> => {
1515
console.error(error);
1616
}
1717
}
18+
{{#if @root.useNullForNoContent}}
19+
return null;
20+
{{else}}
1821
return undefined;
22+
{{/if}}
1923
};

src/templates/core/node/getResponseBody.hbs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,9 @@ const getResponseBody = async (response: Response): Promise<any> => {
1515
console.error(error);
1616
}
1717
}
18+
{{#if @root.useNullForNoContent}}
19+
return null;
20+
{{else}}
1821
return undefined;
22+
{{/if}}
1923
};

src/templates/core/xhr/getResponseBody.hbs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,9 @@ const getResponseBody = (xhr: XMLHttpRequest): any => {
1515
console.error(error);
1616
}
1717
}
18+
{{#if @root.useNullForNoContent}}
19+
return null;
20+
{{else}}
1821
return undefined;
22+
{{/if}}
1923
};

0 commit comments

Comments
 (0)