graphql 1.9.21 → 2.0.16

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.

Potentially problematic release.


This version of graphql might be problematic. Click here for more details.

Files changed (403) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/graphql/core.rb +21 -10
  3. data/lib/generators/graphql/enum_generator.rb +4 -10
  4. data/lib/generators/graphql/field_extractor.rb +31 -0
  5. data/lib/generators/graphql/input_generator.rb +50 -0
  6. data/lib/generators/graphql/install/mutation_root_generator.rb +34 -0
  7. data/lib/generators/graphql/{templates → install/templates}/base_mutation.erb +2 -0
  8. data/lib/generators/graphql/{templates → install/templates}/mutation_type.erb +2 -0
  9. data/lib/generators/graphql/install_generator.rb +45 -8
  10. data/lib/generators/graphql/interface_generator.rb +7 -7
  11. data/lib/generators/graphql/loader_generator.rb +1 -0
  12. data/lib/generators/graphql/mutation_create_generator.rb +22 -0
  13. data/lib/generators/graphql/mutation_delete_generator.rb +22 -0
  14. data/lib/generators/graphql/mutation_generator.rb +6 -30
  15. data/lib/generators/graphql/mutation_update_generator.rb +22 -0
  16. data/lib/generators/graphql/object_generator.rb +28 -12
  17. data/lib/generators/graphql/orm_mutations_base.rb +40 -0
  18. data/lib/generators/graphql/relay.rb +49 -0
  19. data/lib/generators/graphql/relay_generator.rb +21 -0
  20. data/lib/generators/graphql/scalar_generator.rb +4 -2
  21. data/lib/generators/graphql/templates/base_argument.erb +2 -0
  22. data/lib/generators/graphql/templates/base_connection.erb +8 -0
  23. data/lib/generators/graphql/templates/base_edge.erb +8 -0
  24. data/lib/generators/graphql/templates/base_enum.erb +2 -0
  25. data/lib/generators/graphql/templates/base_field.erb +2 -0
  26. data/lib/generators/graphql/templates/base_input_object.erb +2 -0
  27. data/lib/generators/graphql/templates/base_interface.erb +2 -0
  28. data/lib/generators/graphql/templates/base_object.erb +2 -0
  29. data/lib/generators/graphql/templates/base_scalar.erb +2 -0
  30. data/lib/generators/graphql/templates/base_union.erb +2 -0
  31. data/lib/generators/graphql/templates/enum.erb +7 -1
  32. data/lib/generators/graphql/templates/graphql_controller.erb +16 -12
  33. data/lib/generators/graphql/templates/input.erb +9 -0
  34. data/lib/generators/graphql/templates/interface.erb +6 -2
  35. data/lib/generators/graphql/templates/loader.erb +2 -0
  36. data/lib/generators/graphql/templates/mutation.erb +3 -1
  37. data/lib/generators/graphql/templates/mutation_create.erb +20 -0
  38. data/lib/generators/graphql/templates/mutation_delete.erb +20 -0
  39. data/lib/generators/graphql/templates/mutation_update.erb +21 -0
  40. data/lib/generators/graphql/templates/node_type.erb +9 -0
  41. data/lib/generators/graphql/templates/object.erb +7 -3
  42. data/lib/generators/graphql/templates/query_type.erb +3 -3
  43. data/lib/generators/graphql/templates/scalar.erb +5 -1
  44. data/lib/generators/graphql/templates/schema.erb +25 -27
  45. data/lib/generators/graphql/templates/union.erb +6 -2
  46. data/lib/generators/graphql/type_generator.rb +47 -10
  47. data/lib/generators/graphql/union_generator.rb +5 -5
  48. data/lib/graphql/analysis/ast/field_usage.rb +31 -2
  49. data/lib/graphql/analysis/ast/max_query_complexity.rb +0 -1
  50. data/lib/graphql/analysis/ast/query_complexity.rb +175 -68
  51. data/lib/graphql/analysis/ast/query_depth.rb +0 -1
  52. data/lib/graphql/analysis/ast/visitor.rb +17 -8
  53. data/lib/graphql/analysis/ast.rb +14 -14
  54. data/lib/graphql/analysis.rb +0 -7
  55. data/lib/graphql/backtrace/inspect_result.rb +0 -1
  56. data/lib/graphql/backtrace/table.rb +37 -16
  57. data/lib/graphql/backtrace/traced_error.rb +0 -1
  58. data/lib/graphql/backtrace/tracer.rb +39 -9
  59. data/lib/graphql/backtrace.rb +20 -17
  60. data/lib/graphql/dataloader/null_dataloader.rb +24 -0
  61. data/lib/graphql/dataloader/request.rb +19 -0
  62. data/lib/graphql/dataloader/request_all.rb +19 -0
  63. data/lib/graphql/dataloader/source.rb +164 -0
  64. data/lib/graphql/dataloader.rb +311 -0
  65. data/lib/graphql/date_encoding_error.rb +16 -0
  66. data/lib/graphql/deprecation.rb +9 -0
  67. data/lib/graphql/dig.rb +1 -1
  68. data/lib/graphql/execution/directive_checks.rb +2 -2
  69. data/lib/graphql/execution/errors.rb +77 -45
  70. data/lib/graphql/execution/interpreter/argument_value.rb +28 -0
  71. data/lib/graphql/execution/interpreter/arguments.rb +88 -0
  72. data/lib/graphql/execution/interpreter/arguments_cache.rb +105 -0
  73. data/lib/graphql/execution/interpreter/handles_raw_value.rb +18 -0
  74. data/lib/graphql/execution/interpreter/resolve.rb +44 -25
  75. data/lib/graphql/execution/interpreter/runtime.rb +755 -395
  76. data/lib/graphql/execution/interpreter.rb +201 -74
  77. data/lib/graphql/execution/lazy/lazy_method_map.rb +4 -0
  78. data/lib/graphql/execution/lazy.rb +5 -9
  79. data/lib/graphql/execution/lookahead.rb +65 -136
  80. data/lib/graphql/execution/multiplex.rb +5 -152
  81. data/lib/graphql/execution.rb +11 -4
  82. data/lib/graphql/filter.rb +1 -1
  83. data/lib/graphql/integer_decoding_error.rb +17 -0
  84. data/lib/graphql/integer_encoding_error.rb +18 -2
  85. data/lib/graphql/introspection/base_object.rb +2 -5
  86. data/lib/graphql/introspection/directive_location_enum.rb +2 -2
  87. data/lib/graphql/introspection/directive_type.rb +11 -5
  88. data/lib/graphql/introspection/dynamic_fields.rb +3 -8
  89. data/lib/graphql/introspection/entry_points.rb +5 -18
  90. data/lib/graphql/introspection/enum_value_type.rb +2 -2
  91. data/lib/graphql/introspection/field_type.rb +9 -5
  92. data/lib/graphql/introspection/input_value_type.rb +41 -11
  93. data/lib/graphql/introspection/introspection_query.rb +6 -92
  94. data/lib/graphql/introspection/schema_type.rb +10 -10
  95. data/lib/graphql/introspection/type_type.rb +34 -17
  96. data/lib/graphql/introspection.rb +100 -0
  97. data/lib/graphql/invalid_null_error.rb +18 -0
  98. data/lib/graphql/language/block_string.rb +20 -5
  99. data/lib/graphql/language/cache.rb +37 -0
  100. data/lib/graphql/language/definition_slice.rb +21 -10
  101. data/lib/graphql/language/document_from_schema_definition.rb +104 -68
  102. data/lib/graphql/language/lexer.rb +83 -40
  103. data/lib/graphql/language/lexer.rl +31 -9
  104. data/lib/graphql/language/nodes.rb +64 -93
  105. data/lib/graphql/language/parser.rb +940 -896
  106. data/lib/graphql/language/parser.y +130 -103
  107. data/lib/graphql/language/printer.rb +48 -23
  108. data/lib/graphql/language/sanitized_printer.rb +222 -0
  109. data/lib/graphql/language/token.rb +0 -4
  110. data/lib/graphql/language/visitor.rb +2 -2
  111. data/lib/graphql/language.rb +3 -1
  112. data/lib/graphql/name_validator.rb +2 -7
  113. data/lib/graphql/pagination/active_record_relation_connection.rb +85 -0
  114. data/lib/graphql/pagination/array_connection.rb +79 -0
  115. data/lib/graphql/pagination/connection.rb +253 -0
  116. data/lib/graphql/pagination/connections.rb +135 -0
  117. data/lib/graphql/pagination/mongoid_relation_connection.rb +25 -0
  118. data/lib/graphql/pagination/relation_connection.rb +228 -0
  119. data/lib/graphql/pagination/sequel_dataset_connection.rb +28 -0
  120. data/lib/graphql/pagination.rb +6 -0
  121. data/lib/graphql/parse_error.rb +0 -1
  122. data/lib/graphql/query/context.rb +172 -198
  123. data/lib/graphql/query/fingerprint.rb +26 -0
  124. data/lib/graphql/query/input_validation_result.rb +33 -7
  125. data/lib/graphql/query/null_context.rb +21 -8
  126. data/lib/graphql/query/validation_pipeline.rb +16 -38
  127. data/lib/graphql/query/variable_validation_error.rb +3 -3
  128. data/lib/graphql/query/variables.rb +39 -12
  129. data/lib/graphql/query.rb +74 -38
  130. data/lib/graphql/railtie.rb +6 -102
  131. data/lib/graphql/rake_task/validate.rb +4 -1
  132. data/lib/graphql/rake_task.rb +41 -10
  133. data/lib/graphql/relay/range_add.rb +17 -10
  134. data/lib/graphql/relay.rb +0 -15
  135. data/lib/graphql/rubocop/graphql/base_cop.rb +36 -0
  136. data/lib/graphql/rubocop/graphql/default_null_true.rb +43 -0
  137. data/lib/graphql/rubocop/graphql/default_required_true.rb +43 -0
  138. data/lib/graphql/rubocop.rb +4 -0
  139. data/lib/graphql/schema/addition.rb +245 -0
  140. data/lib/graphql/schema/argument.rb +286 -31
  141. data/lib/graphql/schema/base_64_encoder.rb +2 -0
  142. data/lib/graphql/schema/build_from_definition/resolve_map/default_resolve.rb +1 -1
  143. data/lib/graphql/schema/build_from_definition/resolve_map.rb +13 -5
  144. data/lib/graphql/schema/build_from_definition.rb +334 -220
  145. data/lib/graphql/schema/built_in_types.rb +5 -5
  146. data/lib/graphql/schema/directive/deprecated.rb +18 -0
  147. data/lib/graphql/schema/directive/feature.rb +1 -1
  148. data/lib/graphql/schema/directive/flagged.rb +57 -0
  149. data/lib/graphql/schema/directive/include.rb +2 -2
  150. data/lib/graphql/schema/directive/one_of.rb +12 -0
  151. data/lib/graphql/schema/directive/skip.rb +2 -2
  152. data/lib/graphql/schema/directive/transform.rb +14 -2
  153. data/lib/graphql/schema/directive.rb +117 -14
  154. data/lib/graphql/schema/enum.rb +113 -22
  155. data/lib/graphql/schema/enum_value.rb +16 -21
  156. data/lib/graphql/schema/field/connection_extension.rb +50 -20
  157. data/lib/graphql/schema/field/scope_extension.rb +1 -1
  158. data/lib/graphql/schema/field.rb +491 -329
  159. data/lib/graphql/schema/field_extension.rb +89 -2
  160. data/lib/graphql/schema/find_inherited_value.rb +17 -1
  161. data/lib/graphql/schema/finder.rb +16 -14
  162. data/lib/graphql/schema/input_object.rb +182 -60
  163. data/lib/graphql/schema/interface.rb +28 -43
  164. data/lib/graphql/schema/introspection_system.rb +101 -38
  165. data/lib/graphql/schema/late_bound_type.rb +7 -2
  166. data/lib/graphql/schema/list.rb +61 -3
  167. data/lib/graphql/schema/loader.rb +144 -102
  168. data/lib/graphql/schema/member/base_dsl_methods.rb +33 -32
  169. data/lib/graphql/schema/member/build_type.rb +24 -15
  170. data/lib/graphql/schema/member/has_arguments.rb +261 -24
  171. data/lib/graphql/schema/member/has_ast_node.rb +20 -0
  172. data/lib/graphql/schema/member/has_deprecation_reason.rb +25 -0
  173. data/lib/graphql/schema/member/has_directives.rb +113 -0
  174. data/lib/graphql/schema/member/has_fields.rb +99 -34
  175. data/lib/graphql/schema/member/has_interfaces.rb +88 -0
  176. data/lib/graphql/schema/member/has_unresolved_type_error.rb +15 -0
  177. data/lib/graphql/schema/member/has_validators.rb +31 -0
  178. data/lib/graphql/schema/member/relay_shortcuts.rb +28 -2
  179. data/lib/graphql/schema/member/type_system_helpers.rb +3 -3
  180. data/lib/graphql/schema/member/validates_input.rb +33 -0
  181. data/lib/graphql/schema/member.rb +11 -6
  182. data/lib/graphql/schema/mutation.rb +4 -9
  183. data/lib/graphql/schema/non_null.rb +34 -4
  184. data/lib/graphql/schema/object.rb +38 -60
  185. data/lib/graphql/schema/printer.rb +16 -35
  186. data/lib/graphql/schema/relay_classic_mutation.rb +90 -43
  187. data/lib/graphql/schema/resolver/has_payload_type.rb +46 -6
  188. data/lib/graphql/schema/resolver.rb +146 -93
  189. data/lib/graphql/schema/scalar.rb +40 -15
  190. data/lib/graphql/schema/subscription.rb +55 -26
  191. data/lib/graphql/schema/timeout.rb +29 -15
  192. data/lib/graphql/schema/type_expression.rb +21 -13
  193. data/lib/graphql/schema/type_membership.rb +22 -5
  194. data/lib/graphql/schema/union.rb +48 -14
  195. data/lib/graphql/schema/unique_within_type.rb +1 -2
  196. data/lib/graphql/schema/validator/allow_blank_validator.rb +29 -0
  197. data/lib/graphql/schema/validator/allow_null_validator.rb +26 -0
  198. data/lib/graphql/schema/validator/exclusion_validator.rb +33 -0
  199. data/lib/graphql/schema/validator/format_validator.rb +48 -0
  200. data/lib/graphql/schema/validator/inclusion_validator.rb +35 -0
  201. data/lib/graphql/schema/validator/length_validator.rb +59 -0
  202. data/lib/graphql/schema/validator/numericality_validator.rb +82 -0
  203. data/lib/graphql/schema/validator/required_validator.rb +82 -0
  204. data/lib/graphql/schema/validator.rb +171 -0
  205. data/lib/graphql/schema/warden.rb +187 -33
  206. data/lib/graphql/schema/wrapper.rb +0 -5
  207. data/lib/graphql/schema.rb +773 -892
  208. data/lib/graphql/static_validation/all_rules.rb +3 -0
  209. data/lib/graphql/static_validation/base_visitor.rb +21 -31
  210. data/lib/graphql/static_validation/definition_dependencies.rb +7 -2
  211. data/lib/graphql/static_validation/error.rb +3 -1
  212. data/lib/graphql/static_validation/literal_validator.rb +55 -26
  213. data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +45 -83
  214. data/lib/graphql/static_validation/rules/argument_literals_are_compatible_error.rb +22 -6
  215. data/lib/graphql/static_validation/rules/arguments_are_defined.rb +35 -26
  216. data/lib/graphql/static_validation/rules/arguments_are_defined_error.rb +4 -2
  217. data/lib/graphql/static_validation/rules/directives_are_defined.rb +12 -6
  218. data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +14 -14
  219. data/lib/graphql/static_validation/rules/fields_are_defined_on_type.rb +4 -4
  220. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +5 -5
  221. data/lib/graphql/static_validation/rules/fields_will_merge.rb +94 -51
  222. data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +25 -4
  223. data/lib/graphql/static_validation/rules/fragment_spreads_are_possible.rb +3 -3
  224. data/lib/graphql/static_validation/rules/fragments_are_finite.rb +2 -2
  225. data/lib/graphql/static_validation/rules/input_object_names_are_unique.rb +30 -0
  226. data/lib/graphql/static_validation/rules/input_object_names_are_unique_error.rb +30 -0
  227. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid.rb +66 -0
  228. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid_error.rb +29 -0
  229. data/lib/graphql/static_validation/rules/query_root_exists.rb +17 -0
  230. data/lib/graphql/static_validation/rules/query_root_exists_error.rb +26 -0
  231. data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +4 -2
  232. data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb +9 -10
  233. data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +13 -7
  234. data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +12 -13
  235. data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +19 -14
  236. data/lib/graphql/static_validation/rules/variables_are_input_types.rb +1 -1
  237. data/lib/graphql/static_validation/rules/variables_are_used_and_defined.rb +5 -3
  238. data/lib/graphql/static_validation/type_stack.rb +2 -2
  239. data/lib/graphql/static_validation/validation_context.rb +13 -3
  240. data/lib/graphql/static_validation/validation_timeout_error.rb +25 -0
  241. data/lib/graphql/static_validation/validator.rb +31 -19
  242. data/lib/graphql/static_validation.rb +1 -2
  243. data/lib/graphql/string_encoding_error.rb +13 -3
  244. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +129 -22
  245. data/lib/graphql/subscriptions/broadcast_analyzer.rb +81 -0
  246. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +58 -0
  247. data/lib/graphql/subscriptions/event.rb +85 -31
  248. data/lib/graphql/subscriptions/instrumentation.rb +0 -47
  249. data/lib/graphql/subscriptions/serialize.rb +53 -6
  250. data/lib/graphql/subscriptions.rb +137 -57
  251. data/lib/graphql/tracing/active_support_notifications_tracing.rb +8 -17
  252. data/lib/graphql/tracing/appoptics_tracing.rb +173 -0
  253. data/lib/graphql/tracing/appsignal_tracing.rb +23 -0
  254. data/lib/graphql/tracing/data_dog_tracing.rb +34 -2
  255. data/lib/graphql/tracing/new_relic_tracing.rb +9 -12
  256. data/lib/graphql/tracing/notifications_tracing.rb +59 -0
  257. data/lib/graphql/tracing/platform_tracing.rb +67 -38
  258. data/lib/graphql/tracing/prometheus_tracing/graphql_collector.rb +4 -1
  259. data/lib/graphql/tracing/prometheus_tracing.rb +8 -0
  260. data/lib/graphql/tracing/scout_tracing.rb +19 -0
  261. data/lib/graphql/tracing/statsd_tracing.rb +42 -0
  262. data/lib/graphql/tracing.rb +15 -36
  263. data/lib/graphql/types/big_int.rb +5 -1
  264. data/lib/graphql/types/int.rb +10 -3
  265. data/lib/graphql/types/iso_8601_date.rb +20 -9
  266. data/lib/graphql/types/iso_8601_date_time.rb +36 -10
  267. data/lib/graphql/types/relay/base_connection.rb +18 -90
  268. data/lib/graphql/types/relay/base_edge.rb +2 -34
  269. data/lib/graphql/types/relay/connection_behaviors.rb +158 -0
  270. data/lib/graphql/types/relay/default_relay.rb +27 -0
  271. data/lib/graphql/types/relay/edge_behaviors.rb +65 -0
  272. data/lib/graphql/types/relay/has_node_field.rb +41 -0
  273. data/lib/graphql/types/relay/has_nodes_field.rb +41 -0
  274. data/lib/graphql/types/relay/node.rb +2 -4
  275. data/lib/graphql/types/relay/node_behaviors.rb +19 -0
  276. data/lib/graphql/types/relay/page_info.rb +2 -14
  277. data/lib/graphql/types/relay/page_info_behaviors.rb +25 -0
  278. data/lib/graphql/types/relay.rb +11 -5
  279. data/lib/graphql/types/string.rb +8 -2
  280. data/lib/graphql/unauthorized_error.rb +2 -2
  281. data/lib/graphql/unresolved_type_error.rb +2 -2
  282. data/lib/graphql/version.rb +1 -1
  283. data/lib/graphql.rb +41 -58
  284. data/readme.md +3 -6
  285. metadata +103 -237
  286. data/lib/graphql/analysis/analyze_query.rb +0 -91
  287. data/lib/graphql/analysis/field_usage.rb +0 -45
  288. data/lib/graphql/analysis/max_query_complexity.rb +0 -26
  289. data/lib/graphql/analysis/max_query_depth.rb +0 -26
  290. data/lib/graphql/analysis/query_complexity.rb +0 -88
  291. data/lib/graphql/analysis/query_depth.rb +0 -43
  292. data/lib/graphql/analysis/reducer_state.rb +0 -48
  293. data/lib/graphql/argument.rb +0 -159
  294. data/lib/graphql/authorization.rb +0 -82
  295. data/lib/graphql/backwards_compatibility.rb +0 -60
  296. data/lib/graphql/base_type.rb +0 -226
  297. data/lib/graphql/boolean_type.rb +0 -2
  298. data/lib/graphql/compatibility/execution_specification/counter_schema.rb +0 -53
  299. data/lib/graphql/compatibility/execution_specification/specification_schema.rb +0 -200
  300. data/lib/graphql/compatibility/execution_specification.rb +0 -435
  301. data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +0 -111
  302. data/lib/graphql/compatibility/lazy_execution_specification.rb +0 -213
  303. data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -91
  304. data/lib/graphql/compatibility/query_parser_specification/query_assertions.rb +0 -79
  305. data/lib/graphql/compatibility/query_parser_specification.rb +0 -264
  306. data/lib/graphql/compatibility/schema_parser_specification.rb +0 -680
  307. data/lib/graphql/compatibility.rb +0 -5
  308. data/lib/graphql/define/assign_argument.rb +0 -12
  309. data/lib/graphql/define/assign_connection.rb +0 -13
  310. data/lib/graphql/define/assign_enum_value.rb +0 -18
  311. data/lib/graphql/define/assign_global_id_field.rb +0 -11
  312. data/lib/graphql/define/assign_mutation_function.rb +0 -34
  313. data/lib/graphql/define/assign_object_field.rb +0 -42
  314. data/lib/graphql/define/defined_object_proxy.rb +0 -53
  315. data/lib/graphql/define/instance_definable.rb +0 -311
  316. data/lib/graphql/define/no_definition_error.rb +0 -7
  317. data/lib/graphql/define/non_null_with_bang.rb +0 -16
  318. data/lib/graphql/define/type_definer.rb +0 -31
  319. data/lib/graphql/define.rb +0 -31
  320. data/lib/graphql/deprecated_dsl.rb +0 -42
  321. data/lib/graphql/directive/deprecated_directive.rb +0 -13
  322. data/lib/graphql/directive/include_directive.rb +0 -2
  323. data/lib/graphql/directive/skip_directive.rb +0 -2
  324. data/lib/graphql/directive.rb +0 -104
  325. data/lib/graphql/enum_type.rb +0 -193
  326. data/lib/graphql/execution/execute.rb +0 -326
  327. data/lib/graphql/execution/flatten.rb +0 -40
  328. data/lib/graphql/execution/instrumentation.rb +0 -92
  329. data/lib/graphql/execution/interpreter/hash_response.rb +0 -46
  330. data/lib/graphql/execution/lazy/resolve.rb +0 -91
  331. data/lib/graphql/execution/typecast.rb +0 -50
  332. data/lib/graphql/field/resolve.rb +0 -59
  333. data/lib/graphql/field.rb +0 -330
  334. data/lib/graphql/float_type.rb +0 -2
  335. data/lib/graphql/function.rb +0 -153
  336. data/lib/graphql/id_type.rb +0 -2
  337. data/lib/graphql/input_object_type.rb +0 -154
  338. data/lib/graphql/int_type.rb +0 -2
  339. data/lib/graphql/interface_type.rb +0 -86
  340. data/lib/graphql/internal_representation/document.rb +0 -27
  341. data/lib/graphql/internal_representation/node.rb +0 -206
  342. data/lib/graphql/internal_representation/print.rb +0 -51
  343. data/lib/graphql/internal_representation/rewrite.rb +0 -184
  344. data/lib/graphql/internal_representation/scope.rb +0 -88
  345. data/lib/graphql/internal_representation/visit.rb +0 -36
  346. data/lib/graphql/internal_representation.rb +0 -7
  347. data/lib/graphql/list_type.rb +0 -80
  348. data/lib/graphql/literal_validation_error.rb +0 -6
  349. data/lib/graphql/non_null_type.rb +0 -81
  350. data/lib/graphql/object_type.rb +0 -141
  351. data/lib/graphql/query/arguments.rb +0 -187
  352. data/lib/graphql/query/arguments_cache.rb +0 -25
  353. data/lib/graphql/query/executor.rb +0 -53
  354. data/lib/graphql/query/literal_input.rb +0 -116
  355. data/lib/graphql/query/serial_execution/field_resolution.rb +0 -92
  356. data/lib/graphql/query/serial_execution/operation_resolution.rb +0 -19
  357. data/lib/graphql/query/serial_execution/selection_resolution.rb +0 -23
  358. data/lib/graphql/query/serial_execution/value_resolution.rb +0 -87
  359. data/lib/graphql/query/serial_execution.rb +0 -39
  360. data/lib/graphql/relay/array_connection.rb +0 -85
  361. data/lib/graphql/relay/base_connection.rb +0 -172
  362. data/lib/graphql/relay/connection_instrumentation.rb +0 -54
  363. data/lib/graphql/relay/connection_resolve.rb +0 -43
  364. data/lib/graphql/relay/connection_type.rb +0 -40
  365. data/lib/graphql/relay/edge.rb +0 -27
  366. data/lib/graphql/relay/edge_type.rb +0 -18
  367. data/lib/graphql/relay/edges_instrumentation.rb +0 -40
  368. data/lib/graphql/relay/global_id_resolve.rb +0 -18
  369. data/lib/graphql/relay/mongo_relation_connection.rb +0 -50
  370. data/lib/graphql/relay/mutation/instrumentation.rb +0 -23
  371. data/lib/graphql/relay/mutation/resolve.rb +0 -56
  372. data/lib/graphql/relay/mutation/result.rb +0 -38
  373. data/lib/graphql/relay/mutation.rb +0 -190
  374. data/lib/graphql/relay/node.rb +0 -36
  375. data/lib/graphql/relay/page_info.rb +0 -7
  376. data/lib/graphql/relay/relation_connection.rb +0 -190
  377. data/lib/graphql/relay/type_extensions.rb +0 -30
  378. data/lib/graphql/scalar_type.rb +0 -133
  379. data/lib/graphql/schema/catchall_middleware.rb +0 -35
  380. data/lib/graphql/schema/default_parse_error.rb +0 -10
  381. data/lib/graphql/schema/default_type_error.rb +0 -15
  382. data/lib/graphql/schema/member/accepts_definition.rb +0 -152
  383. data/lib/graphql/schema/member/cached_graphql_definition.rb +0 -26
  384. data/lib/graphql/schema/member/instrumentation.rb +0 -132
  385. data/lib/graphql/schema/middleware_chain.rb +0 -82
  386. data/lib/graphql/schema/possible_types.rb +0 -39
  387. data/lib/graphql/schema/rescue_middleware.rb +0 -60
  388. data/lib/graphql/schema/timeout_middleware.rb +0 -86
  389. data/lib/graphql/schema/traversal.rb +0 -228
  390. data/lib/graphql/schema/validation.rb +0 -303
  391. data/lib/graphql/static_validation/default_visitor.rb +0 -15
  392. data/lib/graphql/static_validation/no_validate_visitor.rb +0 -10
  393. data/lib/graphql/string_type.rb +0 -2
  394. data/lib/graphql/subscriptions/subscription_root.rb +0 -74
  395. data/lib/graphql/tracing/skylight_tracing.rb +0 -62
  396. data/lib/graphql/types/relay/base_field.rb +0 -22
  397. data/lib/graphql/types/relay/base_interface.rb +0 -29
  398. data/lib/graphql/types/relay/base_object.rb +0 -26
  399. data/lib/graphql/types/relay/node_field.rb +0 -43
  400. data/lib/graphql/types/relay/nodes_field.rb +0 -45
  401. data/lib/graphql/union_type.rb +0 -135
  402. data/lib/graphql/upgrader/member.rb +0 -936
  403. data/lib/graphql/upgrader/schema.rb +0 -37
