graphql 2.0.19 → 2.0.20

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0e3f276db828fe3908e759e87f8cc5d33ae761c3ea80bd53b92b16a971ef507a
4
- data.tar.gz: fc59e806f45125da3065ed4d7758170f88231377664b9a130e0896d6b2790fa3
3
+ metadata.gz: 7b2e44f17a5ec90e92b165e06f843931585a3775096c7404966a51703a65fdb9
4
+ data.tar.gz: b79ce54109470f38f6cd50cd8ff79af7beaefbea4564ec7e876c3a58ffd0249f
5
5
  SHA512:
6
- metadata.gz: 580e967d89228c0174072f5857cb646ea7495ee5a00587249ffc3034ffe9b536f751c09b8112e443b0c93efcd868db01c584497364897d23c7e798ee3f496d64
7
- data.tar.gz: 43db761134f0ea83311f6a8b62b3b34b9dccdc335869c9067f43dcc5b9fc7f4023b77b8bb70cf203435ac25711d16d0ce5aa620478d351950d0db9f2e7bee9c7
6
+ metadata.gz: 59c16753d159b0d25862dfa72e84a72037e19da288db049297d90ede697d4b4eb0456b5bd9b65b7517ef1f375a94c9d0d3cb246a34f5b6100fc347665f94f688
7
+ data.tar.gz: 96fb931b54905ee12fd04ac76847e7f20c69f66023b6241e39e69b6de862b7cb8b7ff2dc4db53725e11b0625c55c2c73fbe070a4278ce6eb839a99c2847ac306
@@ -599,16 +599,6 @@ module GraphQL
599
599
  path
600
600
  end
601
601
 
602
- def current_depth
603
- ti = thread_info
604
- depth = 1
605
- result = ti[:current_result]
606
- while (result = result.graphql_parent)
607
- depth += 1
608
- end
609
- depth
610
- end
611
-
612
602
  HALT = Object.new
613
603
  def continue_value(value, parent_type, field, is_non_null, ast_node, result_name, selection_result) # rubocop:disable Metrics/ParameterLists
614
604
  case value
@@ -925,8 +915,9 @@ module GraphQL
925
915
  # @return [GraphQL::Execution::Lazy, Object] If loading `object` will be deferred, it's a wrapper over it.
926
916
  def after_lazy(lazy_obj, owner:, field:, owner_object:, arguments:, ast_node:, result:, result_name:, eager: false, trace: true, &block)
927
917
  if lazy?(lazy_obj)
918
+ orig_result = result
928
919
  lazy = GraphQL::Execution::Lazy.new(field: field) do
929
- set_all_interpreter_context(owner_object, field, arguments, result_name, result)
920
+ set_all_interpreter_context(owner_object, field, arguments, result_name, orig_result)
930
921
  # Wrap the execution of _this_ method with tracing,
931
922
  # but don't wrap the continuation below
932
923
  inner_obj = begin
@@ -953,6 +944,11 @@ module GraphQL
953
944
  lazy.value
954
945
  else
955
946
  set_result(result, result_name, lazy)
947
+ current_depth = 0
948
+ while result
949
+ current_depth += 1
950
+ result = result.graphql_parent
951
+ end
956
952
  @lazies_at_depth[current_depth] << lazy
957
953
  lazy
958
954
  end
@@ -2,6 +2,7 @@
2
2
  module GraphQL
3
3
  module Language
4
4
  module Nodes
5
+ NONE = [].freeze
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,6 +10,7 @@ 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)
@@ -30,6 +32,9 @@ module GraphQL
30
32
  position_source = options.delete(:position_source)
31
33
  @line = position_source[1]
32
34
  @col = position_source[2]
35
+ else
36
+ @line = options.delete(:line)
37
+ @col = options.delete(:col)
33
38
  end
34
39
 
35
40
  @filename = options.delete(:filename)
@@ -277,10 +282,17 @@ module GraphQL
277
282
  assignments = scalar_method_names.map { |m| "@#{m} = #{m}"} +
278
283
  @children_methods.keys.map { |m| "@#{m} = #{m}.freeze" }
