Skip to content

Commit e9cfa38

Browse files
authored
Merge pull request Kimiyori#4 from Kimiyori/fix-default-value-for-enum
fix default value for enum
2 parents 325df4e + 44bcb8b commit e9cfa38

File tree

7 files changed

+17
-7
lines changed

7 files changed

+17
-7
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "openapi-typescript-codegen",
3-
"version": "0.27.2",
3+
"version": "0.27.3",
44
"description": "Library that generates Typescript clients based on the OpenAPI specification.",
55
"homepage": "https://github.com/kimiyori/openapi-typescript-codegen",
66
"license": "MIT",

src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ export const generate = async ({
7474
useUnionTypes,
7575
useOptions,
7676
});
77-
7877
switch (openApiVersion) {
7978
case OpenApiVersion.V2: {
8079
const client = parseV2(openApi);

src/openApi/v3/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { Client } from '../../client/interfaces/Client';
2+
import { Model } from '../../client/interfaces/Model';
23
import type { OpenApi } from './interfaces/OpenApi';
34
import { getModels } from './parser/getModels';
45
import { getServer } from './parser/getServer';
@@ -10,10 +11,11 @@ import { getServiceVersion } from './parser/getServiceVersion';
1011
* all the models, services and schema's we should output.
1112
* @param openApi The OpenAPI spec that we have loaded from disk.
1213
*/
14+
export let models: Model[] = [];
1315
export const parse = (openApi: OpenApi): Client => {
1416
const version = getServiceVersion(openApi.info.version);
1517
const server = getServer(openApi);
16-
const models = getModels(openApi);
18+
models = getModels(openApi);
1719
const services = getServices(openApi);
1820

1921
return { version, server, models, services };

src/openApi/v3/parser/getModelDefault.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { Model } from '../../../client/interfaces/Model';
2+
import { models } from '..';
23
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
34

45
export const getModelDefault = (definition: OpenApiSchema, model?: Model): string | undefined => {
@@ -25,6 +26,14 @@ export const getModelDefault = (definition: OpenApiSchema, model?: Model): strin
2526
return JSON.stringify(definition.default);
2627

2728
case 'string':
29+
const modelName = definition.$ref?.split('/').pop();
30+
const foundModel = models.find(m => m.name === modelName);
31+
if (foundModel) {
32+
const foundDefault = foundModel.enum.find(en => en.value === `'${definition.default}'`);
33+
if (foundDefault) {
34+
return `${modelName}.${foundDefault.name.replace(/^'(.*)'$/, '$1')}`;
35+
}
36+
}
2837
return `'${definition.default}'`;
2938

3039
case 'object':

src/templates/exportService.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import type { Observable } from 'rxjs';
1313
{{/equals}}
1414
{{#if imports}}
1515
{{#each imports}}
16-
import type { {{{this}}} } from '../models/{{{this}}}';
16+
import { {{{this}}} } from '../models/{{{this}}}';
1717
{{/each}}
1818

1919
{{/if}}

src/utils/registerHandlebarHelpers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import { EOL } from 'os';
44

55
import type { Enum } from '../client/interfaces/Enum';
66
import type { Model } from '../client/interfaces/Model';
7+
import { OperationParameter } from '../client/interfaces/OperationParameter';
78
import type { HttpClient } from '../HttpClient';
89
import { unique } from './unique';
9-
import { OperationParameter } from '../client/interfaces/OperationParameter';
1010

1111
export const registerHandlebarHelpers = (root: {
1212
httpClient: HttpClient;

0 commit comments

Comments
 (0)