graphql 2.4.3 → 2.5.3

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 (171) hide show
  1. checksums.yaml +4 -4
  2. data/lib/graphql/analysis/analyzer.rb +2 -1
  3. data/lib/graphql/analysis/query_complexity.rb +87 -7
  4. data/lib/graphql/analysis/visitor.rb +38 -41
  5. data/lib/graphql/analysis.rb +15 -12
  6. data/lib/graphql/autoload.rb +38 -0
  7. data/lib/graphql/backtrace/table.rb +118 -55
  8. data/lib/graphql/backtrace.rb +1 -19
  9. data/lib/graphql/current.rb +7 -2
  10. data/lib/graphql/dashboard/detailed_traces.rb +47 -0
  11. data/lib/graphql/dashboard/installable.rb +22 -0
  12. data/lib/graphql/dashboard/limiters.rb +93 -0
  13. data/lib/graphql/dashboard/operation_store.rb +199 -0
  14. data/lib/graphql/dashboard/statics/bootstrap-5.3.3.min.css +6 -0
  15. data/lib/graphql/dashboard/statics/bootstrap-5.3.3.min.js +7 -0
  16. data/lib/graphql/dashboard/statics/charts.min.css +1 -0
  17. data/lib/graphql/dashboard/statics/dashboard.css +30 -0
  18. data/lib/graphql/dashboard/statics/dashboard.js +143 -0
  19. data/lib/graphql/dashboard/statics/header-icon.png +0 -0
  20. data/lib/graphql/dashboard/statics/icon.png +0 -0
  21. data/lib/graphql/dashboard/subscriptions.rb +96 -0
  22. data/lib/graphql/dashboard/views/graphql/dashboard/detailed_traces/traces/index.html.erb +45 -0
  23. data/lib/graphql/dashboard/views/graphql/dashboard/landings/show.html.erb +18 -0
  24. data/lib/graphql/dashboard/views/graphql/dashboard/limiters/limiters/show.html.erb +62 -0
  25. data/lib/graphql/dashboard/views/graphql/dashboard/not_installed.html.erb +18 -0
  26. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/_form.html.erb +23 -0
  27. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/edit.html.erb +21 -0
  28. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/index.html.erb +69 -0
  29. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/new.html.erb +7 -0
  30. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/index.html.erb +39 -0
  31. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/show.html.erb +32 -0
  32. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/index.html.erb +81 -0
  33. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/show.html.erb +71 -0
  34. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/subscriptions/show.html.erb +41 -0
  35. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/index.html.erb +55 -0
  36. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/show.html.erb +40 -0
  37. data/lib/graphql/dashboard/views/layouts/graphql/dashboard/application.html.erb +108 -0
  38. data/lib/graphql/dashboard.rb +158 -0
  39. data/lib/graphql/dataloader/active_record_association_source.rb +64 -0
  40. data/lib/graphql/dataloader/active_record_source.rb +26 -0
  41. data/lib/graphql/dataloader/async_dataloader.rb +21 -9
  42. data/lib/graphql/dataloader/null_dataloader.rb +1 -1
  43. data/lib/graphql/dataloader/source.rb +3 -3
  44. data/lib/graphql/dataloader.rb +43 -14
  45. data/lib/graphql/dig.rb +2 -1
  46. data/lib/graphql/execution/interpreter/resolve.rb +3 -3
  47. data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +34 -4
  48. data/lib/graphql/execution/interpreter/runtime.rb +96 -52
  49. data/lib/graphql/execution/interpreter.rb +16 -7
  50. data/lib/graphql/execution/multiplex.rb +6 -5
  51. data/lib/graphql/introspection/directive_location_enum.rb +1 -1
  52. data/lib/graphql/invalid_name_error.rb +1 -1
  53. data/lib/graphql/invalid_null_error.rb +19 -16
  54. data/lib/graphql/language/cache.rb +13 -0
  55. data/lib/graphql/language/document_from_schema_definition.rb +8 -7
  56. data/lib/graphql/language/lexer.rb +11 -4
  57. data/lib/graphql/language/nodes.rb +3 -0
  58. data/lib/graphql/language/parser.rb +15 -8
  59. data/lib/graphql/language/printer.rb +8 -8
  60. data/lib/graphql/language/static_visitor.rb +37 -33
  61. data/lib/graphql/language/visitor.rb +59 -55
  62. data/lib/graphql/pagination/connection.rb +1 -1
  63. data/lib/graphql/query/context/scoped_context.rb +1 -1
  64. data/lib/graphql/query/context.rb +7 -5
  65. data/lib/graphql/query/variable_validation_error.rb +1 -1
  66. data/lib/graphql/query.rb +22 -32
  67. data/lib/graphql/railtie.rb +7 -0
  68. data/lib/graphql/schema/addition.rb +1 -1
  69. data/lib/graphql/schema/always_visible.rb +1 -0
  70. data/lib/graphql/schema/argument.rb +7 -8
  71. data/lib/graphql/schema/build_from_definition.rb +99 -53
  72. data/lib/graphql/schema/directive/flagged.rb +3 -1
  73. data/lib/graphql/schema/directive.rb +2 -2
  74. data/lib/graphql/schema/enum.rb +36 -1
  75. data/lib/graphql/schema/enum_value.rb +1 -1
  76. data/lib/graphql/schema/field/scope_extension.rb +1 -1
  77. data/lib/graphql/schema/field.rb +27 -13
  78. data/lib/graphql/schema/field_extension.rb +1 -1
  79. data/lib/graphql/schema/has_single_input_argument.rb +3 -1
  80. data/lib/graphql/schema/input_object.rb +77 -40
  81. data/lib/graphql/schema/interface.rb +3 -2
  82. data/lib/graphql/schema/list.rb +1 -1
  83. data/lib/graphql/schema/loader.rb +1 -1
  84. data/lib/graphql/schema/member/has_arguments.rb +25 -17
  85. data/lib/graphql/schema/member/has_dataloader.rb +62 -0
  86. data/lib/graphql/schema/member/has_deprecation_reason.rb +15 -0
  87. data/lib/graphql/schema/member/has_directives.rb +4 -4
  88. data/lib/graphql/schema/member/has_fields.rb +19 -1
  89. data/lib/graphql/schema/member/has_interfaces.rb +5 -5
  90. data/lib/graphql/schema/member/has_validators.rb +1 -1
  91. data/lib/graphql/schema/member/scoped.rb +1 -1
  92. data/lib/graphql/schema/member/type_system_helpers.rb +1 -1
  93. data/lib/graphql/schema/member.rb +1 -0
  94. data/lib/graphql/schema/object.rb +25 -8
  95. data/lib/graphql/schema/relay_classic_mutation.rb +0 -1
  96. data/lib/graphql/schema/resolver.rb +12 -10
  97. data/lib/graphql/schema/subscription.rb +52 -6
  98. data/lib/graphql/schema/union.rb +1 -1
  99. data/lib/graphql/schema/validator/required_validator.rb +23 -6
  100. data/lib/graphql/schema/validator.rb +1 -1
  101. data/lib/graphql/schema/visibility/migration.rb +1 -0
  102. data/lib/graphql/schema/visibility/profile.rb +98 -244
  103. data/lib/graphql/schema/visibility/visit.rb +190 -0
  104. data/lib/graphql/schema/visibility.rb +178 -38
  105. data/lib/graphql/schema/warden.rb +18 -5
  106. data/lib/graphql/schema.rb +266 -54
  107. data/lib/graphql/static_validation/all_rules.rb +1 -1
  108. data/lib/graphql/static_validation/rules/argument_names_are_unique.rb +1 -1
  109. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +47 -13
  110. data/lib/graphql/static_validation/rules/fields_will_merge.rb +79 -17
  111. data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +10 -2
  112. data/lib/graphql/static_validation/rules/no_definitions_are_present.rb +1 -1
  113. data/lib/graphql/static_validation/rules/not_single_subscription_error.rb +25 -0
  114. data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +1 -1
  115. data/lib/graphql/static_validation/rules/subscription_root_exists_and_single_subscription_selection.rb +26 -0
  116. data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +1 -1
  117. data/lib/graphql/static_validation/rules/variable_names_are_unique.rb +1 -1
  118. data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +1 -1
  119. data/lib/graphql/static_validation/validation_context.rb +1 -0
  120. data/lib/graphql/static_validation/validator.rb +6 -1
  121. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +1 -1
  122. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +12 -10
  123. data/lib/graphql/subscriptions/event.rb +12 -1
  124. data/lib/graphql/subscriptions/serialize.rb +1 -1
  125. data/lib/graphql/subscriptions.rb +1 -1
  126. data/lib/graphql/testing/helpers.rb +7 -4
  127. data/lib/graphql/tracing/active_support_notifications_trace.rb +14 -3
  128. data/lib/graphql/tracing/active_support_notifications_tracing.rb +1 -1
  129. data/lib/graphql/tracing/appoptics_trace.rb +9 -1
  130. data/lib/graphql/tracing/appoptics_tracing.rb +7 -0
  131. data/lib/graphql/tracing/appsignal_trace.rb +32 -55
  132. data/lib/graphql/tracing/appsignal_tracing.rb +2 -0
  133. data/lib/graphql/tracing/call_legacy_tracers.rb +66 -0
  134. data/lib/graphql/tracing/data_dog_trace.rb +46 -158
  135. data/lib/graphql/tracing/data_dog_tracing.rb +2 -0
  136. data/lib/graphql/tracing/detailed_trace/memory_backend.rb +60 -0
  137. data/lib/graphql/tracing/detailed_trace/redis_backend.rb +72 -0
  138. data/lib/graphql/tracing/detailed_trace.rb +93 -0
  139. data/lib/graphql/tracing/legacy_hooks_trace.rb +1 -0
  140. data/lib/graphql/tracing/legacy_trace.rb +4 -61
  141. data/lib/graphql/tracing/monitor_trace.rb +283 -0
  142. data/lib/graphql/tracing/new_relic_trace.rb +47 -54
  143. data/lib/graphql/tracing/new_relic_tracing.rb +2 -0
  144. data/lib/graphql/tracing/notifications_trace.rb +182 -34
  145. data/lib/graphql/tracing/notifications_tracing.rb +2 -0
  146. data/lib/graphql/tracing/null_trace.rb +9 -0
  147. data/lib/graphql/tracing/perfetto_trace/trace.proto +141 -0
  148. data/lib/graphql/tracing/perfetto_trace/trace_pb.rb +33 -0
  149. data/lib/graphql/tracing/perfetto_trace.rb +734 -0
  150. data/lib/graphql/tracing/platform_trace.rb +5 -0
  151. data/lib/graphql/tracing/prometheus_trace/graphql_collector.rb +2 -0
  152. data/lib/graphql/tracing/prometheus_trace.rb +72 -68
  153. data/lib/graphql/tracing/prometheus_tracing.rb +2 -0
  154. data/lib/graphql/tracing/scout_trace.rb +32 -55
  155. data/lib/graphql/tracing/scout_tracing.rb +2 -0
  156. data/lib/graphql/tracing/sentry_trace.rb +62 -94
  157. data/lib/graphql/tracing/statsd_trace.rb +33 -41
  158. data/lib/graphql/tracing/statsd_tracing.rb +2 -0
  159. data/lib/graphql/tracing/trace.rb +111 -1
  160. data/lib/graphql/tracing.rb +31 -30
  161. data/lib/graphql/types/relay/connection_behaviors.rb +3 -3
  162. data/lib/graphql/types/relay/edge_behaviors.rb +2 -2
  163. data/lib/graphql/types.rb +18 -11
  164. data/lib/graphql/version.rb +1 -1
  165. data/lib/graphql.rb +55 -47
  166. metadata +146 -11
  167. data/lib/graphql/backtrace/inspect_result.rb +0 -38
  168. data/lib/graphql/backtrace/trace.rb +0 -93
  169. data/lib/graphql/backtrace/tracer.rb +0 -80
  170. data/lib/graphql/schema/null_mask.rb +0 -11
  171. data/lib/graphql/static_validation/rules/subscription_root_exists.rb +0 -17
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.3
4
+ version: 2.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Mosolgo
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-11-11 00:00:00.000000000 Z
10
+ date: 2025-04-14 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: base64
@@ -38,6 +37,20 @@ dependencies:
38
37
  - - ">="
