graphql 2.4.5 → 2.5.21

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 (192) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/graphql/detailed_trace_generator.rb +77 -0
  3. data/lib/generators/graphql/templates/create_graphql_detailed_traces.erb +10 -0
  4. data/lib/graphql/analysis/analyzer.rb +2 -1
  5. data/lib/graphql/analysis/query_complexity.rb +87 -7
  6. data/lib/graphql/analysis/visitor.rb +37 -40
  7. data/lib/graphql/analysis.rb +12 -9
  8. data/lib/graphql/autoload.rb +1 -0
  9. data/lib/graphql/backtrace/table.rb +118 -55
  10. data/lib/graphql/backtrace.rb +1 -19
  11. data/lib/graphql/current.rb +6 -1
  12. data/lib/graphql/dashboard/application_controller.rb +41 -0
  13. data/lib/graphql/dashboard/detailed_traces.rb +47 -0
  14. data/lib/graphql/dashboard/installable.rb +22 -0
  15. data/lib/graphql/dashboard/landings_controller.rb +9 -0
  16. data/lib/graphql/dashboard/limiters.rb +93 -0
  17. data/lib/graphql/dashboard/operation_store.rb +199 -0
  18. data/lib/graphql/dashboard/statics/bootstrap-5.3.3.min.css +6 -0
  19. data/lib/graphql/dashboard/statics/bootstrap-5.3.3.min.js +7 -0
  20. data/lib/graphql/dashboard/statics/charts.min.css +1 -0
  21. data/lib/graphql/dashboard/statics/dashboard.css +30 -0
  22. data/lib/graphql/dashboard/statics/dashboard.js +143 -0
  23. data/lib/graphql/dashboard/statics/header-icon.png +0 -0
  24. data/lib/graphql/dashboard/statics/icon.png +0 -0
  25. data/lib/graphql/dashboard/statics_controller.rb +31 -0
  26. data/lib/graphql/dashboard/subscriptions.rb +97 -0
  27. data/lib/graphql/dashboard/views/graphql/dashboard/detailed_traces/traces/index.html.erb +45 -0
  28. data/lib/graphql/dashboard/views/graphql/dashboard/landings/show.html.erb +18 -0
  29. data/lib/graphql/dashboard/views/graphql/dashboard/limiters/limiters/show.html.erb +62 -0
  30. data/lib/graphql/dashboard/views/graphql/dashboard/not_installed.html.erb +18 -0
  31. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/_form.html.erb +24 -0
  32. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/edit.html.erb +21 -0
  33. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/index.html.erb +69 -0
  34. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/new.html.erb +7 -0
  35. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/index.html.erb +39 -0
  36. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/show.html.erb +32 -0
  37. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/index.html.erb +81 -0
  38. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/show.html.erb +71 -0
  39. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/subscriptions/show.html.erb +41 -0
  40. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/index.html.erb +55 -0
  41. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/show.html.erb +40 -0
  42. data/lib/graphql/dashboard/views/layouts/graphql/dashboard/application.html.erb +108 -0
  43. data/lib/graphql/dashboard.rb +96 -0
  44. data/lib/graphql/dataloader/active_record_association_source.rb +84 -0
  45. data/lib/graphql/dataloader/active_record_source.rb +47 -0
  46. data/lib/graphql/dataloader/async_dataloader.rb +38 -15
  47. data/lib/graphql/dataloader/null_dataloader.rb +55 -10
  48. data/lib/graphql/dataloader/source.rb +18 -6
  49. data/lib/graphql/dataloader.rb +110 -26
  50. data/lib/graphql/date_encoding_error.rb +1 -1
  51. data/lib/graphql/dig.rb +2 -1
  52. data/lib/graphql/execution/interpreter/resolve.rb +10 -16
  53. data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +58 -5
  54. data/lib/graphql/execution/interpreter/runtime.rb +229 -93
  55. data/lib/graphql/execution/interpreter.rb +15 -24
  56. data/lib/graphql/execution/multiplex.rb +7 -6
  57. data/lib/graphql/execution/next/field_resolve_step.rb +690 -0
  58. data/lib/graphql/execution/next/load_argument_step.rb +60 -0
  59. data/lib/graphql/execution/next/prepare_object_step.rb +129 -0
  60. data/lib/graphql/execution/next/runner.rb +389 -0
  61. data/lib/graphql/execution/next/selections_step.rb +37 -0
  62. data/lib/graphql/execution/next.rb +69 -0
  63. data/lib/graphql/execution.rb +1 -0
  64. data/lib/graphql/execution_error.rb +13 -10
  65. data/lib/graphql/introspection/directive_location_enum.rb +1 -1
  66. data/lib/graphql/introspection/directive_type.rb +7 -3
  67. data/lib/graphql/introspection/dynamic_fields.rb +5 -1
  68. data/lib/graphql/introspection/entry_points.rb +11 -3
  69. data/lib/graphql/introspection/enum_value_type.rb +5 -5
  70. data/lib/graphql/introspection/field_type.rb +13 -5
  71. data/lib/graphql/introspection/input_value_type.rb +21 -13
  72. data/lib/graphql/introspection/type_type.rb +64 -28
  73. data/lib/graphql/invalid_name_error.rb +1 -1
  74. data/lib/graphql/invalid_null_error.rb +25 -16
  75. data/lib/graphql/language/document_from_schema_definition.rb +2 -1
  76. data/lib/graphql/language/lexer.rb +16 -5
  77. data/lib/graphql/language/nodes.rb +8 -1
  78. data/lib/graphql/language/parser.rb +16 -8
  79. data/lib/graphql/language/static_visitor.rb +37 -33
  80. data/lib/graphql/language/visitor.rb +59 -55
  81. data/lib/graphql/language.rb +21 -12
  82. data/lib/graphql/pagination/connection.rb +2 -0
  83. data/lib/graphql/pagination/connections.rb +32 -0
  84. data/lib/graphql/query/context.rb +6 -10
  85. data/lib/graphql/query/null_context.rb +9 -3
  86. data/lib/graphql/query/partial.rb +179 -0
  87. data/lib/graphql/query.rb +64 -64
  88. data/lib/graphql/railtie.rb +1 -1
  89. data/lib/graphql/schema/addition.rb +3 -1
  90. data/lib/graphql/schema/always_visible.rb +1 -0
  91. data/lib/graphql/schema/argument.rb +24 -8
  92. data/lib/graphql/schema/build_from_definition.rb +113 -54
  93. data/lib/graphql/schema/directive/flagged.rb +2 -0
  94. data/lib/graphql/schema/directive.rb +52 -2
  95. data/lib/graphql/schema/enum.rb +36 -1
  96. data/lib/graphql/schema/enum_value.rb +1 -1
  97. data/lib/graphql/schema/field/connection_extension.rb +15 -35
  98. data/lib/graphql/schema/field/scope_extension.rb +22 -13
  99. data/lib/graphql/schema/field.rb +101 -51
  100. data/lib/graphql/schema/field_extension.rb +33 -0
  101. data/lib/graphql/schema/input_object.rb +45 -38
  102. data/lib/graphql/schema/interface.rb +2 -1
  103. data/lib/graphql/schema/list.rb +1 -1
  104. data/lib/graphql/schema/member/base_dsl_methods.rb +1 -1
  105. data/lib/graphql/schema/member/has_arguments.rb +56 -19
  106. data/lib/graphql/schema/member/has_authorization.rb +35 -0
  107. data/lib/graphql/schema/member/has_dataloader.rb +79 -0
  108. data/lib/graphql/schema/member/has_deprecation_reason.rb +15 -0
  109. data/lib/graphql/schema/member/has_directives.rb +1 -1
  110. data/lib/graphql/schema/member/has_fields.rb +81 -5
  111. data/lib/graphql/schema/member/has_interfaces.rb +3 -3
  112. data/lib/graphql/schema/member/scoped.rb +1 -1
  113. data/lib/graphql/schema/member/type_system_helpers.rb +17 -3
  114. data/lib/graphql/schema/member.rb +6 -0
  115. data/lib/graphql/schema/object.rb +18 -8
  116. data/lib/graphql/schema/ractor_shareable.rb +79 -0
  117. data/lib/graphql/schema/resolver.rb +52 -6
  118. data/lib/graphql/schema/scalar.rb +1 -6
  119. data/lib/graphql/schema/subscription.rb +50 -4
  120. data/lib/graphql/schema/timeout.rb +19 -2
  121. data/lib/graphql/schema/validator/required_validator.rb +71 -14
  122. data/lib/graphql/schema/visibility/migration.rb +3 -2
  123. data/lib/graphql/schema/visibility/profile.rb +115 -23
  124. data/lib/graphql/schema/visibility.rb +49 -32
  125. data/lib/graphql/schema/warden.rb +23 -2
  126. data/lib/graphql/schema.rb +333 -68
  127. data/lib/graphql/static_validation/all_rules.rb +2 -2
  128. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +47 -13
  129. data/lib/graphql/static_validation/rules/fields_will_merge.rb +79 -17
  130. data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +10 -2
  131. data/lib/graphql/static_validation/rules/not_single_subscription_error.rb +25 -0
  132. data/lib/graphql/static_validation/rules/subscription_root_exists_and_single_subscription_selection.rb +26 -0
  133. data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +6 -2
  134. data/lib/graphql/static_validation/validator.rb +6 -1
  135. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +1 -0
  136. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +12 -10
  137. data/lib/graphql/subscriptions/event.rb +12 -1
  138. data/lib/graphql/subscriptions/serialize.rb +1 -1
  139. data/lib/graphql/subscriptions.rb +1 -1
  140. data/lib/graphql/testing/helpers.rb +17 -11
  141. data/lib/graphql/testing/mock_action_cable.rb +111 -0
  142. data/lib/graphql/testing.rb +1 -0
  143. data/lib/graphql/tracing/active_support_notifications_trace.rb +14 -3
  144. data/lib/graphql/tracing/active_support_notifications_tracing.rb +1 -1
  145. data/lib/graphql/tracing/appoptics_trace.rb +9 -1
  146. data/lib/graphql/tracing/appoptics_tracing.rb +7 -0
  147. data/lib/graphql/tracing/appsignal_trace.rb +32 -55
  148. data/lib/graphql/tracing/appsignal_tracing.rb +2 -0
  149. data/lib/graphql/tracing/call_legacy_tracers.rb +66 -0
  150. data/lib/graphql/tracing/data_dog_trace.rb +46 -158
  151. data/lib/graphql/tracing/data_dog_tracing.rb +2 -0
  152. data/lib/graphql/tracing/detailed_trace/active_record_backend.rb +74 -0
  153. data/lib/graphql/tracing/detailed_trace/memory_backend.rb +60 -0
  154. data/lib/graphql/tracing/detailed_trace/redis_backend.rb +72 -0
  155. data/lib/graphql/tracing/detailed_trace.rb +156 -0
  156. data/lib/graphql/tracing/legacy_hooks_trace.rb +1 -0
  157. data/lib/graphql/tracing/legacy_trace.rb +4 -61
  158. data/lib/graphql/tracing/monitor_trace.rb +283 -0
  159. data/lib/graphql/tracing/new_relic_trace.rb +47 -54
  160. data/lib/graphql/tracing/new_relic_tracing.rb +2 -0
  161. data/lib/graphql/tracing/notifications_trace.rb +184 -34
  162. data/lib/graphql/tracing/notifications_tracing.rb +2 -0
  163. data/lib/graphql/tracing/null_trace.rb +9 -0
  164. data/lib/graphql/tracing/perfetto_trace/trace.proto +141 -0
  165. data/lib/graphql/tracing/perfetto_trace/trace_pb.rb +33 -0
  166. data/lib/graphql/tracing/perfetto_trace.rb +864 -0
  167. data/lib/graphql/tracing/platform_trace.rb +5 -0
  168. data/lib/graphql/tracing/prometheus_trace/graphql_collector.rb +2 -0
  169. data/lib/graphql/tracing/prometheus_trace.rb +72 -68
  170. data/lib/graphql/tracing/prometheus_tracing.rb +2 -0
  171. data/lib/graphql/tracing/scout_trace.rb +32 -55
  172. data/lib/graphql/tracing/scout_tracing.rb +2 -0
  173. data/lib/graphql/tracing/sentry_trace.rb +64 -94
  174. data/lib/graphql/tracing/statsd_trace.rb +33 -41
  175. data/lib/graphql/tracing/statsd_tracing.rb +2 -0
  176. data/lib/graphql/tracing/trace.rb +111 -1
  177. data/lib/graphql/tracing.rb +31 -30
  178. data/lib/graphql/type_kinds.rb +1 -0
  179. data/lib/graphql/types/relay/connection_behaviors.rb +9 -7
  180. data/lib/graphql/types/relay/edge_behaviors.rb +5 -4
  181. data/lib/graphql/types/relay/has_node_field.rb +13 -8
  182. data/lib/graphql/types/relay/has_nodes_field.rb +13 -8
  183. data/lib/graphql/types/relay/node_behaviors.rb +13 -2
  184. data/lib/graphql/unauthorized_error.rb +5 -1
  185. data/lib/graphql/version.rb +1 -1
  186. data/lib/graphql.rb +12 -31
  187. metadata +174 -11
  188. data/lib/graphql/backtrace/inspect_result.rb +0 -38
  189. data/lib/graphql/backtrace/trace.rb +0 -93
  190. data/lib/graphql/backtrace/tracer.rb +0 -80
  191. data/lib/graphql/schema/null_mask.rb +0 -11
  192. 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.5
