graphql 2.0.31 → 2.5.18

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 (287) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/graphql/install/mutation_root_generator.rb +2 -2
  3. data/lib/generators/graphql/install/templates/base_mutation.erb +2 -0
  4. data/lib/generators/graphql/install/templates/mutation_type.erb +2 -0
  5. data/lib/generators/graphql/install_generator.rb +49 -0
  6. data/lib/generators/graphql/orm_mutations_base.rb +1 -1
  7. data/lib/generators/graphql/templates/base_argument.erb +2 -0
  8. data/lib/generators/graphql/templates/base_connection.erb +2 -0
  9. data/lib/generators/graphql/templates/base_edge.erb +2 -0
  10. data/lib/generators/graphql/templates/base_enum.erb +2 -0
  11. data/lib/generators/graphql/templates/base_field.erb +2 -0
  12. data/lib/generators/graphql/templates/base_input_object.erb +2 -0
  13. data/lib/generators/graphql/templates/base_interface.erb +2 -0
  14. data/lib/generators/graphql/templates/base_object.erb +2 -0
  15. data/lib/generators/graphql/templates/base_resolver.erb +8 -0
  16. data/lib/generators/graphql/templates/base_scalar.erb +2 -0
  17. data/lib/generators/graphql/templates/base_union.erb +2 -0
  18. data/lib/generators/graphql/templates/graphql_controller.erb +2 -0
  19. data/lib/generators/graphql/templates/loader.erb +2 -0
  20. data/lib/generators/graphql/templates/mutation.erb +2 -0
  21. data/lib/generators/graphql/templates/node_type.erb +2 -0
  22. data/lib/generators/graphql/templates/query_type.erb +2 -0
  23. data/lib/generators/graphql/templates/schema.erb +5 -0
  24. data/lib/generators/graphql/type_generator.rb +1 -1
  25. data/lib/graphql/analysis/analyzer.rb +90 -0
  26. data/lib/graphql/analysis/field_usage.rb +82 -0
  27. data/lib/graphql/analysis/max_query_complexity.rb +20 -0
  28. data/lib/graphql/analysis/max_query_depth.rb +20 -0
  29. data/lib/graphql/analysis/query_complexity.rb +263 -0
  30. data/lib/graphql/analysis/query_depth.rb +58 -0
  31. data/lib/graphql/analysis/visitor.rb +280 -0
  32. data/lib/graphql/analysis.rb +95 -1
  33. data/lib/graphql/autoload.rb +38 -0
  34. data/lib/graphql/backtrace/table.rb +118 -55
  35. data/lib/graphql/backtrace.rb +1 -19
  36. data/lib/graphql/coercion_error.rb +1 -9
  37. data/lib/graphql/current.rb +57 -0
  38. data/lib/graphql/dashboard/detailed_traces.rb +47 -0
  39. data/lib/graphql/dashboard/installable.rb +22 -0
  40. data/lib/graphql/dashboard/limiters.rb +93 -0
  41. data/lib/graphql/dashboard/operation_store.rb +199 -0
  42. data/lib/graphql/dashboard/statics/bootstrap-5.3.3.min.css +6 -0
  43. data/lib/graphql/dashboard/statics/bootstrap-5.3.3.min.js +7 -0
  44. data/lib/graphql/dashboard/statics/charts.min.css +1 -0
  45. data/lib/graphql/dashboard/statics/dashboard.css +30 -0
  46. data/lib/graphql/dashboard/statics/dashboard.js +143 -0
  47. data/lib/graphql/dashboard/statics/header-icon.png +0 -0
  48. data/lib/graphql/dashboard/statics/icon.png +0 -0
  49. data/lib/graphql/dashboard/subscriptions.rb +96 -0
  50. data/lib/graphql/dashboard/views/graphql/dashboard/detailed_traces/traces/index.html.erb +45 -0
  51. data/lib/graphql/dashboard/views/graphql/dashboard/landings/show.html.erb +18 -0
  52. data/lib/graphql/dashboard/views/graphql/dashboard/limiters/limiters/show.html.erb +62 -0
  53. data/lib/graphql/dashboard/views/graphql/dashboard/not_installed.html.erb +18 -0
  54. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/_form.html.erb +24 -0
  55. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/edit.html.erb +21 -0
  56. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/index.html.erb +69 -0
  57. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/new.html.erb +7 -0
  58. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/index.html.erb +39 -0
  59. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/show.html.erb +32 -0
  60. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/index.html.erb +81 -0
  61. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/show.html.erb +71 -0
  62. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/subscriptions/show.html.erb +41 -0
  63. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/index.html.erb +55 -0
  64. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/show.html.erb +40 -0
  65. data/lib/graphql/dashboard/views/layouts/graphql/dashboard/application.html.erb +108 -0
  66. data/lib/graphql/dashboard.rb +161 -0
  67. data/lib/graphql/dataloader/active_record_association_source.rb +84 -0
  68. data/lib/graphql/dataloader/active_record_source.rb +47 -0
  69. data/lib/graphql/dataloader/async_dataloader.rb +112 -0
  70. data/lib/graphql/dataloader/null_dataloader.rb +51 -10
  71. data/lib/graphql/dataloader/request.rb +5 -0
  72. data/lib/graphql/dataloader/source.rb +35 -12
  73. data/lib/graphql/dataloader.rb +224 -149
  74. data/lib/graphql/date_encoding_error.rb +1 -1
  75. data/lib/graphql/dig.rb +2 -1
  76. data/lib/graphql/duration_encoding_error.rb +16 -0
  77. data/lib/graphql/execution/interpreter/argument_value.rb +5 -1
  78. data/lib/graphql/execution/interpreter/arguments_cache.rb +5 -10
  79. data/lib/graphql/execution/interpreter/resolve.rb +23 -25
  80. data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +228 -0
  81. data/lib/graphql/execution/interpreter/runtime.rb +363 -434
  82. data/lib/graphql/execution/interpreter.rb +91 -164
  83. data/lib/graphql/execution/lookahead.rb +105 -31
  84. data/lib/graphql/execution/multiplex.rb +6 -5
  85. data/lib/graphql/introspection/directive_location_enum.rb +1 -1
  86. data/lib/graphql/introspection/directive_type.rb +1 -1
  87. data/lib/graphql/introspection/dynamic_fields.rb +1 -1
  88. data/lib/graphql/introspection/entry_points.rb +11 -5
  89. data/lib/graphql/introspection/field_type.rb +1 -1
  90. data/lib/graphql/introspection/schema_type.rb +8 -11
  91. data/lib/graphql/introspection/type_type.rb +5 -5
  92. data/lib/graphql/invalid_name_error.rb +1 -1
  93. data/lib/graphql/invalid_null_error.rb +20 -17
  94. data/lib/graphql/language/block_string.rb +34 -18
  95. data/lib/graphql/language/cache.rb +13 -0
  96. data/lib/graphql/language/comment.rb +18 -0
  97. data/lib/graphql/language/definition_slice.rb +1 -1
  98. data/lib/graphql/language/document_from_schema_definition.rb +90 -61
  99. data/lib/graphql/language/lexer.rb +319 -193
  100. data/lib/graphql/language/nodes.rb +139 -77
  101. data/lib/graphql/language/parser.rb +807 -1985
  102. data/lib/graphql/language/printer.rb +324 -151
  103. data/lib/graphql/language/sanitized_printer.rb +21 -23
  104. data/lib/graphql/language/static_visitor.rb +171 -0
  105. data/lib/graphql/language/visitor.rb +62 -119
  106. data/lib/graphql/language.rb +71 -1
  107. data/lib/graphql/load_application_object_failed_error.rb +5 -1
  108. data/lib/graphql/pagination/array_connection.rb +6 -6
  109. data/lib/graphql/pagination/connection.rb +28 -1
  110. data/lib/graphql/pagination/mongoid_relation_connection.rb +1 -2
  111. data/lib/graphql/query/context/scoped_context.rb +101 -0
  112. data/lib/graphql/query/context.rb +81 -144
  113. data/lib/graphql/query/null_context.rb +7 -16
  114. data/lib/graphql/query/partial.rb +179 -0
  115. data/lib/graphql/query/validation_pipeline.rb +4 -4
  116. data/lib/graphql/query/variable_validation_error.rb +1 -1
  117. data/lib/graphql/query/variables.rb +3 -3
  118. data/lib/graphql/query.rb +126 -81
  119. data/lib/graphql/railtie.rb +16 -6
  120. data/lib/graphql/rake_task.rb +3 -12
  121. data/lib/graphql/rubocop/graphql/base_cop.rb +1 -1
  122. data/lib/graphql/rubocop/graphql/field_type_in_block.rb +144 -0
  123. data/lib/graphql/rubocop/graphql/root_types_in_block.rb +38 -0
  124. data/lib/graphql/rubocop.rb +2 -0
  125. data/lib/graphql/schema/addition.rb +26 -13
  126. data/lib/graphql/schema/always_visible.rb +7 -2
  127. data/lib/graphql/schema/argument.rb +73 -14
  128. data/lib/graphql/schema/base_64_encoder.rb +3 -5
  129. data/lib/graphql/schema/build_from_definition.rb +123 -66
  130. data/lib/graphql/schema/directive/flagged.rb +4 -2
  131. data/lib/graphql/schema/directive/one_of.rb +12 -0
  132. data/lib/graphql/schema/directive/specified_by.rb +14 -0
  133. data/lib/graphql/schema/directive.rb +55 -3
  134. data/lib/graphql/schema/enum.rb +110 -27
  135. data/lib/graphql/schema/enum_value.rb +11 -3
  136. data/lib/graphql/schema/field/connection_extension.rb +2 -16
  137. data/lib/graphql/schema/field/scope_extension.rb +8 -1
  138. data/lib/graphql/schema/field.rb +173 -119
  139. data/lib/graphql/schema/field_extension.rb +1 -1
  140. data/lib/graphql/schema/has_single_input_argument.rb +160 -0
  141. data/lib/graphql/schema/input_object.rb +123 -65
  142. data/lib/graphql/schema/interface.rb +34 -16
  143. data/lib/graphql/schema/introspection_system.rb +8 -17
  144. data/lib/graphql/schema/late_bound_type.rb +4 -0
  145. data/lib/graphql/schema/list.rb +3 -3
  146. data/lib/graphql/schema/loader.rb +3 -4
  147. data/lib/graphql/schema/member/base_dsl_methods.rb +17 -1
  148. data/lib/graphql/schema/member/has_arguments.rb +132 -100
  149. data/lib/graphql/schema/member/has_dataloader.rb +62 -0
  150. data/lib/graphql/schema/member/has_deprecation_reason.rb +15 -0
  151. data/lib/graphql/schema/member/has_directives.rb +5 -5
  152. data/lib/graphql/schema/member/has_fields.rb +111 -16
  153. data/lib/graphql/schema/member/has_interfaces.rb +27 -13
  154. data/lib/graphql/schema/member/has_unresolved_type_error.rb +5 -1
  155. data/lib/graphql/schema/member/has_validators.rb +1 -1
  156. data/lib/graphql/schema/member/relay_shortcuts.rb +1 -1
  157. data/lib/graphql/schema/member/scoped.rb +19 -0
  158. data/lib/graphql/schema/member/type_system_helpers.rb +18 -5
  159. data/lib/graphql/schema/member/validates_input.rb +3 -3
  160. data/lib/graphql/schema/member.rb +1 -0
  161. data/lib/graphql/schema/mutation.rb +7 -0
  162. data/lib/graphql/schema/object.rb +33 -8
  163. data/lib/graphql/schema/printer.rb +9 -7
  164. data/lib/graphql/schema/ractor_shareable.rb +79 -0
  165. data/lib/graphql/schema/relay_classic_mutation.rb +6 -129
  166. data/lib/graphql/schema/resolver.rb +45 -31
  167. data/lib/graphql/schema/scalar.rb +4 -9
  168. data/lib/graphql/schema/subscription.rb +63 -10
  169. data/lib/graphql/schema/timeout.rb +19 -2
  170. data/lib/graphql/schema/type_expression.rb +2 -2
  171. data/lib/graphql/schema/union.rb +2 -2
  172. data/lib/graphql/schema/unique_within_type.rb +1 -1
  173. data/lib/graphql/schema/validator/all_validator.rb +62 -0
  174. data/lib/graphql/schema/validator/required_validator.rb +92 -11
  175. data/lib/graphql/schema/validator.rb +3 -1
  176. data/lib/graphql/schema/visibility/migration.rb +188 -0
  177. data/lib/graphql/schema/visibility/profile.rb +445 -0
  178. data/lib/graphql/schema/visibility/visit.rb +190 -0
  179. data/lib/graphql/schema/visibility.rb +311 -0
  180. data/lib/graphql/schema/warden.rb +275 -103
  181. data/lib/graphql/schema.rb +924 -210
  182. data/lib/graphql/static_validation/all_rules.rb +3 -3
  183. data/lib/graphql/static_validation/base_visitor.rb +7 -6
  184. data/lib/graphql/static_validation/literal_validator.rb +6 -7
  185. data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +1 -1
  186. data/lib/graphql/static_validation/rules/argument_names_are_unique.rb +1 -1
  187. data/lib/graphql/static_validation/rules/arguments_are_defined.rb +3 -2
  188. data/lib/graphql/static_validation/rules/directives_are_defined.rb +3 -3
  189. data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +2 -0
  190. data/lib/graphql/static_validation/rules/fields_are_defined_on_type.rb +12 -2
  191. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +47 -13
  192. data/lib/graphql/static_validation/rules/fields_will_merge.rb +88 -25
  193. data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +10 -2
  194. data/lib/graphql/static_validation/rules/fragment_spreads_are_possible.rb +3 -3
  195. data/lib/graphql/static_validation/rules/fragment_types_exist.rb +12 -2
  196. data/lib/graphql/static_validation/rules/fragments_are_on_composite_types.rb +1 -1
  197. data/lib/graphql/static_validation/rules/mutation_root_exists.rb +1 -1
  198. data/lib/graphql/static_validation/rules/no_definitions_are_present.rb +1 -1
  199. data/lib/graphql/static_validation/rules/not_single_subscription_error.rb +25 -0
  200. data/lib/graphql/static_validation/rules/query_root_exists.rb +1 -1
  201. data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +5 -5
  202. data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb +5 -5
  203. data/lib/graphql/static_validation/rules/subscription_root_exists_and_single_subscription_selection.rb +26 -0
  204. data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +7 -3
  205. data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +18 -27
  206. data/lib/graphql/static_validation/rules/variable_names_are_unique.rb +1 -1
  207. data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +2 -2
  208. data/lib/graphql/static_validation/rules/variables_are_input_types.rb +11 -2
  209. data/lib/graphql/static_validation/validation_context.rb +21 -5
  210. data/lib/graphql/static_validation/validator.rb +9 -1
  211. data/lib/graphql/static_validation.rb +0 -1
  212. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +8 -5
  213. data/lib/graphql/subscriptions/broadcast_analyzer.rb +11 -5
  214. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +12 -10
  215. data/lib/graphql/subscriptions/event.rb +21 -4
  216. data/lib/graphql/subscriptions/serialize.rb +3 -1
  217. data/lib/graphql/subscriptions.rb +21 -17
  218. data/lib/graphql/testing/helpers.rb +161 -0
  219. data/lib/graphql/testing/mock_action_cable.rb +111 -0
  220. data/lib/graphql/testing.rb +3 -0
  221. data/lib/graphql/tracing/active_support_notifications_trace.rb +14 -3
  222. data/lib/graphql/tracing/active_support_notifications_tracing.rb +1 -1
  223. data/lib/graphql/tracing/appoptics_trace.rb +11 -3
  224. data/lib/graphql/tracing/appoptics_tracing.rb +9 -2
  225. data/lib/graphql/tracing/appsignal_trace.rb +32 -55
  226. data/lib/graphql/tracing/appsignal_tracing.rb +2 -0
  227. data/lib/graphql/tracing/call_legacy_tracers.rb +66 -0
  228. data/lib/graphql/tracing/data_dog_trace.rb +46 -158
  229. data/lib/graphql/tracing/data_dog_tracing.rb +2 -0
  230. data/lib/graphql/tracing/detailed_trace/memory_backend.rb +60 -0
  231. data/lib/graphql/tracing/detailed_trace/redis_backend.rb +72 -0
  232. data/lib/graphql/tracing/detailed_trace.rb +141 -0
  233. data/lib/graphql/tracing/legacy_hooks_trace.rb +75 -0
  234. data/lib/graphql/tracing/legacy_trace.rb +4 -61
  235. data/lib/graphql/tracing/monitor_trace.rb +283 -0
  236. data/lib/graphql/tracing/new_relic_trace.rb +47 -54
  237. data/lib/graphql/tracing/new_relic_tracing.rb +2 -0
  238. data/lib/graphql/tracing/notifications_trace.rb +184 -34
  239. data/lib/graphql/tracing/notifications_tracing.rb +2 -0
  240. data/lib/graphql/tracing/null_trace.rb +9 -0
  241. data/lib/graphql/tracing/perfetto_trace/trace.proto +141 -0
  242. data/lib/graphql/tracing/perfetto_trace/trace_pb.rb +33 -0
  243. data/lib/graphql/tracing/perfetto_trace.rb +818 -0
  244. data/lib/graphql/tracing/platform_trace.rb +5 -0
  245. data/lib/graphql/tracing/platform_tracing.rb +3 -1
  246. data/lib/graphql/tracing/{prometheus_tracing → prometheus_trace}/graphql_collector.rb +5 -1
  247. data/lib/graphql/tracing/prometheus_trace.rb +72 -68
  248. data/lib/graphql/tracing/prometheus_tracing.rb +2 -0
  249. data/lib/graphql/tracing/scout_trace.rb +32 -55
  250. data/lib/graphql/tracing/scout_tracing.rb +2 -0
  251. data/lib/graphql/tracing/sentry_trace.rb +82 -0
  252. data/lib/graphql/tracing/statsd_trace.rb +33 -41
  253. data/lib/graphql/tracing/statsd_tracing.rb +2 -0
  254. data/lib/graphql/tracing/trace.rb +112 -1
  255. data/lib/graphql/tracing.rb +31 -28
  256. data/lib/graphql/type_kinds.rb +2 -1
  257. data/lib/graphql/types/iso_8601_duration.rb +77 -0
  258. data/lib/graphql/types/relay/connection_behaviors.rb +43 -3
  259. data/lib/graphql/types/relay/edge_behaviors.rb +18 -1
  260. data/lib/graphql/types/relay/page_info_behaviors.rb +4 -0
  261. data/lib/graphql/types.rb +18 -10
  262. data/lib/graphql/unauthorized_enum_value_error.rb +13 -0
  263. data/lib/graphql/version.rb +1 -1
  264. data/lib/graphql.rb +68 -54
  265. data/readme.md +12 -2
  266. metadata +220 -40
  267. data/lib/graphql/analysis/ast/analyzer.rb +0 -84
  268. data/lib/graphql/analysis/ast/field_usage.rb +0 -57
  269. data/lib/graphql/analysis/ast/max_query_complexity.rb +0 -22
  270. data/lib/graphql/analysis/ast/max_query_depth.rb +0 -22
  271. data/lib/graphql/analysis/ast/query_complexity.rb +0 -230
  272. data/lib/graphql/analysis/ast/query_depth.rb +0 -55
  273. data/lib/graphql/analysis/ast/visitor.rb +0 -276
  274. data/lib/graphql/analysis/ast.rb +0 -81
  275. data/lib/graphql/backtrace/inspect_result.rb +0 -50
  276. data/lib/graphql/backtrace/trace.rb +0 -96
  277. data/lib/graphql/backtrace/tracer.rb +0 -80
  278. data/lib/graphql/deprecation.rb +0 -9
  279. data/lib/graphql/filter.rb +0 -59
  280. data/lib/graphql/language/parser.y +0 -560
  281. data/lib/graphql/language/token.rb +0 -34
  282. data/lib/graphql/schema/base_64_bp.rb +0 -26
  283. data/lib/graphql/schema/invalid_type_error.rb +0 -7
  284. data/lib/graphql/schema/null_mask.rb +0 -11
  285. data/lib/graphql/static_validation/rules/subscription_root_exists.rb +0 -17
  286. data/lib/graphql/static_validation/type_stack.rb +0 -216
  287. data/lib/graphql/subscriptions/instrumentation.rb +0 -28
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.0.31
4
+ version: 2.5.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Mosolgo
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-06-13 00:00:00.000000000 Z
10
+ date: 2026-01-22 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: base64
@@ -24,6 +23,34 @@ dependencies:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
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'
27
54
  - !ruby/object:Gem::Dependency