@@ -39,11 +39,11 @@ module GraphQL
39
39
 
40
40
  # Value equality
41
41
  # @return [Boolean] True if `self` is equivalent to `other`
42
- def eql?(other)
42
+ def ==(other)
43
43
  return true if equal?(other)
44
- other.is_a?(self.class) &&
45
- other.scalars.eql?(self.scalars) &&
46
- other.children.eql?(self.children)
44
+ other.kind_of?(self.class) &&
45
+ other.scalars == self.scalars &&
46
+ other.children == self.children
47
47
  end
48
48
 
49
49
  NO_CHILDREN = [].freeze
@@ -65,9 +65,8 @@ module GraphQL
65
65
  @query_string = nil
66
66
  end
67
67
 
68
- # @return [Symbol] the method to call on {Language::Visitor} for this node
69
- def visit_method
70
- raise GraphQL::RequiredImplementationMissingError, "#{self.class.name}#visit_method shold return a symbol"
68
+ def children_method_name
69
+ self.class.children_method_name
71
70
  end
72
71
 
73
72
  def position
@@ -147,9 +146,10 @@ module GraphQL
147
146
  :on_#{name_underscored}
148
147
  end
149
148
 
150
- def children_method_name
151
- :#{name_underscored}s
149
+ class << self
150
+ attr_accessor :children_method_name
152
151
  end