39
38
  - !ruby/object:Gem::Version
40
39
  version: '0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: logger
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
41
54
  - !ruby/object:Gem::Dependency
42
55
  name: benchmark-ips
43
56
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +79,20 @@ dependencies:
66
79
  - - "~>"
67
80
  - !ruby/object:Gem::Version
68
81
  version: '1.0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: google-protobuf
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
69
96
  - !ruby/object:Gem::Dependency
70
97
  name: graphql-batch
71
98
  requirement: !ruby/object:Gem::Requirement
@@ -178,6 +205,48 @@ dependencies:
178
205
  - - ">="
179
206
  - !ruby/object:Gem::Version
180
207
  version: '0'
208
+ - !ruby/object:Gem::Dependency
209
+ name: simplecov
210
+ requirement: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ type: :development
216
+ prerelease: false
217
+ version_requirements: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ">="
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ - !ruby/object:Gem::Dependency
223
+ name: simplecov-lcov
224
+ requirement: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - ">="
227
+ - !ruby/object:Gem::Version
228
+ version: '0'
229
+ type: :development
230
+ prerelease: false
231
+ version_requirements: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: '0'
236
+ - !ruby/object:Gem::Dependency
237
+ name: undercover
238
+ requirement: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - ">="
241
+ - !ruby/object:Gem::Version
242
+ version: '0'
243
+ type: :development
244
+ prerelease: false
245
+ version_requirements: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - ">="
248
+ - !ruby/object:Gem::Version
249
+ version: '0'
181
250
  - !ruby/object:Gem::Dependency
