sober_swag 0.19.0 → 0.23.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/benchmark.yml +39 -0
  3. data/.github/workflows/lint.yml +2 -4
  4. data/.github/workflows/ruby.yml +1 -1
  5. data/.gitignore +3 -0
  6. data/.rubocop.yml +6 -1
  7. data/.yardopts +7 -0
  8. data/CHANGELOG.md +18 -0
  9. data/Gemfile +12 -0
  10. data/README.md +1 -1
  11. data/bench/benchmark.rb +34 -0
  12. data/bench/benchmarks/basic_field_serializer.rb +21 -0
  13. data/bench/benchmarks/view_selection.rb +47 -0
  14. data/bin/console +30 -10
  15. data/docs/reporting.md +190 -0
  16. data/docs/serializers.md +4 -1
  17. data/example/Gemfile +2 -2
  18. data/example/Gemfile.lock +94 -101
  19. data/example/app/controllers/application_controller.rb +4 -0
  20. data/example/app/controllers/people_controller.rb +44 -28
  21. data/example/app/output_objects/identified_output.rb +7 -0
  22. data/example/app/output_objects/person_output_object.rb +37 -11
  23. data/example/app/output_objects/post_output_object.rb +0 -4
  24. data/example/app/output_objects/reporting_post_output.rb +18 -0
  25. data/example/bin/rspec +29 -0
  26. data/example/config/environments/production.rb +1 -1
  27. data/example/spec/requests/people/create_spec.rb +3 -2
  28. data/example/spec/requests/people/index_spec.rb +1 -1
  29. data/lib/sober_swag/compiler/path.rb +45 -4
  30. data/lib/sober_swag/compiler/paths.rb +20 -0
  31. data/lib/sober_swag/compiler/primitive.rb +17 -0
  32. data/lib/sober_swag/compiler/type.rb +105 -22
  33. data/lib/sober_swag/compiler.rb +87 -15
  34. data/lib/sober_swag/controller/route.rb +147 -28
  35. data/lib/sober_swag/controller.rb +57 -17
  36. data/lib/sober_swag/input_object.rb +124 -7
  37. data/lib/sober_swag/nodes/array.rb +19 -0
  38. data/lib/sober_swag/nodes/attribute.rb +45 -4
  39. data/lib/sober_swag/nodes/base.rb +27 -7
  40. data/lib/sober_swag/nodes/binary.rb +30 -13
  41. data/lib/sober_swag/nodes/enum.rb +16 -1
  42. data/lib/sober_swag/nodes/list.rb +20 -0
  43. data/lib/sober_swag/nodes/nullable_primitive.rb +3 -0
  44. data/lib/sober_swag/nodes/object.rb +4 -1
  45. data/lib/sober_swag/nodes/one_of.rb +11 -3
  46. data/lib/sober_swag/nodes/primitive.rb +34 -2
  47. data/lib/sober_swag/nodes/sum.rb +8 -0
  48. data/lib/sober_swag/output_object/definition.rb +57 -1
  49. data/lib/sober_swag/output_object/field.rb +31 -11
  50. data/lib/sober_swag/output_object/field_syntax.rb +19 -3
  51. data/lib/sober_swag/output_object/view.rb +46 -1
  52. data/lib/sober_swag/output_object.rb +40 -19
  53. data/lib/sober_swag/parser.rb +7 -1
  54. data/lib/sober_swag/reporting/compiler.rb +39 -0
  55. data/lib/sober_swag/reporting/input/base.rb +11 -0
  56. data/lib/sober_swag/reporting/input/bool.rb +19 -0
  57. data/lib/sober_swag/reporting/input/converting/bool.rb +24 -0
  58. data/lib/sober_swag/reporting/input/converting/date.rb +30 -0
  59. data/lib/sober_swag/reporting/input/converting/date_time.rb +28 -0
  60. data/lib/sober_swag/reporting/input/converting/decimal.rb +24 -0
  61. data/lib/sober_swag/reporting/input/converting/integer.rb +19 -0
  62. data/lib/sober_swag/reporting/input/converting.rb +16 -0
  63. data/lib/sober_swag/reporting/input/defer.rb +29 -0
  64. data/lib/sober_swag/reporting/input/described.rb +38 -0
  65. data/lib/sober_swag/reporting/input/dictionary.rb +37 -0
  66. data/lib/sober_swag/reporting/input/either.rb +51 -0
  67. data/lib/sober_swag/reporting/input/enum.rb +44 -0
  68. data/lib/sober_swag/reporting/input/format.rb +39 -0
  69. data/lib/sober_swag/reporting/input/in_range.rb +61 -0
  70. data/lib/sober_swag/reporting/input/interface.rb +113 -0
  71. data/lib/sober_swag/reporting/input/list.rb +44 -0
  72. data/lib/sober_swag/reporting/input/mapped.rb +36 -0
  73. data/lib/sober_swag/reporting/input/merge_objects.rb +72 -0
  74. data/lib/sober_swag/reporting/input/multiple_of.rb +36 -0
  75. data/lib/sober_swag/reporting/input/null.rb +34 -0
  76. data/lib/sober_swag/reporting/input/number.rb +19 -0
  77. data/lib/sober_swag/reporting/input/object/property.rb +53 -0
  78. data/lib/sober_swag/reporting/input/object.rb +100 -0
  79. data/lib/sober_swag/reporting/input/pattern.rb +46 -0
  80. data/lib/sober_swag/reporting/input/referenced.rb +38 -0
  81. data/lib/sober_swag/reporting/input/struct.rb +271 -0
  82. data/lib/sober_swag/reporting/input/text.rb +42 -0
  83. data/lib/sober_swag/reporting/input.rb +56 -0
  84. data/lib/sober_swag/reporting/invalid_schema_error.rb +21 -0
  85. data/lib/sober_swag/reporting/output/base.rb +25 -0
  86. data/lib/sober_swag/reporting/output/bool.rb +25 -0
  87. data/lib/sober_swag/reporting/output/defer.rb +69 -0
  88. data/lib/sober_swag/reporting/output/described.rb +42 -0
  89. data/lib/sober_swag/reporting/output/dictionary.rb +46 -0
  90. data/lib/sober_swag/reporting/output/enum.rb +47 -0
  91. data/lib/sober_swag/reporting/output/interface.rb +89 -0
  92. data/lib/sober_swag/reporting/output/list.rb +54 -0
  93. data/lib/sober_swag/reporting/output/merge_objects.rb +97 -0
  94. data/lib/sober_swag/reporting/output/null.rb +25 -0
  95. data/lib/sober_swag/reporting/output/number.rb +25 -0
  96. data/lib/sober_swag/reporting/output/object/property.rb +45 -0
  97. data/lib/sober_swag/reporting/output/object.rb +54 -0
  98. data/lib/sober_swag/reporting/output/partitioned.rb +77 -0
  99. data/lib/sober_swag/reporting/output/pattern.rb +50 -0
  100. data/lib/sober_swag/reporting/output/referenced.rb +42 -0
  101. data/lib/sober_swag/reporting/output/struct.rb +262 -0
  102. data/lib/sober_swag/reporting/output/text.rb +25 -0
  103. data/lib/sober_swag/reporting/output/via_map.rb +67 -0
  104. data/lib/sober_swag/reporting/output/viewed.rb +72 -0
  105. data/lib/sober_swag/reporting/output.rb +55 -0
  106. data/lib/sober_swag/reporting/report/base.rb +57 -0
  107. data/lib/sober_swag/reporting/report/either.rb +36 -0
  108. data/lib/sober_swag/reporting/report/error.rb +15 -0
  109. data/lib/sober_swag/reporting/report/list.rb +28 -0
  110. data/lib/sober_swag/reporting/report/merged_object.rb +25 -0
  111. data/lib/sober_swag/reporting/report/object.rb +29 -0
  112. data/lib/sober_swag/reporting/report/output.rb +14 -0
  113. data/lib/sober_swag/reporting/report/value.rb +28 -0
  114. data/lib/sober_swag/reporting/report.rb +16 -0
  115. data/lib/sober_swag/reporting.rb +11 -0
  116. data/lib/sober_swag/serializer/array.rb +27 -3
  117. data/lib/sober_swag/serializer/base.rb +75 -25
  118. data/lib/sober_swag/serializer/conditional.rb +33 -1
  119. data/lib/sober_swag/serializer/field_list.rb +23 -5
  120. data/lib/sober_swag/serializer/hash.rb +53 -0
  121. data/lib/sober_swag/serializer/mapped.rb +10 -1
  122. data/lib/sober_swag/serializer/optional.rb +18 -1
  123. data/lib/sober_swag/serializer/primitive.rb +3 -0
  124. data/lib/sober_swag/serializer.rb +1 -0
  125. data/lib/sober_swag/server.rb +5 -1
  126. data/lib/sober_swag/type/named.rb +14 -0
  127. data/lib/sober_swag/types/comma_array.rb +4 -0
  128. data/lib/sober_swag/version.rb +1 -1
  129. data/lib/sober_swag.rb +7 -1
  130. metadata +74 -2
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sober_swag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.0
4
+ version: 0.23.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anthony Super
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-10 00:00:00.000000000 Z
11
+ date: 2022-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -173,6 +173,7 @@ extra_rdoc_files: []
173
173
  files:
