Skip to content

Commit 1b82dee

Browse files
author
Ferdi Koomen
committed
Merge branch 'master' into feature/test
# Conflicts: # src/openApi/v3/parser/getOperationResponse.ts
2 parents 433b4f1 + eac474c commit 1b82dee

File tree

6 files changed

+43
-15
lines changed

6 files changed

+43
-15
lines changed

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.11.1",
3+
"version": "0.11.2",
44
"description": "Library that generates Typescript clients based on the OpenAPI specification.",
55
"author": "Ferdi Koomen",
66
"homepage": "https://github.com/ferdikoomen/openapi-typescript-codegen",

src/openApi/v2/parser/getOperationParameter.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ import type { OperationParameter } from '../../../client/interfaces/OperationPar
22
import { getPattern } from '../../../utils/getPattern';
33
import type { OpenApi } from '../interfaces/OpenApi';
44
import type { OpenApiParameter } from '../interfaces/OpenApiParameter';
5+
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
56
import { extendEnum } from './extendEnum';
67
import { getComment } from './getComment';
78
import { getEnum } from './getEnum';
89
import { getEnumFromDescription } from './getEnumFromDescription';
910
import { getModel } from './getModel';
1011
import { getOperationParameterDefault } from './getOperationParameterDefault';
1112
import { getOperationParameterName } from './getOperationParameterName';
13+
import { getRef } from './getRef';
1214
import { getType } from './getType';
1315

1416
export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParameter): OperationParameter {
@@ -103,9 +105,13 @@ export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParame
103105
return operationParameter;
104106
}
105107

