graphql 1.10.2 → 2.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (402) 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 +24 -33
  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 +30 -1
  49. data/lib/graphql/analysis/ast/max_query_complexity.rb +0 -1
  50. data/lib/graphql/analysis/ast/query_complexity.rb +125 -117
  51. data/lib/graphql/analysis/ast/query_depth.rb +0 -1
  52. data/lib/graphql/analysis/ast/visitor.rb +52 -36
  53. data/lib/graphql/analysis/ast.rb +7 -8
  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 +31 -18
  57. data/lib/graphql/backtrace/trace.rb +96 -0
  58. data/lib/graphql/backtrace/traced_error.rb +0 -1
  59. data/lib/graphql/backtrace/tracer.rb +39 -9
  60. data/lib/graphql/backtrace.rb +26 -18
  61. data/lib/graphql/dataloader/null_dataloader.rb +24 -0
  62. data/lib/graphql/dataloader/request.rb +19 -0
  63. data/lib/graphql/dataloader/request_all.rb +19 -0
  64. data/lib/graphql/dataloader/source.rb +164 -0
  65. data/lib/graphql/dataloader.rb +311 -0
  66. data/lib/graphql/date_encoding_error.rb +16 -0
  67. data/lib/graphql/deprecation.rb +9 -0
  68. data/lib/graphql/dig.rb +1 -1
  69. data/lib/graphql/execution/errors.rb +77 -44
  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 +104 -0
  73. data/lib/graphql/execution/interpreter/handles_raw_value.rb +18 -0
  74. data/lib/graphql/execution/interpreter/resolve.rb +62 -24
  75. data/lib/graphql/execution/interpreter/runtime.rb +826 -464
  76. data/lib/graphql/execution/interpreter.rb +206 -68
  77. data/lib/graphql/execution/lazy.rb +11 -21
  78. data/lib/graphql/execution/lookahead.rb +55 -136
  79. data/lib/graphql/execution/multiplex.rb +6 -162
  80. data/lib/graphql/execution.rb +11 -4
  81. data/lib/graphql/filter.rb +7 -2
  82. data/lib/graphql/integer_decoding_error.rb +17 -0
  83. data/lib/graphql/integer_encoding_error.rb +18 -2
  84. data/lib/graphql/introspection/directive_location_enum.rb +2 -2
  85. data/lib/graphql/introspection/directive_type.rb +11 -5
  86. data/lib/graphql/introspection/dynamic_fields.rb +3 -8
  87. data/lib/graphql/introspection/entry_points.rb +4 -17
  88. data/lib/graphql/introspection/enum_value_type.rb +2 -2
  89. data/lib/graphql/introspection/field_type.rb +9 -5
  90. data/lib/graphql/introspection/input_value_type.rb +15 -3
  91. data/lib/graphql/introspection/introspection_query.rb +6 -92
  92. data/lib/graphql/introspection/schema_type.rb +11 -6
  93. data/lib/graphql/introspection/type_type.rb +31 -14
  94. data/lib/graphql/introspection.rb +100 -0
  95. data/lib/graphql/invalid_null_error.rb +18 -0
  96. data/lib/graphql/language/block_string.rb +20 -5
  97. data/lib/graphql/language/cache.rb +37 -0
  98. data/lib/graphql/language/document_from_schema_definition.rb +96 -44
  99. data/lib/graphql/language/lexer.rb +216 -1462
  100. data/lib/graphql/language/nodes.rb +126 -129
  101. data/lib/graphql/language/parser.rb +997 -933
  102. data/lib/graphql/language/parser.y +148 -118
  103. data/lib/graphql/language/printer.rb +48 -23
  104. data/lib/graphql/language/sanitized_printer.rb +222 -0
  105. data/lib/graphql/language/token.rb +0 -4
  106. data/lib/graphql/language/visitor.rb +192 -84
  107. data/lib/graphql/language.rb +2 -0
  108. data/lib/graphql/name_validator.rb +2 -7
  109. data/lib/graphql/pagination/active_record_relation_connection.rb +45 -3
  110. data/lib/graphql/pagination/array_connection.rb +6 -4
  111. data/lib/graphql/pagination/connection.rb +105 -23
  112. data/lib/graphql/pagination/connections.rb +62 -35
  113. data/lib/graphql/pagination/relation_connection.rb +88 -36
  114. data/lib/graphql/parse_error.rb +0 -1
  115. data/lib/graphql/query/context.rb +203 -198
  116. data/lib/graphql/query/fingerprint.rb +26 -0
  117. data/lib/graphql/query/input_validation_result.rb +33 -7
  118. data/lib/graphql/query/null_context.rb +22 -9
  119. data/lib/graphql/query/validation_pipeline.rb +16 -38
  120. data/lib/graphql/query/variable_validation_error.rb +3 -3
  121. data/lib/graphql/query/variables.rb +36 -12
  122. data/lib/graphql/query.rb +92 -44
  123. data/lib/graphql/railtie.rb +6 -102
  124. data/lib/graphql/rake_task/validate.rb +1 -1
  125. data/lib/graphql/rake_task.rb +41 -10
  126. data/lib/graphql/relay/range_add.rb +17 -10
  127. data/lib/graphql/relay.rb +0 -15
  128. data/lib/graphql/rubocop/graphql/base_cop.rb +36 -0
  129. data/lib/graphql/rubocop/graphql/default_null_true.rb +43 -0
  130. data/lib/graphql/rubocop/graphql/default_required_true.rb +43 -0
  131. data/lib/graphql/rubocop.rb +4 -0
  132. data/lib/graphql/schema/addition.rb +245 -0
  133. data/lib/graphql/schema/argument.rb +250 -46
  134. data/lib/graphql/schema/base_64_encoder.rb +2 -0
  135. data/lib/graphql/schema/build_from_definition/resolve_map.rb +3 -1
  136. data/lib/graphql/schema/build_from_definition.rb +243 -89
  137. data/lib/graphql/schema/directive/deprecated.rb +1 -1
  138. data/lib/graphql/schema/directive/feature.rb +1 -1
  139. data/lib/graphql/schema/directive/flagged.rb +57 -0
  140. data/lib/graphql/schema/directive/include.rb +1 -1
  141. data/lib/graphql/schema/directive/one_of.rb +12 -0
  142. data/lib/graphql/schema/directive/skip.rb +1 -1
  143. data/lib/graphql/schema/directive/transform.rb +14 -2
  144. data/lib/graphql/schema/directive.rb +108 -20
  145. data/lib/graphql/schema/enum.rb +105 -44
  146. data/lib/graphql/schema/enum_value.rb +15 -25
  147. data/lib/graphql/schema/field/connection_extension.rb +50 -30
  148. data/lib/graphql/schema/field/scope_extension.rb +1 -1
  149. data/lib/graphql/schema/field.rb +476 -331
  150. data/lib/graphql/schema/field_extension.rb +86 -2
  151. data/lib/graphql/schema/find_inherited_value.rb +6 -8
  152. data/lib/graphql/schema/finder.rb +5 -5
  153. data/lib/graphql/schema/input_object.rb +133 -121
  154. data/lib/graphql/schema/interface.rb +17 -45
  155. data/lib/graphql/schema/introspection_system.rb +3 -8
  156. data/lib/graphql/schema/late_bound_type.rb +8 -2
  157. data/lib/graphql/schema/list.rb +25 -8
  158. data/lib/graphql/schema/loader.rb +139 -103
  159. data/lib/graphql/schema/member/base_dsl_methods.rb +29 -35
  160. data/lib/graphql/schema/member/build_type.rb +19 -14
  161. data/lib/graphql/schema/member/has_arguments.rb +310 -26
  162. data/lib/graphql/schema/member/has_ast_node.rb +16 -1
  163. data/lib/graphql/schema/member/has_deprecation_reason.rb +24 -0
  164. data/lib/graphql/schema/member/has_directives.rb +118 -0
  165. data/lib/graphql/schema/member/has_fields.rb +164 -42
  166. data/lib/graphql/schema/member/has_interfaces.rb +129 -0
  167. data/lib/graphql/schema/member/has_unresolved_type_error.rb +15 -0
  168. data/lib/graphql/schema/member/has_validators.rb +57 -0
  169. data/lib/graphql/schema/member/relay_shortcuts.rb +47 -2
  170. data/lib/graphql/schema/member/type_system_helpers.rb +20 -3
  171. data/lib/graphql/schema/member/validates_input.rb +3 -3
  172. data/lib/graphql/schema/member.rb +6 -6
  173. data/lib/graphql/schema/mutation.rb +4 -9
  174. data/lib/graphql/schema/non_null.rb +12 -7
  175. data/lib/graphql/schema/object.rb +35 -69
  176. data/lib/graphql/schema/printer.rb +16 -34
  177. data/lib/graphql/schema/relay_classic_mutation.rb +90 -43
  178. data/lib/graphql/schema/resolver/has_payload_type.rb +51 -11
  179. data/lib/graphql/schema/resolver.rb +144 -79
  180. data/lib/graphql/schema/scalar.rb +27 -18
  181. data/lib/graphql/schema/subscription.rb +55 -26
  182. data/lib/graphql/schema/timeout.rb +45 -35
  183. data/lib/graphql/schema/type_expression.rb +1 -1
  184. data/lib/graphql/schema/type_membership.rb +21 -4
  185. data/lib/graphql/schema/union.rb +48 -13
  186. data/lib/graphql/schema/unique_within_type.rb +1 -2
  187. data/lib/graphql/schema/validator/allow_blank_validator.rb +29 -0
  188. data/lib/graphql/schema/validator/allow_null_validator.rb +26 -0
  189. data/lib/graphql/schema/validator/exclusion_validator.rb +33 -0
  190. data/lib/graphql/schema/validator/format_validator.rb +48 -0
  191. data/lib/graphql/schema/validator/inclusion_validator.rb +35 -0
  192. data/lib/graphql/schema/validator/length_validator.rb +59 -0
  193. data/lib/graphql/schema/validator/numericality_validator.rb +82 -0
  194. data/lib/graphql/schema/validator/required_validator.rb +82 -0
  195. data/lib/graphql/schema/validator.rb +171 -0
  196. data/lib/graphql/schema/warden.rb +185 -32
  197. data/lib/graphql/schema/wrapper.rb +0 -5
  198. data/lib/graphql/schema.rb +471 -1116
  199. data/lib/graphql/static_validation/all_rules.rb +3 -0
  200. data/lib/graphql/static_validation/base_visitor.rb +13 -27
  201. data/lib/graphql/static_validation/definition_dependencies.rb +7 -2
  202. data/lib/graphql/static_validation/error.rb +3 -1
  203. data/lib/graphql/static_validation/literal_validator.rb +69 -26
  204. data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +44 -87
  205. data/lib/graphql/static_validation/rules/argument_literals_are_compatible_error.rb +22 -6
  206. data/lib/graphql/static_validation/rules/arguments_are_defined.rb +28 -22
  207. data/lib/graphql/static_validation/rules/arguments_are_defined_error.rb +4 -2
  208. data/lib/graphql/static_validation/rules/directives_are_defined.rb +12 -6
  209. data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +13 -13
  210. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +12 -4
  211. data/lib/graphql/static_validation/rules/fields_will_merge.rb +92 -49
  212. data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +25 -4
  213. data/lib/graphql/static_validation/rules/fragments_are_finite.rb +2 -2
  214. data/lib/graphql/static_validation/rules/input_object_names_are_unique.rb +30 -0
  215. data/lib/graphql/static_validation/rules/input_object_names_are_unique_error.rb +30 -0
  216. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid.rb +66 -0
  217. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid_error.rb +29 -0
  218. data/lib/graphql/static_validation/rules/query_root_exists.rb +17 -0
  219. data/lib/graphql/static_validation/rules/query_root_exists_error.rb +26 -0
  220. data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +4 -2
  221. data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb +6 -7
  222. data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +13 -7
  223. data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +9 -10
  224. data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +14 -8
  225. data/lib/graphql/static_validation/rules/variables_are_used_and_defined.rb +4 -2
  226. data/lib/graphql/static_validation/validation_context.rb +13 -3
  227. data/lib/graphql/static_validation/validation_timeout_error.rb +25 -0
  228. data/lib/graphql/static_validation/validator.rb +32 -20
  229. data/lib/graphql/static_validation.rb +1 -2
  230. data/lib/graphql/string_encoding_error.rb +13 -3
  231. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +126 -19
  232. data/lib/graphql/subscriptions/broadcast_analyzer.rb +81 -0
  233. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +58 -0
  234. data/lib/graphql/subscriptions/event.rb +81 -35
  235. data/lib/graphql/subscriptions/instrumentation.rb +0 -52
  236. data/lib/graphql/subscriptions/serialize.rb +53 -6
  237. data/lib/graphql/subscriptions.rb +113 -58
  238. data/lib/graphql/tracing/active_support_notifications_trace.rb +16 -0
  239. data/lib/graphql/tracing/active_support_notifications_tracing.rb +8 -21
  240. data/lib/graphql/tracing/appoptics_trace.rb +231 -0
  241. data/lib/graphql/tracing/appoptics_tracing.rb +173 -0
  242. data/lib/graphql/tracing/appsignal_trace.rb +77 -0
  243. data/lib/graphql/tracing/appsignal_tracing.rb +15 -0
  244. data/lib/graphql/tracing/data_dog_trace.rb +148 -0
  245. data/lib/graphql/tracing/data_dog_tracing.rb +26 -2
  246. data/lib/graphql/tracing/legacy_trace.rb +65 -0
  247. data/lib/graphql/tracing/new_relic_trace.rb +75 -0
  248. data/lib/graphql/tracing/new_relic_tracing.rb +1 -12
  249. data/lib/graphql/tracing/notifications_trace.rb +42 -0
  250. data/lib/graphql/tracing/notifications_tracing.rb +59 -0
  251. data/lib/graphql/tracing/platform_trace.rb +109 -0
  252. data/lib/graphql/tracing/platform_tracing.rb +64 -43
  253. data/lib/graphql/tracing/prometheus_trace.rb +89 -0
  254. data/lib/graphql/tracing/prometheus_tracing/graphql_collector.rb +5 -2
  255. data/lib/graphql/tracing/prometheus_tracing.rb +3 -3
  256. data/lib/graphql/tracing/scout_trace.rb +72 -0
  257. data/lib/graphql/tracing/scout_tracing.rb +11 -0
  258. data/lib/graphql/tracing/statsd_trace.rb +56 -0
  259. data/lib/graphql/tracing/statsd_tracing.rb +42 -0
  260. data/lib/graphql/tracing/trace.rb +75 -0
  261. data/lib/graphql/tracing.rb +23 -71
  262. data/lib/graphql/type_kinds.rb +6 -3
  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 -92
  268. data/lib/graphql/types/relay/base_edge.rb +2 -34
  269. data/lib/graphql/types/relay/connection_behaviors.rb +176 -0
  270. data/lib/graphql/types/relay/edge_behaviors.rb +75 -0
  271. data/lib/graphql/types/relay/has_node_field.rb +41 -0
  272. data/lib/graphql/types/relay/has_nodes_field.rb +41 -0
  273. data/lib/graphql/types/relay/node.rb +2 -4
  274. data/lib/graphql/types/relay/node_behaviors.rb +25 -0
  275. data/lib/graphql/types/relay/page_info.rb +2 -14
  276. data/lib/graphql/types/relay/page_info_behaviors.rb +30 -0
  277. data/lib/graphql/types/relay.rb +10 -5
  278. data/lib/graphql/types/string.rb +8 -2
  279. data/lib/graphql/unauthorized_error.rb +2 -2
  280. data/lib/graphql/version.rb +1 -1
  281. data/lib/graphql.rb +54 -65
  282. data/readme.md +3 -6
  283. metadata +116 -236
  284. data/lib/graphql/analysis/analyze_query.rb +0 -91
  285. data/lib/graphql/analysis/field_usage.rb +0 -45
  286. data/lib/graphql/analysis/max_query_complexity.rb +0 -26
  287. data/lib/graphql/analysis/max_query_depth.rb +0 -26
  288. data/lib/graphql/analysis/query_complexity.rb +0 -88
  289. data/lib/graphql/analysis/query_depth.rb +0 -43
  290. data/lib/graphql/analysis/reducer_state.rb +0 -48
  291. data/lib/graphql/argument.rb +0 -131
  292. data/lib/graphql/authorization.rb +0 -82
  293. data/lib/graphql/backwards_compatibility.rb +0 -60
  294. data/lib/graphql/base_type.rb +0 -230
  295. data/lib/graphql/boolean_type.rb +0 -2
  296. data/lib/graphql/compatibility/execution_specification/counter_schema.rb +0 -53
  297. data/lib/graphql/compatibility/execution_specification/specification_schema.rb +0 -200
  298. data/lib/graphql/compatibility/execution_specification.rb +0 -435
  299. data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +0 -111
  300. data/lib/graphql/compatibility/lazy_execution_specification.rb +0 -213
  301. data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -87
  302. data/lib/graphql/compatibility/query_parser_specification/query_assertions.rb +0 -79
  303. data/lib/graphql/compatibility/query_parser_specification.rb +0 -264
  304. data/lib/graphql/compatibility/schema_parser_specification.rb +0 -680
  305. data/lib/graphql/compatibility.rb +0 -5
  306. data/lib/graphql/define/assign_argument.rb +0 -12
  307. data/lib/graphql/define/assign_connection.rb +0 -13
  308. data/lib/graphql/define/assign_enum_value.rb +0 -18
  309. data/lib/graphql/define/assign_global_id_field.rb +0 -11
  310. data/lib/graphql/define/assign_mutation_function.rb +0 -34
  311. data/lib/graphql/define/assign_object_field.rb +0 -42
  312. data/lib/graphql/define/defined_object_proxy.rb +0 -53
  313. data/lib/graphql/define/instance_definable.rb +0 -210
  314. data/lib/graphql/define/no_definition_error.rb +0 -7
  315. data/lib/graphql/define/non_null_with_bang.rb +0 -16
  316. data/lib/graphql/define/type_definer.rb +0 -31
  317. data/lib/graphql/define.rb +0 -31
  318. data/lib/graphql/deprecated_dsl.rb +0 -42
  319. data/lib/graphql/directive/deprecated_directive.rb +0 -2
  320. data/lib/graphql/directive/include_directive.rb +0 -2
  321. data/lib/graphql/directive/skip_directive.rb +0 -2
  322. data/lib/graphql/directive.rb +0 -107
  323. data/lib/graphql/enum_type.rb +0 -127
  324. data/lib/graphql/execution/execute.rb +0 -326
  325. data/lib/graphql/execution/flatten.rb +0 -40
  326. data/lib/graphql/execution/instrumentation.rb +0 -92
  327. data/lib/graphql/execution/interpreter/hash_response.rb +0 -46
  328. data/lib/graphql/execution/lazy/resolve.rb +0 -91
  329. data/lib/graphql/execution/typecast.rb +0 -50
  330. data/lib/graphql/field/resolve.rb +0 -59
  331. data/lib/graphql/field.rb +0 -222
  332. data/lib/graphql/float_type.rb +0 -2
  333. data/lib/graphql/function.rb +0 -124
  334. data/lib/graphql/id_type.rb +0 -2
  335. data/lib/graphql/input_object_type.rb +0 -132
  336. data/lib/graphql/int_type.rb +0 -2
  337. data/lib/graphql/interface_type.rb +0 -65
  338. data/lib/graphql/internal_representation/document.rb +0 -27
  339. data/lib/graphql/internal_representation/node.rb +0 -206
  340. data/lib/graphql/internal_representation/print.rb +0 -51
  341. data/lib/graphql/internal_representation/rewrite.rb +0 -184
  342. data/lib/graphql/internal_representation/scope.rb +0 -88
  343. data/lib/graphql/internal_representation/visit.rb +0 -36
  344. data/lib/graphql/internal_representation.rb +0 -7
  345. data/lib/graphql/language/lexer.rl +0 -258
  346. data/lib/graphql/list_type.rb +0 -80
  347. data/lib/graphql/literal_validation_error.rb +0 -6
  348. data/lib/graphql/non_null_type.rb +0 -71
  349. data/lib/graphql/object_type.rb +0 -121
  350. data/lib/graphql/query/arguments.rb +0 -188
  351. data/lib/graphql/query/arguments_cache.rb +0 -25
  352. data/lib/graphql/query/executor.rb +0 -53
  353. data/lib/graphql/query/literal_input.rb +0 -136
  354. data/lib/graphql/query/serial_execution/field_resolution.rb +0 -92
  355. data/lib/graphql/query/serial_execution/operation_resolution.rb +0 -19
  356. data/lib/graphql/query/serial_execution/selection_resolution.rb +0 -23
  357. data/lib/graphql/query/serial_execution/value_resolution.rb +0 -87
  358. data/lib/graphql/query/serial_execution.rb +0 -39
  359. data/lib/graphql/relay/array_connection.rb +0 -85
  360. data/lib/graphql/relay/base_connection.rb +0 -176
  361. data/lib/graphql/relay/connection_instrumentation.rb +0 -54
  362. data/lib/graphql/relay/connection_resolve.rb +0 -43
  363. data/lib/graphql/relay/connection_type.rb +0 -41
  364. data/lib/graphql/relay/edge.rb +0 -27
  365. data/lib/graphql/relay/edge_type.rb +0 -19
  366. data/lib/graphql/relay/edges_instrumentation.rb +0 -40
  367. data/lib/graphql/relay/global_id_resolve.rb +0 -18
  368. data/lib/graphql/relay/mongo_relation_connection.rb +0 -50
  369. data/lib/graphql/relay/mutation/instrumentation.rb +0 -23
  370. data/lib/graphql/relay/mutation/resolve.rb +0 -56
  371. data/lib/graphql/relay/mutation/result.rb +0 -38
  372. data/lib/graphql/relay/mutation.rb +0 -105
  373. data/lib/graphql/relay/node.rb +0 -36
  374. data/lib/graphql/relay/page_info.rb +0 -7
  375. data/lib/graphql/relay/relation_connection.rb +0 -190
  376. data/lib/graphql/relay/type_extensions.rb +0 -30
  377. data/lib/graphql/scalar_type.rb +0 -76
  378. data/lib/graphql/schema/catchall_middleware.rb +0 -35
  379. data/lib/graphql/schema/default_parse_error.rb +0 -10
  380. data/lib/graphql/schema/default_type_error.rb +0 -15
  381. data/lib/graphql/schema/member/accepts_definition.rb +0 -152
  382. data/lib/graphql/schema/member/cached_graphql_definition.rb +0 -31
  383. data/lib/graphql/schema/member/instrumentation.rb +0 -132
  384. data/lib/graphql/schema/middleware_chain.rb +0 -82
  385. data/lib/graphql/schema/possible_types.rb +0 -39
  386. data/lib/graphql/schema/rescue_middleware.rb +0 -60
  387. data/lib/graphql/schema/timeout_middleware.rb +0 -86
  388. data/lib/graphql/schema/traversal.rb +0 -228
  389. data/lib/graphql/schema/validation.rb +0 -303
  390. data/lib/graphql/static_validation/default_visitor.rb +0 -15
  391. data/lib/graphql/static_validation/no_validate_visitor.rb +0 -10
  392. data/lib/graphql/string_type.rb +0 -2
  393. data/lib/graphql/subscriptions/subscription_root.rb +0 -65
  394. data/lib/graphql/tracing/skylight_tracing.rb +0 -70
  395. data/lib/graphql/types/relay/base_field.rb +0 -22
  396. data/lib/graphql/types/relay/base_interface.rb +0 -29
  397. data/lib/graphql/types/relay/base_object.rb +0 -26
  398. data/lib/graphql/types/relay/node_field.rb +0 -43
  399. data/lib/graphql/types/relay/nodes_field.rb +0 -45
  400. data/lib/graphql/union_type.rb +0 -113
  401. data/lib/graphql/upgrader/member.rb +0 -936
  402. data/lib/graphql/upgrader/schema.rb +0 -37
