apiwork 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/lib/apiwork/adapter/serializer/error/default/api_builder.rb +6 -1
  3. data/lib/apiwork/adapter/serializer/resource/default/contract_builder.rb +2 -0
  4. data/lib/apiwork/adapter/standard/capability/writing/contract_builder.rb +1 -0
  5. data/lib/apiwork/api/base.rb +31 -0
  6. data/lib/apiwork/api/object.rb +12 -12
  7. data/lib/apiwork/contract/object.rb +74 -74
  8. data/lib/apiwork/controller.rb +6 -2
  9. data/lib/apiwork/export/apiwork.rb +20 -0
  10. data/lib/apiwork/export/apiwork_mapper.rb +232 -0
  11. data/lib/apiwork/export/open_api.rb +2 -0
  12. data/lib/apiwork/export/registry.rb +1 -1
  13. data/lib/apiwork/export/sorbus.rb +1 -5
  14. data/lib/apiwork/export/type_script.rb +1 -4
  15. data/lib/apiwork/export/type_script_mapper.rb +12 -4
  16. data/lib/apiwork/export/zod.rb +0 -9
  17. data/lib/apiwork/export/zod_mapper.rb +22 -1
  18. data/lib/apiwork/export.rb +1 -0
  19. data/lib/apiwork/introspection/api/resource.rb +9 -0
  20. data/lib/apiwork/introspection/dump/param.rb +9 -10
  21. data/lib/apiwork/introspection/dump/resource.rb +3 -1
  22. data/lib/apiwork/introspection/dump/type.rb +15 -4
  23. data/lib/apiwork/introspection/enum.rb +9 -0
  24. data/lib/apiwork/introspection/param/array.rb +3 -0
  25. data/lib/apiwork/introspection/param/base.rb +11 -0
  26. data/lib/apiwork/introspection/param/binary.rb +3 -0
  27. data/lib/apiwork/introspection/param/boolean.rb +3 -0
  28. data/lib/apiwork/introspection/param/date.rb +3 -0
  29. data/lib/apiwork/introspection/param/date_time.rb +3 -0
  30. data/lib/apiwork/introspection/param/decimal.rb +3 -0
  31. data/lib/apiwork/introspection/param/integer.rb +3 -0
  32. data/lib/apiwork/introspection/param/number.rb +3 -0
  33. data/lib/apiwork/introspection/param/record.rb +3 -0
  34. data/lib/apiwork/introspection/param/string.rb +3 -0
  35. data/lib/apiwork/introspection/param/time.rb +3 -0
  36. data/lib/apiwork/introspection/param/uuid.rb +3 -0
  37. data/lib/apiwork/introspection/type.rb +9 -0
  38. data/lib/apiwork/issue.rb +1 -1
  39. data/lib/apiwork/object.rb +99 -99
  40. data/lib/apiwork/reference_generator.rb +43 -0
  41. data/lib/apiwork/representation/attribute.rb +98 -2
  42. data/lib/apiwork/representation/base.rb +9 -0
  43. data/lib/apiwork/representation/serializer.rb +2 -0
  44. data/lib/apiwork/version.rb +1 -1
  45. data/lib/apiwork.rb +4 -0
  46. metadata +4 -3
  47. data/lib/apiwork/export/builder_mapper.rb +0 -184
@@ -61,8 +61,8 @@ module Apiwork
61
61
  # The name.
62
62
  # @param as [Symbol, nil] (nil)
63
63
  # The target attribute name.
64
- # @param default [Object, nil] (nil)
65
- # The default value.
64
+ # @param default [Object] (UNSET)
65
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
66
66
  # @param deprecated [Boolean] (false)
67
67
  # Whether deprecated. Metadata included in exports.
68
68
  # @param description [String, nil] (nil)