152
+ self.children_method_name = :#{name_underscored}s
153
153
  RUBY
154
154
  end
155
155
 
@@ -161,7 +161,7 @@ module GraphQL
161
161
  # - Add a persistent update method to add a child
162
162
  # - Generate a `#children` method
163
163
  def children_methods(children_of_type)
164
- if @children_methods
164
+ if defined?(@children_methods)
165
165
  raise "Can't re-call .children_methods for #{self} (already have: #{@children_methods})"
166
166
  else
167
167
  @children_methods = children_of_type
@@ -197,14 +197,27 @@ module GraphQL
197
197
  else
198
198
  module_eval <<-RUBY, __FILE__, __LINE__
199
199
  def children
200
- @children ||= (#{children_of_type.keys.map { |k| "@#{k}" }.join(" + ")}).freeze
200
+ @children ||= begin
201
+ if #{children_of_type.keys.map { |k| "@#{k}.any?" }.join(" || ")}
202
+ new_children = []
203
+ #{children_of_type.keys.map { |k| "new_children.concat(@#{k})" }.join("; ")}
204
+ new_children.freeze
205
+ new_children
206
+ else
207
+ NO_CHILDREN
208
+ end
209
+ end
201
210
  end
202
211
  RUBY
203
212
  end
204
213
  end
205
214
 
206
215
  if defined?(@scalar_methods)
207
- generate_initialize_node
216
+ if !method_defined?(:initialize_node)
217
+ generate_initialize_node
218
+ else
219
+ # This method was defined manually
220
+ end
208
221
  else
209
222
  raise "Can't generate_initialize_node because scalar_methods wasn't called; call it before children_methods"
210
223
  end
@@ -214,7 +227,7 @@ module GraphQL
214
227
  # - Add reader methods
215
228
  # - Add a `#scalars` method
216
229
  def scalar_methods(*method_names)
217
- if @scalar_methods
230
+ if defined?(@scalar_methods)
218
231
  raise "Can't re-call .scalar_methods for #{self} (already have: #{@scalar_methods})"
219
232
  else
220
233
  @scalar_methods = method_names
@@ -251,7 +264,7 @@ module GraphQL
251
264
  return
252
265
  else
253
266
  arguments = scalar_method_names.map { |m| "#{m}: nil"} +
254
- @children_methods.keys.map { |m| "#{m}: []" }
267
+ @children_methods.keys.map { |m| "#{m}: NO_CHILDREN" }
255
268
 
256
269
  assignments = scalar_method_names.map { |m| "@#{m} = #{m}"} +
257
270
  @children_methods.keys.map { |m| "@#{m} = #{m}.freeze" }
@@ -305,7 +318,7 @@ module GraphQL
305
318
  class DirectiveDefinition < AbstractNode
306
319
  include DefinitionNode
307
320
  attr_reader :description
308
- scalar_methods :name
321
+ scalar_methods :name, :repeatable
309
322
  children_methods(
310
323
  locations: Nodes::DirectiveLocation,
311
324
  arguments: Nodes::Argument,
@@ -328,7 +341,7 @@ module GraphQL
328
341
  # end
329
342
  # end
330
343
  #
331
- # document.to_query_string(printer: VariableSrubber.new)
344
+ # document.to_query_string(printer: VariableScrubber.new)
332
345
  #
333
346
  class Document < AbstractNode
334
347
  scalar_methods false
@@ -373,19 +386,11 @@ module GraphQL
373
386
  end
374
387
 
375
388
  # Override this because default is `:fields`
376
- def children_method_name
377
- :selections
378
- end
389
+ self.children_method_name = :selections
379
390
  end
380
391
 
381
392
  # A reusable fragment, defined at document-level.
382
393
  class FragmentDefinition < AbstractNode
383
- scalar_methods :name, :type
384
- children_methods({
385
- selections: GraphQL::Language::Nodes::Field,
386
- directives: GraphQL::Language::Nodes::Directive,
387
- })
388
-
389
394
  # @!attribute name
390
395
  # @return [String] the identifier for this fragment, which may be applied with `...#{name}`
391
396
 
@@ -398,9 +403,13 @@ module GraphQL
398
403
  @selections = selections
399
404
  end
400
405
 
401
- def children_method_name
402
- :definitions
403
- end
406
+ scalar_methods :name, :type
407
+ children_methods({
408
+ selections: GraphQL::Language::Nodes::Field,
409
+ directives: GraphQL::Language::Nodes::Directive,
410
+ })
411
+
412
+ self.children_method_name = :definitions
404
413
  end
405
414
 
406
415
  # Application of a named fragment in a selection
@@ -408,9 +417,7 @@ module GraphQL
408
417
  scalar_methods :name
409
418
  children_methods(directives: GraphQL::Language::Nodes::Directive)
410
419
 
411
- def children_method_name
412
- :selections
413
- end
420
+ self.children_method_name = :selections
414
421
 
415
422
  # @!attribute name
416
423
  # @return [String] The identifier of the fragment to apply, corresponds with {FragmentDefinition#name}
@@ -424,9 +431,7 @@ module GraphQL
424
431
  directives: GraphQL::Language::Nodes::Directive,
425
432
  })