28
55
  name: benchmark-ips
29
56
  requirement: !ruby/object:Gem::Requirement
@@ -53,7 +80,7 @@ dependencies:
53
80
  - !ruby/object:Gem::Version
54
81
  version: '1.0'
55
82
  - !ruby/object:Gem::Dependency
56
- name: memory_profiler
83
+ name: google-protobuf
57
84
  requirement: !ruby/object:Gem::Requirement
58
85
  requirements:
59
86
  - - ">="
@@ -67,19 +94,33 @@ dependencies:
67
94
  - !ruby/object:Gem::Version
68
95
  version: '0'
69
96
  - !ruby/object:Gem::Dependency
70
- name: racc
97
+ name: graphql-batch
71
98
  requirement: !ruby/object:Gem::Requirement
72
99
  requirements:
73
- - - "~>"
100
+ - - ">="
74
101
  - !ruby/object:Gem::Version
75
- version: '1.4'
102
+ version: '0'
76
103
  type: :development
77
104
  prerelease: false
78
105
  version_requirements: !ruby/object:Gem::Requirement
79
106
  requirements:
80
- - - "~>"
107
+ - - ">="
81
108
  - !ruby/object:Gem::Version
82
- 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'
83
124
  - !ruby/object:Gem::Dependency
84
125
  name: minitest
