Skip to content

Commit 4685367

Browse files
committed
fix: Circular references
1 parent 203c015 commit 4685367

37 files changed

Lines changed: 836 additions & 578 deletions

example/generated/SwaggerPetstoreServer.generated.ts

Lines changed: 102 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -525,23 +525,16 @@ export class ControllerMiddleware {
525525

526526
ControllerMiddleware.validate({
527527
body: {
528-
anyOf: [
529-
{
528+
$ref: '#/definitions/Pet',
529+
definitions: {
530+
Pet: {
530531
type: 'object',
531532
required: ['name', 'photoUrls'],
532533
xml: { name: 'Pet' },
533534
title: 'Pet',
534535
properties: {
535536
id: { type: 'integer', format: 'int64' },
536-
category: {
537-
type: 'object',
538-
xml: { name: 'Category' },
539-
title: 'Category',
540-
properties: {
541-
id: { type: 'integer', format: 'int64' },
542-
name: { type: 'string' }
543-
}
544-
},
537+
category: { $ref: '#/definitions/Category' },
545538
name: { type: 'string', example: 'doggie' },
546539
photoUrls: {
547540
type: 'array',
@@ -551,24 +544,34 @@ export class ControllerMiddleware {
551544
tags: {
552545
type: 'array',
553546
xml: { wrapped: true },
554-
items: {
555-
type: 'object',
556-
properties: {
557-
id: { type: 'integer', format: 'int64' },
558-
name: { type: 'string' }
559-
},
560-
xml: { name: 'Tag' },
561-
title: 'Tag'
562-
}
547+
items: { xml: { name: 'tag' }, $ref: '#/definitions/Tag' }
563548
},
564549
status: {
565550
type: 'string',
566551
description: 'pet status in the store',
567552
enum: ['available', 'pending', 'sold']
568553
}
569554
}
555+
},
556+
Category: {
557+
type: 'object',
558+
xml: { name: 'Category' },
559+
title: 'Category',
560+
properties: {
561+
id: { type: 'integer', format: 'int64' },
562+
name: { type: 'string' }
563+
}
564+
},
565+
Tag: {
566+
type: 'object',
567+
xml: { name: 'Tag' },
568+
title: 'Tag',
569+
properties: {
570+
id: { type: 'integer', format: 'int64' },
571+
name: { type: 'string' }
572+
}
570573
}
571-
]
574+
}
572575
}
573576
}),
574577

@@ -590,23 +593,16 @@ export class ControllerMiddleware {
590593

591594
ControllerMiddleware.validate({
592595
body: {
593-
anyOf: [
594-
{
596+
$ref: '#/definitions/Pet',
597+
definitions: {
598+
Pet: {
595599
type: 'object',
596600
required: ['name', 'photoUrls'],
597601
xml: { name: 'Pet' },
598602
title: 'Pet',
599603
properties: {
600604
id: { type: 'integer', format: 'int64' },
601-
category: {
602-
type: 'object',
603-
xml: { name: 'Category' },
604-
title: 'Category',
605-
properties: {
606-
id: { type: 'integer', format: 'int64' },
607-
name: { type: 'string' }
608-
}
609-
},
605+
category: { $ref: '#/definitions/Category' },
610606
name: { type: 'string', example: 'doggie' },
611607
photoUrls: {
612608
type: 'array',
@@ -616,24 +612,34 @@ export class ControllerMiddleware {
616612
tags: {
617613
type: 'array',
618614
xml: { wrapped: true },
619-
items: {
620-
type: 'object',
621-
properties: {
622-
id: { type: 'integer', format: 'int64' },
623-
name: { type: 'string' }
624-
},
625-
xml: { name: 'Tag' },
626-
title: 'Tag'
627-
}
615+
items: { xml: { name: 'tag' }, $ref: '#/definitions/Tag' }
628616
},
629617
status: {
630618
type: 'string',
631619
description: 'pet status in the store',
632620
enum: ['available', 'pending', 'sold']
633621
}
634622
}
623+
},
624+
Category: {
625+
type: 'object',
626+
xml: { name: 'Category' },
627+
title: 'Category',
628+
properties: {
629+
id: { type: 'integer', format: 'int64' },
630+
name: { type: 'string' }
631+
}
632+
},
633+
Tag: {
634+
type: 'object',
635+
xml: { name: 'Tag' },
636+
title: 'Tag',
637+
properties: {
638+
id: { type: 'integer', format: 'int64' },
639+
name: { type: 'string' }
640+
}
635641
}
636-
]
642+
}
637643
}
638644
}),
639645

@@ -832,8 +838,9 @@ export class ControllerMiddleware {
832838

833839
ControllerMiddleware.validate({
834840
body: {
835-
anyOf: [
836-
{
841+
$ref: '#/definitions/Order',
842+
definitions: {
843+
Order: {
837844
type: 'object',
838845
xml: { name: 'Order' },
839846
title: 'Order',
@@ -850,7 +857,7 @@ export class ControllerMiddleware {
850857
complete: { type: 'boolean' }
851858
}
852859
}
853-
]
860+
}
854861
}
855862
}),
856863

@@ -951,30 +958,29 @@ export class ControllerMiddleware {
951958

952959
ControllerMiddleware.validate({
953960
body: {
954-
anyOf: [
955-
{
956-
type: 'array',
957-
items: {
958-
type: 'object',
959-
properties: {
960-
id: { type: 'integer', format: 'int64' },
961-
username: { type: 'string' },
962-
firstName: { type: 'string' },
963-
lastName: { type: 'string' },
964-
email: { type: 'string' },
965-
password: { type: 'string' },
966-
phone: { type: 'string' },
967-
userStatus: {
968-
type: 'integer',
969-
format: 'int32',
970-
description: 'User Status'
971-
}
972-
},
973-
xml: { name: 'User' },
974-
title: 'user'
961+
type: 'array',
962+
items: { $ref: '#/definitions/user' },
963+
definitions: {
964+
user: {
965+
type: 'object',
966+
xml: { name: 'User' },
967+
title: 'user',
968+
properties: {
969+
id: { type: 'integer', format: 'int64' },
970+
username: { type: 'string' },
971+
firstName: { type: 'string' },
972+
lastName: { type: 'string' },
973+
email: { type: 'string' },
974+
password: { type: 'string' },
975+
phone: { type: 'string' },
976+
userStatus: {
977+
type: 'integer',
978+
format: 'int32',
979+
description: 'User Status'
980+
}
975981
}
976982
}
977-
]
983+
}
978984
}
979985
}),
980986

@@ -999,30 +1005,29 @@ export class ControllerMiddleware {
9991005

10001006
ControllerMiddleware.validate({
10011007
body: {
1002-
anyOf: [
1003-
{
1004-
type: 'array',
1005-
items: {
1006-
type: 'object',
1007-
properties: {
1008-
id: { type: 'integer', format: 'int64' },
1009-
username: { type: 'string' },
1010-
firstName: { type: 'string' },
1011-
lastName: { type: 'string' },
1012-
email: { type: 'string' },
1013-
password: { type: 'string' },
1014-
phone: { type: 'string' },
1015-
userStatus: {
1016-
type: 'integer',
1017-
format: 'int32',
1018-
description: 'User Status'
1019-
}
1020-
},
1021-
xml: { name: 'User' },
1022-
title: 'user'
1008+
type: 'array',
1009+
items: { $ref: '#/definitions/user' },
1010+
definitions: {
1011+
user: {
1012+
type: 'object',
1013+
xml: { name: 'User' },
1014+
title: 'user',
1015+
properties: {
1016+
id: { type: 'integer', format: 'int64' },
1017+
username: { type: 'string' },
1018+
firstName: { type: 'string' },
1019+
lastName: { type: 'string' },
1020+
email: { type: 'string' },
1021+
password: { type: 'string' },
1022+
phone: { type: 'string' },
1023+
userStatus: {
1024+
type: 'integer',
1025+
format: 'int32',
1026+
description: 'User Status'
1027+
}
10231028
}
10241029
}
1025-
]
1030+
}
10261031
}
10271032
}),
10281033

@@ -1079,8 +1084,9 @@ export class ControllerMiddleware {
10791084

10801085
ControllerMiddleware.validate({
10811086
body: {
1082-
anyOf: [
1083-
{
1087+
$ref: '#/definitions/user',
1088+
definitions: {
1089+
user: {
10841090
type: 'object',
10851091
xml: { name: 'User' },
10861092
title: 'user',
@@ -1099,7 +1105,7 @@ export class ControllerMiddleware {
10991105
}
11001106
}
11011107
}
1102-
]
1108+
}
11031109
},
11041110

11051111
params: {
@@ -1210,8 +1216,9 @@ export class ControllerMiddleware {
12101216

12111217
ControllerMiddleware.validate({
12121218
body: {
1213-
anyOf: [
1214-
{
1219+
$ref: '#/definitions/user',
1220+
definitions: {
1221+
user: {
12151222
type: 'object',
12161223
xml: { name: 'User' },
12171224
title: 'user',
@@ -1230,7 +1237,7 @@ export class ControllerMiddleware {
12301237
}
12311238
}
12321239
}
1233-
]
1240+
}
12341241
}
12351242
}),
12361243

0 commit comments

Comments
 (0)