graphql 2.0.32 → 2.5.22

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 (308) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/graphql/detailed_trace_generator.rb +77 -0
  3. data/lib/generators/graphql/install/mutation_root_generator.rb +2 -2
  4. data/lib/generators/graphql/install/templates/base_mutation.erb +2 -0
  5. data/lib/generators/graphql/install/templates/mutation_type.erb +2 -0
  6. data/lib/generators/graphql/install_generator.rb +49 -0
  7. data/lib/generators/graphql/orm_mutations_base.rb +1 -1
  8. data/lib/generators/graphql/templates/base_argument.erb +2 -0
  9. data/lib/generators/graphql/templates/base_connection.erb +2 -0
  10. data/lib/generators/graphql/templates/base_edge.erb +2 -0
  11. data/lib/generators/graphql/templates/base_enum.erb +2 -0
  12. data/lib/generators/graphql/templates/base_field.erb +2 -0
  13. data/lib/generators/graphql/templates/base_input_object.erb +2 -0
  14. data/lib/generators/graphql/templates/base_interface.erb +2 -0
  15. data/lib/generators/graphql/templates/base_object.erb +2 -0
  16. data/lib/generators/graphql/templates/base_resolver.erb +8 -0
  17. data/lib/generators/graphql/templates/base_scalar.erb +2 -0
  18. data/lib/generators/graphql/templates/base_union.erb +2 -0
  19. data/lib/generators/graphql/templates/create_graphql_detailed_traces.erb +10 -0
  20. data/lib/generators/graphql/templates/graphql_controller.erb +2 -0
  21. data/lib/generators/graphql/templates/loader.erb +2 -0
  22. data/lib/generators/graphql/templates/mutation.erb +2 -0
  23. data/lib/generators/graphql/templates/node_type.erb +2 -0
  24. data/lib/generators/graphql/templates/query_type.erb +2 -0
  25. data/lib/generators/graphql/templates/schema.erb +5 -0
  26. data/lib/generators/graphql/type_generator.rb +1 -1
  27. data/lib/graphql/analysis/analyzer.rb +90 -0
  28. data/lib/graphql/analysis/field_usage.rb +82 -0
  29. data/lib/graphql/analysis/max_query_complexity.rb +20 -0
  30. data/lib/graphql/analysis/max_query_depth.rb +20 -0
  31. data/lib/graphql/analysis/query_complexity.rb +263 -0
  32. data/lib/graphql/analysis/query_depth.rb +58 -0
  33. data/lib/graphql/analysis/visitor.rb +280 -0
  34. data/lib/graphql/analysis.rb +95 -1
  35. data/lib/graphql/autoload.rb +38 -0
  36. data/lib/graphql/backtrace/table.rb +118 -55
  37. data/lib/graphql/backtrace.rb +1 -19
  38. data/lib/graphql/coercion_error.rb +1 -9
  39. data/lib/graphql/current.rb +57 -0
  40. data/lib/graphql/dashboard/application_controller.rb +41 -0
  41. data/lib/graphql/dashboard/detailed_traces.rb +47 -0
  42. data/lib/graphql/dashboard/installable.rb +22 -0
  43. data/lib/graphql/dashboard/landings_controller.rb +9 -0
  44. data/lib/graphql/dashboard/limiters.rb +93 -0
  45. data/lib/graphql/dashboard/operation_store.rb +199 -0
  46. data/lib/graphql/dashboard/statics/bootstrap-5.3.3.min.css +6 -0
  47. data/lib/graphql/dashboard/statics/bootstrap-5.3.3.min.js +7 -0
  48. data/lib/graphql/dashboard/statics/charts.min.css +1 -0
  49. data/lib/graphql/dashboard/statics/dashboard.css +30 -0
  50. data/lib/graphql/dashboard/statics/dashboard.js +143 -0
  51. data/lib/graphql/dashboard/statics/header-icon.png +0 -0
  52. data/lib/graphql/dashboard/statics/icon.png +0 -0
  53. data/lib/graphql/dashboard/statics_controller.rb +31 -0
  54. data/lib/graphql/dashboard/subscriptions.rb +97 -0
  55. data/lib/graphql/dashboard/views/graphql/dashboard/detailed_traces/traces/index.html.erb +45 -0
  56. data/lib/graphql/dashboard/views/graphql/dashboard/landings/show.html.erb +18 -0
  57. data/lib/graphql/dashboard/views/graphql/dashboard/limiters/limiters/show.html.erb +62 -0
  58. data/lib/graphql/dashboard/views/graphql/dashboard/not_installed.html.erb +18 -0
  59. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/_form.html.erb +24 -0
  60. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/edit.html.erb +21 -0
  61. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/index.html.erb +69 -0
  62. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/new.html.erb +7 -0
  63. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/index.html.erb +39 -0
  64. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/show.html.erb +32 -0
  65. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/index.html.erb +81 -0
  66. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/show.html.erb +71 -0
  67. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/subscriptions/show.html.erb +41 -0
  68. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/index.html.erb +55 -0
  69. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/show.html.erb +40 -0
  70. data/lib/graphql/dashboard/views/layouts/graphql/dashboard/application.html.erb +108 -0
  71. data/lib/graphql/dashboard.rb +96 -0
  72. data/lib/graphql/dataloader/active_record_association_source.rb +84 -0
  73. data/lib/graphql/dataloader/active_record_source.rb +47 -0
  74. data/lib/graphql/dataloader/async_dataloader.rb +112 -0
  75. data/lib/graphql/dataloader/null_dataloader.rb +55 -10
  76. data/lib/graphql/dataloader/request.rb +5 -0
  77. data/lib/graphql/dataloader/source.rb +35 -12
  78. data/lib/graphql/dataloader.rb +224 -149
  79. data/lib/graphql/date_encoding_error.rb +1 -1
  80. data/lib/graphql/dig.rb +2 -1
  81. data/lib/graphql/duration_encoding_error.rb +16 -0
  82. data/lib/graphql/execution/interpreter/argument_value.rb +5 -1
  83. data/lib/graphql/execution/interpreter/arguments_cache.rb +5 -10
  84. data/lib/graphql/execution/interpreter/resolve.rb +23 -25
  85. data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +228 -0
  86. data/lib/graphql/execution/interpreter/runtime.rb +363 -434
  87. data/lib/graphql/execution/interpreter.rb +91 -164
  88. data/lib/graphql/execution/lookahead.rb +105 -31
  89. data/lib/graphql/execution/multiplex.rb +7 -6
  90. data/lib/graphql/execution/next/field_resolve_step.rb +711 -0
  91. data/lib/graphql/execution/next/load_argument_step.rb +60 -0
  92. data/lib/graphql/execution/next/prepare_object_step.rb +129 -0
  93. data/lib/graphql/execution/next/runner.rb +389 -0
  94. data/lib/graphql/execution/next/selections_step.rb +37 -0
  95. data/lib/graphql/execution/next.rb +70 -0
  96. data/lib/graphql/execution.rb +1 -0
  97. data/lib/graphql/execution_error.rb +13 -10
  98. data/lib/graphql/introspection/directive_location_enum.rb +1 -1
  99. data/lib/graphql/introspection/directive_type.rb +7 -3
  100. data/lib/graphql/introspection/dynamic_fields.rb +5 -1
  101. data/lib/graphql/introspection/entry_points.rb +20 -6
  102. data/lib/graphql/introspection/enum_value_type.rb +5 -5
  103. data/lib/graphql/introspection/field_type.rb +13 -5
  104. data/lib/graphql/introspection/input_value_type.rb +21 -13
  105. data/lib/graphql/introspection/schema_type.rb +8 -11
  106. data/lib/graphql/introspection/type_type.rb +64 -28
  107. data/lib/graphql/invalid_name_error.rb +1 -1
  108. data/lib/graphql/invalid_null_error.rb +26 -17
  109. data/lib/graphql/language/block_string.rb +34 -18
  110. data/lib/graphql/language/cache.rb +13 -0
  111. data/lib/graphql/language/comment.rb +18 -0
  112. data/lib/graphql/language/definition_slice.rb +1 -1
  113. data/lib/graphql/language/document_from_schema_definition.rb +90 -61
  114. data/lib/graphql/language/lexer.rb +319 -193
  115. data/lib/graphql/language/nodes.rb +136 -77
  116. data/lib/graphql/language/parser.rb +807 -1985
  117. data/lib/graphql/language/printer.rb +324 -151
  118. data/lib/graphql/language/sanitized_printer.rb +21 -23
  119. data/lib/graphql/language/static_visitor.rb +171 -0
  120. data/lib/graphql/language/visitor.rb +23 -83
  121. data/lib/graphql/language.rb +71 -1
  122. data/lib/graphql/load_application_object_failed_error.rb +5 -1
  123. data/lib/graphql/pagination/array_connection.rb +6 -6
  124. data/lib/graphql/pagination/connection.rb +30 -1
  125. data/lib/graphql/pagination/connections.rb +32 -0
  126. data/lib/graphql/pagination/mongoid_relation_connection.rb +1 -2
  127. data/lib/graphql/query/context/scoped_context.rb +101 -0
  128. data/lib/graphql/query/context.rb +82 -144
  129. data/lib/graphql/query/null_context.rb +15 -18
  130. data/lib/graphql/query/partial.rb +179 -0
  131. data/lib/graphql/query/validation_pipeline.rb +4 -4
  132. data/lib/graphql/query/variable_validation_error.rb +1 -1
  133. data/lib/graphql/query/variables.rb +3 -3
  134. data/lib/graphql/query.rb +126 -81
  135. data/lib/graphql/railtie.rb +16 -6
  136. data/lib/graphql/rake_task.rb +3 -12
  137. data/lib/graphql/rubocop/graphql/base_cop.rb +1 -1
  138. data/lib/graphql/rubocop/graphql/field_type_in_block.rb +144 -0
  139. data/lib/graphql/rubocop/graphql/root_types_in_block.rb +38 -0
  140. data/lib/graphql/rubocop.rb +2 -0
  141. data/lib/graphql/schema/addition.rb +26 -13
  142. data/lib/graphql/schema/always_visible.rb +7 -2
  143. data/lib/graphql/schema/argument.rb +75 -9
  144. data/lib/graphql/schema/base_64_encoder.rb +3 -5
  145. data/lib/graphql/schema/build_from_definition.rb +123 -60
  146. data/lib/graphql/schema/directive/flagged.rb +4 -2
  147. data/lib/graphql/schema/directive/one_of.rb +12 -0
  148. data/lib/graphql/schema/directive/specified_by.rb +14 -0
  149. data/lib/graphql/schema/directive.rb +54 -2
  150. data/lib/graphql/schema/enum.rb +110 -27
  151. data/lib/graphql/schema/enum_value.rb +10 -2
  152. data/lib/graphql/schema/field/connection_extension.rb +15 -49
  153. data/lib/graphql/schema/field/scope_extension.rb +23 -7
  154. data/lib/graphql/schema/field.rb +245 -118
  155. data/lib/graphql/schema/field_extension.rb +34 -1
  156. data/lib/graphql/schema/has_single_input_argument.rb +160 -0
  157. data/lib/graphql/schema/input_object.rb +116 -60
  158. data/lib/graphql/schema/interface.rb +34 -16
  159. data/lib/graphql/schema/introspection_system.rb +8 -17
  160. data/lib/graphql/schema/late_bound_type.rb +4 -0
  161. data/lib/graphql/schema/list.rb +3 -3
  162. data/lib/graphql/schema/loader.rb +3 -4
  163. data/lib/graphql/schema/member/base_dsl_methods.rb +18 -2
  164. data/lib/graphql/schema/member/has_arguments.rb +132 -100
  165. data/lib/graphql/schema/member/has_authorization.rb +35 -0
  166. data/lib/graphql/schema/member/has_dataloader.rb +99 -0
  167. data/lib/graphql/schema/member/has_deprecation_reason.rb +15 -0
  168. data/lib/graphql/schema/member/has_directives.rb +4 -4
  169. data/lib/graphql/schema/member/has_fields.rb +115 -15
  170. data/lib/graphql/schema/member/has_interfaces.rb +26 -12
  171. data/lib/graphql/schema/member/has_unresolved_type_error.rb +5 -1
  172. data/lib/graphql/schema/member/has_validators.rb +1 -1
  173. data/lib/graphql/schema/member/relay_shortcuts.rb +1 -1
  174. data/lib/graphql/schema/member/scoped.rb +19 -0
  175. data/lib/graphql/schema/member/type_system_helpers.rb +17 -4
  176. data/lib/graphql/schema/member/validates_input.rb +3 -3
  177. data/lib/graphql/schema/member.rb +6 -0
  178. data/lib/graphql/schema/mutation.rb +7 -0
  179. data/lib/graphql/schema/object.rb +34 -8
  180. data/lib/graphql/schema/printer.rb +9 -7
  181. data/lib/graphql/schema/ractor_shareable.rb +79 -0
  182. data/lib/graphql/schema/relay_classic_mutation.rb +6 -129
  183. data/lib/graphql/schema/resolver.rb +90 -32
  184. data/lib/graphql/schema/scalar.rb +4 -9
  185. data/lib/graphql/schema/subscription.rb +63 -10
  186. data/lib/graphql/schema/timeout.rb +19 -2
  187. data/lib/graphql/schema/type_expression.rb +2 -2
  188. data/lib/graphql/schema/union.rb +2 -2
  189. data/lib/graphql/schema/unique_within_type.rb +1 -1
  190. data/lib/graphql/schema/validator/all_validator.rb +62 -0
  191. data/lib/graphql/schema/validator/required_validator.rb +92 -11
  192. data/lib/graphql/schema/validator.rb +3 -1
  193. data/lib/graphql/schema/visibility/migration.rb +188 -0
  194. data/lib/graphql/schema/visibility/profile.rb +445 -0
  195. data/lib/graphql/schema/visibility/visit.rb +190 -0
  196. data/lib/graphql/schema/visibility.rb +311 -0
  197. data/lib/graphql/schema/warden.rb +275 -103
  198. data/lib/graphql/schema.rb +950 -210
  199. data/lib/graphql/static_validation/all_rules.rb +3 -3
  200. data/lib/graphql/static_validation/base_visitor.rb +7 -6
  201. data/lib/graphql/static_validation/literal_validator.rb +6 -7
  202. data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +1 -1
  203. data/lib/graphql/static_validation/rules/argument_names_are_unique.rb +1 -1
  204. data/lib/graphql/static_validation/rules/arguments_are_defined.rb +3 -2
  205. data/lib/graphql/static_validation/rules/directives_are_defined.rb +3 -3
  206. data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +2 -0
  207. data/lib/graphql/static_validation/rules/fields_are_defined_on_type.rb +12 -2
  208. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +47 -13
  209. data/lib/graphql/static_validation/rules/fields_will_merge.rb +88 -25
  210. data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +10 -2
  211. data/lib/graphql/static_validation/rules/fragment_spreads_are_possible.rb +3 -3
  212. data/lib/graphql/static_validation/rules/fragment_types_exist.rb +12 -2
  213. data/lib/graphql/static_validation/rules/fragments_are_on_composite_types.rb +1 -1
  214. data/lib/graphql/static_validation/rules/mutation_root_exists.rb +1 -1
  215. data/lib/graphql/static_validation/rules/no_definitions_are_present.rb +1 -1
  216. data/lib/graphql/static_validation/rules/not_single_subscription_error.rb +25 -0
  217. data/lib/graphql/static_validation/rules/query_root_exists.rb +1 -1
  218. data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +5 -5
  219. data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb +5 -5
  220. data/lib/graphql/static_validation/rules/subscription_root_exists_and_single_subscription_selection.rb +26 -0
  221. data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +7 -3
  222. data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +18 -27
  223. data/lib/graphql/static_validation/rules/variable_names_are_unique.rb +1 -1
  224. data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +2 -2
  225. data/lib/graphql/static_validation/rules/variables_are_input_types.rb +11 -2
  226. data/lib/graphql/static_validation/validation_context.rb +21 -5
  227. data/lib/graphql/static_validation/validator.rb +9 -1
  228. data/lib/graphql/static_validation.rb +0 -1
  229. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +8 -5
  230. data/lib/graphql/subscriptions/broadcast_analyzer.rb +11 -5
  231. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +12 -10
  232. data/lib/graphql/subscriptions/event.rb +21 -4
  233. data/lib/graphql/subscriptions/serialize.rb +3 -1
  234. data/lib/graphql/subscriptions.rb +21 -17
  235. data/lib/graphql/testing/helpers.rb +161 -0
  236. data/lib/graphql/testing/mock_action_cable.rb +111 -0
  237. data/lib/graphql/testing.rb +3 -0
  238. data/lib/graphql/tracing/active_support_notifications_trace.rb +14 -3
  239. data/lib/graphql/tracing/active_support_notifications_tracing.rb +1 -1
  240. data/lib/graphql/tracing/appoptics_trace.rb +7 -3
  241. data/lib/graphql/tracing/appoptics_tracing.rb +9 -2
  242. data/lib/graphql/tracing/appsignal_trace.rb +32 -59
  243. data/lib/graphql/tracing/appsignal_tracing.rb +2 -0
  244. data/lib/graphql/tracing/call_legacy_tracers.rb +66 -0
  245. data/lib/graphql/tracing/data_dog_trace.rb +46 -162
  246. data/lib/graphql/tracing/data_dog_tracing.rb +2 -0
  247. data/lib/graphql/tracing/detailed_trace/active_record_backend.rb +74 -0
  248. data/lib/graphql/tracing/detailed_trace/memory_backend.rb +60 -0
  249. data/lib/graphql/tracing/detailed_trace/redis_backend.rb +72 -0
  250. data/lib/graphql/tracing/detailed_trace.rb +156 -0
  251. data/lib/graphql/tracing/legacy_hooks_trace.rb +75 -0
  252. data/lib/graphql/tracing/legacy_trace.rb +4 -61
  253. data/lib/graphql/tracing/monitor_trace.rb +283 -0
  254. data/lib/graphql/tracing/new_relic_trace.rb +47 -54
  255. data/lib/graphql/tracing/new_relic_tracing.rb +2 -0
  256. data/lib/graphql/tracing/notifications_trace.rb +183 -37
  257. data/lib/graphql/tracing/notifications_tracing.rb +2 -0
  258. data/lib/graphql/tracing/null_trace.rb +9 -0
  259. data/lib/graphql/tracing/perfetto_trace/trace.proto +141 -0
  260. data/lib/graphql/tracing/perfetto_trace/trace_pb.rb +33 -0
  261. data/lib/graphql/tracing/perfetto_trace.rb +864 -0
  262. data/lib/graphql/tracing/platform_tracing.rb +3 -1
  263. data/lib/graphql/tracing/{prometheus_tracing → prometheus_trace}/graphql_collector.rb +5 -1
  264. data/lib/graphql/tracing/prometheus_trace.rb +73 -73
  265. data/lib/graphql/tracing/prometheus_tracing.rb +2 -0
  266. data/lib/graphql/tracing/scout_trace.rb +32 -58
  267. data/lib/graphql/tracing/scout_tracing.rb +2 -0
  268. data/lib/graphql/tracing/sentry_trace.rb +82 -0
  269. data/lib/graphql/tracing/statsd_trace.rb +33 -45
  270. data/lib/graphql/tracing/statsd_tracing.rb +2 -0
  271. data/lib/graphql/tracing/trace.rb +112 -1
  272. data/lib/graphql/tracing.rb +31 -28
  273. data/lib/graphql/type_kinds.rb +2 -1
  274. data/lib/graphql/types/iso_8601_duration.rb +77 -0
  275. data/lib/graphql/types/relay/connection_behaviors.rb +44 -2
  276. data/lib/graphql/types/relay/edge_behaviors.rb +18 -0
  277. data/lib/graphql/types/relay/has_node_field.rb +13 -8
  278. data/lib/graphql/types/relay/has_nodes_field.rb +13 -8
  279. data/lib/graphql/types/relay/node_behaviors.rb +13 -2
  280. data/lib/graphql/types/relay/page_info_behaviors.rb +4 -0
  281. data/lib/graphql/types.rb +18 -10
  282. data/lib/graphql/unauthorized_enum_value_error.rb +13 -0
  283. data/lib/graphql/unauthorized_error.rb +5 -1
  284. data/lib/graphql/version.rb +1 -1
  285. data/lib/graphql.rb +71 -54
  286. data/readme.md +12 -2
  287. metadata +233 -37
  288. data/lib/graphql/analysis/ast/analyzer.rb +0 -84
  289. data/lib/graphql/analysis/ast/field_usage.rb +0 -57
  290. data/lib/graphql/analysis/ast/max_query_complexity.rb +0 -22
  291. data/lib/graphql/analysis/ast/max_query_depth.rb +0 -22
  292. data/lib/graphql/analysis/ast/query_complexity.rb +0 -230
  293. data/lib/graphql/analysis/ast/query_depth.rb +0 -55
  294. data/lib/graphql/analysis/ast/visitor.rb +0 -276
  295. data/lib/graphql/analysis/ast.rb +0 -81
  296. data/lib/graphql/backtrace/inspect_result.rb +0 -50
  297. data/lib/graphql/backtrace/trace.rb +0 -96
  298. data/lib/graphql/backtrace/tracer.rb +0 -80
  299. data/lib/graphql/deprecation.rb +0 -9
  300. data/lib/graphql/filter.rb +0 -59
  301. data/lib/graphql/language/parser.y +0 -560
  302. data/lib/graphql/language/token.rb +0 -34
  303. data/lib/graphql/schema/base_64_bp.rb +0 -26
  304. data/lib/graphql/schema/invalid_type_error.rb +0 -7
  305. data/lib/graphql/schema/null_mask.rb +0 -11
  306. data/lib/graphql/static_validation/rules/subscription_root_exists.rb +0 -17
  307. data/lib/graphql/static_validation/type_stack.rb +0 -216
  308. data/lib/graphql/subscriptions/instrumentation.rb +0 -28
