graphql 1.13.24 → 2.5.11

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 (427) 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 +50 -1
  6. data/lib/generators/graphql/mutation_delete_generator.rb +1 -1
  7. data/lib/generators/graphql/mutation_update_generator.rb +1 -1
  8. data/lib/generators/graphql/orm_mutations_base.rb +1 -1
  9. data/lib/generators/graphql/relay.rb +21 -18
  10. data/lib/generators/graphql/templates/base_argument.erb +2 -0
  11. data/lib/generators/graphql/templates/base_connection.erb +2 -0
  12. data/lib/generators/graphql/templates/base_edge.erb +2 -0
  13. data/lib/generators/graphql/templates/base_enum.erb +2 -0
  14. data/lib/generators/graphql/templates/base_field.erb +2 -0
  15. data/lib/generators/graphql/templates/base_input_object.erb +2 -0
  16. data/lib/generators/graphql/templates/base_interface.erb +2 -0
  17. data/lib/generators/graphql/templates/base_object.erb +2 -0
  18. data/lib/generators/graphql/templates/base_resolver.erb +8 -0
  19. data/lib/generators/graphql/templates/base_scalar.erb +2 -0
  20. data/lib/generators/graphql/templates/base_union.erb +2 -0
  21. data/lib/generators/graphql/templates/graphql_controller.erb +2 -0
  22. data/lib/generators/graphql/templates/loader.erb +2 -0
  23. data/lib/generators/graphql/templates/mutation.erb +2 -0
  24. data/lib/generators/graphql/templates/node_type.erb +2 -0
  25. data/lib/generators/graphql/templates/query_type.erb +2 -0
  26. data/lib/generators/graphql/templates/schema.erb +8 -0
  27. data/lib/generators/graphql/type_generator.rb +1 -1
  28. data/lib/graphql/analysis/analyzer.rb +90 -0
  29. data/lib/graphql/analysis/field_usage.rb +65 -28
  30. data/lib/graphql/analysis/max_query_complexity.rb +11 -17
  31. data/lib/graphql/analysis/max_query_depth.rb +13 -19
  32. data/lib/graphql/analysis/query_complexity.rb +236 -61
  33. data/lib/graphql/analysis/query_depth.rb +38 -23
  34. data/lib/graphql/analysis/visitor.rb +280 -0
  35. data/lib/graphql/analysis.rb +93 -6
  36. data/lib/graphql/autoload.rb +38 -0
  37. data/lib/graphql/backtrace/table.rb +118 -73
  38. data/lib/graphql/backtrace.rb +2 -25
  39. data/lib/graphql/coercion_error.rb +1 -9
  40. data/lib/graphql/current.rb +57 -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/limiters.rb +93 -0
  44. data/lib/graphql/dashboard/operation_store.rb +199 -0
  45. data/lib/graphql/dashboard/statics/bootstrap-5.3.3.min.css +6 -0
  46. data/lib/graphql/dashboard/statics/bootstrap-5.3.3.min.js +7 -0
  47. data/lib/graphql/dashboard/statics/charts.min.css +1 -0
  48. data/lib/graphql/dashboard/statics/dashboard.css +30 -0
  49. data/lib/graphql/dashboard/statics/dashboard.js +143 -0
  50. data/lib/graphql/dashboard/statics/header-icon.png +0 -0
  51. data/lib/graphql/dashboard/statics/icon.png +0 -0
  52. data/lib/graphql/dashboard/subscriptions.rb +96 -0
  53. data/lib/graphql/dashboard/views/graphql/dashboard/detailed_traces/traces/index.html.erb +45 -0
  54. data/lib/graphql/dashboard/views/graphql/dashboard/landings/show.html.erb +18 -0
  55. data/lib/graphql/dashboard/views/graphql/dashboard/limiters/limiters/show.html.erb +62 -0
  56. data/lib/graphql/dashboard/views/graphql/dashboard/not_installed.html.erb +18 -0
  57. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/_form.html.erb +23 -0
  58. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/edit.html.erb +21 -0
  59. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/index.html.erb +69 -0
  60. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/clients/new.html.erb +7 -0
  61. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/index.html.erb +39 -0
  62. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/index_entries/show.html.erb +32 -0
  63. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/index.html.erb +81 -0
  64. data/lib/graphql/dashboard/views/graphql/dashboard/operation_store/operations/show.html.erb +71 -0
  65. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/subscriptions/show.html.erb +41 -0
  66. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/index.html.erb +55 -0
  67. data/lib/graphql/dashboard/views/graphql/dashboard/subscriptions/topics/show.html.erb +40 -0
  68. data/lib/graphql/dashboard/views/layouts/graphql/dashboard/application.html.erb +108 -0
  69. data/lib/graphql/dashboard.rb +158 -0
  70. data/lib/graphql/dataloader/active_record_association_source.rb +84 -0
  71. data/lib/graphql/dataloader/active_record_source.rb +47 -0
  72. data/lib/graphql/dataloader/async_dataloader.rb +101 -0
  73. data/lib/graphql/dataloader/null_dataloader.rb +11 -2
  74. data/lib/graphql/dataloader/request.rb +5 -0
  75. data/lib/graphql/dataloader/source.rb +103 -47
  76. data/lib/graphql/dataloader.rb +174 -148
  77. data/lib/graphql/dig.rb +3 -2
  78. data/lib/graphql/duration_encoding_error.rb +16 -0
  79. data/lib/graphql/execution/errors.rb +12 -82
  80. data/lib/graphql/execution/interpreter/argument_value.rb +5 -1
  81. data/lib/graphql/execution/interpreter/arguments.rb +1 -1
  82. data/lib/graphql/execution/interpreter/arguments_cache.rb +30 -35
  83. data/lib/graphql/execution/interpreter/resolve.rb +32 -2
  84. data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +215 -0
  85. data/lib/graphql/execution/interpreter/runtime.rb +525 -502
  86. data/lib/graphql/execution/interpreter.rb +127 -81
  87. data/lib/graphql/execution/lazy.rb +7 -21
  88. data/lib/graphql/execution/lookahead.rb +133 -55
  89. data/lib/graphql/execution/multiplex.rb +6 -176
  90. data/lib/graphql/execution.rb +11 -4
  91. data/lib/graphql/introspection/directive_location_enum.rb +1 -1
  92. data/lib/graphql/introspection/directive_type.rb +1 -1
  93. data/lib/graphql/introspection/dynamic_fields.rb +3 -8
  94. data/lib/graphql/introspection/entry_points.rb +10 -17
  95. data/lib/graphql/introspection/field_type.rb +1 -1
  96. data/lib/graphql/introspection/schema_type.rb +8 -11
  97. data/lib/graphql/introspection/type_type.rb +13 -6
  98. data/lib/graphql/introspection.rb +4 -3
  99. data/lib/graphql/invalid_name_error.rb +1 -1
  100. data/lib/graphql/invalid_null_error.rb +20 -17
  101. data/lib/graphql/language/block_string.rb +34 -18
  102. data/lib/graphql/language/cache.rb +13 -0
  103. data/lib/graphql/language/comment.rb +18 -0
  104. data/lib/graphql/language/definition_slice.rb +1 -1
  105. data/lib/graphql/language/document_from_schema_definition.rb +114 -80
  106. data/lib/graphql/language/lexer.rb +375 -1489
  107. data/lib/graphql/language/nodes.rb +189 -104
  108. data/lib/graphql/language/parser.rb +807 -1941
  109. data/lib/graphql/language/printer.rb +366 -163
  110. data/lib/graphql/language/sanitized_printer.rb +21 -23
  111. data/lib/graphql/language/static_visitor.rb +171 -0
  112. data/lib/graphql/language/visitor.rb +189 -138
  113. data/lib/graphql/language.rb +62 -1
  114. data/lib/graphql/load_application_object_failed_error.rb +5 -1
  115. data/lib/graphql/pagination/active_record_relation_connection.rb +0 -8
  116. data/lib/graphql/pagination/array_connection.rb +8 -6
  117. data/lib/graphql/pagination/connection.rb +61 -7
  118. data/lib/graphql/pagination/connections.rb +3 -28
  119. data/lib/graphql/pagination/mongoid_relation_connection.rb +1 -2
  120. data/lib/graphql/pagination/relation_connection.rb +2 -0
  121. data/lib/graphql/query/context/scoped_context.rb +101 -0
  122. data/lib/graphql/query/context.rb +131 -225
  123. data/lib/graphql/query/input_validation_result.rb +1 -1
  124. data/lib/graphql/query/null_context.rb +11 -33
  125. data/lib/graphql/query/partial.rb +179 -0
  126. data/lib/graphql/query/validation_pipeline.rb +14 -37
  127. data/lib/graphql/query/variable_validation_error.rb +1 -1
  128. data/lib/graphql/query/variables.rb +6 -19
  129. data/lib/graphql/query.rb +162 -98
  130. data/lib/graphql/railtie.rb +15 -109
  131. data/lib/graphql/rake_task/validate.rb +1 -1
  132. data/lib/graphql/rake_task.rb +30 -11
  133. data/lib/graphql/relay/range_add.rb +9 -20
  134. data/lib/graphql/relay.rb +0 -15
  135. data/lib/graphql/rubocop/graphql/base_cop.rb +1 -1
  136. data/lib/graphql/rubocop/graphql/field_type_in_block.rb +144 -0
  137. data/lib/graphql/rubocop/graphql/root_types_in_block.rb +38 -0
  138. data/lib/graphql/rubocop.rb +2 -0
  139. data/lib/graphql/schema/addition.rb +70 -33
  140. data/lib/graphql/schema/always_visible.rb +15 -0
  141. data/lib/graphql/schema/argument.rb +104 -59
  142. data/lib/graphql/schema/base_64_encoder.rb +3 -5
  143. data/lib/graphql/schema/build_from_definition.rb +154 -74
  144. data/lib/graphql/schema/directive/flagged.rb +4 -2
  145. data/lib/graphql/schema/directive/one_of.rb +24 -0
  146. data/lib/graphql/schema/directive/specified_by.rb +14 -0
  147. data/lib/graphql/schema/directive/transform.rb +1 -1
  148. data/lib/graphql/schema/directive.rb +47 -24
  149. data/lib/graphql/schema/enum.rb +137 -65
  150. data/lib/graphql/schema/enum_value.rb +11 -26
  151. data/lib/graphql/schema/field/connection_extension.rb +6 -16
  152. data/lib/graphql/schema/field/scope_extension.rb +8 -1
  153. data/lib/graphql/schema/field.rb +399 -404
  154. data/lib/graphql/schema/field_extension.rb +2 -5
  155. data/lib/graphql/schema/find_inherited_value.rb +2 -7
  156. data/lib/graphql/schema/has_single_input_argument.rb +160 -0
  157. data/lib/graphql/schema/input_object.rb +144 -99
  158. data/lib/graphql/schema/interface.rb +34 -51
  159. data/lib/graphql/schema/introspection_system.rb +12 -26
  160. data/lib/graphql/schema/late_bound_type.rb +12 -2
  161. data/lib/graphql/schema/list.rb +3 -9
  162. data/lib/graphql/schema/loader.rb +4 -6
  163. data/lib/graphql/schema/member/base_dsl_methods.rb +32 -18
  164. data/lib/graphql/schema/member/build_type.rb +15 -9
  165. data/lib/graphql/schema/member/has_arguments.rb +192 -96
  166. data/lib/graphql/schema/member/has_ast_node.rb +12 -0
  167. data/lib/graphql/schema/member/has_dataloader.rb +62 -0
  168. data/lib/graphql/schema/member/has_deprecation_reason.rb +18 -4
  169. data/lib/graphql/schema/member/has_directives.rb +81 -61
  170. data/lib/graphql/schema/member/has_fields.rb +119 -39
  171. data/lib/graphql/schema/member/has_interfaces.rb +66 -23
  172. data/lib/graphql/schema/member/has_unresolved_type_error.rb +5 -1
  173. data/lib/graphql/schema/member/has_validators.rb +32 -6
  174. data/lib/graphql/schema/member/relay_shortcuts.rb +47 -2
  175. data/lib/graphql/schema/member/scoped.rb +19 -0
  176. data/lib/graphql/schema/member/type_system_helpers.rb +32 -2
  177. data/lib/graphql/schema/member/validates_input.rb +4 -4
  178. data/lib/graphql/schema/member.rb +1 -6
  179. data/lib/graphql/schema/mutation.rb +7 -9
  180. data/lib/graphql/schema/non_null.rb +1 -7
  181. data/lib/graphql/schema/object.rb +42 -49
  182. data/lib/graphql/schema/printer.rb +12 -8
  183. data/lib/graphql/schema/ractor_shareable.rb +79 -0
  184. data/lib/graphql/schema/relay_classic_mutation.rb +12 -124
  185. data/lib/graphql/schema/resolver/has_payload_type.rb +20 -10
  186. data/lib/graphql/schema/resolver.rb +96 -81
  187. data/lib/graphql/schema/scalar.rb +10 -30
  188. data/lib/graphql/schema/subscription.rb +60 -14
  189. data/lib/graphql/schema/timeout.rb +44 -31
  190. data/lib/graphql/schema/type_expression.rb +2 -2
  191. data/lib/graphql/schema/type_membership.rb +3 -0
  192. data/lib/graphql/schema/union.rb +12 -19
  193. data/lib/graphql/schema/unique_within_type.rb +1 -1
  194. data/lib/graphql/schema/validator/all_validator.rb +62 -0
  195. data/lib/graphql/schema/validator/required_validator.rb +60 -10
  196. data/lib/graphql/schema/validator.rb +5 -3
  197. data/lib/graphql/schema/visibility/migration.rb +188 -0
  198. data/lib/graphql/schema/visibility/profile.rb +445 -0
  199. data/lib/graphql/schema/visibility/visit.rb +190 -0
  200. data/lib/graphql/schema/visibility.rb +311 -0
  201. data/lib/graphql/schema/warden.rb +318 -94
  202. data/lib/graphql/schema/wrapper.rb +0 -5
  203. data/lib/graphql/schema.rb +1148 -1085
  204. data/lib/graphql/static_validation/all_rules.rb +4 -3
  205. data/lib/graphql/static_validation/base_visitor.rb +11 -27
  206. data/lib/graphql/static_validation/definition_dependencies.rb +7 -1
  207. data/lib/graphql/static_validation/error.rb +2 -2
  208. data/lib/graphql/static_validation/literal_validator.rb +24 -7
  209. data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +1 -1
  210. data/lib/graphql/static_validation/rules/argument_names_are_unique.rb +1 -1
  211. data/lib/graphql/static_validation/rules/arguments_are_defined.rb +3 -2
  212. data/lib/graphql/static_validation/rules/directives_are_defined.rb +13 -7
  213. data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +14 -12
  214. data/lib/graphql/static_validation/rules/fields_are_defined_on_type.rb +12 -2
  215. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +48 -6
  216. data/lib/graphql/static_validation/rules/fields_will_merge.rb +90 -27
  217. data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +10 -2
  218. data/lib/graphql/static_validation/rules/fragment_spreads_are_possible.rb +3 -3
  219. data/lib/graphql/static_validation/rules/fragment_types_exist.rb +12 -2
  220. data/lib/graphql/static_validation/rules/fragments_are_on_composite_types.rb +1 -1
  221. data/lib/graphql/static_validation/rules/mutation_root_exists.rb +1 -1
  222. data/lib/graphql/static_validation/rules/no_definitions_are_present.rb +1 -1
  223. data/lib/graphql/static_validation/rules/not_single_subscription_error.rb +25 -0
  224. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid.rb +66 -0
  225. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid_error.rb +29 -0
  226. data/lib/graphql/static_validation/rules/query_root_exists.rb +1 -1
  227. data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +5 -5
  228. data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb +5 -5
  229. data/lib/graphql/static_validation/rules/subscription_root_exists_and_single_subscription_selection.rb +26 -0
  230. data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +19 -9
  231. data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +18 -27
  232. data/lib/graphql/static_validation/rules/variable_names_are_unique.rb +1 -1
  233. data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +2 -2
  234. data/lib/graphql/static_validation/rules/variables_are_input_types.rb +11 -2
  235. data/lib/graphql/static_validation/validation_context.rb +21 -5
  236. data/lib/graphql/static_validation/validator.rb +12 -26
  237. data/lib/graphql/static_validation.rb +0 -3
  238. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +14 -6
  239. data/lib/graphql/subscriptions/broadcast_analyzer.rb +11 -5
  240. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +40 -1
  241. data/lib/graphql/subscriptions/event.rb +24 -12
  242. data/lib/graphql/subscriptions/serialize.rb +3 -1
  243. data/lib/graphql/subscriptions.rb +48 -32
  244. data/lib/graphql/testing/helpers.rb +158 -0
  245. data/lib/graphql/testing.rb +2 -0
  246. data/lib/graphql/tracing/active_support_notifications_trace.rb +27 -0
  247. data/lib/graphql/tracing/active_support_notifications_tracing.rb +1 -1
  248. data/lib/graphql/tracing/appoptics_trace.rb +259 -0
  249. data/lib/graphql/tracing/appoptics_tracing.rb +9 -2
  250. data/lib/graphql/tracing/appsignal_trace.rb +54 -0
  251. data/lib/graphql/tracing/appsignal_tracing.rb +2 -0
  252. data/lib/graphql/tracing/call_legacy_tracers.rb +66 -0
  253. data/lib/graphql/tracing/data_dog_trace.rb +71 -0
  254. data/lib/graphql/tracing/data_dog_tracing.rb +3 -0
  255. data/lib/graphql/tracing/detailed_trace/memory_backend.rb +60 -0
  256. data/lib/graphql/tracing/detailed_trace/redis_backend.rb +72 -0
  257. data/lib/graphql/tracing/detailed_trace.rb +93 -0
  258. data/lib/graphql/{execution/instrumentation.rb → tracing/legacy_hooks_trace.rb} +11 -28
  259. data/lib/graphql/tracing/legacy_trace.rb +12 -0
  260. data/lib/graphql/tracing/monitor_trace.rb +283 -0
  261. data/lib/graphql/tracing/new_relic_trace.rb +68 -0
  262. data/lib/graphql/tracing/new_relic_tracing.rb +2 -0
  263. data/lib/graphql/tracing/notifications_trace.rb +195 -0
  264. data/lib/graphql/tracing/notifications_tracing.rb +2 -0
  265. data/lib/graphql/tracing/null_trace.rb +9 -0
  266. data/lib/graphql/tracing/perfetto_trace/trace.proto +141 -0
  267. data/lib/graphql/tracing/perfetto_trace/trace_pb.rb +33 -0
  268. data/lib/graphql/tracing/perfetto_trace.rb +734 -0
  269. data/lib/graphql/tracing/platform_trace.rb +123 -0
  270. data/lib/graphql/tracing/platform_tracing.rb +28 -41
  271. data/lib/graphql/tracing/{prometheus_tracing → prometheus_trace}/graphql_collector.rb +6 -2
  272. data/lib/graphql/tracing/prometheus_trace.rb +93 -0
  273. data/lib/graphql/tracing/prometheus_tracing.rb +5 -3
  274. data/lib/graphql/tracing/scout_trace.rb +49 -0
  275. data/lib/graphql/tracing/scout_tracing.rb +2 -0
  276. data/lib/graphql/tracing/sentry_trace.rb +80 -0
  277. data/lib/graphql/tracing/statsd_trace.rb +48 -0
  278. data/lib/graphql/tracing/statsd_tracing.rb +2 -0
  279. data/lib/graphql/tracing/trace.rb +186 -0
  280. data/lib/graphql/tracing.rb +32 -52
  281. data/lib/graphql/type_kinds.rb +8 -4
  282. data/lib/graphql/types/iso_8601_date.rb +4 -1
  283. data/lib/graphql/types/iso_8601_date_time.rb +4 -0
  284. data/lib/graphql/types/iso_8601_duration.rb +77 -0
  285. data/lib/graphql/types/relay/base_connection.rb +16 -6
  286. data/lib/graphql/types/relay/connection_behaviors.rb +65 -23
  287. data/lib/graphql/types/relay/edge_behaviors.rb +33 -5
  288. data/lib/graphql/types/relay/node_behaviors.rb +12 -2
  289. data/lib/graphql/types/relay/page_info_behaviors.rb +11 -2
  290. data/lib/graphql/types/relay.rb +0 -3
  291. data/lib/graphql/types/string.rb +1 -1
  292. data/lib/graphql/types.rb +18 -10
  293. data/lib/graphql/unauthorized_enum_value_error.rb +13 -0
  294. data/lib/graphql/version.rb +1 -1
  295. data/lib/graphql.rb +76 -123
  296. data/readme.md +13 -3
  297. metadata +225 -142
  298. data/lib/graphql/analysis/analyze_query.rb +0 -98
  299. data/lib/graphql/analysis/ast/analyzer.rb +0 -84
  300. data/lib/graphql/analysis/ast/field_usage.rb +0 -55
  301. data/lib/graphql/analysis/ast/max_query_complexity.rb +0 -23
  302. data/lib/graphql/analysis/ast/max_query_depth.rb +0 -22
  303. data/lib/graphql/analysis/ast/query_complexity.rb +0 -230
  304. data/lib/graphql/analysis/ast/query_depth.rb +0 -56
  305. data/lib/graphql/analysis/ast/visitor.rb +0 -269
  306. data/lib/graphql/analysis/ast.rb +0 -91
  307. data/lib/graphql/analysis/reducer_state.rb +0 -48
  308. data/lib/graphql/argument.rb +0 -131
  309. data/lib/graphql/authorization.rb +0 -82
  310. data/lib/graphql/backtrace/inspect_result.rb +0 -50
  311. data/lib/graphql/backtrace/legacy_tracer.rb +0 -56
  312. data/lib/graphql/backtrace/tracer.rb +0 -81
  313. data/lib/graphql/backwards_compatibility.rb +0 -61
  314. data/lib/graphql/base_type.rb +0 -232
  315. data/lib/graphql/boolean_type.rb +0 -2
  316. data/lib/graphql/compatibility/execution_specification/counter_schema.rb +0 -53
  317. data/lib/graphql/compatibility/execution_specification/specification_schema.rb +0 -200
  318. data/lib/graphql/compatibility/execution_specification.rb +0 -436
  319. data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +0 -111
  320. data/lib/graphql/compatibility/lazy_execution_specification.rb +0 -215
  321. data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -87
  322. data/lib/graphql/compatibility/query_parser_specification/query_assertions.rb +0 -79
  323. data/lib/graphql/compatibility/query_parser_specification.rb +0 -266
  324. data/lib/graphql/compatibility/schema_parser_specification.rb +0 -682
  325. data/lib/graphql/compatibility.rb +0 -5
  326. data/lib/graphql/define/assign_argument.rb +0 -12
  327. data/lib/graphql/define/assign_connection.rb +0 -13
  328. data/lib/graphql/define/assign_enum_value.rb +0 -18
  329. data/lib/graphql/define/assign_global_id_field.rb +0 -11
  330. data/lib/graphql/define/assign_mutation_function.rb +0 -34
  331. data/lib/graphql/define/assign_object_field.rb +0 -42
  332. data/lib/graphql/define/defined_object_proxy.rb +0 -53
  333. data/lib/graphql/define/instance_definable.rb +0 -255
  334. data/lib/graphql/define/no_definition_error.rb +0 -7
  335. data/lib/graphql/define/non_null_with_bang.rb +0 -16
  336. data/lib/graphql/define/type_definer.rb +0 -31
  337. data/lib/graphql/define.rb +0 -31
  338. data/lib/graphql/deprecated_dsl.rb +0 -55
  339. data/lib/graphql/deprecation.rb +0 -9
  340. data/lib/graphql/directive/deprecated_directive.rb +0 -2
  341. data/lib/graphql/directive/include_directive.rb +0 -2
  342. data/lib/graphql/directive/skip_directive.rb +0 -2
  343. data/lib/graphql/directive.rb +0 -107
  344. data/lib/graphql/enum_type.rb +0 -133
  345. data/lib/graphql/execution/execute.rb +0 -333
  346. data/lib/graphql/execution/flatten.rb +0 -40
  347. data/lib/graphql/execution/lazy/resolve.rb +0 -91
  348. data/lib/graphql/execution/typecast.rb +0 -50
  349. data/lib/graphql/field/resolve.rb +0 -59
  350. data/lib/graphql/field.rb +0 -226
  351. data/lib/graphql/filter.rb +0 -53
  352. data/lib/graphql/float_type.rb +0 -2
  353. data/lib/graphql/function.rb +0 -128
  354. data/lib/graphql/id_type.rb +0 -2
  355. data/lib/graphql/input_object_type.rb +0 -138
  356. data/lib/graphql/int_type.rb +0 -2
  357. data/lib/graphql/interface_type.rb +0 -72
  358. data/lib/graphql/internal_representation/document.rb +0 -27
  359. data/lib/graphql/internal_representation/node.rb +0 -206
  360. data/lib/graphql/internal_representation/print.rb +0 -51
  361. data/lib/graphql/internal_representation/rewrite.rb +0 -184
  362. data/lib/graphql/internal_representation/scope.rb +0 -88
  363. data/lib/graphql/internal_representation/visit.rb +0 -36
  364. data/lib/graphql/internal_representation.rb +0 -7
  365. data/lib/graphql/language/lexer.rl +0 -260
  366. data/lib/graphql/language/parser.y +0 -550
  367. data/lib/graphql/language/token.rb +0 -34
  368. data/lib/graphql/list_type.rb +0 -80
  369. data/lib/graphql/non_null_type.rb +0 -71
  370. data/lib/graphql/object_type.rb +0 -130
  371. data/lib/graphql/query/arguments.rb +0 -189
  372. data/lib/graphql/query/arguments_cache.rb +0 -24
  373. data/lib/graphql/query/executor.rb +0 -52
  374. data/lib/graphql/query/literal_input.rb +0 -136
  375. data/lib/graphql/query/serial_execution/field_resolution.rb +0 -92
  376. data/lib/graphql/query/serial_execution/operation_resolution.rb +0 -19
  377. data/lib/graphql/query/serial_execution/selection_resolution.rb +0 -23
  378. data/lib/graphql/query/serial_execution/value_resolution.rb +0 -87
  379. data/lib/graphql/query/serial_execution.rb +0 -40
  380. data/lib/graphql/relay/array_connection.rb +0 -83
  381. data/lib/graphql/relay/base_connection.rb +0 -189
  382. data/lib/graphql/relay/connection_instrumentation.rb +0 -54
  383. data/lib/graphql/relay/connection_resolve.rb +0 -43
  384. data/lib/graphql/relay/connection_type.rb +0 -54
  385. data/lib/graphql/relay/edge.rb +0 -27
  386. data/lib/graphql/relay/edge_type.rb +0 -19
  387. data/lib/graphql/relay/edges_instrumentation.rb +0 -39
  388. data/lib/graphql/relay/global_id_resolve.rb +0 -17
  389. data/lib/graphql/relay/mongo_relation_connection.rb +0 -50
  390. data/lib/graphql/relay/mutation/instrumentation.rb +0 -23
  391. data/lib/graphql/relay/mutation/resolve.rb +0 -56
  392. data/lib/graphql/relay/mutation/result.rb +0 -38
  393. data/lib/graphql/relay/mutation.rb +0 -106
  394. data/lib/graphql/relay/node.rb +0 -39
  395. data/lib/graphql/relay/page_info.rb +0 -7
  396. data/lib/graphql/relay/relation_connection.rb +0 -188
  397. data/lib/graphql/relay/type_extensions.rb +0 -32
  398. data/lib/graphql/scalar_type.rb +0 -91
  399. data/lib/graphql/schema/base_64_bp.rb +0 -26
  400. data/lib/graphql/schema/catchall_middleware.rb +0 -35
  401. data/lib/graphql/schema/default_parse_error.rb +0 -10
  402. data/lib/graphql/schema/default_type_error.rb +0 -17
  403. data/lib/graphql/schema/invalid_type_error.rb +0 -7
  404. data/lib/graphql/schema/member/accepts_definition.rb +0 -164
  405. data/lib/graphql/schema/member/cached_graphql_definition.rb +0 -58
  406. data/lib/graphql/schema/member/instrumentation.rb +0 -131
  407. data/lib/graphql/schema/middleware_chain.rb +0 -82
  408. data/lib/graphql/schema/null_mask.rb +0 -11
  409. data/lib/graphql/schema/possible_types.rb +0 -44
  410. data/lib/graphql/schema/rescue_middleware.rb +0 -60
  411. data/lib/graphql/schema/timeout_middleware.rb +0 -88
  412. data/lib/graphql/schema/traversal.rb +0 -228
  413. data/lib/graphql/schema/validation.rb +0 -313
  414. data/lib/graphql/static_validation/default_visitor.rb +0 -15
  415. data/lib/graphql/static_validation/no_validate_visitor.rb +0 -10
  416. data/lib/graphql/static_validation/rules/subscription_root_exists.rb +0 -17
  417. data/lib/graphql/static_validation/type_stack.rb +0 -216
  418. data/lib/graphql/string_type.rb +0 -2
  419. data/lib/graphql/subscriptions/instrumentation.rb +0 -79
  420. data/lib/graphql/subscriptions/subscription_root.rb +0 -76
  421. data/lib/graphql/tracing/skylight_tracing.rb +0 -70
  422. data/lib/graphql/types/relay/default_relay.rb +0 -31
  423. data/lib/graphql/types/relay/node_field.rb +0 -24
  424. data/lib/graphql/types/relay/nodes_field.rb +0 -43
  425. data/lib/graphql/union_type.rb +0 -115
  426. data/lib/graphql/upgrader/member.rb +0 -937
  427. data/lib/graphql/upgrader/schema.rb +0 -38