4
+ version: 2.5.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Mosolgo
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-12-02 00:00:00.000000000 Z
10
+ date: 2026-03-09 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
@@ -136,6 +163,20 @@ dependencies:
136
163
  - - ">="
137
164
  - !ruby/object:Gem::Version
138
165
  version: '0'
166
+ - !ruby/object:Gem::Dependency
167
+ name: ostruct
168
+ requirement: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ type: :development
174
+ prerelease: false
175
+ version_requirements: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
139
180
  - !ruby/object:Gem::Dependency
140
181
  name: rake
141
182
  requirement: !ruby/object:Gem::Requirement
@@ -178,6 +219,48 @@ dependencies:
178
219
  - - ">="
179
220
  - !ruby/object:Gem::Version
180
221
  version: '0'
222
+ - !ruby/object:Gem::Dependency
223
+ name: simplecov
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: simplecov-lcov
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'
250
+ - !ruby/object:Gem::Dependency
251
+ name: undercover
252
+ requirement: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - ">="
255
+ - !ruby/object:Gem::Version
256
+ version: '0'
257
+ type: :development
258
+ prerelease: false
259
+ version_requirements: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - ">="
262
+ - !ruby/object:Gem::Version
263
+ version: '0'
181
264
  - !ruby/object:Gem::Dependency