182
251
  name: jekyll
183
252
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +261,20 @@ dependencies:
192
261
  - - ">="
193
262
  - !ruby/object:Gem::Version
194
263
  version: '0'
264
+ - !ruby/object:Gem::Dependency
265
+ name: jekyll-sass-converter
266
+ requirement: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - "~>"
269
+ - !ruby/object:Gem::Version
270
+ version: '2.2'
271
+ type: :development
272
+ prerelease: false
273
+ version_requirements: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - "~>"
276
+ - !ruby/object:Gem::Version
277
+ version: '2.2'
195
278
  - !ruby/object:Gem::Dependency
196
279
  name: yard
197
280
  requirement: !ruby/object:Gem::Requirement
@@ -248,6 +331,20 @@ dependencies:
248
331
  - - "~>"
249
332
  - !ruby/object:Gem::Version
250
333
  version: 1.5.0
334
+ - !ruby/object:Gem::Dependency
335
+ name: mutex_m
336
+ requirement: !ruby/object:Gem::Requirement
337
+ requirements:
338
+ - - ">="
339
+ - !ruby/object:Gem::Version
340
+ version: '0'
341
+ type: :development
342
+ prerelease: false
343
+ version_requirements: !ruby/object:Gem::Requirement
344
+ requirements:
345
+ - - ">="
346
+ - !ruby/object:Gem::Version
347
+ version: '0'
251
348
  - !ruby/object:Gem::Dependency