85
126
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +163,20 @@ dependencies:
122
163
  - - ">="
123
164
  - !ruby/object:Gem::Version
124
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'
125
180
  - !ruby/object:Gem::Dependency
126
181
  name: rake
127
182
  requirement: !ruby/object:Gem::Requirement
@@ -154,16 +209,58 @@ dependencies:
154
209
  name: rubocop
155
210
  requirement: !ruby/object:Gem::Requirement
156
211
  requirements:
157
- - - '='
212
+ - - ">="
158
213
  - !ruby/object:Gem::Version
159
- version: '1.12'
214
+ version: '0'
160
215
  type: :development
161
216
  prerelease: false
162
217
  version_requirements: !ruby/object:Gem::Requirement
163
218
  requirements:
164
- - - '='
219
+ - - ">="
165
220
  - !ruby/object:Gem::Version
166
- 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'
167
264
  - !ruby/object:Gem::Dependency
168
265
  name: jekyll
169
266
  requirement: !ruby/object:Gem::Requirement
@@ -178,6 +275,20 @@ dependencies:
178
275
  - - ">="
179
276
  - !ruby/object:Gem::Version
180
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'
181
292
  - !ruby/object:Gem::Dependency
182
293
  name: yard
183
294
  requirement: !ruby/object:Gem::Requirement
