@@ -10,6 +10,7 @@ import {
10
10
TypeSpecOperationParameter ,
11
11
TypeSpecRequestBody ,
12
12
} from "../interfaces.js" ;
13
+ import { Context } from "../utils/context.js" ;
13
14
import { getExtensions , getParameterDecorators } from "../utils/decorators.js" ;
14
15
import { getScopeAndName } from "../utils/get-scope-and-name.js" ;
15
16
import { supportedHttpMethods } from "../utils/supported-http-methods.js" ;
@@ -20,7 +21,10 @@ import { supportedHttpMethods } from "../utils/supported-http-methods.js";
20
21
* @param paths
21
22
* @returns
22
23
*/
23
- export function transformPaths ( paths : Record < string , OpenAPI3PathItem > ) : TypeSpecOperation [ ] {
24
+ export function transformPaths (
25
+ paths : Record < string , OpenAPI3PathItem > ,
26
+ context : Context ,
27
+ ) : TypeSpecOperation [ ] {
24
28
const operations : TypeSpecOperation [ ] = [ ] ;
25
29
26
30
for ( const route of Object . keys ( paths ) ) {
@@ -51,7 +55,7 @@ export function transformPaths(paths: Record<string, OpenAPI3PathItem>): TypeSpe
51
55
parameters : dedupeParameters ( [ ...routeParameters , ...parameters ] ) ,
52
56
doc : operation . description ,
53
57
operationId : operation . operationId ,
54
- requestBodies : transformRequestBodies ( operation . requestBody ) ,
58
+ requestBodies : transformRequestBodies ( operation . requestBody , context ) ,
55
59
responses : operationResponses ,
56
60
tags : tags ,
57
61
} ) ;
@@ -102,7 +106,20 @@ function transformOperationParameter(
102
106
} ;
103
107
}
104
108
105
- function transformRequestBodies ( requestBodies ?: OpenAPI3RequestBody ) : TypeSpecRequestBody [ ] {
109
+ function transformRequestBodies (
110
+ requestBodies : Refable < OpenAPI3RequestBody > | undefined ,
111
+ context : Context ,
112
+ ) : TypeSpecRequestBody [ ] {
113
+ if ( ! requestBodies ) {
114
+ return [ ] ;
115
+ }
116
+
117
+ const description = requestBodies . description ;
118
+
119
+ if ( "$ref" in requestBodies ) {
120
+ requestBodies = context . getByRef < OpenAPI3RequestBody > ( requestBodies . $ref ) ;
121
+ }
122
+
106
123
if ( ! requestBodies ) {
107
124
return [ ] ;
108
125
}
@@ -113,7 +130,7 @@ function transformRequestBodies(requestBodies?: OpenAPI3RequestBody): TypeSpecRe
113
130
typespecBodies . push ( {
114
131
contentType,
115
132
isOptional : ! requestBodies . required ,
116
- doc : requestBodies . description ,
133
+ doc : description ?? requestBodies . description ,
117
134
encoding : contentBody . encoding ,
118
135
schema : contentBody . schema ,
119
136
} ) ;
0 commit comments