252
349
  name: webrick
253
350
  requirement: !ruby/object:Gem::Requirement
@@ -328,15 +425,44 @@ files:
328
425
  - lib/graphql/analysis/query_depth.rb
329
426
  - lib/graphql/analysis/visitor.rb
330
427
  - lib/graphql/analysis_error.rb
428
+ - lib/graphql/autoload.rb
331
429
  - lib/graphql/backtrace.rb
332
- - lib/graphql/backtrace/inspect_result.rb
333
430
  - lib/graphql/backtrace/table.rb
334
- - lib/graphql/backtrace/trace.rb
335
431
  - lib/graphql/backtrace/traced_error.rb
336
- - lib/graphql/backtrace/tracer.rb
337
432
  - lib/graphql/coercion_error.rb
338
433
  - lib/graphql/current.rb
434
+ - lib/graphql/dashboard.rb
435
+ - lib/graphql/dashboard/detailed_traces.rb
436
+ - lib/graphql/dashboard/installable.rb
437
+ - lib/graphql/dashboard/limiters.rb
438
+ - lib/graphql/dashboard/operation_store.rb
439
+ - lib/graphql/dashboard/statics/bootstrap-5.3.3.min.css
440
+ - lib/graphql/dashboard/statics/bootstrap-5.3.3.min.js
441
+ - lib/graphql/dashboard/statics/charts.min.css
442
+ - lib/graphql/dashboard/statics/dashboard.css
443
+ - lib/graphql/dashboard/statics/dashboard.js
444
+ - lib/graphql/dashboard/statics/header-icon.png
445
+ - lib/graphql/dashboard/statics/icon.png
446
+ - lib/graphql/dashboard/subscriptions.rb
447
+ - lib/graphql/dashboard/views/graphql/dashboard/detailed_traces/traces/index.html.erb
448
+ - lib/graphql/dashboard/views/graphql/dashboard/landings/show.html.erb
449
+ - lib/graphql/dashboard/views/graphql/dashboard/limiters/limiters/show.html.erb
450
+ - lib/graphql/dashboard/views/graphql/dashboard/not_installed.html.erb
451
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/_form.html.erb
452
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/edit.html.erb
453
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/index.html.erb
454
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/new.html.erb
455
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/index.html.erb
456
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/show.html.erb
457
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/index.html.erb
458
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/show.html.erb
459
+ - lib/graphql/dashboard/views/graphql/dashboard/subscriptions/subscriptions/show.html.erb
460
+ - lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/index.html.erb
461
+ - lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/show.html.erb
462
+ - lib/graphql/dashboard/views/layouts/graphql/dashboard/application.html.erb
339
463
  - lib/graphql/dataloader.rb