@@ -97,7 +97,7 @@ module Apiwork
97
97
  def string(
98
98
  name,
99
99
  as: nil,
100
- default: nil,
100
+ default: UNSET,
101
101
  deprecated: false,
102
102
  description: nil,
103
103
  enum: nil,
@@ -134,8 +134,8 @@ module Apiwork
134
134
  # The name.
135
135
  # @param as [Symbol, nil] (nil)
136
136
  # The target attribute name.
137
- # @param default [Object, nil] (nil)
138
- # The default value.
137
+ # @param default [Object] (UNSET)
138
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
139
139
  # @param deprecated [Boolean] (false)
140
140
  # Whether deprecated. Metadata included in exports.
141
141
  # @param description [String, nil] (nil)
@@ -162,7 +162,7 @@ module Apiwork
162
162
  def string?(
163
163
  name,
164
164
  as: nil,
165
- default: nil,
165
+ default: UNSET,
166
166
  deprecated: false,
167
167
  description: nil,
168
168
  enum: nil,
@@ -198,8 +198,8 @@ module Apiwork
198
198
  # The name.
199
199
  # @param as [Symbol, nil] (nil)
200
200
  # The target attribute name.
201
- # @param default [Object, nil] (nil)
202
- # The default value.
201
+ # @param default [Object] (UNSET)
202
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
203
203
  # @param deprecated [Boolean] (false)
204
204
  # Whether deprecated. Metadata included in exports.
205
205
  # @param description [String, nil] (nil)
@@ -228,7 +228,7 @@ module Apiwork
228
228
  def integer(
229
229
  name,
230
230
  as: nil,
231
- default: nil,
231
+ default: UNSET,
232
232
  deprecated: false,
233
233
  description: nil,
234
234
  enum: nil,
@@ -263,8 +263,8 @@ module Apiwork
263
263
  # The name.
264
264
  # @param as [Symbol, nil] (nil)
265
265
  # The target attribute name.
266
- # @param default [Object, nil] (nil)
267
- # The default value.
266
+ # @param default [Object] (UNSET)
267
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
268
268
  # @param deprecated [Boolean] (false)
269
269
  # Whether deprecated. Metadata included in exports.
270
270
  # @param description [String, nil] (nil)
@@ -288,7 +288,7 @@ module Apiwork
288
288
  def integer?(
289
289
  name,
290
290
  as: nil,
291
- default: nil,
291
+ default: UNSET,
292
292
  deprecated: false,
293
293
  description: nil,
294
294
  enum: nil,
@@ -322,8 +322,8 @@ module Apiwork
322
322
  # The name.
323
323
  # @param as [Symbol, nil] (nil)
324
324
  # The target attribute name.
325
- # @param default [Object, nil] (nil)
326
- # The default value.
325
+ # @param default [Object] (UNSET)
326
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
327
327
  # @param deprecated [Boolean] (false)
328
328
  # Whether deprecated. Metadata included in exports.
329
329
  # @param description [String, nil] (nil)
@@ -350,7 +350,7 @@ module Apiwork
350
350
  def decimal(
351
351
  name,
352
352
  as: nil,
353
- default: nil,
353
+ default: UNSET,
354
354
  deprecated: false,
355
355
  description: nil,
356
356
  example: nil,
@@ -383,8 +383,8 @@ module Apiwork
383
383
  # The name.
384
384
  # @param as [Symbol, nil] (nil)
385
385
  # The target attribute name.
386
- # @param default [Object, nil] (nil)
387
- # The default value.
386
+ # @param default [Object] (UNSET)
387
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
388
388
  # @param deprecated [Boolean] (false)
389
389
  # Whether deprecated. Metadata included in exports.
390
390
  # @param description [String, nil] (nil)
@@ -406,7 +406,7 @@ module Apiwork
406
406
  def decimal?(
407
407
  name,
408
408
  as: nil,
409
- default: nil,
409
+ default: UNSET,
410
410
  deprecated: false,
411
411
  description: nil,
412
412
  example: nil,
@@ -438,8 +438,8 @@ module Apiwork
438
438
  # The name.
439
439
  # @param as [Symbol, nil] (nil)
440
440
  # The target attribute name.
441
- # @param default [Object, nil] (nil)
442
- # The default value.
441
+ # @param default [Object] (UNSET)
442
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
443
443
  # @param deprecated [Boolean] (false)
444
444
  # Whether deprecated. Metadata included in exports.
445
445
  # @param description [String, nil] (nil)
@@ -463,7 +463,7 @@ module Apiwork
463
463
  def number(
464
464
  name,
465
465
  as: nil,
466
- default: nil,
466
+ default: UNSET,
467
467
  deprecated: false,
468
468
  description: nil,
469
469
  example: nil,
@@ -496,8 +496,8 @@ module Apiwork
496
496
  # The name.
497
497
  # @param as [Symbol, nil] (nil)
498
498
  # The target attribute name.
499
- # @param default [Object, nil] (nil)
500
- # The default value.
499
+ # @param default [Object] (UNSET)
500
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
501
501
  # @param deprecated [Boolean] (false)
502
502
  # Whether deprecated. Metadata included in exports.
503
503
  # @param description [String, nil] (nil)
@@ -519,7 +519,7 @@ module Apiwork
519
519
  def number?(
520
520
  name,
521
521
  as: nil,
522
- default: nil,
522
+ default: UNSET,
523
523
  deprecated: false,
524
524
  description: nil,
525
525
  example: nil,
@@ -551,8 +551,8 @@ module Apiwork
551
551
  # The name.
552
552
  # @param as [Symbol, nil] (nil)
553
553
  # The target attribute name.
554
- # @param default [Object, nil] (nil)
555
- # The default value.
554
+ # @param default [Object] (UNSET)
555
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
556
556
  # @param deprecated [Boolean] (false)
557
557
  # Whether deprecated. Metadata included in exports.
558
558
  # @param description [String, nil] (nil)
@@ -575,7 +575,7 @@ module Apiwork
575
575
  def boolean(
576
576
  name,
577
577
  as: nil,
578
- default: nil,
578
+ default: UNSET,
579
579
  deprecated: false,
580
580
  description: nil,
581
581
  example: nil,
@@ -604,8 +604,8 @@ module Apiwork
604
604
  # The name.
605
605
  # @param as [Symbol, nil] (nil)
606
606
  # The target attribute name.
607
- # @param default [Object, nil] (nil)
608
- # The default value.
607
+ # @param default [Object] (UNSET)
608
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
609
609
  # @param deprecated [Boolean] (false)
610
610
  # Whether deprecated. Metadata included in exports.
611
611
  # @param description [String, nil] (nil)
@@ -623,7 +623,7 @@ module Apiwork
623
623
  def boolean?(
624
624
  name,
625
625
  as: nil,
626
- default: nil,
626
+ default: UNSET,
627
627
  deprecated: false,
628
628
  description: nil,
629
629
  example: nil,
@@ -651,8 +651,8 @@ module Apiwork
651
651
  # The name.
652
652
  # @param as [Symbol, nil] (nil)
653
653
  # The target attribute name.
654
- # @param default [Object, nil] (nil)
655
- # The default value.
654
+ # @param default [Object] (UNSET)
655
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
656
656
  # @param deprecated [Boolean] (false)
657
657
  # Whether deprecated. Metadata included in exports.
658
658
  # @param description [String, nil] (nil)
@@ -672,7 +672,7 @@ module Apiwork
672
672
  def datetime(
673
673
  name,
674
674
  as: nil,
675
- default: nil,
675
+ default: UNSET,
676
676
  deprecated: false,
677
677
  description: nil,
678
678
  example: nil,
@@ -701,8 +701,8 @@ module Apiwork
701
701
  # The name.
702
702
  # @param as [Symbol, nil] (nil)
703
703
  # The target attribute name.
704
- # @param default [Object, nil] (nil)
705
- # The default value.
704
+ # @param default [Object] (UNSET)
705
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
706
706
  # @param deprecated [Boolean] (false)
707
707
  # Whether deprecated. Metadata included in exports.
708
708
  # @param description [String, nil] (nil)
@@ -720,7 +720,7 @@ module Apiwork
720
720
  def datetime?(
721
721
  name,
722
722
  as: nil,
723
- default: nil,
723
+ default: UNSET,
724
724
  deprecated: false,
725
725
  description: nil,
726
726
  example: nil,
@@ -748,8 +748,8 @@ module Apiwork
748
748
  # The name.
749
749
  # @param as [Symbol, nil] (nil)
750
750
  # The target attribute name.
751
- # @param default [Object, nil] (nil)
752
- # The default value.
751
+ # @param default [Object] (UNSET)
752
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
753
753
  # @param deprecated [Boolean] (false)
754
754
  # Whether deprecated. Metadata included in exports.
755
755
  # @param description [String, nil] (nil)
@@ -769,7 +769,7 @@ module Apiwork
769
769
  def date(
770
770
  name,
771
771
  as: nil,
772
- default: nil,
772
+ default: UNSET,
773
773
  deprecated: false,
774
774
  description: nil,
775
775
  example: nil,
@@ -798,8 +798,8 @@ module Apiwork
798
798
  # The name.
799
799
  # @param as [Symbol, nil] (nil)
800
800
  # The target attribute name.
801
- # @param default [Object, nil] (nil)
802
- # The default value.
801
+ # @param default [Object] (UNSET)
802
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
803
803
  # @param deprecated [Boolean] (false)
804
804
  # Whether deprecated. Metadata included in exports.
805
805
  # @param description [String, nil] (nil)
@@ -817,7 +817,7 @@ module Apiwork
817
817
  def date?(
818
818
  name,
819
819
  as: nil,
820
- default: nil,
820
+ default: UNSET,
821
821
  deprecated: false,
822
822
  description: nil,
823
823
  example: nil,
@@ -845,8 +845,8 @@ module Apiwork
845
845
  # The name.
846
846
  # @param as [Symbol, nil] (nil)
847
847
  # The target attribute name.
848
- # @param default [Object, nil] (nil)
849
- # The default value.
848
+ # @param default [Object] (UNSET)
849
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
850
850
  # @param deprecated [Boolean] (false)
851
851
  # Whether deprecated. Metadata included in exports.
852
852
  # @param description [String, nil] (nil)
@@ -866,7 +866,7 @@ module Apiwork
866
866
  def uuid(
867
867
  name,
868
868
  as: nil,
869
- default: nil,
869
+ default: UNSET,
870
870
  deprecated: false,
871
871
  description: nil,
872
872
  example: nil,
@@ -895,8 +895,8 @@ module Apiwork
895
895
  # The name.
896
896
  # @param as [Symbol, nil] (nil)
897
897
  # The target attribute name.
898
- # @param default [Object, nil] (nil)
899
- # The default value.
898
+ # @param default [Object] (UNSET)
899
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
900
900
  # @param deprecated [Boolean] (false)
901
901
  # Whether deprecated. Metadata included in exports.
902
902
  # @param description [String, nil] (nil)
@@ -914,7 +914,7 @@ module Apiwork
914
914
  def uuid?(
915
915
  name,
916
916
  as: nil,
917
- default: nil,
917
+ default: UNSET,
918
918
  deprecated: false,
919
919
  description: nil,
920
920
  example: nil,
@@ -942,8 +942,8 @@ module Apiwork
942
942
  # The name.
943
943
  # @param as [Symbol, nil] (nil)
944
944
  # The target attribute name.
945
- # @param default [Object, nil] (nil)
946
- # The default value.
945
+ # @param default [Object] (UNSET)
946
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
947
947
  # @param deprecated [Boolean] (false)
948
948
  # Whether deprecated. Metadata included in exports.
949
949
  # @param description [String, nil] (nil)
@@ -963,7 +963,7 @@ module Apiwork
963
963
  def time(
964
964
  name,
965
965
  as: nil,
966
- default: nil,
966
+ default: UNSET,
967
967
  deprecated: false,
968
968
  description: nil,
969
969
  example: nil,
@@ -992,8 +992,8 @@ module Apiwork
992
992
  # The name.
993
993
  # @param as [Symbol, nil] (nil)
994
994
  # The target attribute name.
995
- # @param default [Object, nil] (nil)
996
- # The default value.
995
+ # @param default [Object] (UNSET)
996
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
997
997
  # @param deprecated [Boolean] (false)
998
998
  # Whether deprecated. Metadata included in exports.
999
999
  # @param description [String, nil] (nil)
@@ -1011,7 +1011,7 @@ module Apiwork
1011
1011
  def time?(
1012
1012
  name,
1013
1013
  as: nil,
1014
- default: nil,
1014
+ default: UNSET,
1015
1015
  deprecated: false,
1016
1016
  description: nil,
1017
1017
  example: nil,
@@ -1039,8 +1039,8 @@ module Apiwork
1039
1039
  # The name.
1040
1040
  # @param as [Symbol, nil] (nil)
1041
1041
  # The target attribute name.
1042
- # @param default [Object, nil] (nil)
1043
- # The default value.
1042
+ # @param default [Object] (UNSET)
1043
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
1044
1044
  # @param deprecated [Boolean] (false)
1045
1045
  # Whether deprecated. Metadata included in exports.
1046
1046
  # @param description [String, nil] (nil)
@@ -1060,7 +1060,7 @@ module Apiwork
1060
1060
  def binary(
1061
1061
  name,
1062
1062
  as: nil,
1063
- default: nil,
1063
+ default: UNSET,
1064
1064
  deprecated: false,
1065
1065
  description: nil,
1066
1066
  example: nil,
@@ -1089,8 +1089,8 @@ module Apiwork
1089
1089
  # The name.
1090
1090
  # @param as [Symbol, nil] (nil)
1091
1091
  # The target attribute name.
1092
- # @param default [Object, nil] (nil)
1093
- # The default value.
1092
+ # @param default [Object] (UNSET)
1093
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
1094
1094
  # @param deprecated [Boolean] (false)
1095
1095
  # Whether deprecated. Metadata included in exports.
1096
1096
  # @param description [String, nil] (nil)
@@ -1108,7 +1108,7 @@ module Apiwork
1108
1108
  def binary?(
1109
1109
  name,
1110
1110
  as: nil,
1111
- default: nil,
1111
+ default: UNSET,
1112
1112
  deprecated: false,
1113
1113
  description: nil,
1114
1114
  example: nil,
@@ -1136,8 +1136,8 @@ module Apiwork
1136
1136
  # The name.
1137
1137
  # @param as [Symbol, nil] (nil)
1138
1138
  # The target attribute name.
1139
- # @param default [Object, nil] (nil)
1140
- # The default value.
1139
+ # @param default [Object] (UNSET)
1140
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
1141
1141
  # @param deprecated [Boolean] (false)
1142
1142
  # Whether deprecated. Metadata included in exports.
1143
1143
  # @param description [String, nil] (nil)
@@ -1157,7 +1157,7 @@ module Apiwork
1157
1157
  def unknown(
1158
1158
  name,
1159
1159
  as: nil,
1160
- default: nil,
1160
+ default: UNSET,
1161
1161
  deprecated: false,
1162
1162
  description: nil,
1163
1163
  example: nil,
@@ -1186,8 +1186,8 @@ module Apiwork
1186
1186
  # The name.
1187
1187
  # @param as [Symbol, nil] (nil)
1188
1188
  # The target attribute name.
1189
- # @param default [Object, nil] (nil)
1190
- # The default value.
1189
+ # @param default [Object] (UNSET)
1190
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
1191
1191
  # @param deprecated [Boolean] (false)
1192
1192
  # Whether deprecated. Metadata included in exports.
1193
1193
  # @param description [String, nil] (nil)
@@ -1205,7 +1205,7 @@ module Apiwork
1205
1205
  def unknown?(
1206
1206
  name,
1207
1207
  as: nil,
1208
- default: nil,
1208
+ default: UNSET,
1209
1209
  deprecated: false,
1210
1210
  description: nil,
1211
1211
  example: nil,
@@ -1233,8 +1233,8 @@ module Apiwork
1233
1233
  # The name.
1234
1234
  # @param as [Symbol, nil] (nil)
1235
1235
  # The target attribute name.
1236
- # @param default [Object, nil] (nil)
1237
- # The default value.
1236
+ # @param default [Object] (UNSET)
1237
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
1238
1238
  # @param deprecated [Boolean] (false)
1239
1239
  # Whether deprecated. Metadata included in exports.
1240
1240
  # @param description [String, nil] (nil)
@@ -1257,7 +1257,7 @@ module Apiwork
1257
1257
  def object(
1258
1258
  name,
1259
1259
  as: nil,
1260
- default: nil,
1260
+ default: UNSET,
1261
1261
  deprecated: false,
1262
1262
  description: nil,
1263
1263
  nullable: false,
@@ -1286,8 +1286,8 @@ module Apiwork
1286
1286
  # The name.
1287
1287
  # @param as [Symbol, nil] (nil)
1288
1288
  # The target attribute name.
1289
- # @param default [Object, nil] (nil)
1290
- # The default value.
1289
+ # @param default [Object] (UNSET)
1290
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
1291
1291
  # @param deprecated [Boolean] (false)
1292
1292
  # Whether deprecated. Metadata included in exports.
1293
1293
  # @param description [String, nil] (nil)
@@ -1307,7 +1307,7 @@ module Apiwork
1307
1307
  def object?(
1308
1308
  name,
1309
1309
  as: nil,
1310
- default: nil,
1310
+ default: UNSET,
1311
1311
  deprecated: false,
1312
1312
  description: nil,
1313
1313
  nullable: false,
@@ -1335,8 +1335,8 @@ module Apiwork
1335
1335
  # The name.
1336
1336
  # @param as [Symbol, nil] (nil)
1337
1337
  # The target attribute name.
1338
- # @param default [Object, nil] (nil)
1339
- # The default value.
1338
+ # @param default [Object] (UNSET)
1339
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
1340
1340
  # @param deprecated [Boolean] (false)
1341
1341
  # Whether deprecated. Metadata included in exports.
1342
1342
  # @param description [String, nil] (nil)
@@ -1387,7 +1387,7 @@ module Apiwork
1387
1387
  def array(
1388
1388
  name,
1389
1389
  as: nil,
1390
- default: nil,
1390
+ default: UNSET,
1391
1391
  deprecated: false,
1392
1392
  description: nil,
1393
1393
  max: nil,
@@ -1422,8 +1422,8 @@ module Apiwork
1422
1422
  # The name.
1423
1423
  # @param as [Symbol, nil] (nil)
1424
1424
  # The target attribute name.
1425
- # @param default [Object, nil] (nil)
1426
- # The default value.
1425
+ # @param default [Object] (UNSET)
1426
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
1427
1427
  # @param deprecated [Boolean] (false)
1428
1428
  # Whether deprecated. Metadata included in exports.
1429
1429
  # @param description [String, nil] (nil)
@@ -1460,7 +1460,7 @@ module Apiwork
1460
1460
  def array?(
1461
1461
  name,
1462
1462
  as: nil,
1463
- default: nil,
1463
+ default: UNSET,
1464
1464
  deprecated: false,
1465
1465
  description: nil,
1466
1466
  nullable: false,
@@ -1490,8 +1490,8 @@ module Apiwork
1490
1490
  # The name.
1491
1491
  # @param as [Symbol, nil] (nil)
1492
1492
  # The target attribute name.
1493
- # @param default [Object, nil] (nil)
1494
- # The default value.
1493
+ # @param default [Object] (UNSET)
1494
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
1495
1495
  # @param deprecated [Boolean] (false)
1496
1496
  # Whether deprecated. Metadata included in exports.
1497
1497
  # @param description [String, nil] (nil)
@@ -1520,7 +1520,7 @@ module Apiwork
1520
1520
  def record(
1521
1521
  name,
1522
1522
  as: nil,
1523
- default: nil,
1523
+ default: UNSET,
1524
1524
  deprecated: false,
1525
1525
  description: nil,
1526
1526
  nullable: false,
@@ -1549,8 +1549,8 @@ module Apiwork
1549
1549
  # The name.
1550
1550
  # @param as [Symbol, nil] (nil)
1551
1551
  # The target attribute name.
1552
- # @param default [Object, nil] (nil)
1553
- # The default value.
1552
+ # @param default [Object] (UNSET)
1553
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
1554
1554
  # @param deprecated [Boolean] (false)
1555
1555
  # Whether deprecated. Metadata included in exports.
1556
1556
  # @param description [String, nil] (nil)
@@ -1569,7 +1569,7 @@ module Apiwork
1569
1569
  def record?(
1570
1570
  name,
1571
1571
  as: nil,
1572
- default: nil,
1572
+ default: UNSET,
1573
1573
  deprecated: false,
1574
1574
  description: nil,
1575
1575
  nullable: false,
@@ -1597,8 +1597,8 @@ module Apiwork
1597
1597
  # The name.
1598
1598
  # @param as [Symbol, nil] (nil)
1599
1599
  # The target attribute name.
1600
- # @param default [Object, nil] (nil)
1601
- # The default value.
1600
+ # @param default [Object] (UNSET)
1601
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
1602
1602
  # @param deprecated [Boolean] (false)
1603
1603
  # Whether deprecated. Metadata included in exports.
1604
1604
  # @param description [String, nil] (nil)
@@ -1630,7 +1630,7 @@ module Apiwork
1630
1630
  def union(
1631
1631
  name,
1632
1632
  as: nil,
1633
- default: nil,
1633
+ default: UNSET,
1634
1634
  deprecated: false,
1635
1635
  description: nil,
1636
1636
  discriminator: nil,
@@ -1661,8 +1661,8 @@ module Apiwork
1661
1661
  # The name.
1662
1662
  # @param as [Symbol, nil] (nil)
1663
1663
  # The target attribute name.
1664
- # @param default [Object, nil] (nil)
1665
- # The default value.
1664
+ # @param default [Object] (UNSET)
1665
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
1666
1666
  # @param deprecated [Boolean] (false)
1667
1667
  # Whether deprecated. Metadata included in exports.
1668
1668
  # @param description [String, nil] (nil)
@@ -1692,7 +1692,7 @@ module Apiwork
1692
1692
  def union?(
1693
1693
  name,
1694
1694
  as: nil,
1695
- default: nil,
1695
+ default: UNSET,
1696
1696
  deprecated: false,
1697
1697
  description: nil,
1698
1698
  discriminator: nil,
@@ -1724,8 +1724,8 @@ module Apiwork
1724
1724
  # The exact value.
1725
1725
  # @param as [Symbol, nil] (nil)
1726
1726
  # The target attribute name.
1727
- # @param default [Object, nil] (nil)
1728
- # The default value.
1727
+ # @param default [Object] (UNSET)
1728
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
1729
1729
  # @param deprecated [Boolean] (false)
1730
1730
  # Whether deprecated. Metadata included in exports.
1731
1731
  # @param description [String, nil] (nil)
@@ -1740,7 +1740,7 @@ module Apiwork
1740
1740
  name,
1741
1741
  value:,
1742
1742
  as: nil,
1743
- default: nil,
1743
+ default: UNSET,
1744
1744
  deprecated: false,
1745
1745
  description: nil,
1746
1746
  optional: false
@@ -1766,8 +1766,8 @@ module Apiwork
1766
1766
  # The target type name. Defaults to name.
1767
1767
  # @param as [Symbol, nil] (nil)
1768
1768
  # The target attribute name.
1769
- # @param default [Object, nil] (nil)
1770
- # The default value.
1769
+ # @param default [Object] (UNSET)
1770
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
1771
1771
  # @param deprecated [Boolean] (false)
1772
1772
  # Whether deprecated. Metadata included in exports.
1773
1773
  # @param description [String, nil] (nil)
@@ -1789,7 +1789,7 @@ module Apiwork
1789
1789
  name,
1790
1790
  to: nil,
1791
1791
  as: nil,
1792
- default: nil,
1792
+ default: UNSET,
1793
1793
  deprecated: false,
1794
1794
  description: nil,
1795
1795
  nullable: false,
@@ -1821,8 +1821,8 @@ module Apiwork
1821
1821
  # The target type name. Defaults to name.
1822
1822
  # @param as [Symbol, nil] (nil)
1823
1823
  # The target attribute name.
1824
- # @param default [Object, nil] (nil)
1825
- # The default value.
1824
+ # @param default [Object] (UNSET)
1825
+ # The default value. Omit to declare no default. Pass `nil` for an explicit null default.
1826
1826
  # @param deprecated [Boolean] (false)
1827
1827
  # Whether deprecated. Metadata included in exports.
1828
1828
  # @param description [String, nil] (nil)
@@ -1839,7 +1839,7 @@ module Apiwork
1839
1839
  name,
1840
1840
  to: nil,
1841
1841
  as: nil,
1842
- default: nil,
1842
+ default: UNSET,
1843
1843
  deprecated: false,
1844
1844
  description: nil,
1845
1845
  nullable: false,
@@ -47,6 +47,26 @@ module Apiwork
47
47
  .sort_by { |mod| mod[:path] }
48
48
  end
49
49
 
50
+ def extract_constants
51
+ YARD::Registry.all(:constant)
52
+ .select do |yard_object|
53
+ yard_object.path.start_with?('Apiwork') &&
54
+ yard_object.docstring.to_s.strip.present? &&
55
+ yard_object.docstring.tags(:api).any? { |tag| tag.text == 'public' }
56
+ end
57
+ .map { |yard_object| serialize_constant(yard_object) }
58
+ .sort_by { |constant| constant[:name] }
59
+ end
60
+
61
+ def serialize_constant(yard_object)
62
+ {
63
+ docstring: yard_object.docstring.to_s,
64
+ file: relative_path(yard_object.file),
65
+ line: yard_object.line,
66
+ name: yard_object.name.to_s,
67
+ }
68
+ end
69
+
50
70
  def public_api?(yard_object)
51
71
  api_tag = yard_object.docstring.tags(:api).find { |tag| tag.text == 'public' }
52
72
 
@@ -247,6 +267,29 @@ module Apiwork
247
267
  end
248
268
 
249
269
  write_namespace_indexes
270
+ write_constant_files(extract_constants)
271
+ end
272
+
273
+ def write_constant_files(constants)
274
+ constants.each.with_index(@modules.size + 1) do |constant, order|
275
+ filepath = File.join(OUTPUT_DIR, "#{dasherize(constant[:name])}.md")
276
+ File.write(filepath, render_constant(constant, order))
277
+ end
278
+ end
279
+
280
+ def render_constant(constant, order)
281
+ parts = []
282
+ parts << "---\norder: #{order}\nprev: false\nnext: false\n---\n"
283
+ parts << "# #{constant[:name]}\n"
284
+
285
+ if constant[:file] && constant[:line]
286
+ github_link = "#{GITHUB_URL}/#{constant[:file]}#L#{constant[:line]}"
287
+ parts << "[GitHub](#{github_link})\n"
288
+ end
289
+
290
+ parts << "#{linkify_yard_refs(constant[:docstring])}\n" if constant[:docstring].present?
291
+
292
+ parts.join("\n")
250
293
  end
251
294
 
252
295
  def write_root_index