@@ -109,8 +109,12 @@ export class OpenAPIParser {
109
109
* resets visited enpoints. should be run after
110
110
*/
111
111
resetVisited ( ) {
112
- for ( let k in this . _refCounter . _counter ) {
113
- if ( this . _refCounter . _counter [ k ] > 0 ) {
112
+ if ( __DEV__ ) {
113
+ // check in dev mode
114
+ for ( let k in this . _refCounter . _counter ) {
115
+ if ( this . _refCounter . _counter [ k ] > 0 ) {
116
+ console . warn ( 'Not exited reference: ' + k ) ;
117
+ }
114
118
}
115
119
}
116
120
this . _refCounter = new RefCounter ( ) ;
@@ -129,11 +133,12 @@ export class OpenAPIParser {
129
133
deref < T extends object > ( obj : OpenAPIRef | T , forceCircular : boolean = false ) : T {
130
134
if ( this . isRef ( obj ) ) {
131
135
const resolved = this . byRef < T > ( obj . $ref ) ! ;
132
- if ( this . _refCounter . visited ( obj . $ref ) && ! forceCircular ) {
136
+ const visited = this . _refCounter . visited ( obj . $ref ) ;
137
+ this . _refCounter . visit ( obj . $ref ) ;
138
+ if ( visited && ! forceCircular ) {
133
139
// circular reference detected
134
140
return Object . assign ( { } , resolved , { 'x-circular-ref' : true } ) ;
135
141
}
136
- this . _refCounter . visit ( obj . $ref ) ;
137
142
// deref again in case one more $ref is here
138
143
if ( this . isRef ( resolved ) ) {
139
144
const res = this . deref ( resolved ) ;
@@ -169,9 +174,11 @@ export class OpenAPIParser {
169
174
const allOfSchemas = schema . allOf . map ( ( subSchema , idx ) => {
170
175
const resolved = this . deref ( subSchema , forceCircular ) ;
171
176
const subRef = subSchema . $ref || $ref + '/allOf/' + idx ;
177
+ const subMerged = this . mergeAllOf ( resolved , subRef , forceCircular ) ;
178
+ receiver . namedParents ! . push ( ...( subMerged . namedParents || [ ] ) ) ;
172
179
return {
173
180
$ref : subRef ,
174
- schema : this . mergeAllOf ( resolved , subRef , forceCircular ) ,
181
+ schema : subMerged ,
175
182
} ;
176
183
} ) ;
177
184
@@ -188,7 +195,10 @@ export class OpenAPIParser {
188
195
throw new Error ( `Uncopatible types in allOf at "${ $ref } "` ) ;
189
196
}
190
197
191
- receiver . type = subSchema . type ;
198
+ if ( subSchema . type !== undefined ) {
199
+ receiver . type = subSchema . type ;
200
+ }
201
+
192
202
if ( subSchema . properties !== undefined ) {
193
203
// TODO: merge properties contents
194
204
receiver . properties = {
0 commit comments