@@ -234,6 +345,20 @@ dependencies:
234
345
  - - "~>"
235
346
  - !ruby/object:Gem::Version
236
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'
237
362
  - !ruby/object:Gem::Dependency
238
363
  name: webrick
239
364
  requirement: !ruby/object:Gem::Requirement
@@ -284,6 +409,7 @@ files:
284
409
  - lib/generators/graphql/templates/base_input_object.erb
285
410
  - lib/generators/graphql/templates/base_interface.erb
286
411
  - lib/generators/graphql/templates/base_object.erb
412
+ - lib/generators/graphql/templates/base_resolver.erb
287
413
  - lib/generators/graphql/templates/base_scalar.erb
288
414
  - lib/generators/graphql/templates/base_union.erb
289
415
  - lib/generators/graphql/templates/enum.erb
@@ -305,30 +431,60 @@ files:
305
431
  - lib/generators/graphql/union_generator.rb
306
432
  - lib/graphql.rb
307
433
  - lib/graphql/analysis.rb
308
- - lib/graphql/analysis/ast.rb
309
- - lib/graphql/analysis/ast/analyzer.rb
310
- - lib/graphql/analysis/ast/field_usage.rb
311
- - lib/graphql/analysis/ast/max_query_complexity.rb
312
- - lib/graphql/analysis/ast/max_query_depth.rb
313
- - lib/graphql/analysis/ast/query_complexity.rb
314
- - lib/graphql/analysis/ast/query_depth.rb
315
- - lib/graphql/analysis/ast/visitor.rb
434
+ - lib/graphql/analysis/analyzer.rb
435
+ - lib/graphql/analysis/field_usage.rb
436
+ - lib/graphql/analysis/max_query_complexity.rb
437
+ - lib/graphql/analysis/max_query_depth.rb
438
+ - lib/graphql/analysis/query_complexity.rb
439
+ - lib/graphql/analysis/query_depth.rb
440
+ - lib/graphql/analysis/visitor.rb
316
441
  - lib/graphql/analysis_error.rb