426
433
 
427
- def children_method_name
428
- :selections
429
- end
434
+ self.children_method_name = :selections
430
435
 
431
436
  # @!attribute type
432
437
  # @return [String, nil] Name of the type this fragment applies to, or `nil` if this fragment applies to any type
@@ -449,9 +454,7 @@ module GraphQL
449
454
  end
450
455
  end
451
456
 
452
- def children_method_name
453
- :value
454
- end
457
+ self.children_method_name = :value
455
458
 
456
459
  private
457
460
 
@@ -473,7 +476,6 @@ module GraphQL
473
476
  end
474
477
  end
475
478
 
476
-
477
479
  # A list type definition, denoted with `[...]` (used for variable type definitions)
478
480
  class ListType < WrapperType
479
481
  end
@@ -494,6 +496,8 @@ module GraphQL
494
496
 
495
497
  # @!attribute name
496
498
  # @return [String] The identifier for this variable, _without_ `$`
499
+
500
+ self.children_method_name = :variables
497
501
  end
498
502
 
499
503
  # A query, mutation or subscription.
@@ -508,7 +512,7 @@ module GraphQL
508
512
  })
509
513
 
510
514
  # @!attribute variables
511
- # @return [Array<VariableDefinition>] Variable definitions for this operation
515
+ # @return [Array<VariableDefinition>] Variable $definitions for this operation
512
516
 