174
174
  - ".github/config/rubocop_linter_action.yml"
175
175
  - ".github/dependabot.yml"
176
+ - ".github/workflows/benchmark.yml"
176
177
  - ".github/workflows/lint.yml"
177
178
  - ".github/workflows/ruby.yml"
178
179
  - ".gitignore"
@@ -180,14 +181,19 @@ files:
180
181
  - ".rubocop.yml"
181
182
  - ".ruby-version"
182
183
  - ".travis.yml"
184
+ - ".yardopts"
183
185
  - CHANGELOG.md
184
186
  - Gemfile
185
187
  - LICENSE.txt
186
188
  - README.md
187
189
  - Rakefile
190
+ - bench/benchmark.rb
191
+ - bench/benchmarks/basic_field_serializer.rb
192
+ - bench/benchmarks/view_selection.rb
188
193
  - bin/console
189
194
  - bin/rspec
190
195
  - bin/setup
196
+ - docs/reporting.md
191
197
  - docs/serializers.md
192
198
  - example/.gitignore
193
199
  - example/.rspec
@@ -205,12 +211,15 @@ files:
205
211
  - example/app/models/concerns/.keep
206
212
  - example/app/models/person.rb
207
213
  - example/app/models/post.rb
214
+ - example/app/output_objects/identified_output.rb
208
215
  - example/app/output_objects/person_errors_output_object.rb