442
+ - lib/graphql/autoload.rb
317
443
  - lib/graphql/backtrace.rb
318
- - lib/graphql/backtrace/inspect_result.rb
319
444
  - lib/graphql/backtrace/table.rb
320
- - lib/graphql/backtrace/trace.rb
321
445
  - lib/graphql/backtrace/traced_error.rb
322
- - lib/graphql/backtrace/tracer.rb
323
446
  - lib/graphql/coercion_error.rb
447
+ - lib/graphql/current.rb
448
+ - lib/graphql/dashboard.rb
449
+ - lib/graphql/dashboard/detailed_traces.rb
450
+ - lib/graphql/dashboard/installable.rb
451
+ - lib/graphql/dashboard/limiters.rb
452
+ - lib/graphql/dashboard/operation_store.rb
453
+ - lib/graphql/dashboard/statics/bootstrap-5.3.3.min.css
454
+ - lib/graphql/dashboard/statics/bootstrap-5.3.3.min.js
455
+ - lib/graphql/dashboard/statics/charts.min.css
456
+ - lib/graphql/dashboard/statics/dashboard.css
457
+ - lib/graphql/dashboard/statics/dashboard.js
458
+ - lib/graphql/dashboard/statics/header-icon.png
459
+ - lib/graphql/dashboard/statics/icon.png
460
+ - lib/graphql/dashboard/subscriptions.rb
461
+ - lib/graphql/dashboard/views/graphql/dashboard/detailed_traces/traces/index.html.erb
462
+ - lib/graphql/dashboard/views/graphql/dashboard/landings/show.html.erb
463
+ - lib/graphql/dashboard/views/graphql/dashboard/limiters/limiters/show.html.erb
464
+ - lib/graphql/dashboard/views/graphql/dashboard/not_installed.html.erb
465
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/_form.html.erb
466
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/edit.html.erb
467
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/index.html.erb
468
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/new.html.erb
469
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/index.html.erb
470
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/show.html.erb
471
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/index.html.erb
472
+ - lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/show.html.erb
473
+ - lib/graphql/dashboard/views/graphql/dashboard/subscriptions/subscriptions/show.html.erb
474
+ - lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/index.html.erb
475
+ - lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/show.html.erb
476
+ - lib/graphql/dashboard/views/layouts/graphql/dashboard/application.html.erb
324
477
  - lib/graphql/dataloader.rb
478
+ - lib/graphql/dataloader/active_record_association_source.rb
479
+ - lib/graphql/dataloader/active_record_source.rb
480
+ - lib/graphql/dataloader/async_dataloader.rb
325
481
  - lib/graphql/dataloader/null_dataloader.rb