513
517
  # @!attribute selections
514
518
  # @return [Array<Field>] Root-level fields on this operation
@@ -519,9 +523,7 @@ module GraphQL
519
523
  # @!attribute name
520
524
  # @return [String, nil] The name for this operation, or `nil` if unnamed
521
525
 
522
- def children_method_name
523
- :definitions
524
- end
526
+ self.children_method_name = :definitions
525
527
  end
526
528
 
527
529
  # A type name, used for variable definitions
@@ -530,6 +532,7 @@ module GraphQL
530
532
 
531
533
  # Usage of a variable in a query. Name does _not_ include `$`.
532
534
  class VariableIdentifier < NameOnlyNode
535
+ self.children_method_name = :value
533
536
  end
534
537
 
535
538
  class SchemaDefinition < AbstractNode
@@ -538,9 +541,7 @@ module GraphQL
538
541
  children_methods({
539
542
  directives: GraphQL::Language::Nodes::Directive,
540
543
  })
541
- def children_method_name
542
- :definitions
543
- end
544
+ self.children_method_name = :definitions
544
545
  end
545
546
 
546
547
  class SchemaExtension < AbstractNode
@@ -548,9 +549,7 @@ module GraphQL
548
549
  children_methods({
549
550
  directives: GraphQL::Language::Nodes::Directive,
550
551
  })
