@@ -237,6 +237,38 @@ public struct JSONSchema: JSONSchemaContext, HasWarnings {
237
237
238
238
}
239
239
240
+ // See `JSONSchemaContext`
241
+ public var defs : OrderedDictionary < String , JSONSchema > {
242
+ switch value {
243
+ case . null( let core) :
244
+ return core. defs
245
+ case . boolean( let core) :
246
+ return core. defs
247
+ case . number( let core, _) :
248
+ return core. defs
249
+ case . integer( let core, _) :
250
+ return core. defs
251
+ case . string( let core, _) :
252
+ return core. defs
253
+ case . object( let core, _) :
254
+ return core. defs
255
+ case . array( let core, _) :
256
+ return core. defs
257
+ case . all( of: _, core: let core) :
258
+ return core. defs
259
+ case . one( of: _, core: let core) :
260
+ return core. defs
261
+ case . any( of: _, core: let core) :
262
+ return core. defs
263
+ case . not( _, core: let core) :
264
+ return core. defs
265
+ case . reference( _, let core) :
266
+ return core. defs
267
+ case . fragment( let core) :
268
+ return core. defs
269
+ }
270
+ }
271
+
240
272
// See `JSONSchemaContext`
241
273
public var inferred : Bool {
242
274
return coreContext. inferred
@@ -1086,7 +1118,8 @@ extension JSONSchema {
1086
1118
defaultValue: AnyCodable ? = nil ,
1087
1119
examples: [ AnyCodable ] = [ ] ,
1088
1120
anchor: String ? = nil ,
1089
- dynamicAnchor: String ? = nil
1121
+ dynamicAnchor: String ? = nil ,
1122
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1090
1123
) -> JSONSchema {
1091
1124
let context = JSONSchema . CoreContext< JSONTypeFormat . BooleanFormat> (
1092
1125
format: format,
@@ -1102,7 +1135,8 @@ extension JSONSchema {
1102
1135
defaultValue: defaultValue,
1103
1136
examples: examples,
1104
1137
anchor: anchor,
1105
- dynamicAnchor: dynamicAnchor
1138
+ dynamicAnchor: dynamicAnchor,
1139
+ defs: defs
1106
1140
)
1107
1141
return . boolean( context)
1108
1142
}
@@ -1123,7 +1157,8 @@ extension JSONSchema {
1123
1157
defaultValue: AnyCodable ? = nil ,
1124
1158
examples: [ AnyCodable ] = [ ] ,
1125
1159
anchor: String ? = nil ,
1126
- dynamicAnchor: String ? = nil
1160
+ dynamicAnchor: String ? = nil ,
1161
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1127
1162
) -> JSONSchema {
1128
1163
return . boolean(
1129
1164
format: format,
@@ -1139,7 +1174,8 @@ extension JSONSchema {
1139
1174
defaultValue: defaultValue,
1140
1175
examples: examples,
1141
1176
anchor: anchor,
1142
- dynamicAnchor: dynamicAnchor
1177
+ dynamicAnchor: dynamicAnchor,
1178
+ defs: defs
1143
1179
)
1144
1180
}
1145
1181
@@ -1164,7 +1200,8 @@ extension JSONSchema {
1164
1200
defaultValue: AnyCodable ? = nil ,
1165
1201
examples: [ AnyCodable ] = [ ] ,
1166
1202
anchor: String ? = nil ,
1167
- dynamicAnchor: String ? = nil
1203
+ dynamicAnchor: String ? = nil ,
1204
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1168
1205
) -> JSONSchema {
1169
1206
let context = JSONSchema . CoreContext< JSONTypeFormat . AnyFormat> (
1170
1207
format: format,
@@ -1180,7 +1217,8 @@ extension JSONSchema {
1180
1217
defaultValue: defaultValue,
1181
1218
examples: examples,
1182
1219
anchor: anchor,
1183
- dynamicAnchor: dynamicAnchor
1220
+ dynamicAnchor: dynamicAnchor,
1221
+ defs: defs
1184
1222
)
1185
1223
return . fragment( context)
1186
1224
}
@@ -1201,7 +1239,8 @@ extension JSONSchema {
1201
1239
defaultValue: AnyCodable ? = nil ,
1202
1240
examples: [ AnyCodable ] = [ ] ,
1203
1241
anchor: String ? = nil ,
1204
- dynamicAnchor: String ? = nil
1242
+ dynamicAnchor: String ? = nil ,
1243
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1205
1244
) -> JSONSchema {
1206
1245
return . fragment(
1207
1246
format: format,
@@ -1217,7 +1256,8 @@ extension JSONSchema {
1217
1256
defaultValue: defaultValue,
1218
1257
examples: examples,
1219
1258
anchor: anchor,
1220
- dynamicAnchor: dynamicAnchor
1259
+ dynamicAnchor: dynamicAnchor,
1260
+ defs: defs
1221
1261
)
1222
1262
}
1223
1263
@@ -1250,7 +1290,8 @@ extension JSONSchema {
1250
1290
defaultValue: AnyCodable ? = nil ,
1251
1291
examples: [ AnyCodable ] = [ ] ,
1252
1292
anchor: String ? = nil ,
1253
- dynamicAnchor: String ? = nil
1293
+ dynamicAnchor: String ? = nil ,
1294
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1254
1295
) -> JSONSchema {
1255
1296
let genericContext = JSONSchema . CoreContext< JSONTypeFormat . StringFormat> (
1256
1297
format: format,
@@ -1266,7 +1307,8 @@ extension JSONSchema {
1266
1307
defaultValue: defaultValue,
1267
1308
examples: examples,
1268
1309
anchor: anchor,
1269
- dynamicAnchor: dynamicAnchor
1310
+ dynamicAnchor: dynamicAnchor,
1311
+ defs: defs
1270
1312
)
1271
1313
let stringContext = JSONSchema . StringContext (
1272
1314
maxLength: maxLength,
@@ -1299,7 +1341,8 @@ extension JSONSchema {
1299
1341
defaultValue: AnyCodable ? = nil ,
1300
1342
examples: [ AnyCodable ] = [ ] ,
1301
1343
anchor: String ? = nil ,
1302
- dynamicAnchor: String ? = nil
1344
+ dynamicAnchor: String ? = nil ,
1345
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1303
1346
) -> JSONSchema {
1304
1347
return . string(
1305
1348
format: format,
@@ -1320,7 +1363,8 @@ extension JSONSchema {
1320
1363
defaultValue: defaultValue,
1321
1364
examples: examples,
1322
1365
anchor: anchor,
1323
- dynamicAnchor: dynamicAnchor
1366
+ dynamicAnchor: dynamicAnchor,
1367
+ defs: defs
1324
1368
)
1325
1369
}
1326
1370
@@ -1348,7 +1392,8 @@ extension JSONSchema {
1348
1392
defaultValue: AnyCodable ? = nil ,
1349
1393
examples: [ AnyCodable ] = [ ] ,
1350
1394
anchor: String ? = nil ,
1351
- dynamicAnchor: String ? = nil
1395
+ dynamicAnchor: String ? = nil ,
1396
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1352
1397
) -> JSONSchema {
1353
1398
let genericContext = JSONSchema . CoreContext< JSONTypeFormat . NumberFormat> (
1354
1399
format: format,
@@ -1364,7 +1409,8 @@ extension JSONSchema {
1364
1409
defaultValue: defaultValue,
1365
1410
examples: examples,
1366
1411
anchor: anchor,
1367
- dynamicAnchor: dynamicAnchor
1412
+ dynamicAnchor: dynamicAnchor,
1413
+ defs: defs
1368
1414
)
1369
1415
let numbericContext = JSONSchema . NumericContext (
1370
1416
multipleOf: multipleOf,
@@ -1393,7 +1439,8 @@ extension JSONSchema {
1393
1439
defaultValue: AnyCodable ? = nil ,
1394
1440
examples: [ AnyCodable ] = [ ] ,
1395
1441
anchor: String ? = nil ,
1396
- dynamicAnchor: String ? = nil
1442
+ dynamicAnchor: String ? = nil ,
1443
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1397
1444
) -> JSONSchema {
1398
1445
return . number(
1399
1446
format: format,
@@ -1412,7 +1459,8 @@ extension JSONSchema {
1412
1459
defaultValue: defaultValue,
1413
1460
examples: examples,
1414
1461
anchor: anchor,
1415
- dynamicAnchor: dynamicAnchor
1462
+ dynamicAnchor: dynamicAnchor,
1463
+ defs: defs
1416
1464
)
1417
1465
}
1418
1466
@@ -1440,7 +1488,8 @@ extension JSONSchema {
1440
1488
defaultValue: AnyCodable ? = nil ,
1441
1489
examples: [ AnyCodable ] = [ ] ,
1442
1490
anchor: String ? = nil ,
1443
- dynamicAnchor: String ? = nil
1491
+ dynamicAnchor: String ? = nil ,
1492
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1444
1493
) -> JSONSchema {
1445
1494
let genericContext = JSONSchema . CoreContext< JSONTypeFormat . IntegerFormat> (
1446
1495
format: format,
@@ -1456,7 +1505,8 @@ extension JSONSchema {
1456
1505
defaultValue: defaultValue,
1457
1506
examples: examples,
1458
1507
anchor: anchor,
1459
- dynamicAnchor: dynamicAnchor
1508
+ dynamicAnchor: dynamicAnchor,
1509
+ defs: defs
1460
1510
)
1461
1511
let integerContext = JSONSchema . IntegerContext (
1462
1512
multipleOf: multipleOf,
@@ -1485,7 +1535,8 @@ extension JSONSchema {
1485
1535
defaultValue: AnyCodable ? = nil ,
1486
1536
examples: [ AnyCodable ] = [ ] ,
1487
1537
anchor: String ? = nil ,
1488
- dynamicAnchor: String ? = nil
1538
+ dynamicAnchor: String ? = nil ,
1539
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1489
1540
) -> JSONSchema {
1490
1541
return . integer(
1491
1542
format: format,
@@ -1504,7 +1555,8 @@ extension JSONSchema {
1504
1555
defaultValue: defaultValue,
1505
1556
examples: examples,
1506
1557
anchor: anchor,
1507
- dynamicAnchor: dynamicAnchor
1558
+ dynamicAnchor: dynamicAnchor,
1559
+ defs: defs
1508
1560
)
1509
1561
}
1510
1562
@@ -1533,7 +1585,8 @@ extension JSONSchema {
1533
1585
defaultValue: AnyCodable ? = nil ,
1534
1586
examples: [ AnyCodable ] = [ ] ,
1535
1587
anchor: String ? = nil ,
1536
- dynamicAnchor: String ? = nil
1588
+ dynamicAnchor: String ? = nil ,
1589
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1537
1590
) -> JSONSchema {
1538
1591
let coreContext = JSONSchema . CoreContext< JSONTypeFormat . ObjectFormat> (
1539
1592
format: format,
@@ -1549,7 +1602,8 @@ extension JSONSchema {
1549
1602
defaultValue: defaultValue,
1550
1603
examples: examples,
1551
1604
anchor: anchor,
1552
- dynamicAnchor: dynamicAnchor
1605
+ dynamicAnchor: dynamicAnchor,
1606
+ defs: defs
1553
1607
)
1554
1608
let objectContext = JSONSchema . ObjectContext (
1555
1609
properties: properties,
@@ -1585,7 +1639,8 @@ extension JSONSchema {
1585
1639
defaultValue: AnyCodable ? = nil ,
1586
1640
examples: [ AnyCodable ] = [ ] ,
1587
1641
anchor: String ? = nil ,
1588
- dynamicAnchor: String ? = nil
1642
+ dynamicAnchor: String ? = nil ,
1643
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1589
1644
) -> JSONSchema {
1590
1645
let coreContext = JSONSchema . CoreContext< JSONTypeFormat . ArrayFormat> (
1591
1646
format: format,
@@ -1601,7 +1656,8 @@ extension JSONSchema {
1601
1656
defaultValue: defaultValue,
1602
1657
examples: examples,
1603
1658
anchor: anchor,
1604
- dynamicAnchor: dynamicAnchor
1659
+ dynamicAnchor: dynamicAnchor,
1660
+ defs: defs
1605
1661
)
1606
1662
1607
1663
let arrayContext = JSONSchema . ArrayContext (
@@ -1635,7 +1691,8 @@ extension JSONSchema {
1635
1691
description: String ? = nil ,
1636
1692
discriminator: OpenAPI . Discriminator ? = nil ,
1637
1693
anchor: String ? = nil ,
1638
- dynamicAnchor: String ? = nil
1694
+ dynamicAnchor: String ? = nil ,
1695
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1639
1696
) -> JSONSchema {
1640
1697
return . all(
1641
1698
of: schemas,
@@ -1645,7 +1702,8 @@ extension JSONSchema {
1645
1702
description: description,
1646
1703
discriminator: discriminator,
1647
1704
anchor: anchor,
1648
- dynamicAnchor: dynamicAnchor
1705
+ dynamicAnchor: dynamicAnchor,
1706
+ defs: defs
1649
1707
)
1650
1708
)
1651
1709
}
@@ -1667,7 +1725,8 @@ extension JSONSchema {
1667
1725
description: String ? = nil ,
1668
1726
discriminator: OpenAPI . Discriminator ? = nil ,
1669
1727
anchor: String ? = nil ,
1670
- dynamicAnchor: String ? = nil
1728
+ dynamicAnchor: String ? = nil ,
1729
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1671
1730
) -> JSONSchema {
1672
1731
return . one(
1673
1732
of: schemas,
@@ -1677,7 +1736,8 @@ extension JSONSchema {
1677
1736
description: description,
1678
1737
discriminator: discriminator,
1679
1738
anchor: anchor,
1680
- dynamicAnchor: dynamicAnchor
1739
+ dynamicAnchor: dynamicAnchor,
1740
+ defs: defs
1681
1741
)
1682
1742
)
1683
1743
}
@@ -1699,7 +1759,8 @@ extension JSONSchema {
1699
1759
description: String ? = nil ,
1700
1760
discriminator: OpenAPI . Discriminator ? = nil ,
1701
1761
anchor: String ? = nil ,
1702
- dynamicAnchor: String ? = nil
1762
+ dynamicAnchor: String ? = nil ,
1763
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1703
1764
) -> JSONSchema {
1704
1765
return . any(
1705
1766
of: schemas,
@@ -1709,7 +1770,8 @@ extension JSONSchema {
1709
1770
description: description,
1710
1771
discriminator: discriminator,
1711
1772
anchor: anchor,
1712
- dynamicAnchor: dynamicAnchor
1773
+ dynamicAnchor: dynamicAnchor,
1774
+ defs: defs
1713
1775
)
1714
1776
)
1715
1777
}
@@ -1728,7 +1790,8 @@ extension JSONSchema {
1728
1790
description: String ? = nil ,
1729
1791
discriminator: OpenAPI . Discriminator ? = nil ,
1730
1792
anchor: String ? = nil ,
1731
- dynamicAnchor: String ? = nil
1793
+ dynamicAnchor: String ? = nil ,
1794
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1732
1795
) -> JSONSchema {
1733
1796
return . not(
1734
1797
schema,
@@ -1738,7 +1801,8 @@ extension JSONSchema {
1738
1801
description: description,
1739
1802
discriminator: discriminator,
1740
1803
anchor: anchor,
1741
- dynamicAnchor: dynamicAnchor
1804
+ dynamicAnchor: dynamicAnchor,
1805
+ defs: defs
1742
1806
)
1743
1807
)
1744
1808
}
@@ -1750,11 +1814,12 @@ extension JSONSchema {
1750
1814
title: String ? = nil ,
1751
1815
description: String ? = nil ,
1752
1816
anchor: String ? = nil ,
1753
- dynamicAnchor: String ? = nil
1817
+ dynamicAnchor: String ? = nil ,
1818
+ defs: OrderedDictionary < String , JSONSchema > = [ : ]
1754
1819
) -> JSONSchema {
1755
1820
return . reference(
1756
1821
reference,
1757
- . init( required: required, title: title, description: description, anchor: anchor, dynamicAnchor: dynamicAnchor)
1822
+ . init( required: required, title: title, description: description, anchor: anchor, dynamicAnchor: dynamicAnchor, defs : defs )
1758
1823
)
1759
1824
}
1760
1825
}
0 commit comments