279
284
 
285
+ keywords = scalar_method_names.map { |m| "#{m}: #{m}"} +
286
+ @children_methods.keys.map { |m| "#{m}: #{m}" }
287
+
280
288
  module_eval <<-RUBY, __FILE__, __LINE__
281
289
  def initialize_node #{arguments.join(", ")}
282
290
  #{assignments.join("\n")}
283
291
  end
292
+
293
+ def self.from_a(filename, line, col, #{(scalar_method_names + @children_methods.keys).join(", ")})
294
+ self.new(filename: filename, line: line, col: col, #{keywords.join(", ")})
295
+ end
284
296
  RUBY
285
297
  end
286
298
  end
@@ -328,8 +340,8 @@ module GraphQL
328
340
  attr_reader :description
329
341
  scalar_methods :name, :repeatable
330
342
  children_methods(
331
- locations: Nodes::DirectiveLocation,
332
343
  arguments: Nodes::Argument,
344
+ locations: Nodes::DirectiveLocation,
333
345
  )
334
346
  end
335
347
 
@@ -343,8 +355,6 @@ module GraphQL
343
355
 
344
356
  # A single selection in a GraphQL query.
345
357
  class Field < AbstractNode
346
- NONE = [].freeze
347
-
348
358
  scalar_methods :name, :alias
349
359
  children_methods({
350
360
  arguments: GraphQL::Language::Nodes::Argument,
@@ -364,6 +374,10 @@ module GraphQL
364
374
  @alias = attributes[:alias]
365
375
  end
366
376
 
377
+ def self.from_a(filename, line, col, graphql_alias, name, arguments, directives, selections) # rubocop:disable Metrics/ParameterLists
378
+ self.new(filename: filename, line: line, col: col, alias: graphql_alias, name: name, arguments: arguments, directives: directives, selections: selections)
379
+ end
380
+
367
381
  # Override this because default is `:fields`
368
382
  self.children_method_name = :selections
369
383
  end
@@ -382,6 +396,10 @@ module GraphQL
382
396
  @selections = selections
383
397
  end
384
398
 
399
+ def self.from_a(filename, line, col, name, type, directives, selections)
400
+ self.new(filename: filename, line: line, col: col, name: name, type: type, directives: directives, selections: selections)
401
+ end
402
+
385
403
  scalar_methods :name, :type
386
404
  children_methods({
387
405
  selections: GraphQL::Language::Nodes::Field,
@@ -406,8 +424,8 @@ module GraphQL
406
424
  class InlineFragment < AbstractNode
407
425
  scalar_methods :type
408
426
  children_methods({
409
- selections: GraphQL::Language::Nodes::Field,
410
427
  directives: GraphQL::Language::Nodes::Directive,
428
+ selections: GraphQL::Language::Nodes::Field,
411
429
  })
412
430
 
413
431
  self.children_method_name = :selections
@@ -486,8 +504,8 @@ module GraphQL
486
504
  scalar_methods :operation_type, :name
487
505
  children_methods({
488
506
  variables: GraphQL::Language::Nodes::VariableDefinition,
489
- selections: GraphQL::Language::Nodes::Field,
490
507
  directives: GraphQL::Language::Nodes::Directive,
508
+ selections: GraphQL::Language::Nodes::Field,
491
509
  })
492
510
 
493
511
  # @!attribute variables
@@ -593,8 +611,8 @@ module GraphQL
593
611
  attr_reader :description
594
612
  scalar_methods :name, :type
595
613
  children_methods({
596
- directives: GraphQL::Language::Nodes::Directive,
597
614
  arguments: GraphQL::Language::Nodes::InputValueDefinition,
615
+ directives: GraphQL::Language::Nodes::Directive,
598
616
  })
599
617
  self.children_method_name = :fields
600
618
 
@@ -28,7 +28,7 @@ def parse_document
28
28
  @document ||= begin
29
29
  # Break the string into tokens
30
30
  @trace.lex(query_string: @query_string) do
31
- @tokens ||= GraphQL.scan(@query_string)
31
+ @tokens ||= GraphQL::Language::Lexer.tokenize(@query_string)
32
32
  end
33
33
  # From the tokens, build an AST
34
34
  @trace.parse(query_string: @query_string) do
@@ -460,7 +460,7 @@ def parse_document
460
460
  @document ||= begin
461
461
  # Break the string into tokens
462
462
  @trace.lex(query_string: @query_string) do
463
- @tokens ||= GraphQL.scan(@query_string)
463
+ @tokens ||= GraphQL::Language::Lexer.tokenize(@query_string)
464
464
  end
465
465
  # From the tokens, build an AST
466
466
  @trace.parse(query_string: @query_string) do
@@ -752,6 +752,8 @@ module GraphQL
752
752
  end
753
753
  # if the line above doesn't raise, re-raise
754
754
  raise
755
+ rescue GraphQL::ExecutionError => err
756
+ err
755
757
  end
756
758
 
757
759
  # @param ctx [GraphQL::Query::Context]
@@ -46,7 +46,7 @@ module GraphQL
46
46
  elsif defined?(@description)
47
47
  @description
48
48
  else
49
- nil
49
+ @description = nil
50
50
  end
51
51
  end
52
52
 
@@ -56,8 +56,12 @@ module GraphQL
56
56
  def inherited(child_class)
57
57
  child_class.introspection(introspection)
58
58
  child_class.description(description)
59
- if defined?(@graphql_name) && (self.name.nil? || graphql_name != default_graphql_name)
59
+ child_class.default_graphql_name = nil
60
+
61
+ if defined?(@graphql_name) && @graphql_name && (self.name.nil? || graphql_name != default_graphql_name)
60
62
  child_class.graphql_name(graphql_name)
63
+ else
64
+ child_class.graphql_name = nil
61
65
  end
62
66
  super
63
67
  end
@@ -98,7 +102,8 @@ module GraphQL
98
102
  def default_graphql_name
99
103
  @default_graphql_name ||= begin
100
104
  raise GraphQL::RequiredImplementationMissingError, 'Anonymous class should declare a `graphql_name`' if name.nil?
101
- -name.split("::").last.sub(/Type\Z/, "") end
105
+ -name.split("::").last.sub(/Type\Z/, "")
106
+ end
102
107
  end
103
108
 
104
109
  def visible?(context)
@@ -109,16 +114,13 @@ module GraphQL
109
114
  true
110
115
  end
111
116
 
112
- protected
113
-
114
- attr_writer :default_graphql_name
117
+ def default_relay
118
+ false
119
+ end
115
120
 
116
- private
121
+ protected
117
122
 
118
- def inherited(subclass)
119
- super
120
- subclass.default_graphql_name = nil
121
- end
123
+ attr_writer :default_graphql_name, :graphql_name
122
124
  end
123
125
  end
124
126
  end
@@ -3,6 +3,16 @@ module GraphQL
3
3
  class Schema
4
4
  class Member
5
5
  module HasAstNode
6
+ def self.extended(child_cls)
7
+ super
8
+ child_cls.ast_node = nil
9
+ end
10
+
11
+ def inherited(child_cls)
12
+ super
13
+ child_cls.ast_node = nil
14
+ end
15
+
6
16
  # If this schema was parsed from a `.graphql` file (or other SDL),
7
17
  # this is the AST node that defined this part of the schema.
8
18
  def ast_node(new_ast_node = nil)
@@ -14,6 +24,8 @@ module GraphQL
14
24
  nil
15
25
  end
16
26
  end
27
+
28
+ attr_writer :ast_node
17
29
  end
18
30
  end
19
31
  end
@@ -4,6 +4,16 @@ module GraphQL
4
4
  class Schema
5
5
  class Member
6
6
  module HasDirectives
7
+ def self.extended(child_cls)
8
+ super
9
+ child_cls.module_eval { self.own_directives = nil }
10
+ end
11
+
12
+ def inherited(child_cls)
13
+ super
14
+ child_cls.own_directives = nil
15
+ end
16
+
7
17
  # Create an instance of `dir_class` for `self`, using `options`.
8
18
  #
9
19
  # It removes a previously-attached instance of `dir_class`, if there is one.
@@ -101,12 +111,9 @@ module GraphQL
101
111
  end
102
112
  end
103
113
 
104
-
105
114
  protected
106
115
 
107
- def own_directives
108
- @own_directives
109
- end
116
+ attr_accessor :own_directives
110
117
  end
111
118
  end
112
119
  end
@@ -138,6 +138,7 @@ module GraphQL
138
138
  super
139
139
  subclass.class_eval do
140
140
  @own_fields ||= nil
141
+ @field_class ||= nil
141
142
  end
142
143
  end
143
144
 
@@ -6,6 +6,7 @@ module GraphQL
6
6
  module RelayShortcuts
7
7
  def edge_type_class(new_edge_type_class = nil)
8
8
  if new_edge_type_class
9
+ initialize_relay_metadata
9
10
  @edge_type_class = new_edge_type_class
10
11
  else
11
12
  # Don't call `ancestor.edge_type_class`
@@ -22,6 +23,7 @@ module GraphQL
22
23
 
23
24
  def connection_type_class(new_connection_type_class = nil)
24
25
  if new_connection_type_class
26
+ initialize_relay_metadata
25
27
  @connection_type_class = new_connection_type_class
26
28
  else
27
29
  # Don't call `ancestor.connection_type_class`
@@ -37,6 +39,7 @@ module GraphQL
37
39
  end
38
40
 
39
41
  def edge_type
42
+ initialize_relay_metadata
40
43
  @edge_type ||= begin
41
44
  edge_name = self.graphql_name + "Edge"
42
45
  node_type_class = self
@@ -48,6 +51,7 @@ module GraphQL
48
51
  end
49
52
 
50
53
  def connection_type
54
+ initialize_relay_metadata
51
55
  @connection_type ||= begin
52
56
  conn_name = self.graphql_name + "Connection"
53
57
  edge_type_class = self.edge_type
@@ -67,6 +71,21 @@ module GraphQL
67
71
  def configured_edge_type_class
68
72
  @edge_type_class
69
73
  end
74
+
75
+ attr_writer :edge_type, :connection_type, :connection_type_class, :edge_type_class
76
+
77
+ private
78
+
79
+ # If one of thse values is accessed, initialize all the instance variables to retain
80
+ # a consistent object shape.
81
+ def initialize_relay_metadata
82
+ if !defined?(@connection_type)
83
+ @connection_type = nil
84
+ @edge_type = nil
85
+ @connection_type_class = nil
86
+ @edge_type_class = nil
87
+ end
88
+ end
70
89
  end
71
90
  end
72
91
  end
@@ -43,11 +43,11 @@ module GraphQL
43
43
  private
44
44
 
45
45
  def inherited(subclass)
46
- super
47
46
  subclass.class_eval do
48
47
  @to_non_null_type ||= nil
49
48
  @to_list_type ||= nil
50
49
  end
50
+ super
51
51
  end
52
52
  end
53
53
  end
@@ -799,11 +799,7 @@ module GraphQL
799
799
  end
800
800
 
801
801
  if resolved_type.nil? || (resolved_type.is_a?(Module) && resolved_type.respond_to?(:kind))
802
- if resolved_value
803
- [resolved_type, resolved_value]
804
- else
805
- resolved_type
806
- end
802
+ [resolved_type, resolved_value]
807
803
  else
808
804
  raise ".resolve_type should return a type definition, but got #{resolved_type.inspect} (#{resolved_type.class}) from `resolve_type(#{type}, #{obj}, #{ctx})`"
809
805
  end
@@ -5,7 +5,6 @@ module GraphQL
5
5
  module AppsignalTrace
6
6
  include PlatformTrace
7
7
 
8
-
9
8
  # @param set_action_name [Boolean] If true, the GraphQL operation name will be used as the transaction name.
10
9
  # This is not advised if you run more than one query per HTTP request, for example, with `graphql-client` or multiplexing.
11
10
  # It can also be specified per-query with `context[:set_appsignal_action_name]`.
@@ -46,7 +45,13 @@ module GraphQL
46
45
 
47
46
  def platform_execute_field(platform_key)
48
47
  Appsignal.instrument(platform_key) do
49
- super
48
+ yield
49
+ end
50
+ end
51
+
52
+ def platform_authorized(platform_key)
53
+ Appsignal.instrument(platform_key) do
54
+ yield
50
55
  end
51
56
  end
52
57
 
@@ -9,16 +9,34 @@ module GraphQL
9
9
 
10
10
  def self.included(child_class)
11
11
  child_class.extend(ClassMethods)
12
- child_class.extend(Relay::DefaultRelay)
13
- child_class.default_relay(true)
14
12
  child_class.has_nodes_field(true)
15
13
  child_class.node_nullable(true)
16
14
  child_class.edges_nullable(true)
17
15
  child_class.edge_nullable(true)
16
+ child_class.module_eval {
17
+ self.edge_type = nil
18
+ self.node_type = nil
19
+ self.edge_class = nil
20
+ }
18
21
  add_page_info_field(child_class)
19
22
  end
20
23
 
21
24
  module ClassMethods
25
+ def inherited(child_class)
26
+ super
27
+ child_class.has_nodes_field(has_nodes_field)
28
+ child_class.node_nullable(node_nullable)
29
+ child_class.edges_nullable(edges_nullable)
30
+ child_class.edge_nullable(edge_nullable)
31
+ child_class.edge_type = nil
32
+ child_class.node_type = nil
33
+ child_class.edge_class = nil
34
+ end
35
+
36
+ def default_relay?
37
+ true
38
+ end
39
+
22
40
  # @return [Class]
23
41
  attr_reader :node_type
24
42
 
@@ -124,6 +142,10 @@ module GraphQL
124
142
  end
125
143
  end
126
144
 
145
+ protected
146
+
147
+ attr_writer :edge_type, :node_type, :edge_class
148
+
127
149
  private
128
150
 
129
151
  def define_nodes_field(nullable, field_options: nil)
@@ -8,11 +8,21 @@ module GraphQL
8
8
  child_class.description("An edge in a connection.")
9
9
  child_class.field(:cursor, String, null: false, description: "A cursor for use in pagination.")
10
10
  child_class.extend(ClassMethods)
11
- child_class.extend(GraphQL::Types::Relay::DefaultRelay)
11
+ child_class.class_eval { self.node_type = nil }
12
12
  child_class.node_nullable(true)
13
13
  end
14
14
 
15
15
  module ClassMethods
16
+ def inherited(child_class)
17
+ super
18
+ child_class.node_type = nil
19
+ child_class.node_nullable = nil
20
+ end
21
+
22
+ def default_relay?
23
+ true
24
+ end
25
+
16
26
  # Get or set the Object type that this edge wraps.
17
27
  #
18
28
  # @param node_type [Class] A `Schema::Object` subclass
@@ -49,11 +59,15 @@ module GraphQL
49
59
  # Use `node_nullable(false)` in your base class to make non-null `node` field.
50
60
  def node_nullable(new_value = nil)
51
61
  if new_value.nil?
52
- defined?(@node_nullable) ? @node_nullable : superclass.node_nullable
62
+ @node_nullable != nil ? @node_nullable : superclass.node_nullable
53
63
  else
54
64
  @node_nullable = new_value
55
65
  end
56
66
  end
67
+
68
+ protected
69
+
70
+ attr_writer :node_type, :node_nullable
57
71
  end
58
72
  end
59
73
  end
@@ -5,7 +5,7 @@ module GraphQL
5
5
  module Relay
6
6
  module NodeBehaviors
7
7
  def self.included(child_module)
8
- child_module.extend(DefaultRelay)
8
+ child_module.extend(ClassMethods)
9
9
  child_module.description("An object with an ID.")
10
10
  child_module.field(:id, ID, null: false, description: "ID of the object.", resolver_method: :default_global_id)
11
11
  end
@@ -13,6 +13,12 @@ module GraphQL
13
13
  def default_global_id
14
14
  context.schema.id_from_object(object, self.class, context)
15
15
  end
16
+
17
+ module ClassMethods
18
+ def default_relay?
19
+ true
20
+ end
21
+ end
16
22
  end
17
23
  end
18
24
  end
@@ -4,8 +4,7 @@ module GraphQL
4
4
  module Relay
5
5
  module PageInfoBehaviors
6
6
  def self.included(child_class)
7
- child_class.extend GraphQL::Types::Relay::DefaultRelay
8
-
7
+ child_class.extend ClassMethods
9
8
  child_class.description "Information about pagination in a connection."
10
9
  child_class.field :has_next_page, Boolean, null: false,
11
10
  description: "When paginating forwards, are there more items?"
@@ -20,6 +19,12 @@ module GraphQL
20
19
  description: "When paginating forwards, the cursor to continue."
21
20
  end
22
21
  end
22
+
23
+ module ClassMethods
24
+ def default_relay?
25
+ true
26
+ end
27
+ end
23
28
  end
24
29
  end
25
30
  end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # behavior modules:
4
- require "graphql/types/relay/default_relay"
5
4
  require "graphql/types/relay/connection_behaviors"
6
5
  require "graphql/types/relay/edge_behaviors"
7
6
  require "graphql/types/relay/node_behaviors"
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module GraphQL
3
- VERSION = "2.0.19"
3
+ VERSION = "2.0.20"
4
4
  end
data/lib/graphql.rb CHANGED
@@ -43,7 +43,7 @@ This is probably a bug in GraphQL-Ruby, please report this error on GitHub: http
43
43
  # @param graphql_string [String] a GraphQL query string or schema definition
44
44
  # @return [GraphQL::Language::Nodes::Document]
45
45
  def self.parse(graphql_string, trace: GraphQL::Tracing::NullTrace)
46
- parse_with_racc(graphql_string, trace: trace)
46
+ default_parser.parse(graphql_string, trace: trace)
47
47
  end
48
48
 
49
49
  # Read the contents of `filename` and parse them as GraphQL
@@ -51,16 +51,16 @@ This is probably a bug in GraphQL-Ruby, please report this error on GitHub: http
51
51
  # @return [GraphQL::Language::Nodes::Document]
52
52
  def self.parse_file(filename)
53
53
  content = File.read(filename)
54
- parse_with_racc(content, filename: filename)
55
- end
56
-
57
- def self.parse_with_racc(string, filename: nil, trace: GraphQL::Tracing::NullTrace)
58
- GraphQL::Language::Parser.parse(string, filename: filename, trace: trace)
54
+ default_parser.parse(content, filename: filename)
59
55
  end
60
56
 
61
57
  # @return [Array<Array>]
62
58
  def self.scan(graphql_string)
63
- scan_with_ruby(graphql_string)
59
+ default_parser.scan(graphql_string)
60
+ end
61
+
62
+ def self.parse_with_racc(string, filename: nil, trace: GraphQL::Tracing::NullTrace)
63
+ GraphQL::Language::Parser.parse(string, filename: filename, trace: trace)
64
64
  end
65
65
 
66
66
  def self.scan_with_ruby(graphql_string)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.19
4
+ version: 2.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Mosolgo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-14 00:00:00.000000000 Z
11
+ date: 2023-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark-ips
@@ -355,7 +355,6 @@ files:
355
355
  - lib/graphql/language/document_from_schema_definition.rb
356
356
  - lib/graphql/language/generation.rb
357
357
  - lib/graphql/language/lexer.rb
358
- - lib/graphql/language/lexer.ri
359
358
  - lib/graphql/language/nodes.rb
360
359
  - lib/graphql/language/parser.rb
361
360
  - lib/graphql/language/parser.y
@@ -583,7 +582,6 @@ files:
583
582
  - lib/graphql/types/relay/base_connection.rb
584
583
  - lib/graphql/types/relay/base_edge.rb
585
584
  - lib/graphql/types/relay/connection_behaviors.rb
586
- - lib/graphql/types/relay/default_relay.rb
587
585
  - lib/graphql/types/relay/edge_behaviors.rb
588
586
  - lib/graphql/types/relay/has_node_field.rb
589
587
  - lib/graphql/types/relay/has_nodes_field.rb