@@ -2,6 +2,7 @@
2
2
  module GraphQL
3
3
  module Language
4
4
  module Nodes
5
+ NONE = GraphQL::EmptyObjects::EMPTY_ARRAY
5
6
  # {AbstractNode} is the base class for all nodes in a GraphQL AST.
6
7
  #
7
8
  # It provides some APIs for working with ASTs:
@@ -9,32 +10,39 @@ module GraphQL
9
10
  # - `scalars` returns all scalar (Ruby) values attached to this one. Used for comparing nodes.
10
11
  # - `to_query_string` turns an AST node into a GraphQL string
11
12
  class AbstractNode
13
+
12
14
  module DefinitionNode
13
15
  # This AST node's {#line} returns the first line, which may be the description.
14
16
  # @return [Integer] The first line of the definition (not the description)
15
17
  attr_reader :definition_line
16
18
 
17
- def initialize(options = {})
18
- @definition_line = options.delete(:definition_line)
19
- super(options)
19
+ def initialize(definition_line: nil, **_rest)
20
+ @definition_line = definition_line
21
+ super(**_rest)
20
22
  end
21
- end
22
23
 
23
- attr_reader :line, :col, :filename
24
+ def marshal_dump
25
+ super << @definition_line
26
+ end
24
27
 
25
- # Initialize a node by extracting its position,
26
- # then calling the class's `initialize_node` method.
27
- # @param options [Hash] Initial attributes for this node
28
- def initialize(options = {})
29
- if options.key?(:position_source)
30
- position_source = options.delete(:position_source)
31
- @line = position_source.line
32
- @col = position_source.col
28
+ def marshal_load(values)
29
+ @definition_line = values.pop
30
+ super
33
31
  end