182
265
  name: jekyll
183
266
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +275,20 @@ dependencies:
192
275
  - - ">="
193
276
  - !ruby/object:Gem::Version
194
277
  version: '0'
278
+ - !ruby/object:Gem::Dependency
279
+ name: jekyll-sass-converter
280
+ requirement: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - "~>"
283
+ - !ruby/object:Gem::Version
284
+ version: '2.2'
285
+ type: :development
286
+ prerelease: false
287
+ version_requirements: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - "~>"
290
+ - !ruby/object:Gem::Version
291
+ version: '2.2'
195
292
  - !ruby/object:Gem::Dependency
196
293
  name: yard
197
294
  requirement: !ruby/object:Gem::Requirement
@@ -248,6 +345,20 @@ dependencies:
248
345
  - - "~>"
249
346
  - !ruby/object:Gem::Version
250
347
  version: 1.5.0
348
+ - !ruby/object:Gem::Dependency
349
+ name: mutex_m
350
+ requirement: !ruby/object:Gem::Requirement
351
+ requirements:
352
+ - - ">="
353
+ - !ruby/object:Gem::Version
354
+ version: '0'
355
+ type: :development
356
+ prerelease: false
357
+ version_requirements: !ruby/object:Gem::Requirement
358
+ requirements:
359
+ - - ">="
360
+ - !ruby/object:Gem::Version
361
+ version: '0'
251
362
  - !ruby/object:Gem::Dependency