464
+ - lib/graphql/dataloader/active_record_association_source.rb
465
+ - lib/graphql/dataloader/active_record_source.rb
340
466
  - lib/graphql/dataloader/async_dataloader.rb
341
467
  - lib/graphql/dataloader/null_dataloader.rb
342
468
  - lib/graphql/dataloader/request.rb
@@ -465,6 +591,7 @@ files:
465
591
  - lib/graphql/schema/member/graphql_type_names.rb
466
592
  - lib/graphql/schema/member/has_arguments.rb
467
593
  - lib/graphql/schema/member/has_ast_node.rb
594
+ - lib/graphql/schema/member/has_dataloader.rb
468
595
  - lib/graphql/schema/member/has_deprecation_reason.rb
469
596
  - lib/graphql/schema/member/has_directives.rb
470
597
  - lib/graphql/schema/member/has_fields.rb
@@ -478,7 +605,6 @@ files:
478
605
  - lib/graphql/schema/member/validates_input.rb
479
606
  - lib/graphql/schema/mutation.rb
480
607
  - lib/graphql/schema/non_null.rb
481
- - lib/graphql/schema/null_mask.rb
482
608
  - lib/graphql/schema/object.rb
483
609
  - lib/graphql/schema/printer.rb
484
610
  - lib/graphql/schema/relay_classic_mutation.rb
@@ -504,6 +630,7 @@ files:
504
630
  - lib/graphql/schema/visibility.rb
505
631
  - lib/graphql/schema/visibility/migration.rb
506
632
  - lib/graphql/schema/visibility/profile.rb
633
+ - lib/graphql/schema/visibility/visit.rb
507
634
  - lib/graphql/schema/warden.rb
508
635
  - lib/graphql/schema/wrapper.rb
509
636
  - lib/graphql/static_validation.rb
@@ -549,6 +676,7 @@ files:
549
676
  - lib/graphql/static_validation/rules/mutation_root_exists_error.rb
550
677
  - lib/graphql/static_validation/rules/no_definitions_are_present.rb
551
678
  - lib/graphql/static_validation/rules/no_definitions_are_present_error.rb
679
+ - lib/graphql/static_validation/rules/not_single_subscription_error.rb
552
680
  - lib/graphql/static_validation/rules/one_of_input_objects_are_valid.rb
553
681
  - lib/graphql/static_validation/rules/one_of_input_objects_are_valid_error.rb
554
682
  - lib/graphql/static_validation/rules/operation_names_are_valid.rb
@@ -559,7 +687,7 @@ files:
559
687
  - lib/graphql/static_validation/rules/required_arguments_are_present_error.rb
560
688
  - lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb
561
689
  - lib/graphql/static_validation/rules/required_input_object_attributes_are_present_error.rb
562
- - lib/graphql/static_validation/rules/subscription_root_exists.rb
690
+ - lib/graphql/static_validation/rules/subscription_root_exists_and_single_subscription_selection.rb
563
691
  - lib/graphql/static_validation/rules/subscription_root_exists_error.rb
564
692
  - lib/graphql/static_validation/rules/unique_directives_per_location.rb
565
693
  - lib/graphql/static_validation/rules/unique_directives_per_location_error.rb
@@ -592,14 +720,23 @@ files:
592
720
  - lib/graphql/tracing/appoptics_tracing.rb
593
721
  - lib/graphql/tracing/appsignal_trace.rb
594
722
  - lib/graphql/tracing/appsignal_tracing.rb
723
+ - lib/graphql/tracing/call_legacy_tracers.rb
595
724
  - lib/graphql/tracing/data_dog_trace.rb
596
725
  - lib/graphql/tracing/data_dog_tracing.rb