32
+ end
33
+
34
+ attr_reader :filename
35
+
36
+ def line
37
+ @line ||= @source&.line_at(@pos)
38
+ end
34
39
 
35
- @filename = options.delete(:filename)
40
+ def col
41
+ @col ||= @source&.column_at(@pos)
42
+ end
36
43
 
37
- initialize_node(**options)
44
+ def definition_line
45
+ @definition_line ||= (@source && @definition_pos) ? @source.line_at(@definition_pos) : nil
38
46
  end
39
47
 
40
48
  # Value equality
@@ -46,7 +54,7 @@ module GraphQL
46
54
  other.children == self.children
47
55
  end
48
56
 
49
- NO_CHILDREN = [].freeze
57
+ NO_CHILDREN = GraphQL::EmptyObjects::EMPTY_ARRAY
50
58
 
51
59
  # @return [Array<GraphQL::Language::Nodes::AbstractNode>] all nodes in the tree below this one
52
60
  def children
@@ -75,7 +83,11 @@ module GraphQL
75
83
 
76
84
  def to_query_string(printer: GraphQL::Language::Printer.new)
77
85
  if printer.is_a?(GraphQL::Language::Printer)
78
- @query_string ||= printer.print(self)
86
+ if frozen?
87
+ @query_string || printer.print(self)
88
+ else
89
+ @query_string ||= printer.print(self)
90
+ end
79
91
  else