326
482
  - lib/graphql/dataloader/request.rb
327
483
  - lib/graphql/dataloader/request_all.rb
328
484
  - lib/graphql/dataloader/source.rb
329
485
  - lib/graphql/date_encoding_error.rb
330
- - lib/graphql/deprecation.rb
331
486
  - lib/graphql/dig.rb
487
+ - lib/graphql/duration_encoding_error.rb
332
488
  - lib/graphql/execution.rb
333
489
  - lib/graphql/execution/directive_checks.rb
334
490
  - lib/graphql/execution/errors.rb
@@ -340,12 +496,12 @@ files:
340
496
  - lib/graphql/execution/interpreter/handles_raw_value.rb
341
497
  - lib/graphql/execution/interpreter/resolve.rb
342
498
  - lib/graphql/execution/interpreter/runtime.rb
499
+ - lib/graphql/execution/interpreter/runtime/graphql_result.rb
343
500
  - lib/graphql/execution/lazy.rb
344
501
  - lib/graphql/execution/lazy/lazy_method_map.rb
345
502
  - lib/graphql/execution/lookahead.rb
346
503
  - lib/graphql/execution/multiplex.rb
347
504
  - lib/graphql/execution_error.rb
348
- - lib/graphql/filter.rb
349
505
  - lib/graphql/integer_decoding_error.rb
350
506
  - lib/graphql/integer_encoding_error.rb
351
507
  - lib/graphql/introspection.rb
@@ -366,16 +522,16 @@ files:
366
522
  - lib/graphql/language.rb
367
523
  - lib/graphql/language/block_string.rb
368
524
  - lib/graphql/language/cache.rb
525
+ - lib/graphql/language/comment.rb
369
526
  - lib/graphql/language/definition_slice.rb
370
527
  - lib/graphql/language/document_from_schema_definition.rb
371
528
  - lib/graphql/language/generation.rb
372
529
  - lib/graphql/language/lexer.rb
373
530
  - lib/graphql/language/nodes.rb
374
531
  - lib/graphql/language/parser.rb
375
- - lib/graphql/language/parser.y
376
532
  - lib/graphql/language/printer.rb
377
533
  - lib/graphql/language/sanitized_printer.rb
378
- - lib/graphql/language/token.rb
534
+ - lib/graphql/language/static_visitor.rb
379
535
  - lib/graphql/language/visitor.rb
380
536
  - lib/graphql/load_application_object_failed_error.rb
381
537
  - lib/graphql/name_validator.rb
@@ -390,9 +546,11 @@ files:
390
546
  - lib/graphql/parse_error.rb
391
547
  - lib/graphql/query.rb
392
548
  - lib/graphql/query/context.rb
549
+ - lib/graphql/query/context/scoped_context.rb
393
550
  - lib/graphql/query/fingerprint.rb
394
551
  - lib/graphql/query/input_validation_result.rb
395
552
  - lib/graphql/query/null_context.rb
553
+ - lib/graphql/query/partial.rb
396
554
  - lib/graphql/query/result.rb
397
555
  - lib/graphql/query/validation_pipeline.rb
398
556
  - lib/graphql/query/variable_validation_error.rb
@@ -406,12 +564,13 @@ files:
406
564
  - lib/graphql/rubocop/graphql/base_cop.rb
407
565
  - lib/graphql/rubocop/graphql/default_null_true.rb
408
566
  - lib/graphql/rubocop/graphql/default_required_true.rb
567
+ - lib/graphql/rubocop/graphql/field_type_in_block.rb
568
+ - lib/graphql/rubocop/graphql/root_types_in_block.rb
409
569
  - lib/graphql/runtime_type_error.rb
410
570
  - lib/graphql/schema.rb
411
571
  - lib/graphql/schema/addition.rb
412
572
  - lib/graphql/schema/always_visible.rb
413
573
  - lib/graphql/schema/argument.rb
414
- - lib/graphql/schema/base_64_bp.rb
415
574
  - lib/graphql/schema/base_64_encoder.rb
416
575
  - lib/graphql/schema/build_from_definition.rb
417
576
  - lib/graphql/schema/build_from_definition/resolve_map.rb
@@ -424,6 +583,7 @@ files:
424
583
  - lib/graphql/schema/directive/include.rb
425
584
  - lib/graphql/schema/directive/one_of.rb
426
585
  - lib/graphql/schema/directive/skip.rb
586
+ - lib/graphql/schema/directive/specified_by.rb
427
587
  - lib/graphql/schema/directive/transform.rb
428
588
  - lib/graphql/schema/enum.rb
429
589
  - lib/graphql/schema/enum_value.rb
@@ -433,10 +593,10 @@ files:
433
593
  - lib/graphql/schema/field_extension.rb
434
594
  - lib/graphql/schema/find_inherited_value.rb
435
595
  - lib/graphql/schema/finder.rb
596
+ - lib/graphql/schema/has_single_input_argument.rb
436
597
  - lib/graphql/schema/input_object.rb
437
598
  - lib/graphql/schema/interface.rb
438
599
  - lib/graphql/schema/introspection_system.rb
439
- - lib/graphql/schema/invalid_type_error.rb
440
600
  - lib/graphql/schema/late_bound_type.rb
441
601
  - lib/graphql/schema/list.rb
442
602
  - lib/graphql/schema/loader.rb
@@ -446,6 +606,7 @@ files:
446
606
  - lib/graphql/schema/member/graphql_type_names.rb
447
607
  - lib/graphql/schema/member/has_arguments.rb
448
608
  - lib/graphql/schema/member/has_ast_node.rb
609
+ - lib/graphql/schema/member/has_dataloader.rb
449
610
  - lib/graphql/schema/member/has_deprecation_reason.rb