551
- def children_method_name
552
- :definitions
553
- end
552
+ self.children_method_name = :definitions
554
553
  end
555
554
 
556
555
  class ScalarTypeDefinition < AbstractNode
@@ -560,9 +559,7 @@ module GraphQL
560
559
  children_methods({
561
560
  directives: GraphQL::Language::Nodes::Directive,
562
561
  })
563
- def children_method_name
564
- :definitions
565
- end
562
+ self.children_method_name = :definitions
566
563
  end
567
564
 
568
565
  class ScalarTypeExtension < AbstractNode
@@ -570,9 +567,7 @@ module GraphQL
570
567
  children_methods({
571
568
  directives: GraphQL::Language::Nodes::Directive,
572
569
  })
573
- def children_method_name
574
- :definitions
575
- end
570
+ self.children_method_name = :definitions
576
571
  end
577
572
 
578
573
  class InputValueDefinition < AbstractNode
@@ -582,9 +577,7 @@ module GraphQL
582
577
  children_methods({
583
578
  directives: GraphQL::Language::Nodes::Directive,
584
579
  })
585
- def children_method_name
586
- :fields
587
- end
580
+ self.children_method_name = :fields
588
581
  end
589
582
 
590
583
  class FieldDefinition < AbstractNode
@@ -595,9 +588,7 @@ module GraphQL
595
588
  directives: GraphQL::Language::Nodes::Directive,