data/readme.md CHANGED
@@ -7,7 +7,7 @@ A Ruby implementation of [GraphQL](https://graphql.org/).
7
7
 
8
8
  - [Website](https://graphql-ruby.org/)
9
9
  - [API Documentation](https://www.rubydoc.info/github/rmosolgo/graphql-ruby)
10
- - [Newsletter](https://tinyletter.com/graphql-ruby)
10
+ - [Newsletter](https://buttondown.email/graphql-ruby)
11
11
 
12
12
  ## Installation
13
13
 
@@ -34,7 +34,17 @@ Or, see ["Getting Started"](https://graphql-ruby.org/getting_started.html).
34
34
 
35
35
  ## Upgrade
36
36
 
37
- I also sell [GraphQL::Pro](https://graphql.pro) which provides several features on top of the GraphQL runtime, including [Pundit authorization](https://graphql-ruby.org/authorization/pundit_integration), [CanCan authorization](https://graphql-ruby.org/authorization/can_can_integration), [Pusher-based subscriptions](https://graphql-ruby.org/subscriptions/pusher_implementation) and [persisted queries](https://graphql-ruby.org/operation_store/overview). Besides that, Pro customers get email support and an opportunity to support graphql-ruby's development!
37
+ I also sell [GraphQL::Pro](https://graphql.pro) which provides several features on top of the GraphQL runtime, including:
38
+
39
+ - [Persisted queries](https://graphql-ruby.org/operation_store/overview)
40
+ - [API versioning](https://graphql-ruby.org/changesets/overview)
41
+ - [Streaming payloads](https://graphql-ruby.org/defer/overview)
42
+ - [Server-side caching](https://graphql-ruby.org/object_cache/overview)
43
+ - [Rate limiters](https://graphql-ruby.org/limiters/overview)
44
+ - Subscriptions backends for [Pusher](https://graphql-ruby.org/subscriptions/pusher_implementation) and [Ably](https://graphql-ruby.org/subscriptions/ably_implementation)
45
+ - Authorization plugins for [Pundit](https://graphql-ruby.org/authorization/pundit_integration) and [CanCan](https://graphql-ruby.org/authorization/can_can_integration)
46
+
47
+ Besides that, Pro customers get email support and an opportunity to support graphql-ruby's development!
38
48
 
39
49
  ## Goals
40
50
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.32
4
+ version: 2.5.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Mosolgo
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-12 00:00:00.000000000 Z
10
+ date: 2026-03-23 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: base64
@@ -23,6 +23,34 @@ dependencies:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
25
  version: '0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: fiber-storage
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
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'
26
54
  - !ruby/object:Gem::Dependency
27
55
  name: benchmark-ips
28
56
  requirement: !ruby/object:Gem::Requirement
@@ -52,7 +80,7 @@ dependencies:
52
80
  - !ruby/object:Gem::Version
53
81
  version: '1.0'
54
82
  - !ruby/object:Gem::Dependency
55
- name: memory_profiler
83
+ name: google-protobuf
56
84
  requirement: !ruby/object:Gem::Requirement
57
85
  requirements:
58
86
  - - ">="
@@ -66,19 +94,33 @@ dependencies:
66
94
  - !ruby/object:Gem::Version
67
95
  version: '0'
68
96
  - !ruby/object:Gem::Dependency
69
- name: racc
97
+ name: graphql-batch
70
98
  requirement: !ruby/object:Gem::Requirement
71
99
  requirements:
72
- - - "~>"
100
+ - - ">="
73
101
  - !ruby/object:Gem::Version
74
- version: '1.4'
102
+ version: '0'
75
103
  type: :development
76
104
  prerelease: false
77
105
  version_requirements: !ruby/object:Gem::Requirement
78
106
  requirements:
79
- - - "~>"
107
+ - - ">="
80
108
  - !ruby/object:Gem::Version
81
- version: '1.4'
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: memory_profiler
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
82
124
  - !ruby/object:Gem::Dependency
83
125
  name: minitest
84
126
  requirement: !ruby/object:Gem::Requirement
@@ -121,6 +163,20 @@ dependencies:
121
163
  - - ">="
122
164
  - !ruby/object:Gem::Version
123
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'
124
180
  - !ruby/object:Gem::Dependency
125
181
  name: rake
126
182
  requirement: !ruby/object:Gem::Requirement
@@ -153,16 +209,58 @@ dependencies:
153
209
  name: rubocop
154
210
  requirement: !ruby/object:Gem::Requirement
155
211
  requirements:
156
- - - '='
212
+ - - ">="
157
213
  - !ruby/object:Gem::Version
158
- version: '1.12'
214
+ version: '0'
159
215
  type: :development
160
216
  prerelease: false
161
217
  version_requirements: !ruby/object:Gem::Requirement
162
218
  requirements:
163
- - - '='
219
+ - - ">="
164
220
  - !ruby/object:Gem::Version
165
- version: '1.12'
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'
166
264
  - !ruby/object:Gem::Dependency
167
265
  name: jekyll
168
266
  requirement: !ruby/object:Gem::Requirement
@@ -177,6 +275,20 @@ dependencies:
177
275
  - - ">="
178
276
  - !ruby/object:Gem::Version
179
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'
180
292
  - !ruby/object:Gem::Dependency
181
293
  name: yard
182
294
  requirement: !ruby/object:Gem::Requirement
@@ -233,6 +345,20 @@ dependencies:
233
345
  - - "~>"
234
346
  - !ruby/object:Gem::Version
235
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'
236
362
  - !ruby/object:Gem::Dependency
237
363
  name: webrick
238
364
  requirement: !ruby/object:Gem::Requirement
@@ -257,6 +383,7 @@ files:
257
383
  - ".yardopts"
258
384
  - MIT-LICENSE
259
385
  - lib/generators/graphql/core.rb
386
+ - lib/generators/graphql/detailed_trace_generator.rb
260
387
  - lib/generators/graphql/enum_generator.rb
261
388
  - lib/generators/graphql/field_extractor.rb
262
389
  - lib/generators/graphql/input_generator.rb
@@ -283,8 +410,10 @@ files:
283
410
  - lib/generators/graphql/templates/base_input_object.erb
284
411
  - lib/generators/graphql/templates/base_interface.erb
285
412
  - lib/generators/graphql/templates/base_object.erb
413
+ - lib/generators/graphql/templates/base_resolver.erb
286
414
  - lib/generators/graphql/templates/base_scalar.erb
287
415
  - lib/generators/graphql/templates/base_union.erb
416
+ - lib/generators/graphql/templates/create_graphql_detailed_traces.erb
288
417
  - lib/generators/graphql/templates/enum.erb
289
418
  - lib/generators/graphql/templates/graphql_controller.erb
290
419
  - lib/generators/graphql/templates/input.erb
@@ -304,30 +433,63 @@ files:
304
433
  - lib/generators/graphql/union_generator.rb
305
434
  - lib/graphql.rb
306
435
  - lib/graphql/analysis.rb
307
- - lib/graphql/analysis/ast.rb
308
- - lib/graphql/analysis/ast/analyzer.rb
309
- - lib/graphql/analysis/ast/field_usage.rb
310
- - lib/graphql/analysis/ast/max_query_complexity.rb
311
- - lib/graphql/analysis/ast/max_query_depth.rb
312
- - lib/graphql/analysis/ast/query_complexity.rb
313
- - lib/graphql/analysis/ast/query_depth.rb
314
- - lib/graphql/analysis/ast/visitor.rb
436
+ - lib/graphql/analysis/analyzer.rb
437
+ - lib/graphql/analysis/field_usage.rb
438
+ - lib/graphql/analysis/max_query_complexity.rb
439
+ - lib/graphql/analysis/max_query_depth.rb
440
+ - lib/graphql/analysis/query_complexity.rb
441
+ - lib/graphql/analysis/query_depth.rb
442
+ - lib/graphql/analysis/visitor.rb
315
443
  - lib/graphql/analysis_error.rb
444
+ - lib/graphql/autoload.rb
316
445
  - lib/graphql/backtrace.rb
317
- - lib/graphql/backtrace/inspect_result.rb
318
446
  - lib/graphql/backtrace/table.rb
319
- - lib/graphql/backtrace/trace.rb
320
447
  - lib/graphql/backtrace/traced_error.rb
321
- - lib/graphql/backtrace/tracer.rb
322
448
  - lib/graphql/coercion_error.rb
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
323
482
  - lib/graphql/dataloader.rb
483
+ - lib/graphql/dataloader/active_record_association_source.rb
484
+ - lib/graphql/dataloader/active_record_source.rb
485
+ - lib/graphql/dataloader/async_dataloader.rb
324
486
  - lib/graphql/dataloader/null_dataloader.rb
325
487
  - lib/graphql/dataloader/request.rb
326
488
  - lib/graphql/dataloader/request_all.rb
327
489
  - lib/graphql/dataloader/source.rb
328
490
  - lib/graphql/date_encoding_error.rb
329
- - lib/graphql/deprecation.rb
330
491
  - lib/graphql/dig.rb
492
+ - lib/graphql/duration_encoding_error.rb
331
493
  - lib/graphql/execution.rb
332
494
  - lib/graphql/execution/directive_checks.rb
333
495
  - lib/graphql/execution/errors.rb
@@ -339,12 +501,18 @@ files:
339
501
  - lib/graphql/execution/interpreter/handles_raw_value.rb
340
502
  - lib/graphql/execution/interpreter/resolve.rb
341
503
  - lib/graphql/execution/interpreter/runtime.rb
504
+ - lib/graphql/execution/interpreter/runtime/graphql_result.rb
342
505
  - lib/graphql/execution/lazy.rb
343
506
  - lib/graphql/execution/lazy/lazy_method_map.rb
344
507
  - lib/graphql/execution/lookahead.rb
345
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
346
515
  - lib/graphql/execution_error.rb
347
- - lib/graphql/filter.rb
348
516
  - lib/graphql/integer_decoding_error.rb
349
517
  - lib/graphql/integer_encoding_error.rb
350
518
  - lib/graphql/introspection.rb
@@ -365,16 +533,16 @@ files:
365
533
  - lib/graphql/language.rb
366
534
  - lib/graphql/language/block_string.rb
367
535
  - lib/graphql/language/cache.rb
536
+ - lib/graphql/language/comment.rb
368
537
  - lib/graphql/language/definition_slice.rb
369
538
  - lib/graphql/language/document_from_schema_definition.rb
370
539
  - lib/graphql/language/generation.rb
371
540
  - lib/graphql/language/lexer.rb
372
541
  - lib/graphql/language/nodes.rb
373
542
  - lib/graphql/language/parser.rb
374
- - lib/graphql/language/parser.y
375
543
  - lib/graphql/language/printer.rb
376
544
  - lib/graphql/language/sanitized_printer.rb
377
- - lib/graphql/language/token.rb
545
+ - lib/graphql/language/static_visitor.rb
378
546
  - lib/graphql/language/visitor.rb
379
547
  - lib/graphql/load_application_object_failed_error.rb
380
548
  - lib/graphql/name_validator.rb
@@ -389,9 +557,11 @@ files:
389
557
  - lib/graphql/parse_error.rb
390
558
  - lib/graphql/query.rb
391
559
  - lib/graphql/query/context.rb
560
+ - lib/graphql/query/context/scoped_context.rb
392
561
  - lib/graphql/query/fingerprint.rb
393
562
  - lib/graphql/query/input_validation_result.rb
394
563
  - lib/graphql/query/null_context.rb
564
+ - lib/graphql/query/partial.rb
395
565
  - lib/graphql/query/result.rb
396
566
  - lib/graphql/query/validation_pipeline.rb
397
567
  - lib/graphql/query/variable_validation_error.rb
@@ -405,12 +575,13 @@ files:
405
575
  - lib/graphql/rubocop/graphql/base_cop.rb
406
576
  - lib/graphql/rubocop/graphql/default_null_true.rb
407
577
  - lib/graphql/rubocop/graphql/default_required_true.rb
578
+ - lib/graphql/rubocop/graphql/field_type_in_block.rb
579
+ - lib/graphql/rubocop/graphql/root_types_in_block.rb
408
580
  - lib/graphql/runtime_type_error.rb
409
581
  - lib/graphql/schema.rb
410
582
  - lib/graphql/schema/addition.rb
411
583
  - lib/graphql/schema/always_visible.rb
412
584
  - lib/graphql/schema/argument.rb
413
- - lib/graphql/schema/base_64_bp.rb
414
585
  - lib/graphql/schema/base_64_encoder.rb
415
586
  - lib/graphql/schema/build_from_definition.rb
416
587
  - lib/graphql/schema/build_from_definition/resolve_map.rb
@@ -423,6 +594,7 @@ files:
423
594
  - lib/graphql/schema/directive/include.rb
424
595
  - lib/graphql/schema/directive/one_of.rb
425
596
  - lib/graphql/schema/directive/skip.rb
597
+ - lib/graphql/schema/directive/specified_by.rb
426
598
  - lib/graphql/schema/directive/transform.rb
427
599
  - lib/graphql/schema/enum.rb
428
600
  - lib/graphql/schema/enum_value.rb
@@ -432,10 +604,10 @@ files:
432
604
  - lib/graphql/schema/field_extension.rb
433
605
  - lib/graphql/schema/find_inherited_value.rb
434
606
  - lib/graphql/schema/finder.rb
607
+ - lib/graphql/schema/has_single_input_argument.rb
435
608
  - lib/graphql/schema/input_object.rb
436
609
  - lib/graphql/schema/interface.rb
437
610
  - lib/graphql/schema/introspection_system.rb
438
- - lib/graphql/schema/invalid_type_error.rb
439
611
  - lib/graphql/schema/late_bound_type.rb
440
612
  - lib/graphql/schema/list.rb
441
613
  - lib/graphql/schema/loader.rb
@@ -445,6 +617,8 @@ files:
445
617
  - lib/graphql/schema/member/graphql_type_names.rb
446
618
  - lib/graphql/schema/member/has_arguments.rb
447
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
448
622
  - lib/graphql/schema/member/has_deprecation_reason.rb
449
623
  - lib/graphql/schema/member/has_directives.rb
450
624
  - lib/graphql/schema/member/has_fields.rb
@@ -458,9 +632,9 @@ files:
458
632
  - lib/graphql/schema/member/validates_input.rb
459
633
  - lib/graphql/schema/mutation.rb
460
634
  - lib/graphql/schema/non_null.rb
461
- - lib/graphql/schema/null_mask.rb
462
635
  - lib/graphql/schema/object.rb
463
636
  - lib/graphql/schema/printer.rb
637
+ - lib/graphql/schema/ractor_shareable.rb
464
638
  - lib/graphql/schema/relay_classic_mutation.rb
465
639
  - lib/graphql/schema/resolver.rb
466
640
  - lib/graphql/schema/resolver/has_payload_type.rb
@@ -472,6 +646,7 @@ files:
472
646
  - lib/graphql/schema/union.rb
473
647
  - lib/graphql/schema/unique_within_type.rb
474
648
  - lib/graphql/schema/validator.rb
649
+ - lib/graphql/schema/validator/all_validator.rb
475
650
  - lib/graphql/schema/validator/allow_blank_validator.rb
476
651
  - lib/graphql/schema/validator/allow_null_validator.rb
477
652
  - lib/graphql/schema/validator/exclusion_validator.rb
@@ -480,6 +655,10 @@ files:
480
655
  - lib/graphql/schema/validator/length_validator.rb
481
656
  - lib/graphql/schema/validator/numericality_validator.rb
482
657
  - lib/graphql/schema/validator/required_validator.rb
658
+ - lib/graphql/schema/visibility.rb
659
+ - lib/graphql/schema/visibility/migration.rb
660
+ - lib/graphql/schema/visibility/profile.rb
661
+ - lib/graphql/schema/visibility/visit.rb
483
662
  - lib/graphql/schema/warden.rb
484
663
  - lib/graphql/schema/wrapper.rb
485
664
  - lib/graphql/static_validation.rb
@@ -525,6 +704,7 @@ files:
525
704
  - lib/graphql/static_validation/rules/mutation_root_exists_error.rb
526
705
  - lib/graphql/static_validation/rules/no_definitions_are_present.rb
527
706
  - lib/graphql/static_validation/rules/no_definitions_are_present_error.rb
707
+ - lib/graphql/static_validation/rules/not_single_subscription_error.rb
528
708
  - lib/graphql/static_validation/rules/one_of_input_objects_are_valid.rb
529
709
  - lib/graphql/static_validation/rules/one_of_input_objects_are_valid_error.rb
530
710
  - lib/graphql/static_validation/rules/operation_names_are_valid.rb
@@ -535,7 +715,7 @@ files:
535
715
  - lib/graphql/static_validation/rules/required_arguments_are_present_error.rb
536
716
  - lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb
537
717
  - lib/graphql/static_validation/rules/required_input_object_attributes_are_present_error.rb
538
- - lib/graphql/static_validation/rules/subscription_root_exists.rb
718
+ - lib/graphql/static_validation/rules/subscription_root_exists_and_single_subscription_selection.rb
539
719
  - lib/graphql/static_validation/rules/subscription_root_exists_error.rb
540
720
  - lib/graphql/static_validation/rules/unique_directives_per_location.rb
541
721
  - lib/graphql/static_validation/rules/unique_directives_per_location_error.rb
@@ -549,7 +729,6 @@ files:
549
729
  - lib/graphql/static_validation/rules/variables_are_input_types_error.rb
550
730
  - lib/graphql/static_validation/rules/variables_are_used_and_defined.rb
551
731
  - lib/graphql/static_validation/rules/variables_are_used_and_defined_error.rb
552
- - lib/graphql/static_validation/type_stack.rb
553
732
  - lib/graphql/static_validation/validation_context.rb
554
733
  - lib/graphql/static_validation/validation_timeout_error.rb
555
734
  - lib/graphql/static_validation/validator.rb
@@ -559,8 +738,10 @@ files:
559
738
  - lib/graphql/subscriptions/broadcast_analyzer.rb
560
739
  - lib/graphql/subscriptions/default_subscription_resolve_extension.rb
561
740
  - lib/graphql/subscriptions/event.rb
562
- - lib/graphql/subscriptions/instrumentation.rb
563
741
  - lib/graphql/subscriptions/serialize.rb
742
+ - lib/graphql/testing.rb
743
+ - lib/graphql/testing/helpers.rb
744
+ - lib/graphql/testing/mock_action_cable.rb
564
745
  - lib/graphql/tracing.rb
565
746
  - lib/graphql/tracing/active_support_notifications_trace.rb
566
747
  - lib/graphql/tracing/active_support_notifications_tracing.rb
@@ -568,20 +749,32 @@ files:
568
749
  - lib/graphql/tracing/appoptics_tracing.rb
569
750
  - lib/graphql/tracing/appsignal_trace.rb
570
751
  - lib/graphql/tracing/appsignal_tracing.rb
752
+ - lib/graphql/tracing/call_legacy_tracers.rb
571
753
  - lib/graphql/tracing/data_dog_trace.rb
572
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
759
+ - lib/graphql/tracing/legacy_hooks_trace.rb
573
760
  - lib/graphql/tracing/legacy_trace.rb
761
+ - lib/graphql/tracing/monitor_trace.rb
574
762
  - lib/graphql/tracing/new_relic_trace.rb
575
763
  - lib/graphql/tracing/new_relic_tracing.rb
576
764
  - lib/graphql/tracing/notifications_trace.rb
577
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
578
770
  - lib/graphql/tracing/platform_trace.rb
579
771
  - lib/graphql/tracing/platform_tracing.rb
580
772
  - lib/graphql/tracing/prometheus_trace.rb
773
+ - lib/graphql/tracing/prometheus_trace/graphql_collector.rb
581
774
  - lib/graphql/tracing/prometheus_tracing.rb
582
- - lib/graphql/tracing/prometheus_tracing/graphql_collector.rb
583
775
  - lib/graphql/tracing/scout_trace.rb
584
776
  - lib/graphql/tracing/scout_tracing.rb
777
+ - lib/graphql/tracing/sentry_trace.rb
585
778
  - lib/graphql/tracing/statsd_trace.rb
586
779
  - lib/graphql/tracing/statsd_tracing.rb
587
780
  - lib/graphql/tracing/trace.rb
@@ -594,6 +787,7 @@ files:
594
787
  - lib/graphql/types/int.rb
595
788
  - lib/graphql/types/iso_8601_date.rb
596
789
  - lib/graphql/types/iso_8601_date_time.rb
790
+ - lib/graphql/types/iso_8601_duration.rb
597
791
  - lib/graphql/types/json.rb
598
792
  - lib/graphql/types/relay.rb
599
793
  - lib/graphql/types/relay/base_connection.rb
@@ -607,6 +801,7 @@ files:
607
801
  - lib/graphql/types/relay/page_info.rb
608
802
  - lib/graphql/types/relay/page_info_behaviors.rb
609
803
  - lib/graphql/types/string.rb
804
+ - lib/graphql/unauthorized_enum_value_error.rb
610
805
  - lib/graphql/unauthorized_error.rb
611
806
  - lib/graphql/unauthorized_field_error.rb
612
807
  - lib/graphql/unresolved_type_error.rb
@@ -620,7 +815,8 @@ metadata:
620
815
  changelog_uri: https://github.com/rmosolgo/graphql-ruby/blob/master/CHANGELOG.md
621
816
  source_code_uri: https://github.com/rmosolgo/graphql-ruby
622
817
  bug_tracker_uri: https://github.com/rmosolgo/graphql-ruby/issues
623
- mailing_list_uri: https://tinyletter.com/graphql-ruby
818
+ mailing_list_uri: https://buttondown.email/graphql-ruby
819
+ rubygems_mfa_required: 'true'
624
820
  rdoc_options: []
625
821
  require_paths:
626
822
  - lib
@@ -628,14 +824,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
628
824
  requirements:
629
825
  - - ">="
630
826
  - !ruby/object:Gem::Version
631
- version: 2.4.0
827
+ version: 2.7.0
632
828
  required_rubygems_version: !ruby/object:Gem::Requirement
633
829
  requirements:
634
830
  - - ">="
635
831
  - !ruby/object:Gem::Version
636
832
  version: '0'
637
833
  requirements: []
638
- rubygems_version: 3.6.3
834
+ rubygems_version: 4.0.8
639
835
  specification_version: 4
640
836
  summary: A GraphQL language and runtime for Ruby
641
837
  test_files: []
@@ -1,84 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module Analysis
4
- module AST
5
- # Query analyzer for query ASTs. Query analyzers respond to visitor style methods
6
- # but are prefixed by `enter` and `leave`.
7
- #
8
- # When an analyzer is initialized with a Multiplex, you can always get the current query from
9
- # `visitor.query` in the visit methods.
10
- #
11
- # @param [GraphQL::Query, GraphQL::Execution::Multiplex] The query or multiplex to analyze
12
- class Analyzer
13
- def initialize(subject)
14
- @subject = subject
15
-
16
- if subject.is_a?(GraphQL::Query)
17
- @query = subject
18
- @multiplex = nil
19
- else
20
- @multiplex = subject
21
- @query = nil
22
- end
23
- end
24
-
25
- # Analyzer hook to decide at analysis time whether a query should
26
- # be analyzed or not.
27
- # @return [Boolean] If the query should be analyzed or not
28
- def analyze?
29
- true
30
- end
31
-
32
- # The result for this analyzer. Returning {GraphQL::AnalysisError} results
33
- # in a query error.
34
- # @return [Any] The analyzer result
35
- def result
36
- raise GraphQL::RequiredImplementationMissingError
37
- end
38
-
39
- class << self
40
- private
41
-
42
- def build_visitor_hooks(member_name)
43
- class_eval(<<-EOS, __FILE__, __LINE__ + 1)
44
- def on_enter_#{member_name}(node, parent, visitor)
45
- end
46
-
47
- def on_leave_#{member_name}(node, parent, visitor)
48
- end
49
- EOS
50
- end
51
- end
52
-
53
- build_visitor_hooks :argument
54
- build_visitor_hooks :directive
55
- build_visitor_hooks :document
56
- build_visitor_hooks :enum
57
- build_visitor_hooks :field
58
- build_visitor_hooks :fragment_spread
59
- build_visitor_hooks :inline_fragment
60
- build_visitor_hooks :input_object
61
- build_visitor_hooks :list_type
62
- build_visitor_hooks :non_null_type
63
- build_visitor_hooks :null_value
64
- build_visitor_hooks :operation_definition
65
- build_visitor_hooks :type_name
66
- build_visitor_hooks :variable_definition
67
- build_visitor_hooks :variable_identifier
68
- build_visitor_hooks :abstract_node
69
-
70
- protected
71
-
72
- # @return [GraphQL::Query, GraphQL::Execution::Multiplex] Whatever this analyzer is analyzing
73
- attr_reader :subject
74
-
75
- # @return [GraphQL::Query, nil] `nil` if this analyzer is visiting a multiplex
76
- # (When this is `nil`, use `visitor.query` inside visit methods to get the current query)
77
- attr_reader :query
78
-
79
- # @return [GraphQL::Execution::Multiplex, nil] `nil` if this analyzer is visiting a query
80
- attr_reader :multiplex
81
- end
82
- end
83
- end
84
- end