106-
if (parameter.schema) {
107-
if (parameter.schema.$ref) {
108-
const model = getType(parameter.schema.$ref);
108+
let schema = parameter.schema;
109+
if (schema) {
110+
if (schema.$ref?.startsWith('#/parameters/')) {
111+
schema = getRef<OpenApiSchema>(openApi, schema);
112+
}
113+
if (schema.$ref) {
114+
const model = getType(schema.$ref);
109115
operationParameter.export = 'reference';
110116
operationParameter.type = model.type;
111117
operationParameter.base = model.base;
@@ -114,7 +120,7 @@ export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParame
114120
operationParameter.default = getOperationParameterDefault(parameter, operationParameter);
115121
return operationParameter;
116122
} else {
117-
const model = getModel(openApi, parameter.schema);
123+
const model = getModel(openApi, schema);
118124
operationParameter.export = model.export;
119125
operationParameter.type = model.type;
120126
operationParameter.base = model.base;

src/openApi/v2/parser/getOperationResponse.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ import type { OperationResponse } from '../../../client/interfaces/OperationResp
22
import { getPattern } from '../../../utils/getPattern';
33
import type { OpenApi } from '../interfaces/OpenApi';
44
import type { OpenApiResponse } from '../interfaces/OpenApiResponse';
5+
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
56
import { getComment } from './getComment';
67
import { getModel } from './getModel';
8+
import { getRef } from './getRef';
79
import { getType } from './getType';
810

911
export function getOperationResponse(
@@ -35,17 +37,21 @@ export function getOperationResponse(
3537
// if this is a reference then the parameter is just the 'name' of
3638
// this reference type. Otherwise it might be a complex schema and
3739
// then we need to parse the schema!
38-
if (response.schema) {
39-
if (response.schema.$ref) {
40-
const model = getType(response.schema.$ref);
40+
let schema = response.schema;
41+
if (schema) {
42+
if (schema.$ref?.startsWith('#/responses/')) {
43+
schema = getRef<OpenApiSchema>(openApi, schema);
44+
}
45+
if (schema.$ref) {
46+
const model = getType(schema.$ref);
4147
operationResponse.export = 'reference';
4248
operationResponse.type = model.type;
4349
operationResponse.base = model.base;
4450
operationResponse.template = model.template;
4551
operationResponse.imports.push(...model.imports);
4652
return operationResponse;
4753
} else {
48-
const model = getModel(openApi, response.schema);
54+
const model = getModel(openApi, schema);
4955
operationResponse.export = model.export;
5056
operationResponse.type = model.type;
5157
operationResponse.base = model.base;

src/openApi/v3/parser/getOperationParameter.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@ import type { OperationParameter } from '../../../client/interfaces/OperationPar
22
import { getPattern } from '../../../utils/getPattern';
33
import type { OpenApi } from '../interfaces/OpenApi';
44
import type { OpenApiParameter } from '../interfaces/OpenApiParameter';
5+
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
56
import { getComment } from './getComment';
67
import { getModel } from './getModel';
78
import { getModelDefault } from './getModelDefault';
89
import { getOperationParameterName } from './getOperationParameterName';
10+
import { getRef } from './getRef';
911
import { getType } from './getType';
1012

1113
export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParameter): OperationParameter {
@@ -40,18 +42,22 @@ export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParame
4042
return operationParameter;
4143
}
4244

43-
if (parameter.schema) {
44-
if (parameter.schema.$ref) {
45-
const model = getType(parameter.schema.$ref);
45+
let schema = parameter.schema;
46+
if (schema) {
47+
if (schema.$ref?.startsWith('#/components/parameters/')) {
48+
schema = getRef<OpenApiSchema>(openApi, schema);
49+
}
50+
if (schema.$ref) {
51+
const model = getType(schema.$ref);
4652
operationParameter.export = 'reference';
4753
operationParameter.type = model.type;
4854
operationParameter.base = model.base;
4955
operationParameter.template = model.template;
5056
operationParameter.imports.push(...model.imports);
51-
operationParameter.default = getModelDefault(parameter.schema);
57+
operationParameter.default = getModelDefault(schema);
5258
return operationParameter;
5359
} else {
54-
const model = getModel(openApi, parameter.schema);
60+
const model = getModel(openApi, schema);
5561
operationParameter.export = model.export;
5662
operationParameter.type = model.type;
5763
operationParameter.base = model.base;

src/openApi/v3/parser/getOperationResponse.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ import type { OperationResponse } from '../../../client/interfaces/OperationResp
22
import { getPattern } from '../../../utils/getPattern';
33
import type { OpenApi } from '../interfaces/OpenApi';
44
import type { OpenApiResponse } from '../interfaces/OpenApiResponse';
5+
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
56
import { getComment } from './getComment';
67
import { getContent } from './getContent';
78
import { getModel } from './getModel';
9+
import { getRef } from './getRef';
810
import { getType } from './getType';
911

1012
export function getOperationResponse(
@@ -35,6 +37,9 @@ export function getOperationResponse(
3537
if (response.content) {
3638
const content = getContent(openApi, response.content);
3739
if (content) {
40+
if (content.schema.$ref?.startsWith('#/components/responses/')) {
41+
content.schema = getRef<OpenApiSchema>(openApi, content.schema);
42+
}
3843
if (content.schema.$ref) {
3944
const model = getType(content.schema.$ref);
4045
operationResponse.export = 'reference';

yarn.lock

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1363,6 +1363,11 @@
13631363
jest-diff "^27.0.0"
13641364
pretty-format "^27.0.0"
13651365

1366+
1367+
version "4.0.4"
1368+
resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.4.tgz#cc38781257612581a1a0eb25f1709d2b06812fce"
1369+
integrity sha512-AuHubXUmg0AzkXH0Mx6sIxeY/1C110mm/EkE/gB1sTRz3h2dao2W/63q42SlVST+lICxz5Oki2hzYA6+KnnieQ==
1370+
13661371
"@types/json-schema@^7.0.6", "@types/json-schema@^7.0.9":
13671372
version "7.0.9"
13681373
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
@@ -3534,7 +3539,7 @@ [email protected], js-yaml@^3.13.1:
35343539
argparse "^1.0.7"
35353540
esprima "^4.0.0"
35363541

3537-
js-yaml@^4.1.0:
3542+
js-yaml@4.1.0, js-yaml@^4.1.0:
35383543
version "4.1.0"
35393544
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
35403545
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==

0 commit comments

Comments
 (0)