252
363
  name: webrick
253
364
  requirement: !ruby/object:Gem::Requirement
@@ -272,6 +383,7 @@ files:
272
383
  - ".yardopts"
273
384
  - MIT-LICENSE
274
385
  - lib/generators/graphql/core.rb
386
+ - lib/generators/graphql/detailed_trace_generator.rb
275
387
  - lib/generators/graphql/enum_generator.rb
276
388
  - lib/generators/graphql/field_extractor.rb
277
389
  - lib/generators/graphql/input_generator.rb
@@ -301,6 +413,7 @@ files:
301
413
  - lib/generators/graphql/templates/base_resolver.erb
302
414
  - lib/generators/graphql/templates/base_scalar.erb
303
415
  - lib/generators/graphql/templates/base_union.erb
416
+ - lib/generators/graphql/templates/create_graphql_detailed_traces.erb
304
417
  - lib/generators/graphql/templates/enum.erb
305
418
  - lib/generators/graphql/templates/graphql_controller.erb
306
419
  - lib/generators/graphql/templates/input.erb
@@ -330,14 +443,45 @@ files:
330
443
  - lib/graphql/analysis_error.rb
331
444
  - lib/graphql/autoload.rb
332
445
  - lib/graphql/backtrace.rb
333
- - lib/graphql/backtrace/inspect_result.rb
334
446
  - lib/graphql/backtrace/table.rb