596
589
  arguments: GraphQL::Language::Nodes::InputValueDefinition,
597
590
  })
598
- def children_method_name
599
- :fields
600
- end
591
+ self.children_method_name = :fields
601
592
 
602
593
  # this is so that `children_method_name` of `InputValueDefinition` works properly
603
594
  # with `#replace_child`
@@ -618,9 +609,7 @@ module GraphQL
618
609
  directives: GraphQL::Language::Nodes::Directive,
619
610
  fields: GraphQL::Language::Nodes::FieldDefinition,
620
611
  })
621
- def children_method_name
622
- :definitions
623
- end
612
+ self.children_method_name = :definitions
624
613
  end
625
614
 
626
615
  class ObjectTypeExtension < AbstractNode
@@ -629,9 +618,7 @@ module GraphQL
629
618
  directives: GraphQL::Language::Nodes::Directive,
630
619
  fields: GraphQL::Language::Nodes::FieldDefinition,
631
620
  })
632
- def children_method_name
633
- :definitions
634
- end
621
+ self.children_method_name = :definitions
635
622
  end
636
623
 
637
624
  class InterfaceTypeDefinition < AbstractNode
@@ -639,23 +626,21 @@ module GraphQL
639
626
  attr_reader :description
640
627
  scalar_methods :name
