Skip to content

Commit 734c72c

Browse files
Merge pull request #147 from hey-api/feat/add-use-legacy-enums
feat(client): add useLegacyEnums option to generate typescript enums
2 parents 93f5481 + 3cc372e commit 734c72c

File tree

238 files changed

+4150
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

238 files changed

+4150
-0
lines changed

.changeset/nice-pots-begin.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@hey-api/openapi-ts": minor
3+
---
4+
5+
Add useLegacyEnums options to generate TypeScript enums

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ $ openapi-ts --help
189189
--postfixModels Model name postfix
190190
--request <value> Path to custom request file
191191
--useDateType <value> Output Date instead of string for the format "date-time" in the models (default: false)
192+
--useLegacyEnums Generate Typescript enum definitions (default: false)
192193
-h, --help display help for command
193194
```
194195

bin/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ const params = program
3636
.option('--request <value>', 'Path to custom request file')
3737
.option('--write', 'Write files to disk? (used for testing)')
3838
.option('--no-write', 'Skip writing files to disk (used for testing)')
39+
.option('--useLegacyEnums', 'Generate Typescript enum definitions')
3940
.parse(process.argv)
4041
.opts();
4142

src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ const getConfig = async (userConfig: UserConfig, dependencies: Dependencies) =>
114114
serviceResponse = 'body',
115115
useDateType = false,
116116
useOptions = true,
117+
useLegacyEnums = false,
117118
write = true,
118119
} = userConfig;
119120

@@ -158,6 +159,7 @@ const getConfig = async (userConfig: UserConfig, dependencies: Dependencies) =>
158159
serviceResponse,
159160
useDateType,
160161
useOptions,
162+
useLegacyEnums,
161163
write,
162164
};
163165

src/openApi/__tests__/index.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ describe('parse', () => {
2626
serviceResponse: 'body',
2727
useDateType: false,
2828
useOptions: true,
29+
useLegacyEnums: false,
2930
write: false,
3031
};
3132

src/openApi/v2/parser/__tests__/getServices.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ describe('getServices', () => {
2121
serviceResponse: 'body',
2222
useDateType: false,
2323
useOptions: true,
24+
useLegacyEnums: false,
2425
write: false,
2526
};
2627
const services = getServices(

src/openApi/v3/parser/__tests__/getServices.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ describe('getServices', () => {
2121
serviceResponse: 'body',
2222
useDateType: false,
2323
useOptions: true,
24+
useLegacyEnums: false,
2425
write: false,
2526
};
2627
const services = getServices(

src/templates/partials/exportEnum.hbs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,25 @@
99
{{/if}}
1010
*/
1111
{{/ifdef}}
12+
{{#if @root.$config.useLegacyEnums}}
13+
export enum {{{name}}} {
14+
{{#each enum}}
15+
{{#if x-enum-description}}
16+
/**
17+
* {{{escapeComment x-enum-description}}}
18+
*/
19+
{{else if description}}
20+
/**
21+
* {{{escapeComment description}}}
22+
*/
23+
{{/if}}
24+
{{{enumKey value x-enum-varname}}} = {{{enumValue value}}},
25+
{{/each}}
26+
}
27+
{{else}}
1228
export type {{{name}}} = {{{enumUnionType enum}}};
1329
{{/if}}
30+
{{/if}}
1431

1532
{{#if @root.$config.enums}}
1633
export const {{{enumName name }}} = {

src/types/config.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,11 @@ export interface UserConfig {
8989
* @default true
9090
*/
9191
useOptions?: boolean;
92+
/**
93+
* Generate Typescript enum definitions
94+
* @default false
95+
*/
96+
useLegacyEnums?: boolean;
9297
/**
9398
* Write the files to disk (true or false)
9499
* @default true

src/utils/__tests__/handlebars.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ describe('registerHandlebarHelpers', () => {
2323
serviceResponse: 'body',
2424
useDateType: false,
2525
useOptions: false,
26+
useLegacyEnums: false,
2627
write: true,
2728
},
2829
{
@@ -76,6 +77,7 @@ describe('registerHandlebarTemplates', () => {
7677
serviceResponse: 'body',
7778
useDateType: false,
7879
useOptions: false,
80+
useLegacyEnums: false,
7981
write: true,
8082
},
8183
{

0 commit comments

Comments
 (0)