335
- - lib/graphql/backtrace/trace.rb
336
447
  - lib/graphql/backtrace/traced_error.rb
337
- - lib/graphql/backtrace/tracer.rb
338
448
  - lib/graphql/coercion_error.rb
339
449
  - lib/graphql/current.rb
450
+ - lib/graphql/dashboard.rb
451
+ - lib/graphql/dashboard/application_controller.rb
452
+ - lib/graphql/dashboard/detailed_traces.rb
453
+ - lib/graphql/dashboard/installable.rb
454
+ - lib/graphql/dashboard/landings_controller.rb
455
+ - lib/graphql/dashboard/limiters.rb
456
+ - lib/graphql/dashboard/operation_store.rb
457
+ - lib/graphql/dashboard/statics/bootstrap-5.3.3.min.css
458
+ - lib/graphql/dashboard/statics/bootstrap-5.3.3.min.js
459
+ - lib/graphql/dashboard/statics/charts.min.css
460
+ - lib/graphql/dashboard/statics/dashboard.css
461
+ - lib/graphql/dashboard/statics/dashboard.js
462
+ - lib/graphql/dashboard/statics/header-icon.png
463
+ - lib/graphql/dashboard/statics/icon.png
464
+ - lib/graphql/dashboard/statics_controller.rb
465
+ - lib/graphql/dashboard/subscriptions.rb
466
+ - lib/graphql/dashboard/views/graphql/dashboard/detailed_traces/traces/index.html.erb
467
+ - lib/graphql/dashboard/views/graphql/dashboard/landings/show.html.erb
468
+ - lib/graphql/dashboard/views/graphql/dashboard/limiters/limiters/show.html.erb
469
+ - lib/graphql/dashboard/views/graphql/dashboard/not_installed.html.erb
470
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/_form.html.erb
471
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/edit.html.erb
472
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/index.html.erb
473
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/new.html.erb
474
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/index.html.erb
475
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/show.html.erb
476
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/index.html.erb
477
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/show.html.erb
478
+ - lib/graphql/dashboard/views/graphql/dashboard/subscriptions/subscriptions/show.html.erb
479
+ - lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/index.html.erb
480
+ - lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/show.html.erb
481
+ - lib/graphql/dashboard/views/layouts/graphql/dashboard/application.html.erb
340
482
  - lib/graphql/dataloader.rb