209
216
  - example/app/output_objects/person_output_object.rb
210
217
  - example/app/output_objects/post_output_object.rb
218
+ - example/app/output_objects/reporting_post_output.rb
211
219
  - example/bin/bundle
212
220
  - example/bin/rails
213
221
  - example/bin/rake
222
+ - example/bin/rspec
214
223
  - example/bin/setup
215
224
  - example/bin/spring
216
225
  - example/config.ru
@@ -278,11 +287,74 @@ files:
278
287
  - lib/sober_swag/output_object/field_syntax.rb
279
288
  - lib/sober_swag/output_object/view.rb
280
289
  - lib/sober_swag/parser.rb
290
+ - lib/sober_swag/reporting.rb
291
+ - lib/sober_swag/reporting/compiler.rb
292
+ - lib/sober_swag/reporting/input.rb
293
+ - lib/sober_swag/reporting/input/base.rb
294
+ - lib/sober_swag/reporting/input/bool.rb
295
+ - lib/sober_swag/reporting/input/converting.rb
296
+ - lib/sober_swag/reporting/input/converting/bool.rb
297
+ - lib/sober_swag/reporting/input/converting/date.rb
298
+ - lib/sober_swag/reporting/input/converting/date_time.rb
299
+ - lib/sober_swag/reporting/input/converting/decimal.rb
300
+ - lib/sober_swag/reporting/input/converting/integer.rb
301
+ - lib/sober_swag/reporting/input/defer.rb
302
+ - lib/sober_swag/reporting/input/described.rb
303
+ - lib/sober_swag/reporting/input/dictionary.rb
304
+ - lib/sober_swag/reporting/input/either.rb
305
+ - lib/sober_swag/reporting/input/enum.rb
306
+ - lib/sober_swag/reporting/input/format.rb
307
+ - lib/sober_swag/reporting/input/in_range.rb
308
+ - lib/sober_swag/reporting/input/interface.rb
309
+ - lib/sober_swag/reporting/input/list.rb
310
+ - lib/sober_swag/reporting/input/mapped.rb
311
+ - lib/sober_swag/reporting/input/merge_objects.rb
312
+ - lib/sober_swag/reporting/input/multiple_of.rb
313
+ - lib/sober_swag/reporting/input/null.rb
314
+ - lib/sober_swag/reporting/input/number.rb
315
+ - lib/sober_swag/reporting/input/object.rb
316
+ - lib/sober_swag/reporting/input/object/property.rb
317
+ - lib/sober_swag/reporting/input/pattern.rb
318
+ - lib/sober_swag/reporting/input/referenced.rb
319
+ - lib/sober_swag/reporting/input/struct.rb
320
+ - lib/sober_swag/reporting/input/text.rb
321
+ - lib/sober_swag/reporting/invalid_schema_error.rb
322
+ - lib/sober_swag/reporting/output.rb
323
+ - lib/sober_swag/reporting/output/base.rb
324
+ - lib/sober_swag/reporting/output/bool.rb
325
+ - lib/sober_swag/reporting/output/defer.rb
326
+ - lib/sober_swag/reporting/output/described.rb
327
+ - lib/sober_swag/reporting/output/dictionary.rb
328
+ - lib/sober_swag/reporting/output/enum.rb
329
+ - lib/sober_swag/reporting/output/interface.rb
330
+ - lib/sober_swag/reporting/output/list.rb
331
+ - lib/sober_swag/reporting/output/merge_objects.rb
332
+ - lib/sober_swag/reporting/output/null.rb
333
+ - lib/sober_swag/reporting/output/number.rb
334
+ - lib/sober_swag/reporting/output/object.rb
335
+ - lib/sober_swag/reporting/output/object/property.rb
336
+ - lib/sober_swag/reporting/output/partitioned.rb
337
+ - lib/sober_swag/reporting/output/pattern.rb
338
+ - lib/sober_swag/reporting/output/referenced.rb
339
+ - lib/sober_swag/reporting/output/struct.rb
340
+ - lib/sober_swag/reporting/output/text.rb
341
+ - lib/sober_swag/reporting/output/via_map.rb
342
+ - lib/sober_swag/reporting/output/viewed.rb
343
+ - lib/sober_swag/reporting/report.rb
344
+ - lib/sober_swag/reporting/report/base.rb
345
+ - lib/sober_swag/reporting/report/either.rb
346
+ - lib/sober_swag/reporting/report/error.rb
347
+ - lib/sober_swag/reporting/report/list.rb
348
+ - lib/sober_swag/reporting/report/merged_object.rb
349
+ - lib/sober_swag/reporting/report/object.rb
350
+ - lib/sober_swag/reporting/report/output.rb
351
+ - lib/sober_swag/reporting/report/value.rb
281
352
  - lib/sober_swag/serializer.rb
282
353
  - lib/sober_swag/serializer/array.rb
283
354
  - lib/sober_swag/serializer/base.rb
284
355
  - lib/sober_swag/serializer/conditional.rb
285
356
  - lib/sober_swag/serializer/field_list.rb
357
+ - lib/sober_swag/serializer/hash.rb
286
358
  - lib/sober_swag/serializer/mapped.rb
287
359
  - lib/sober_swag/serializer/meta.rb
288
360
  - lib/sober_swag/serializer/optional.rb