80
92
  printer.print(self)
81
93
  end
@@ -143,18 +155,26 @@ module GraphQL
143
155
  .gsub(/([a-z])([A-Z])/,'\1_\2') # insert underscores
144
156
  .downcase # remove caps
145
157
 
146
- child_class.module_eval <<-RUBY
158
+ child_class.module_eval <<-RUBY, __FILE__, __LINE__
147
159
  def visit_method
148
160
  :on_#{name_underscored}
149
161
  end
150
162
 
151
163
  class << self
152
164
  attr_accessor :children_method_name
165
+
166
+ def visit_method
167
+ :on_#{name_underscored}
168
+ end
153
169
  end
154
170
  self.children_method_name = :#{name_underscored}s
155
171
  RUBY
156
172
  end
157
173
 
174
+ def children_of_type
175
+ @children_methods
176
+ end
177
+
158
178
  private
159
179
 
160
180
  # Name accessors which return lists of nodes,
@@ -185,8 +205,8 @@ module GraphQL
185
205
  module_eval <<-RUBY, __FILE__, __LINE__
186
206
  # Singular method: create a node with these options
187
207
  # and return a new `self` which includes that node in this list.
188
- def merge_#{method_name.to_s.sub(/s$/, "")}(node_opts)
189
- merge(#{method_name}: #{method_name} + [#{node_type.name}.new(node_opts)])
208
+ def merge_#{method_name.to_s.sub(/s$/, "")}(**node_opts)
209
+ merge(#{method_name}: #{method_name} + [#{node_type.name}.new(**node_opts)])
190
210
  end
191
211
  RUBY
192
212
  end
@@ -215,13 +235,14 @@ module GraphQL
215
235
  end
216
236
 
217
237
  if defined?(@scalar_methods)
218
- if !method_defined?(:initialize_node)
219
- generate_initialize_node
238
+ if !@initialize_was_generated
239
+ @initialize_was_generated = true
240
+ generate_initialize
220
241
  else
221
242
  # This method was defined manually
222
243
  end
223
244
  else
224
- raise "Can't generate_initialize_node because scalar_methods wasn't called; call it before children_methods"
245
+ raise "Can't generate_initialize because scalar_methods wasn't called; call it before children_methods"
225
246
  end
226
247
  end
227
248
 
@@ -250,31 +271,81 @@ module GraphQL
250
271
  end
251
272
  end
252
273
 
253
- def generate_initialize_node
274
+ DEFAULT_INITIALIZE_OPTIONS = [
275
+ "line: nil",
276
+ "col: nil",
277
+ "pos: nil",
278
+ "filename: nil",
279
+ "source: nil"
280
+ ]
281
+
282
+ IGNORED_MARSHALLING_KEYWORDS = [:comment]
283
+
284
+ def generate_initialize
285
+ return if method_defined?(:marshal_load, false) # checking for `:initialize` doesn't work right
286
+
254
287
  scalar_method_names = @scalar_methods
255
288
  # TODO: These probably should be scalar methods, but `types` returns an array
256
- [:types, :description].each do |extra_method|
289
+ [:types, :description, :comment].each do |extra_method|
257
290
  if method_defined?(extra_method)
258
291
  scalar_method_names += [extra_method]
259
292
  end
260
293
  end
261
294
 
262
- all_method_names = scalar_method_names + @children_methods.keys
295
+ children_method_names = @children_methods.keys
296
+
297
+ all_method_names = scalar_method_names + children_method_names
263
298
  if all_method_names.include?(:alias)
264
299
  # Rather than complicating this special case,
265
300
  # let it be overridden (in field)
266
301
  return
267
302
  else
268
303
  arguments = scalar_method_names.map { |m| "#{m}: nil"} +
269
- @children_methods.keys.map { |m| "#{m}: NO_CHILDREN" }
304
+ children_method_names.map { |m| "#{m}: NO_CHILDREN" } +
305
+ DEFAULT_INITIALIZE_OPTIONS
270
306
 
271
307
  assignments = scalar_method_names.map { |m| "@#{m} = #{m}"} +
272
- @children_methods.keys.map { |m| "@#{m} = #{m}.freeze" }
308
+ children_method_names.map { |m| "@#{m} = #{m}.freeze" }
309
+
310
+ if name.end_with?("Definition") && name != "FragmentDefinition"
311
+ arguments << "definition_pos: nil"
312
+ assignments << "@definition_pos = definition_pos"
313
+ end
314
+
315
+ keywords = scalar_method_names.map { |m| "#{m}: #{m}"} +
316
+ children_method_names.map { |m| "#{m}: #{m}" }
317
+
318
+ ignored_keywords = IGNORED_MARSHALLING_KEYWORDS.map do |keyword|
319
+ "#{keyword.to_s}: nil"
320
+ end
321
+
322
+ marshalling_method_names = all_method_names - IGNORED_MARSHALLING_KEYWORDS
273
323
 
274
324
  module_eval <<-RUBY, __FILE__, __LINE__
275
- def initialize_node #{arguments.join(", ")}
325
+ def initialize(#{arguments.join(", ")})
326
+ @line = line
327
+ @col = col
328
+ @pos = pos
329
+ @filename = filename
330
+ @source = source
276
331
  #{assignments.join("\n")}
277
332
  end
333
+
334
+ def self.from_a(filename, line, col, #{marshalling_method_names.join(", ")}, #{ignored_keywords.join(", ")})
335
+ self.new(filename: filename, line: line, col: col, #{keywords.join(", ")})
336
+ end
337
+
338
+ def marshal_dump
339
+ [
340
+ line, col, # use methods here to force them to be calculated
341
+ @filename,
342
+ #{marshalling_method_names.map { |n| "@#{n}," }.join}
343
+ ]
344
+ end
345
+
346
+ def marshal_load(values)
347
+ @line, @col, @filename #{marshalling_method_names.map { |n| ", @#{n}"}.join} = values
348
+ end
278
349
  RUBY
279
350
  end
280
351
  end
@@ -303,10 +374,10 @@ module GraphQL
303
374
  # @return [String] the key for this argument
304
375
 
305
376
  # @!attribute value
306
- # @return [String, Float, Integer, Boolean, Array, InputObject] The value passed for this key
377
+ # @return [String, Float, Integer, Boolean, Array, InputObject, VariableIdentifier] The value passed for this key
307
378
 
308
379
  def children
309
- @children ||= Array(value).flatten.select { |v| v.is_a?(AbstractNode) }
380
+ @children ||= Array(value).flatten.tap { _1.select! { |v| v.is_a?(AbstractNode) } }
310
381
  end
311
382
  end
312
383
 
@@ -319,42 +390,13 @@ module GraphQL
319
390
  end
320
391
 
321
392
  class DirectiveDefinition < AbstractNode
322
- include DefinitionNode
323
393
  attr_reader :description
324
394
  scalar_methods :name, :repeatable
325
395
  children_methods(
326
- locations: Nodes::DirectiveLocation,
327
396
  arguments: Nodes::Argument,
397
+ locations: Nodes::DirectiveLocation,
328
398
  )
329
- end
330
-
331
- # This is the AST root for normal queries
332
- #
333
- # @example Deriving a document by parsing a string
334
- # document = GraphQL.parse(query_string)
335
- #
336
- # @example Creating a string from a document
337
- # document.to_query_string
338
- # # { ... }
339
- #
340
- # @example Creating a custom string from a document
341
- # class VariableScrubber < GraphQL::Language::Printer
342
- # def print_argument(arg)
343
- # "#{arg.name}: <HIDDEN>"
344
- # end
345
- # end
346
- #
347
- # document.to_query_string(printer: VariableScrubber.new)
348
- #
349
- class Document < AbstractNode
350
- scalar_methods false
351
- children_methods(definitions: nil)
352
- # @!attribute definitions
353
- # @return [Array<OperationDefinition, FragmentDefinition>] top-level GraphQL units: operations or fragments
354
-
355
- def slice_definition(name)
356
- GraphQL::Language::DefinitionSlice.slice(self, name)
357
- end
399
+ self.children_method_name = :definitions
358
400
  end
359
401
 
360
402
  # An enum value. The string is available as {#name}.
@@ -367,7 +409,31 @@ module GraphQL
367
409
 
368
410
  # A single selection in a GraphQL query.
369
411
  class Field < AbstractNode
370
- NONE = [].freeze
412
+ def initialize(name: nil, arguments: NONE, directives: NONE, selections: NONE, field_alias: nil, line: nil, col: nil, pos: nil, filename: nil, source: nil)
413
+ @name = name
414
+ @arguments = arguments || NONE
415
+ @directives = directives || NONE
416
+ @selections = selections || NONE
417
+ # oops, alias is a keyword:
418
+ @alias = field_alias
419
+ @line = line
420
+ @col = col
421
+ @pos = pos
422
+ @filename = filename
423
+ @source = source
424
+ end
425
+
426
+ def self.from_a(filename, line, col, field_alias, name, arguments, directives, selections) # rubocop:disable Metrics/ParameterLists
427
+ self.new(filename: filename, line: line, col: col, field_alias: field_alias, name: name, arguments: arguments, directives: directives, selections: selections)
428
+ end
429
+
430
+ def marshal_dump
431
+ [line, col, @filename, @name, @arguments, @directives, @selections, @alias]
432
+ end
433
+
434
+ def marshal_load(values)
435
+ @line, @col, @filename, @name, @arguments, @directives, @selections, @alias = values
436
+ end
371
437
 
372
438
  scalar_methods :name, :alias
373
439
  children_methods({
@@ -376,34 +442,34 @@ module GraphQL
376
442
  directives: GraphQL::Language::Nodes::Directive,
377
443
  })
378
444
 
379
- # @!attribute selections
380
- # @return [Array<Nodes::Field>] Selections on this object (or empty array if this is a scalar field)
381
-
382
- def initialize_node(attributes)
383
- @name = attributes[:name]
384
- @arguments = attributes[:arguments] || NONE
385
- @directives = attributes[:directives] || NONE
386
- @selections = attributes[:selections] || NONE
387
- # oops, alias is a keyword:
388
- @alias = attributes[:alias]
389
- end
390
-
391
445
  # Override this because default is `:fields`
392
446
  self.children_method_name = :selections
393
447
  end
394
448
 
395
449
  # A reusable fragment, defined at document-level.
396
450
  class FragmentDefinition < AbstractNode
397
- # @!attribute name
398
- # @return [String] the identifier for this fragment, which may be applied with `...#{name}`
399
-
400
- # @!attribute type
401
- # @return [String] the type condition for this fragment (name of type which it may apply to)
402
- def initialize_node(name: nil, type: nil, directives: [], selections: [])
451
+ def initialize(name: nil, type: nil, directives: NONE, selections: NONE, filename: nil, pos: nil, source: nil, line: nil, col: nil)
403
452
  @name = name
404
453
  @type = type
405
454
  @directives = directives
406
455
  @selections = selections
456
+ @filename = filename
457
+ @pos = pos
458
+ @source = source
459
+ @line = line
460
+ @col = col
461
+ end
462
+
463
+ def self.from_a(filename, line, col, name, type, directives, selections)
464
+ self.new(filename: filename, line: line, col: col, name: name, type: type, directives: directives, selections: selections)
465
+ end
466
+
467
+ def marshal_dump
468
+ [line, col, @filename, @name, @type, @directives, @selections]
469
+ end
470
+
471
+ def marshal_load(values)
472
+ @line, @col, @filename, @name, @type, @directives, @selections = values
407
473
  end
408
474
 
409
475
  scalar_methods :name, :type
@@ -430,8 +496,8 @@ module GraphQL
430
496
  class InlineFragment < AbstractNode
431
497
  scalar_methods :type
432
498
  children_methods({
433
- selections: GraphQL::Language::Nodes::Field,
434
499
  directives: GraphQL::Language::Nodes::Directive,
500
+ selections: GraphQL::Language::Nodes::Field,
435
501
  })
436
502
 
437
503
  self.children_method_name = :selections
@@ -490,7 +556,7 @@ module GraphQL
490
556
  # An operation-level query variable
491
557
  class VariableDefinition < AbstractNode
492
558
  scalar_methods :name, :type, :default_value
493
- children_methods false
559
+ children_methods(directives: Directive)
494
560
  # @!attribute default_value
495
561
  # @return [String, Integer, Float, Boolean, Array, NullValue] A Ruby value to use if no other value is provided
496
562
 
@@ -510,8 +576,8 @@ module GraphQL
510
576
  scalar_methods :operation_type, :name
511
577
  children_methods({
512
578
  variables: GraphQL::Language::Nodes::VariableDefinition,
513
- selections: GraphQL::Language::Nodes::Field,
514
579
  directives: GraphQL::Language::Nodes::Directive,
580
+ selections: GraphQL::Language::Nodes::Field,
515
581
  })
516
582
 
517
583
  # @!attribute variables
@@ -529,6 +595,35 @@ module GraphQL
529
595
  self.children_method_name = :definitions
530
596
  end
531
597
 
598
+ # This is the AST root for normal queries
599
+ #
600
+ # @example Deriving a document by parsing a string
601
+ # document = GraphQL.parse(query_string)
602
+ #
603
+ # @example Creating a string from a document
604
+ # document.to_query_string
605
+ # # { ... }
606
+ #
607
+ # @example Creating a custom string from a document
608
+ # class VariableScrubber < GraphQL::Language::Printer
609
+ # def print_argument(arg)
610
+ # print_string("#{arg.name}: <HIDDEN>")
611
+ # end
612
+ # end
613
+ #
614
+ # document.to_query_string(printer: VariableScrubber.new)
615
+ #
616
+ class Document < AbstractNode
617
+ scalar_methods false
618
+ children_methods(definitions: nil)
619
+ # @!attribute definitions
620
+ # @return [Array<OperationDefinition, FragmentDefinition>] top-level GraphQL units: operations or fragments
621
+
622
+ def slice_definition(name)
623
+ GraphQL::Language::DefinitionSlice.slice(self, name)
624
+ end
625
+ end
626
+
532
627
  # A type name, used for variable definitions
533
628
  class TypeName < NameOnlyNode
534
629
  end
@@ -539,7 +634,6 @@ module GraphQL
539
634
  end
540
635
 
541
636
  class SchemaDefinition < AbstractNode
542
- include DefinitionNode
543
637
  scalar_methods :query, :mutation, :subscription
544
638
  children_methods({
545
639
  directives: GraphQL::Language::Nodes::Directive,
@@ -556,8 +650,7 @@ module GraphQL
556
650
  end
557
651
 
558
652
  class ScalarTypeDefinition < AbstractNode
559
- include DefinitionNode
560
- attr_reader :description
653
+ attr_reader :description, :comment
561
654
  scalar_methods :name
562
655
  children_methods({
563
656
  directives: GraphQL::Language::Nodes::Directive,
@@ -574,8 +667,7 @@ module GraphQL
574
667
  end
575
668
 
576
669
  class InputValueDefinition < AbstractNode
577
- include DefinitionNode
578
- attr_reader :description
670
+ attr_reader :description, :comment
579
671
  scalar_methods :name, :type, :default_value
580
672
  children_methods({
581
673
  directives: GraphQL::Language::Nodes::Directive,
@@ -584,12 +676,11 @@ module GraphQL
584
676
  end
585
677
 
586
678
  class FieldDefinition < AbstractNode
587
- include DefinitionNode
588
- attr_reader :description
679
+ attr_reader :description, :comment
589
680
  scalar_methods :name, :type
590
681
  children_methods({
591
- directives: GraphQL::Language::Nodes::Directive,
592
682
  arguments: GraphQL::Language::Nodes::InputValueDefinition,
683
+ directives: GraphQL::Language::Nodes::Directive,
593
684
  })
594
685
  self.children_method_name = :fields
595
686
 
@@ -605,8 +696,7 @@ module GraphQL
605
696
  end
606
697
 
607
698
  class ObjectTypeDefinition < AbstractNode
608
- include DefinitionNode
609
- attr_reader :description
699
+ attr_reader :description, :comment
610
700
  scalar_methods :name, :interfaces
611
701
  children_methods({
612
702
  directives: GraphQL::Language::Nodes::Directive,
@@ -625,8 +715,7 @@ module GraphQL
625
715
  end
626
716
 
627
717
  class InterfaceTypeDefinition < AbstractNode
628
- include DefinitionNode
629
- attr_reader :description
718
+ attr_reader :description, :comment
630
719
  scalar_methods :name
631
720
  children_methods({
632
721
  interfaces: GraphQL::Language::Nodes::TypeName,
@@ -647,8 +736,7 @@ module GraphQL
647
736
  end
648
737
 
649
738
  class UnionTypeDefinition < AbstractNode
650
- include DefinitionNode
651
- attr_reader :description, :types
739
+ attr_reader :description, :comment, :types
652
740
  scalar_methods :name
653
741
  children_methods({
654
742
  directives: GraphQL::Language::Nodes::Directive,
@@ -666,8 +754,7 @@ module GraphQL
666
754
  end
667
755
 
668
756
  class EnumValueDefinition < AbstractNode
669
- include DefinitionNode
670
- attr_reader :description
757
+ attr_reader :description, :comment
671
758
  scalar_methods :name
672
759
  children_methods({
673
760
  directives: GraphQL::Language::Nodes::Directive,
@@ -676,8 +763,7 @@ module GraphQL
676
763
  end
677
764
 
678
765
  class EnumTypeDefinition < AbstractNode
679
- include DefinitionNode
680
- attr_reader :description
766
+ attr_reader :description, :comment
681
767
  scalar_methods :name
682
768
  children_methods({
683
769
  directives: GraphQL::Language::Nodes::Directive,
@@ -696,8 +782,7 @@ module GraphQL
696
782
  end
697
783
 
698
784
  class InputObjectTypeDefinition < AbstractNode
699
- include DefinitionNode
700
- attr_reader :description
785
+ attr_reader :description, :comment
701
786
  scalar_methods :name
702
787
  children_methods({
703
788
  directives: GraphQL::Language::Nodes::Directive,