@@ -43,6 +43,8 @@ public enum JSONSchemaFragment: Equatable {
43
43
GeneralContext ,
44
44
ObjectContext
45
45
)
46
+
47
+ case reference( JSONReference < JSONSchema > )
46
48
}
47
49
48
50
extension JSONSchemaFragment {
@@ -223,6 +225,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
223
225
. array( let generalContext, _) ,
224
226
. object( let generalContext, _) :
225
227
return generalContext. format
228
+ case . reference:
229
+ return nil
226
230
}
227
231
}
228
232
@@ -236,6 +240,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
236
240
. array( let generalContext, _) ,
237
241
. object( let generalContext, _) :
238
242
return generalContext. description
243
+ case . reference:
244
+ return nil
239
245
}
240
246
}
241
247
@@ -249,6 +255,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
249
255
. array( let generalContext, _) ,
250
256
. object( let generalContext, _) :
251
257
return generalContext. title
258
+ case . reference:
259
+ return nil
252
260
}
253
261
}
254
262
@@ -262,6 +270,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
262
270
. array( let generalContext, _) ,
263
271
. object( let generalContext, _) :
264
272
return generalContext. nullable
273
+ case . reference:
274
+ return nil
265
275
}
266
276
}
267
277
@@ -275,6 +285,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
275
285
. array( let generalContext, _) ,
276
286
. object( let generalContext, _) :
277
287
return generalContext. deprecated
288
+ case . reference:
289
+ return nil
278
290
}
279
291
}
280
292
@@ -288,6 +300,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
288
300
. array( let generalContext, _) ,
289
301
. object( let generalContext, _) :
290
302
return generalContext. externalDocs
303
+ case . reference:
304
+ return nil
291
305
}
292
306
}
293
307
@@ -301,6 +315,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
301
315
. array( let generalContext, _) ,
302
316
. object( let generalContext, _) :
303
317
return generalContext. allowedValues
318
+ case . reference:
319
+ return nil
304
320
}
305
321
}
306
322
@@ -314,6 +330,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
314
330
. array( let generalContext, _) ,
315
331
. object( let generalContext, _) :
316
332
return generalContext. example
333
+ case . reference:
334
+ return nil
317
335
}
318
336
}
319
337
@@ -327,6 +345,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
327
345
. array( let generalContext, _) ,
328
346
. object( let generalContext, _) :
329
347
return generalContext. readOnly
348
+ case . reference:
349
+ return nil
330
350
}
331
351
}
332
352
@@ -340,6 +360,8 @@ extension JSONSchemaFragment: JSONSchemaFragmentContext {
340
360
. array( let generalContext, _) ,
341
361
. object( let generalContext, _) :
342
362
return generalContext. writeOnly
363
+ case . reference:
364
+ return nil
343
365
}
344
366
}
345
367
}
@@ -428,6 +450,10 @@ extension JSONSchemaFragment: Encodable {
428
450
try container. encodeIfPresent ( objectContext. properties, forKey: . properties)
429
451
try container. encodeIfPresent ( objectContext. additionalProperties, forKey: . additionalProperties)
430
452
try container. encodeIfPresent ( objectContext. required, forKey: . required)
453
+ case . reference( let reference) :
454
+ var container = encoder. singleValueContainer ( )
455
+
456
+ try container. encode ( reference)
431
457
}
432
458
}
433
459
}
@@ -509,6 +535,13 @@ extension JSONSchemaFragment.ObjectContext: Decodable {
509
535
extension JSONSchemaFragment : Decodable {
510
536
public init ( from decoder: Decoder ) throws {
511
537
538
+ if let singleValueContainer = try ? decoder. singleValueContainer ( ) {
539
+ if let ref = try ? singleValueContainer. decode ( JSONReference< JSONSchema> . self ) {
540
+ self = . reference( ref)
541
+ return
542
+ }
543
+ }
544
+
512
545
let generalContext = try GeneralContext ( from: decoder)
513
546
514
547
let generalContainer = try decoder. container ( keyedBy: JSONSchemaFragment . GeneralCodingKeys. self)
0 commit comments