450
611
  - lib/graphql/schema/member/has_directives.rb
451
612
  - lib/graphql/schema/member/has_fields.rb
@@ -459,9 +620,9 @@ files:
459
620
  - lib/graphql/schema/member/validates_input.rb
460
621
  - lib/graphql/schema/mutation.rb
461
622
  - lib/graphql/schema/non_null.rb
462
- - lib/graphql/schema/null_mask.rb
463
623
  - lib/graphql/schema/object.rb
464
624
  - lib/graphql/schema/printer.rb
625
+ - lib/graphql/schema/ractor_shareable.rb
465
626
  - lib/graphql/schema/relay_classic_mutation.rb
466
627
  - lib/graphql/schema/resolver.rb
467
628
  - lib/graphql/schema/resolver/has_payload_type.rb
@@ -473,6 +634,7 @@ files:
473
634
  - lib/graphql/schema/union.rb
474
635
  - lib/graphql/schema/unique_within_type.rb
475
636
  - lib/graphql/schema/validator.rb
637
+ - lib/graphql/schema/validator/all_validator.rb
476
638
  - lib/graphql/schema/validator/allow_blank_validator.rb
477
639
  - lib/graphql/schema/validator/allow_null_validator.rb
478
640
  - lib/graphql/schema/validator/exclusion_validator.rb
@@ -481,6 +643,10 @@ files:
481
643
  - lib/graphql/schema/validator/length_validator.rb
482
644
  - lib/graphql/schema/validator/numericality_validator.rb
483
645
  - lib/graphql/schema/validator/required_validator.rb
646
+ - lib/graphql/schema/visibility.rb
647
+ - lib/graphql/schema/visibility/migration.rb
648
+ - lib/graphql/schema/visibility/profile.rb
649
+ - lib/graphql/schema/visibility/visit.rb
484
650
  - lib/graphql/schema/warden.rb
485
651
  - lib/graphql/schema/wrapper.rb
486
652
  - lib/graphql/static_validation.rb
@@ -526,6 +692,7 @@ files:
526
692
  - lib/graphql/static_validation/rules/mutation_root_exists_error.rb
527
693
  - lib/graphql/static_validation/rules/no_definitions_are_present.rb
528
694
  - lib/graphql/static_validation/rules/no_definitions_are_present_error.rb
695
+ - lib/graphql/static_validation/rules/not_single_subscription_error.rb
529
696
  - lib/graphql/static_validation/rules/one_of_input_objects_are_valid.rb
530
697
  - lib/graphql/static_validation/rules/one_of_input_objects_are_valid_error.rb
531
698
  - lib/graphql/static_validation/rules/operation_names_are_valid.rb
@@ -536,7 +703,7 @@ files:
536
703
  - lib/graphql/static_validation/rules/required_arguments_are_present_error.rb
537
704
  - lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb
538
705
  - lib/graphql/static_validation/rules/required_input_object_attributes_are_present_error.rb
539
- - lib/graphql/static_validation/rules/subscription_root_exists.rb
706
+ - lib/graphql/static_validation/rules/subscription_root_exists_and_single_subscription_selection.rb
540
707
  - lib/graphql/static_validation/rules/subscription_root_exists_error.rb
541
708
  - lib/graphql/static_validation/rules/unique_directives_per_location.rb
542
709
  - lib/graphql/static_validation/rules/unique_directives_per_location_error.rb
@@ -550,7 +717,6 @@ files:
550
717
  - lib/graphql/static_validation/rules/variables_are_input_types_error.rb
551
718
  - lib/graphql/static_validation/rules/variables_are_used_and_defined.rb
552
719
  - lib/graphql/static_validation/rules/variables_are_used_and_defined_error.rb
553
- - lib/graphql/static_validation/type_stack.rb
554
720
  - lib/graphql/static_validation/validation_context.rb
555
721
  - lib/graphql/static_validation/validation_timeout_error.rb
556
722
  - lib/graphql/static_validation/validator.rb
@@ -560,8 +726,10 @@ files:
560
726
  - lib/graphql/subscriptions/broadcast_analyzer.rb
561
727
  - lib/graphql/subscriptions/default_subscription_resolve_extension.rb
562
728
  - lib/graphql/subscriptions/event.rb
563
- - lib/graphql/subscriptions/instrumentation.rb
564
729
  - lib/graphql/subscriptions/serialize.rb
730
+ - lib/graphql/testing.rb
731
+ - lib/graphql/testing/helpers.rb
732
+ - lib/graphql/testing/mock_action_cable.rb
565
733
  - lib/graphql/tracing.rb
566
734
  - lib/graphql/tracing/active_support_notifications_trace.rb
567
735
  - lib/graphql/tracing/active_support_notifications_tracing.rb
@@ -569,20 +737,31 @@ files:
569
737
  - lib/graphql/tracing/appoptics_tracing.rb
570
738
  - lib/graphql/tracing/appsignal_trace.rb
571
739
  - lib/graphql/tracing/appsignal_tracing.rb
740
+ - lib/graphql/tracing/call_legacy_tracers.rb
572
741
  - lib/graphql/tracing/data_dog_trace.rb
573
742
  - lib/graphql/tracing/data_dog_tracing.rb
743
+ - lib/graphql/tracing/detailed_trace.rb
744
+ - lib/graphql/tracing/detailed_trace/memory_backend.rb
745
+ - lib/graphql/tracing/detailed_trace/redis_backend.rb
746
+ - lib/graphql/tracing/legacy_hooks_trace.rb
574
747
  - lib/graphql/tracing/legacy_trace.rb
748
+ - lib/graphql/tracing/monitor_trace.rb
575
749
  - lib/graphql/tracing/new_relic_trace.rb
