@@ -123,7 +123,11 @@ async function resolveJsonRefs(specUrlOrObject: object | string) {
123
123
}
124
124
}
125
125
126
- function markCircularRefs ( obj : any , stack : any [ ] = [ ] ) : boolean | "circular" {
126
+ function markCircularRefs (
127
+ obj : any ,
128
+ stack : any [ ] = [ ] ,
129
+ key : string | undefined = undefined
130
+ ) : boolean | "circular" {
127
131
if ( ! obj || typeof obj !== "object" ) {
128
132
return false ;
129
133
}
@@ -139,23 +143,29 @@ function markCircularRefs(obj: any, stack: any[] = []): boolean | "circular" {
139
143
for ( let i = 0 ; i < obj . length ; i ++ ) {
140
144
const val = obj [ i ] ;
141
145
if ( typeof val === "object" && val !== null ) {
142
- const res = markCircularRefs ( val , stack ) ;
146
+ const res = markCircularRefs ( val , stack , String ( i ) ) ;
143
147
if ( res ) {
144
148
if ( res === "circular" ) {
145
- obj [ i ] = { title : val . title , "x-circular-ref" : true } ;
149
+ obj [ i ] = {
150
+ title : val . title ?? String ( i ) ,
151
+ "x-circular-ref" : true ,
152
+ } ;
146
153
}
147
154
foundCircular = true ;
148
155
}
149
156
}
150
157
}
151
158
} else {
152
- for ( const key of Object . keys ( obj ) ) {
153
- const val = obj [ key ] ;
159
+ for ( const k of Object . keys ( obj ) ) {
160
+ const val = obj [ k ] ;
154
161
if ( typeof val === "object" && val !== null ) {
155
- const res = markCircularRefs ( val , stack ) ;
162
+ const res = markCircularRefs ( val , stack , k ) ;
156
163
if ( res ) {
157
164
if ( res === "circular" ) {
158
- obj [ key ] = { title : val . title , "x-circular-ref" : true } ;
165
+ obj [ k ] = {
166
+ title : val . title ?? k ,
167
+ "x-circular-ref" : true ,
168
+ } ;
159
169
}
160
170
foundCircular = true ;
161
171
}
0 commit comments