483
+ - lib/graphql/dataloader/active_record_association_source.rb
484
+ - lib/graphql/dataloader/active_record_source.rb
341
485
  - lib/graphql/dataloader/async_dataloader.rb
342
486
  - lib/graphql/dataloader/null_dataloader.rb
343
487
  - lib/graphql/dataloader/request.rb
@@ -362,6 +506,12 @@ files:
362
506
  - lib/graphql/execution/lazy/lazy_method_map.rb
363
507
  - lib/graphql/execution/lookahead.rb
364
508
  - lib/graphql/execution/multiplex.rb
509
+ - lib/graphql/execution/next.rb
510
+ - lib/graphql/execution/next/field_resolve_step.rb
511
+ - lib/graphql/execution/next/load_argument_step.rb
512
+ - lib/graphql/execution/next/prepare_object_step.rb
513
+ - lib/graphql/execution/next/runner.rb
514
+ - lib/graphql/execution/next/selections_step.rb
365
515
  - lib/graphql/execution_error.rb
366
516
  - lib/graphql/integer_decoding_error.rb
367
517
  - lib/graphql/integer_encoding_error.rb
@@ -411,6 +561,7 @@ files:
411
561
  - lib/graphql/query/fingerprint.rb
412
562
  - lib/graphql/query/input_validation_result.rb
413
563
  - lib/graphql/query/null_context.rb
564
+ - lib/graphql/query/partial.rb
414
565
  - lib/graphql/query/result.rb
415
566
  - lib/graphql/query/validation_pipeline.rb
416
567
  - lib/graphql/query/variable_validation_error.rb
@@ -466,6 +617,8 @@ files:
466
617
  - lib/graphql/schema/member/graphql_type_names.rb
467
618
  - lib/graphql/schema/member/has_arguments.rb
468
619
  - lib/graphql/schema/member/has_ast_node.rb
620
+ - lib/graphql/schema/member/has_authorization.rb
621
+ - lib/graphql/schema/member/has_dataloader.rb
469
622
  - lib/graphql/schema/member/has_deprecation_reason.rb
470
623
  - lib/graphql/schema/member/has_directives.rb
471
624
  - lib/graphql/schema/member/has_fields.rb
@@ -479,9 +632,9 @@ files:
479
632
  - lib/graphql/schema/member/validates_input.rb
480
633
  - lib/graphql/schema/mutation.rb
481
634
  - lib/graphql/schema/non_null.rb
482
- - lib/graphql/schema/null_mask.rb
483
635
  - lib/graphql/schema/object.rb
484
636
  - lib/graphql/schema/printer.rb
637
+ - lib/graphql/schema/ractor_shareable.rb
485
638
  - lib/graphql/schema/relay_classic_mutation.rb
486
639
  - lib/graphql/schema/resolver.rb
487
640
  - lib/graphql/schema/resolver/has_payload_type.rb
@@ -551,6 +704,7 @@ files:
551
704
  - lib/graphql/static_validation/rules/mutation_root_exists_error.rb
552
705
  - lib/graphql/static_validation/rules/no_definitions_are_present.rb
553
706
  - lib/graphql/static_validation/rules/no_definitions_are_present_error.rb
707
+ - lib/graphql/static_validation/rules/not_single_subscription_error.rb
554
708
  - lib/graphql/static_validation/rules/one_of_input_objects_are_valid.rb