726
+ - lib/graphql/tracing/detailed_trace.rb
727
+ - lib/graphql/tracing/detailed_trace/memory_backend.rb
728
+ - lib/graphql/tracing/detailed_trace/redis_backend.rb
597
729
  - lib/graphql/tracing/legacy_hooks_trace.rb
598
730
  - lib/graphql/tracing/legacy_trace.rb
731
+ - lib/graphql/tracing/monitor_trace.rb
599
732
  - lib/graphql/tracing/new_relic_trace.rb
600
733
  - lib/graphql/tracing/new_relic_tracing.rb
601
734
  - lib/graphql/tracing/notifications_trace.rb
602
735
  - lib/graphql/tracing/notifications_tracing.rb
736
+ - lib/graphql/tracing/null_trace.rb
737
+ - lib/graphql/tracing/perfetto_trace.rb
738
+ - lib/graphql/tracing/perfetto_trace/trace.proto
739
+ - lib/graphql/tracing/perfetto_trace/trace_pb.rb
603
740
  - lib/graphql/tracing/platform_trace.rb
604
741
  - lib/graphql/tracing/platform_tracing.rb
605
742
  - lib/graphql/tracing/prometheus_trace.rb
@@ -650,7 +787,6 @@ metadata:
650
787
  bug_tracker_uri: https://github.com/rmosolgo/graphql-ruby/issues
651
788
  mailing_list_uri: https://buttondown.email/graphql-ruby
652
789
  rubygems_mfa_required: 'true'
653
- post_install_message:
654
790
  rdoc_options: []
655
791
  require_paths:
656
792
  - lib
@@ -665,8 +801,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
665
801
  - !ruby/object:Gem::Version
666
802
  version: '0'
667
803
  requirements: []
668
- rubygems_version: 3.5.12
669
- signing_key:
804
+ rubygems_version: 3.6.6
670
805
  specification_version: 4
671
806
  summary: A GraphQL language and runtime for Ruby
