File tree 3 files changed +75
-1
lines changed
3 files changed +75
-1
lines changed Original file line number Diff line number Diff line change
1
+ {
2
+ "type" : " object" ,
3
+ "properties" : {
4
+ "order" : {
5
+ "$ref" : " #/definitions/Order" ,
6
+ "description" : " My Order"
7
+ }
8
+ },
9
+ "definitions" : {
10
+ "Cart" : {
11
+ "type" : " object" ,
12
+ "properties" : {
13
+ "order" : {
14
+ "$ref" : " #/definitions/Order" ,
15
+ "description" : " My Order"
16
+ }
17
+ }
18
+ },
19
+ "Order" : {
20
+ "type" : " object" ,
21
+ "properties" : {
22
+ "member" : {
23
+ "$ref" : " #/definitions/Member" ,
24
+ "description" : " Member"
25
+ }
26
+ }
27
+ },
28
+ "Member" : {
29
+ "type" : " object" ,
30
+ "properties" : {
31
+ "referredMember" : {
32
+ "$ref" : " #/definitions/Member" ,
33
+ "description" : " Member"
34
+ }
35
+ }
36
+ }
37
+ }
38
+ }
Original file line number Diff line number Diff line change @@ -1279,6 +1279,36 @@ exports[`SchemaTree output should generate valid tree for references/base.json 1
1279
1279
"
1280
1280
` ;
1281
1281
1282
+ exports [` SchemaTree output should generate valid tree for references/circular-with-overrides.json 1` ] = `
1283
+ "└─ #
1284
+ ├─ types
1285
+ │ └─ 0: object
1286
+ ├─ primaryType: object
1287
+ └─ children
1288
+ └─ 0
1289
+ └─ #/properties/order
1290
+ ├─ types
1291
+ │ └─ 0: object
1292
+ ├─ primaryType: object
1293
+ └─ children
1294
+ └─ 0
1295
+ └─ #/properties/order/properties/member
1296
+ ├─ types
1297
+ │ └─ 0: object
1298
+ ├─ primaryType: object
1299
+ └─ children
1300
+ └─ 0
1301
+ └─ #/properties/order/properties/member/properties/referredMember
1302
+ ├─ types
1303
+ │ └─ 0: object
1304
+ ├─ primaryType: object
1305
+ └─ children
1306
+ └─ 0
1307
+ └─ #/properties/order/properties/member/properties/referredMember/properties/referredMember
1308
+ └─ mirrors: #/properties/order/properties/member/properties/referredMember
1309
+ "
1310
+ ` ;
1311
+
1282
1312
exports [` SchemaTree output should generate valid tree for references/nullish.json 1` ] = `
1283
1313
"└─ #
1284
1314
├─ types
Original file line number Diff line number Diff line change @@ -285,6 +285,8 @@ export class Walker extends EventEmitter<WalkerEmitter> {
285
285
return retrieved ;
286
286
}
287
287
288
+ let initialFragment : ProcessedFragment = fragment ;
289
+
288
290
if ( '$ref' in fragment ) {
289
291
if ( typeof walkingOptions . maxRefDepth === 'number' && walkingOptions . maxRefDepth < depth ) {
290
292
return [ new ReferenceNode ( fragment , `max $ref depth limit reached` ) , fragment ] ;
@@ -297,6 +299,11 @@ export class Walker extends EventEmitter<WalkerEmitter> {
297
299
if ( typeof fragment . description === 'string' ) {
298
300
newFragment = { ...newFragment } ;
299
301
Object . assign ( newFragment , { description : fragment . description } ) ;
302
+ } else {
303
+ retrieved = this . retrieveFromFragment ( newFragment , originalFragment ) ;
304
+ if ( retrieved ) {
305
+ return retrieved ;
306
+ }
300
307
}
301
308
302
309
fragment = newFragment ;
@@ -331,7 +338,6 @@ export class Walker extends EventEmitter<WalkerEmitter> {
331
338
}
332
339
}
333
340
}
334
- let initialFragment : ProcessedFragment = fragment ;
335
341
if ( walkingOptions . mergeAllOf && SchemaCombinerName . AllOf in fragment ) {
336
342
try {
337
343
if ( Array . isArray ( fragment . allOf ) ) {
You can’t perform that action at this time.
0 commit comments