641
628
  children_methods({
629
+ interfaces: GraphQL::Language::Nodes::TypeName,
642
630
  directives: GraphQL::Language::Nodes::Directive,
643
631
  fields: GraphQL::Language::Nodes::FieldDefinition,
644
632
  })
645
- def children_method_name
646
- :definitions
647
- end
633
+ self.children_method_name = :definitions
648
634
  end
649
635
 
650
636
  class InterfaceTypeExtension < AbstractNode
651
637
  scalar_methods :name
652
638
  children_methods({
639
+ interfaces: GraphQL::Language::Nodes::TypeName,
653
640
  directives: GraphQL::Language::Nodes::Directive,
654
641
  fields: GraphQL::Language::Nodes::FieldDefinition,
655
642
  })
656
- def children_method_name
657
- :definitions
658
- end
643
+ self.children_method_name = :definitions
659
644
  end
660
645
 
661
646
  class UnionTypeDefinition < AbstractNode
@@ -665,9 +650,7 @@ module GraphQL
665
650
  children_methods({
666
651
  directives: GraphQL::Language::Nodes::Directive,
667
652
  })
668
- def children_method_name
669
- :definitions
670
- end
653
+ self.children_method_name = :definitions
671
654
  end
672
655
 
673
656
  class UnionTypeExtension < AbstractNode
@@ -676,9 +659,7 @@ module GraphQL
676
659
  children_methods({
677
660
  directives: GraphQL::Language::Nodes::Directive,
678
661
  })
679
- def children_method_name
680
- :definitions
681
- end
662
+ self.children_method_name = :definitions
682
663
  end
683
664
 
684
665
  class EnumValueDefinition < AbstractNode
@@ -688,9 +669,7 @@ module GraphQL
688
669
  children_methods({
689
670
  directives: GraphQL::Language::Nodes::Directive,
690
671
  })
691
- def children_method_name
692
- :values
693
- end
672
+ self.children_method_name = :values
694
673
  end
695
674
 
696
675
  class EnumTypeDefinition < AbstractNode
@@ -701,9 +680,7 @@ module GraphQL
701
680
  directives: GraphQL::Language::Nodes::Directive,
702
681
  values: GraphQL::Language::Nodes::EnumValueDefinition,
703
682
  })
704
- def children_method_name
705
- :definitions
706
- end
683
+ self.children_method_name = :definitions
707
684
  end
708
685
 
709
686
  class EnumTypeExtension < AbstractNode
@@ -712,9 +689,7 @@ module GraphQL
712
689
  directives: GraphQL::Language::Nodes::Directive,
713
690
  values: GraphQL::Language::Nodes::EnumValueDefinition,
714
691
  })
715
- def children_method_name
716
- :definitions
717
- end
692
+ self.children_method_name = :definitions
718
693
  end
719
694
 
720
695
  class InputObjectTypeDefinition < AbstractNode
@@ -725,9 +700,7 @@ module GraphQL
725
700
  directives: GraphQL::Language::Nodes::Directive,
726
701
  fields: GraphQL::Language::Nodes::InputValueDefinition,
727
702
  })
728
- def children_method_name
729
- :definitions
730
- end
703
+ self.children_method_name = :definitions
731
704
  end
732
705
 
733
706
  class InputObjectTypeExtension < AbstractNode
@@ -736,9 +709,7 @@ module GraphQL
736
709
  directives: GraphQL::Language::Nodes::Directive,
737
710
  fields: GraphQL::Language::Nodes::InputValueDefinition,
738
711
  })
739
- def children_method_name
740
- :definitions
741
- end
712
+ self.children_method_name = :definitions
742
713
  end
743
714
  end
744
715
  end