672
807
  test_files: []
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- class Backtrace
4
- module InspectResult
5
- module_function
6
-
7
- def inspect_result(obj)
8
- case obj
9
- when Hash
10
- "{" +
11
- obj.map do |key, val|
12
- "#{key}: #{inspect_truncated(val)}"
13
- end.join(", ") +
14
- "}"
15
- when Array
16
- "[" +
17
- obj.map { |v| inspect_truncated(v) }.join(", ") +
18
- "]"
19
- else
20
- inspect_truncated(obj)
21
- end
22
- end
23
-
24
- def inspect_truncated(obj)
25
- case obj
26
- when Hash
27
- "{...}"
28
- when Array
29
- "[...]"
30
- when GraphQL::Execution::Lazy
31
- "(unresolved)"
32
- else
33
- "#{obj.inspect}"
34
- end
35
- end
36
- end
37
- end
38
- end
@@ -1,93 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- class Backtrace
4
- module Trace
5
- def initialize(*args, **kwargs, &block)
6
- @__backtrace_contexts = {}
7
- @__backtrace_last_context = nil
8
- super
9
- end
10
-
11
- def validate(query:, validate:)
12
- if query.multiplex
13
- push_query_backtrace_context(query)
14
- end
15
- super
16
- end
17
-
18
- def analyze_query(query:)
19
- if query.multiplex # missing for stand-alone static validation
20
- push_query_backtrace_context(query)
21
- end
22
- super
23
- end
24
-
25
- def execute_query(query:)
26
- push_query_backtrace_context(query)
27
- super
28
- end
29
-
30
- def execute_query_lazy(query:, multiplex:)
31
- query ||= multiplex.queries.first
32
- push_query_backtrace_context(query)
33
- super
34
- end
35
-
36
- def execute_field(field:, query:, ast_node:, arguments:, object:)
37
- push_field_backtrace_context(field, query, ast_node, arguments, object)
38
- super
39
- end
40
-
41
- def execute_field_lazy(field:, query:, ast_node:, arguments:, object:)
42
- push_field_backtrace_context(field, query, ast_node, arguments, object)
43
- super
44
- end
45
-
46
- def execute_multiplex(multiplex:)
47
- super
48
- rescue StandardError => err
49
- # This is an unhandled error from execution,
50
- # Re-raise it with a GraphQL trace.
51
- potential_context = @__backtrace_last_context
52
- if potential_context.is_a?(GraphQL::Query::Context) ||
53
- potential_context.is_a?(Backtrace::Frame)
54
- raise TracedError.new(err, potential_context)
55
- else
56
- raise
57
- end
58
- end
59
-
60
- private
61
-
62
- def push_query_backtrace_context(query)
63
- push_data = query
64
- push_key = []
65
- @__backtrace_contexts[push_key] = push_data
66
- @__backtrace_last_context = push_data
67
- end
68
-
69
- def push_field_backtrace_context(field, query, ast_node, arguments, object)
70
- push_key = query.context[:current_path]
71
- push_storage = @__backtrace_contexts
72
- parent_frame = push_storage[push_key[0..-2]]
73
-
74
- if parent_frame.is_a?(GraphQL::Query)
75
- parent_frame = parent_frame.context
76
- end
77
-
78
- push_data = Frame.new(
79
- query: query,
80
- path: push_key,
81
- ast_node: ast_node,
82
- field: field,
83
- object: object,
84
- arguments: arguments,
85
- parent_frame: parent_frame,
86
- )
87
- push_storage[push_key] = push_data
88
- @__backtrace_last_context = push_data
89
- end
90
-
91
- end
92
- end
93
- end
@@ -1,80 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- class Backtrace
4
- # TODO this is not fiber-friendly
5
- module Tracer
6
- module_function
7
-
8
- # Implement the {GraphQL::Tracing} API.
9
- def trace(key, metadata)
10
- case key
11
- when "lex", "parse"
12
- # No context here, don't have a query yet
13
- nil
14
- when "execute_multiplex", "analyze_multiplex"
15
- # No query context yet
16
- nil
17
- when "validate", "analyze_query", "execute_query", "execute_query_lazy"
18
- push_key = []
19
- if (query = metadata[:query]) || ((queries = metadata[:queries]) && (query = queries.first))
20
- push_data = query
21
- multiplex = query.multiplex
22
- elsif (multiplex = metadata[:multiplex])
23
- push_data = multiplex.queries.first
24
- end
25
- when "execute_field", "execute_field_lazy"
26
- query = metadata[:query]
27
- multiplex = query.multiplex
28
- push_key = query.context[:current_path]
29
- parent_frame = multiplex.context[:graphql_backtrace_contexts][push_key[0..-2]]
30
-
31
- if parent_frame.is_a?(GraphQL::Query)
32
- parent_frame = parent_frame.context
33
- end
34
-
35
- push_data = Frame.new(
36
- query: query,
37
- path: push_key,
38
- ast_node: metadata[:ast_node],
39
- field: metadata[:field],
40
- object: metadata[:object],
41
- arguments: metadata[:arguments],
42
- parent_frame: parent_frame,
43
- )
44
- else
45
- # Custom key, no backtrace data for this
46
- nil
47
- end
48
-
49
- if push_data && multiplex
50
- push_storage = multiplex.context[:graphql_backtrace_contexts] ||= {}
51
- push_storage[push_key] = push_data
52
- multiplex.context[:last_graphql_backtrace_context] = push_data
53
- end
54
-
55
- if key == "execute_multiplex"
56
- multiplex_context = metadata[:multiplex].context
57
- begin
58
- yield
59
- rescue StandardError => err
60
- # This is an unhandled error from execution,
61
- # Re-raise it with a GraphQL trace.
62
- potential_context = multiplex_context[:last_graphql_backtrace_context]
63
-
64
- if potential_context.is_a?(GraphQL::Query::Context) ||
65
- potential_context.is_a?(Backtrace::Frame)
66
- raise TracedError.new(err, potential_context)
67
- else
68
- raise
69
- end
70
- ensure
71
- multiplex_context.delete(:graphql_backtrace_contexts)
72
- multiplex_context.delete(:last_graphql_backtrace_context)
73
- end
74
- else
75
- yield
76
- end
77
- end
78
- end
79
- end
80
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- class Schema
4
- # @api private
5
- module NullMask
6
- def self.call(member, ctx)
7
- false
8
- end
9
- end
10
- end
11
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module StaticValidation
4
- module SubscriptionRootExists
5
- def on_operation_definition(node, _parent)
6
- if node.operation_type == "subscription" && context.types.subscription_root.nil?
7
- add_error(GraphQL::StaticValidation::SubscriptionRootExistsError.new(
8
- 'Schema is not configured for subscriptions',
9
- nodes: node
10
- ))
11
- else
12
- super
13
- end
14
- end
15
- end
16
- end
17
- end