@@ -1,258 +0,0 @@
1
- %%{
2
- machine graphql_lexer;
3
-
4
- IDENTIFIER = [_A-Za-z][_0-9A-Za-z]*;
5
- NEWLINE = [\c\r\n];
6
- BLANK = [, \t]+;
7
- COMMENT = '#' [^\n\r]*;
8
- INT = '-'? ('0'|[1-9][0-9]*);
9
- FLOAT_DECIMAL = '.'[0-9]+;
10
- FLOAT_EXP = ('e' | 'E')?('+' | '-')?[0-9]+;
11
- FLOAT = INT FLOAT_DECIMAL? FLOAT_EXP?;
12
- ON = 'on';
13
- FRAGMENT = 'fragment';
14
- TRUE = 'true';
15
- FALSE = 'false';
16
- NULL = 'null';
17
- QUERY = 'query';
18
- MUTATION = 'mutation';
19
- SUBSCRIPTION = 'subscription';
20
- SCHEMA = 'schema';
21
- SCALAR = 'scalar';
22
- TYPE = 'type';
23
- EXTEND = 'extend';
24
- IMPLEMENTS = 'implements';
25
- INTERFACE = 'interface';
26
- UNION = 'union';
27
- ENUM = 'enum';
28
- INPUT = 'input';
29
- DIRECTIVE = 'directive';
30
- LCURLY = '{';
31
- RCURLY = '}';
32
- LPAREN = '(';
33
- RPAREN = ')';
34
- LBRACKET = '[';
35
- RBRACKET = ']';
36
- COLON = ':';
37
- QUOTE = '"';
38
- BACKSLASH = '\\';
39
- # Could limit to hex here, but “bad unicode escape” on 0XXF is probably a
40
- # more helpful error than “unknown char”
41
- UNICODE_ESCAPE = '\\u' [0-9A-Za-z]{4};
42
- # https://graphql.github.io/graphql-spec/June2018/#sec-String-Value
43
- STRING_ESCAPE = '\\' [\\/bfnrt];
44
- BLOCK_QUOTE = '"""';
45
- ESCAPED_BLOCK_QUOTE = '\\"""';
46
- BLOCK_STRING_CHAR = (ESCAPED_BLOCK_QUOTE | ^QUOTE | QUOTE{1,2} ^QUOTE);
47
- ESCAPED_QUOTE = '\\"';
48
- STRING_CHAR = ((ESCAPED_QUOTE | ^QUOTE) - BACKSLASH) | UNICODE_ESCAPE | STRING_ESCAPE;
49
- VAR_SIGN = '$';
50
- DIR_SIGN = '@';
51
- ELLIPSIS = '...';
52
- EQUALS = '=';
53
- BANG = '!';
54
- PIPE = '|';
55
- AMP = '&';
56
-
57
- QUOTED_STRING = QUOTE STRING_CHAR* QUOTE;
58
- BLOCK_STRING = BLOCK_QUOTE BLOCK_STRING_CHAR* QUOTE{0,2} BLOCK_QUOTE;
59
- # catch-all for anything else. must be at the bottom for precedence.
60
- UNKNOWN_CHAR = /./;
61
-
62
- # Used with ragel -V for graphviz visualization
63
- str := |*
64
- QUOTED_STRING => { emit_string(ts, te, meta, block: false) };
65
- *|;
66
-
67
- main := |*
68
- INT => { emit(:INT, ts, te, meta) };
69
- FLOAT => { emit(:FLOAT, ts, te, meta) };
70
- ON => { emit(:ON, ts, te, meta, "on") };
71
- FRAGMENT => { emit(:FRAGMENT, ts, te, meta, "fragment") };
72
- TRUE => { emit(:TRUE, ts, te, meta, "true") };
73
- FALSE => { emit(:FALSE, ts, te, meta, "false") };
74
- NULL => { emit(:NULL, ts, te, meta, "null") };
75
- QUERY => { emit(:QUERY, ts, te, meta, "query") };
76
- MUTATION => { emit(:MUTATION, ts, te, meta, "mutation") };
77
- SUBSCRIPTION => { emit(:SUBSCRIPTION, ts, te, meta, "subscription") };
78
- SCHEMA => { emit(:SCHEMA, ts, te, meta) };
79
- SCALAR => { emit(:SCALAR, ts, te, meta) };
80
- TYPE => { emit(:TYPE, ts, te, meta) };
81
- EXTEND => { emit(:EXTEND, ts, te, meta) };
82
- IMPLEMENTS => { emit(:IMPLEMENTS, ts, te, meta) };
83
- INTERFACE => { emit(:INTERFACE, ts, te, meta) };
84
- UNION => { emit(:UNION, ts, te, meta) };
85
- ENUM => { emit(:ENUM, ts, te, meta) };
86
- INPUT => { emit(:INPUT, ts, te, meta) };
87
- DIRECTIVE => { emit(:DIRECTIVE, ts, te, meta) };
88
- RCURLY => { emit(:RCURLY, ts, te, meta, "}") };
89
- LCURLY => { emit(:LCURLY, ts, te, meta, "{") };
90
- RPAREN => { emit(:RPAREN, ts, te, meta, ")") };
91
- LPAREN => { emit(:LPAREN, ts, te, meta, "(")};
92
- RBRACKET => { emit(:RBRACKET, ts, te, meta, "]") };
93
- LBRACKET => { emit(:LBRACKET, ts, te, meta, "[") };
94
- COLON => { emit(:COLON, ts, te, meta, ":") };
95
- QUOTED_STRING => { emit_string(ts, te, meta, block: false) };
96
- BLOCK_STRING => { emit_string(ts, te, meta, block: true) };
97
- VAR_SIGN => { emit(:VAR_SIGN, ts, te, meta, "$") };
98
- DIR_SIGN => { emit(:DIR_SIGN, ts, te, meta, "@") };
99
- ELLIPSIS => { emit(:ELLIPSIS, ts, te, meta, "...") };
100
- EQUALS => { emit(:EQUALS, ts, te, meta, "=") };
101
- BANG => { emit(:BANG, ts, te, meta, "!") };
102
- PIPE => { emit(:PIPE, ts, te, meta, "|") };
103
- AMP => { emit(:AMP, ts, te, meta, "&") };
104
- IDENTIFIER => { emit(:IDENTIFIER, ts, te, meta) };
105
- COMMENT => { record_comment(ts, te, meta) };
106
-
107
- NEWLINE => {
108
- meta[:line] += 1
109
- meta[:col] = 1
110
- };
111
-
112
- BLANK => { meta[:col] += te - ts };
113
-
114
- UNKNOWN_CHAR => { emit(:UNKNOWN_CHAR, ts, te, meta) };
115
-
116
- *|;
117
- }%%
118
-
119
- # frozen_string_literal: true
120
-
121
- module GraphQL
122
- module Language
123
- module Lexer
124
- def self.tokenize(query_string)
125
- run_lexer(query_string)
126
- end
127
-
128
- # Replace any escaped unicode or whitespace with the _actual_ characters
129
- # To avoid allocating more strings, this modifies the string passed into it
130
- def self.replace_escaped_characters_in_place(raw_string)
131
- raw_string.gsub!(ESCAPES, ESCAPES_REPLACE)
132
- raw_string.gsub!(UTF_8, &UTF_8_REPLACE)
133
- nil
134
- end
135
-
136
- private
137
-
138
- %% write data;
139
-
140
- def self.run_lexer(query_string)
141
- data = query_string.unpack("c*")
142
- eof = data.length
143
-
144
- # Since `Lexer` is a module, store all lexer state
145
- # in this local variable:
146
- meta = {
147
- line: 1,
148
- col: 1,
149
- data: data,
150
- tokens: [],
151
- previous_token: nil,
152
- }
153
-
154
- p ||= 0
155
- pe ||= data.length
156
-
157
- %% write init;
158
-
159
- %% write exec;
160
-
161
- meta[:tokens]
162
- end
163
-
164
- def self.record_comment(ts, te, meta)
165
- token = GraphQL::Language::Token.new(
166
- :COMMENT,
167
- meta[:data][ts, te - ts].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING),
168
- meta[:line],
169
- meta[:col],
170
- meta[:previous_token],
171
- )
172
-
173
- meta[:previous_token] = token
174
-
175
- meta[:col] += te - ts
176
- end
177
-
178
- def self.emit(token_name, ts, te, meta, token_value = nil)
179
- token_value ||= meta[:data][ts, te - ts].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING)
180
- meta[:tokens] << token = GraphQL::Language::Token.new(
181
- token_name,
182
- token_value,
183
- meta[:line],
184
- meta[:col],
185
- meta[:previous_token],
186
- )
187
- meta[:previous_token] = token
188
- # Bump the column counter for the next token
189
- meta[:col] += te - ts
190
- end
191
-
192
- ESCAPES = /\\["\\\/bfnrt]/
193
- ESCAPES_REPLACE = {
194
- '\\"' => '"',
195
- "\\\\" => "\\",
196
- "\\/" => '/',
197
- "\\b" => "\b",
198
- "\\f" => "\f",
199
- "\\n" => "\n",
200
- "\\r" => "\r",
201
- "\\t" => "\t",
202
- }
203
-
204
- UTF_8 = /\\u[\dAa-f]{4}/i
205
- UTF_8_REPLACE = ->(m) { [m[-4..-1].to_i(16)].pack('U'.freeze) }
206
-
207
- VALID_STRING = /\A(?:[^\\]|#{ESCAPES}|#{UTF_8})*\z/o
208
-
209
- PACK_DIRECTIVE = "c*"
210
- UTF_8_ENCODING = "UTF-8"
211
-
212
- def self.emit_string(ts, te, meta, block:)
213
- quotes_length = block ? 3 : 1
214
- value = meta[:data][ts + quotes_length, te - ts - 2 * quotes_length].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING) || ''
215
- line_incr = 0
216
- if block && !value.length.zero?
217
- line_incr = value.count("\n")
218
- value = GraphQL::Language::BlockString.trim_whitespace(value)
219
- end
220
- # TODO: replace with `String#match?` when we support only Ruby 2.4+
221
- # (It's faster: https://bugs.ruby-lang.org/issues/8110)
222
- if !value.valid_encoding? || value !~ VALID_STRING
223
- meta[:tokens] << token = GraphQL::Language::Token.new(
224
- :BAD_UNICODE_ESCAPE,
225
- value,
226
- meta[:line],
227
- meta[:col],
228
- meta[:previous_token],
229
- )
230
- else
231
- replace_escaped_characters_in_place(value)
232
-
233
- if !value.valid_encoding?
234
- meta[:tokens] << token = GraphQL::Language::Token.new(
235
- :BAD_UNICODE_ESCAPE,
236
- value,
237
- meta[:line],
238
- meta[:col],
239
- meta[:previous_token],
240
- )
241
- else
242
- meta[:tokens] << token = GraphQL::Language::Token.new(
243
- :STRING,
244
- value,
245
- meta[:line],
246
- meta[:col],
247
- meta[:previous_token],
248
- )
249
- end
250
- end
251
-
252
- meta[:previous_token] = token
253
- meta[:col] += te - ts
254
- meta[:line] += line_incr
255
- end
256
- end
257
- end
258
- end
@@ -1,80 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- # A list type modifies another type.
4
- #
5
- # List types can be created with the type helper (`types[InnerType]`)
6
- # or {BaseType#to_list_type} (`InnerType.to_list_type`)
7
- #
8
- # For return types, it says that the returned value will be a list of the modified.
9
- #
10
- # @example A field which returns a list of items
11
- # field :items, types[ItemType]
12
- # # or
13
- # field :items, ItemType.to_list_type
14
- #
15
- # For input types, it says that the incoming value will be a list of the modified type.
16
- #
17
- # @example A field which accepts a list of strings
18
- # field :newNames do
19
- # # ...
20
- # argument :values, types[types.String]
21
- # # or
22
- # argument :values, types.String.to_list_type
23
- # end
24
- #
25
- # Given a list type, you can always get the underlying type with {#unwrap}.
26
- #
27
- class ListType < GraphQL::BaseType
28
- include GraphQL::BaseType::ModifiesAnotherType
29
- attr_reader :of_type
30
- def initialize(of_type:)
31
- super()
32
- @of_type = of_type
33
- end
34
-
35
- def kind
36
- GraphQL::TypeKinds::LIST
37
- end
38
-
39
- def to_s
40
- "[#{of_type.to_s}]"
41
- end
42
- alias_method :inspect, :to_s
43
- alias :to_type_signature :to_s
44
-
45
- def coerce_result(value, ctx = nil)
46
- if ctx.nil?
47
- warn_deprecated_coerce("coerce_isolated_result")
48
- ctx = GraphQL::Query::NullContext
49
- end
50
- ensure_array(value).map { |item| item.nil? ? nil : of_type.coerce_result(item, ctx) }
51
- end
52
-
53
- def list?
54
- true
55
- end
56
-
57
- private
58
-
59
- def coerce_non_null_input(value, ctx)
60
- ensure_array(value).map { |item| of_type.coerce_input(item, ctx) }
61
- end
62
-
63
- def validate_non_null_input(value, ctx)
64
- result = GraphQL::Query::InputValidationResult.new
65
-
66
- ensure_array(value).each_with_index do |item, index|
67
- item_result = of_type.validate_input(item, ctx)
68
- if !item_result.valid?
69
- result.merge_result!(index, item_result)
70
- end
71
- end
72
-
73
- result
74
- end
75
-
76
- def ensure_array(value)
77
- value.is_a?(Array) ? value : [value]
78
- end
79
- end
80
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- class LiteralValidationError < GraphQL::Error
4
- attr_accessor :ast_value
5
- end
6
- end
@@ -1,71 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- # A non-null type modifies another type.
4
- #
5
- # Non-null types can be created with `!` (`InnerType!`)
6
- # or {BaseType#to_non_null_type} (`InnerType.to_non_null_type`)
7
- #
8
- # For return types, it says that the returned value will _always_ be present.
9
- #
10
- # @example A field which _always_ returns an error
11
- # field :items, !ItemType
12
- # # or
13
- # field :items, ItemType.to_non_null_type
14
- #
15
- # (If the application fails to return a value, {InvalidNullError} will be passed to {Schema#type_error}.)
16
- #
17
- # For input types, it says that the incoming value _must_ be provided by the query.
18
- #
19
- # @example A field which _requires_ a string input
20
- # field :newNames do
21
- # # ...
22
- # argument :values, !types.String
23
- # # or
24
- # argument :values, types.String.to_non_null_type
25
- # end
26
- #
27
- # (If a value isn't provided, {Query::VariableValidationError} will be raised).
28
- #
29
- # Given a non-null type, you can always get the underlying type with {#unwrap}.
30
- #
31
- class NonNullType < GraphQL::BaseType
32
- include GraphQL::BaseType::ModifiesAnotherType
33
- extend Forwardable
34
-
35
- attr_reader :of_type
36
- def initialize(of_type:)
37
- super()
38
- @of_type = of_type
39
- end
40
-
41
- def valid_input?(value, ctx)
42
- validate_input(value, ctx).valid?
43
- end
44
-
45
- def validate_input(value, ctx)
46
- if value.nil?
47
- result = GraphQL::Query::InputValidationResult.new
48
- result.add_problem("Expected value to not be null")
49
- result
50
- else
51
- of_type.validate_input(value, ctx)
52
- end
53
- end
54
-
55
- def_delegators :@of_type, :coerce_input, :coerce_result, :list?
56
-
57
- def kind
58
- GraphQL::TypeKinds::NON_NULL
59
- end
60
-
61
- def to_s
62
- "#{of_type.to_s}!"
63
- end
64
- alias_method :inspect, :to_s
65
- alias :to_type_signature :to_s
66
-
67
- def non_null?
68
- true
69
- end
70
- end
71
- end
@@ -1,121 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- # @api deprecated
4
- class ObjectType < GraphQL::BaseType
5
- accepts_definitions :interfaces, :fields, :mutation, :relay_node_type, field: GraphQL::Define::AssignObjectField
6
- accepts_definitions implements: ->(type, *interfaces, inherit: false) { type.implements(interfaces, inherit: inherit) }
7
-
8
- attr_accessor :fields, :mutation, :relay_node_type
9
- ensure_defined(:fields, :mutation, :interfaces, :relay_node_type)
10
-
11
- # @!attribute fields
12
- # @return [Hash<String => GraphQL::Field>] Map String fieldnames to their {GraphQL::Field} implementations
13
-
14
- # @!attribute mutation
15
- # @return [GraphQL::Relay::Mutation, nil] The mutation this object type was derived from, if it is an auto-generated payload type.
16
-
17
- def initialize
18
- super
19
- @fields = {}
20
- @interface_fields = {}
21
- @dirty_interfaces = []
22
- @dirty_inherited_interfaces = []
23
- end
24
-
25
- def initialize_copy(other)
26
- super
27
- @clean_interfaces = nil
28
- @clean_inherited_interfaces = nil
29
- @dirty_interfaces = other.dirty_interfaces.dup
30
- @dirty_inherited_interfaces = other.dirty_inherited_interfaces.dup
31
- @fields = other.fields.dup
32
- end
33
-
34
- # This method declares interfaces for this type AND inherits any field definitions
35
- # @param new_interfaces [Array<GraphQL::Interface>] interfaces that this type implements
36
- # @deprecated Use `implements` instead of `interfaces`.
37
- def interfaces=(new_interfaces)
38
- @clean_interfaces = nil
39
- @clean_inherited_interfaces = nil
40
- @clean_inherited_fields = nil
41
-
42
- @dirty_inherited_interfaces = []
43
- @dirty_inherited_fields = {}
44
- implements(new_interfaces, inherit: true)
45
- end
46
-
47
- def interfaces
48
- load_interfaces
49
- @clean_interfaces
50
- end
51
-
52
- def kind
53
- GraphQL::TypeKinds::OBJECT
54
- end
55
-
56
- # This fields doesnt have instrumenation applied
57
- # @see [Schema#get_field] Get field with instrumentation
58
- # @return [GraphQL::Field] The field definition for `field_name` (may be inherited from interfaces)
59
- def get_field(field_name)
60
- fields[field_name] || interface_fields[field_name]
61
- end
62
-
63
- # These fields don't have instrumenation applied
64
- # @see [Schema#get_fields] Get fields with instrumentation
65
- # @return [Array<GraphQL::Field>] All fields, including ones inherited from interfaces
66
- def all_fields
67
- interface_fields.merge(self.fields).values
68
- end
69
-
70
- # Declare that this object implements this interface.
71
- # This declaration will be validated when the schema is defined.
72
- # @param interfaces [Array<GraphQL::Interface>] add a new interface that this type implements
73
- # @param inherits [Boolean] If true, copy the interfaces' field definitions to this type
74
- def implements(interfaces, inherit: false)
75
- if !interfaces.is_a?(Array)
76
- raise ArgumentError, "`implements(interfaces)` must be an array, not #{interfaces.class} (#{interfaces})"
77
- end
78
-
79
- @clean_interfaces = nil
80
- @clean_inherited_fields = nil
81
- dirty_ifaces = inherit ? @dirty_inherited_interfaces : @dirty_interfaces
82
- dirty_ifaces.concat(interfaces)
83
- end
84
-
85
- def resolve_type_proc
86
- nil
87
- end
88
-
89
- protected
90
-
91
- attr_reader :dirty_interfaces, :dirty_inherited_interfaces
92
-
93
- private
94
-
95
- def normalize_interfaces(ifaces)
96
- ifaces.map { |i_type| GraphQL::BaseType.resolve_related_type(i_type) }
97
- end
98
-
99
- def interface_fields
100
- load_interfaces
101
- @clean_inherited_fields
102
- end
103
-
104
- def load_interfaces
105
- @clean_interfaces ||= begin
106
- ensure_defined
107
- clean_ifaces = normalize_interfaces(@dirty_interfaces)
108
- clean_inherited_ifaces = normalize_interfaces(@dirty_inherited_interfaces)
109
- inherited_fields = {}
110
- clean_inherited_ifaces.each do |iface|
111
- # This will be found later in schema validation:
112
- if iface.is_a?(GraphQL::InterfaceType)
113
- inherited_fields.merge!(iface.fields)
114
- end
115
- end
116
- @clean_inherited_fields = inherited_fields
117
- clean_inherited_ifaces + clean_ifaces
118
- end
119
- end
120
- end
121
- end