File tree Expand file tree Collapse file tree 1 file changed +11
-1
lines changed Expand file tree Collapse file tree 1 file changed +11
-1
lines changed Original file line number Diff line number Diff line change @@ -161,20 +161,30 @@ export class SchemaModel {
161
161
162
162
private initOneOf ( oneOf : OpenAPISchema [ ] , parser : OpenAPIParser ) {
163
163
this . oneOf = oneOf ! . map ( ( variant , idx ) => {
164
- const merged = parser . mergeAllOf ( variant , this . pointer + '/oneOf/' + idx ) ;
164
+ const derefVariant = parser . deref ( variant ) ;
165
+
166
+ const merged = parser . mergeAllOf ( derefVariant , this . pointer + '/oneOf/' + idx ) ;
167
+
168
+ // try to infer title
169
+ const title =
170
+ isNamedDefinition ( variant . $ref ) && ! merged . title
171
+ ? JsonPointer . baseName ( variant . $ref )
172
+ : merged . title ;
165
173
166
174
const schema = new SchemaModel (
167
175
parser ,
168
176
// merge base schema into each of oneOf's subschemas
169
177
{
170
178
// variant may already have allOf so merge it to not get overwritten
171
179
...merged ,
180
+ title,
172
181
allOf : [ { ...this . schema , oneOf : undefined , anyOf : undefined } ] ,
173
182
} as OpenAPISchema ,
174
183
this . pointer + '/oneOf/' + idx ,
175
184
this . options ,
176
185
) ;
177
186
187
+ parser . exitRef ( variant ) ;
178
188
// each oneOf should be independent so exiting all the parent refs
179
189
// otherwise it will cause false-positive recursive detection
180
190
parser . exitParents ( merged ) ;
You can’t perform that action at this time.
0 commit comments