555
709
  - lib/graphql/static_validation/rules/one_of_input_objects_are_valid_error.rb
556
710
  - lib/graphql/static_validation/rules/operation_names_are_valid.rb
@@ -561,7 +715,7 @@ files:
561
715
  - lib/graphql/static_validation/rules/required_arguments_are_present_error.rb
562
716
  - lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb
563
717
  - lib/graphql/static_validation/rules/required_input_object_attributes_are_present_error.rb
564
- - lib/graphql/static_validation/rules/subscription_root_exists.rb
718
+ - lib/graphql/static_validation/rules/subscription_root_exists_and_single_subscription_selection.rb
565
719
  - lib/graphql/static_validation/rules/subscription_root_exists_error.rb
566
720
  - lib/graphql/static_validation/rules/unique_directives_per_location.rb
567
721
  - lib/graphql/static_validation/rules/unique_directives_per_location_error.rb
@@ -587,6 +741,7 @@ files:
587
741
  - lib/graphql/subscriptions/serialize.rb
588
742
  - lib/graphql/testing.rb
589
743
  - lib/graphql/testing/helpers.rb
744
+ - lib/graphql/testing/mock_action_cable.rb
590
745
  - lib/graphql/tracing.rb
591
746
  - lib/graphql/tracing/active_support_notifications_trace.rb
592
747
  - lib/graphql/tracing/active_support_notifications_tracing.rb
@@ -594,14 +749,24 @@ files:
594
749
  - lib/graphql/tracing/appoptics_tracing.rb
595
750
  - lib/graphql/tracing/appsignal_trace.rb
596
751
  - lib/graphql/tracing/appsignal_tracing.rb
752
+ - lib/graphql/tracing/call_legacy_tracers.rb
597
753
  - lib/graphql/tracing/data_dog_trace.rb
598
754
  - lib/graphql/tracing/data_dog_tracing.rb
755
+ - lib/graphql/tracing/detailed_trace.rb
756
+ - lib/graphql/tracing/detailed_trace/active_record_backend.rb
757
+ - lib/graphql/tracing/detailed_trace/memory_backend.rb
758
+ - lib/graphql/tracing/detailed_trace/redis_backend.rb
599
759
  - lib/graphql/tracing/legacy_hooks_trace.rb
600
760
  - lib/graphql/tracing/legacy_trace.rb
761
+ - lib/graphql/tracing/monitor_trace.rb
601
762
  - lib/graphql/tracing/new_relic_trace.rb
602
763
  - lib/graphql/tracing/new_relic_tracing.rb
603
764
  - lib/graphql/tracing/notifications_trace.rb
604
765
  - lib/graphql/tracing/notifications_tracing.rb
766
+ - lib/graphql/tracing/null_trace.rb
767
+ - lib/graphql/tracing/perfetto_trace.rb
768
+ - lib/graphql/tracing/perfetto_trace/trace.proto
769
+ - lib/graphql/tracing/perfetto_trace/trace_pb.rb
605
770
  - lib/graphql/tracing/platform_trace.rb
606
771
  - lib/graphql/tracing/platform_tracing.rb
607
772
  - lib/graphql/tracing/prometheus_trace.rb
@@ -652,7 +817,6 @@ metadata:
652
817
  bug_tracker_uri: https://github.com/rmosolgo/graphql-ruby/issues
653
818
  mailing_list_uri: https://buttondown.email/graphql-ruby
654
819
  rubygems_mfa_required: 'true'
655
- post_install_message:
656
820
  rdoc_options: []
657
821
  require_paths:
658
822
  - lib
@@ -667,8 +831,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
667
831
  - !ruby/object:Gem::Version
668
832
  version: '0'
669
833
  requirements: []
670
- rubygems_version: 3.5.12
671
- signing_key:
834
+ rubygems_version: 3.6.2
672
835
  specification_version: 4
673
836
  summary: A GraphQL language and runtime for Ruby
674
837
  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