576
750
  - lib/graphql/tracing/new_relic_tracing.rb
577
751
  - lib/graphql/tracing/notifications_trace.rb
578
752
  - lib/graphql/tracing/notifications_tracing.rb
753
+ - lib/graphql/tracing/null_trace.rb
754
+ - lib/graphql/tracing/perfetto_trace.rb
755
+ - lib/graphql/tracing/perfetto_trace/trace.proto
756
+ - lib/graphql/tracing/perfetto_trace/trace_pb.rb
579
757
  - lib/graphql/tracing/platform_trace.rb
580
758
  - lib/graphql/tracing/platform_tracing.rb
581
759
  - lib/graphql/tracing/prometheus_trace.rb
760
+ - lib/graphql/tracing/prometheus_trace/graphql_collector.rb
582
761
  - lib/graphql/tracing/prometheus_tracing.rb
583
- - lib/graphql/tracing/prometheus_tracing/graphql_collector.rb
584
762
  - lib/graphql/tracing/scout_trace.rb
585
763
  - lib/graphql/tracing/scout_tracing.rb
764
+ - lib/graphql/tracing/sentry_trace.rb
586
765
  - lib/graphql/tracing/statsd_trace.rb
587
766
  - lib/graphql/tracing/statsd_tracing.rb
588
767
  - lib/graphql/tracing/trace.rb
@@ -595,6 +774,7 @@ files:
595
774
  - lib/graphql/types/int.rb
596
775
  - lib/graphql/types/iso_8601_date.rb
597
776
  - lib/graphql/types/iso_8601_date_time.rb
777
+ - lib/graphql/types/iso_8601_duration.rb
598
778
  - lib/graphql/types/json.rb
599
779
  - lib/graphql/types/relay.rb
600
780
  - lib/graphql/types/relay/base_connection.rb
@@ -608,6 +788,7 @@ files:
608
788
  - lib/graphql/types/relay/page_info.rb
609
789
  - lib/graphql/types/relay/page_info_behaviors.rb
610
790
  - lib/graphql/types/string.rb
791
+ - lib/graphql/unauthorized_enum_value_error.rb
611
792
  - lib/graphql/unauthorized_error.rb
612
793
  - lib/graphql/unauthorized_field_error.rb
613
794
  - lib/graphql/unresolved_type_error.rb
@@ -621,8 +802,8 @@ metadata:
621
802
  changelog_uri: https://github.com/rmosolgo/graphql-ruby/blob/master/CHANGELOG.md
622
803
  source_code_uri: https://github.com/rmosolgo/graphql-ruby
623
804
  bug_tracker_uri: https://github.com/rmosolgo/graphql-ruby/issues
624
- mailing_list_uri: https://tinyletter.com/graphql-ruby
625
- post_install_message:
805
+ mailing_list_uri: https://buttondown.email/graphql-ruby
806
+ rubygems_mfa_required: 'true'
626
807
  rdoc_options: []
627
808
  require_paths:
628
809
  - lib
@@ -630,15 +811,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
630
811
  requirements:
631
812
  - - ">="
632
813
  - !ruby/object:Gem::Version
633
- version: 2.4.0
814
+ version: 2.7.0
634
815
  required_rubygems_version: !ruby/object:Gem::Requirement
635
816
  requirements:
636
817
  - - ">="
637
818
  - !ruby/object:Gem::Version
638
819
  version: '0'
639
820
  requirements: []
640
- rubygems_version: 3.5.3
641
- signing_key:
821
+ rubygems_version: 3.6.2
642
822
  specification_version: 4
643
823
  summary: A GraphQL language and runtime for Ruby
644
824
  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
@@ -1,57 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- module Analysis
4
- module AST
5
- class FieldUsage < Analyzer
6
- def initialize(query)
7
- super
8
- @used_fields = Set.new
9
- @used_deprecated_fields = Set.new
10
- @used_deprecated_arguments = Set.new
11
- end
12
-
13
- def on_leave_field(node, parent, visitor)
14
- field_defn = visitor.field_definition
15
- field = "#{visitor.parent_type_definition.graphql_name}.#{field_defn.graphql_name}"
16
- @used_fields << field
17
- @used_deprecated_fields << field if field_defn.deprecation_reason
18
- arguments = visitor.query.arguments_for(node, visitor.field_definition)
19
- # If there was an error when preparing this argument object,
20
- # then this might be an error or something:
21
- if arguments.respond_to?(:argument_values)
22
- extract_deprecated_arguments(arguments.argument_values)
23
- end
24
- end
25
-
26
- def result
27
- {
28
- used_fields: @used_fields.to_a,
29
- used_deprecated_fields: @used_deprecated_fields.to_a,
30
- used_deprecated_arguments: @used_deprecated_arguments.to_a,
31
- }
32
- end
33
-
34
- private
35
-
36
- def extract_deprecated_arguments(argument_values)
37
- argument_values.each_pair do |_argument_name, argument|
38
- if argument.definition.deprecation_reason
39
- @used_deprecated_arguments << argument.definition.path
40
- end
41
-
42
- next if argument.value.nil?
43
-
44
- if argument.definition.type.kind.input_object?
45
- extract_deprecated_arguments(argument.value.arguments.argument_values) # rubocop:disable Development/ContextIsPassedCop -- runtime args instance
46
- elsif argument.definition.type.list?
47
- argument
48
- .value
49
- .select { |value| value.respond_to?(:arguments) }
50
- .each { |value| extract_deprecated_arguments(value.arguments.argument_values) } # rubocop:disable Development/ContextIsPassedCop -- runtime args instance
51
- end
52
- end
53
- end
54
- end
55
- end
56
- end
57
- end