graphql 2.4.12 → 2.4.13

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b105157510cb5779715118d5f28f49822a9b3b86b0faec0fdc86a2331904f667
4
- data.tar.gz: 9230b70e18665505190c673579fa66b2906d04009f9e46d844990bafdba374da
3
+ metadata.gz: 35661aff446f955116332f131cd6323839e0b5f0ea104512a8257a28d3232e43
4
+ data.tar.gz: 023eb7cff94490520342572da1b7dc2b017dfa99daa5c9d18503b51de7dccc66
5
5
  SHA512:
6
- metadata.gz: e64decd9e23e3dcc23ced201998963ca0894e38161659a153d9c1ae918dce90c8ae365a3eb1debd753a78f65a1ffe3bf281ee0bb285cd1a0f6cd572cbb31455a
7
- data.tar.gz: 4f0b3ac80a45a5db47e96abacc7fb935ed20c5a0ebe65ba2ca04e20c0bac58f1ec73e2e4af42c05307c76fd358c36bcfbd5529479201cf104540a50448298b80
6
+ metadata.gz: 29645fc0f923d6e268888c43fbd703189160ac8be5ea8d0fc9a17683d7336c43b20cfcdfd1cafd90291840c59e2d06d3eb8b27b66bb41e26beea0f4388e7a839
7
+ data.tar.gz: 63f1a5c91cbd08948ffc96bcb0d581a3959c2d0f13be19402200d1e0209187ab70d6f8c27e2b6a62ac93a27a945792d93ecf03bb6f53b37778eb88c3570e2553
@@ -42,6 +42,7 @@ module GraphQL
42
42
  raise GraphQL::RequiredImplementationMissingError
43
43
  end
44
44
 
45
+ # rubocop:disable Development/NoEvalCop This eval takes static inputs at load-time
45
46
  class << self
46
47
  private
47
48
 
@@ -72,7 +73,7 @@ module GraphQL
72
73
  build_visitor_hooks :variable_definition
73
74
  build_visitor_hooks :variable_identifier
74
75
  build_visitor_hooks :abstract_node
75
-
76
+ # rubocop:enable Development/NoEvalCop
76
77
  protected
77
78
 
78
79
  # @return [GraphQL::Query, GraphQL::Execution::Multiplex] Whatever this analyzer is analyzing
@@ -69,6 +69,7 @@ module GraphQL
69
69
  @response_path.dup
70
70
  end
71
71
 
72
+ # rubocop:disable Development/NoEvalCop This eval takes static inputs at load-time
72
73
  # Visitor Hooks
73
74
  [
74
75
  :operation_definition, :fragment_definition,
@@ -93,6 +94,7 @@ module GraphQL
93
94
 
94
95
  RUBY
95
96
  end
97
+ # rubocop:enable Development/NoEvalCop
96
98
 
97
99
  def on_operation_definition(node, parent)
98
100
  check_timeout
@@ -141,6 +141,8 @@ module GraphQL
141
141
  end
142
142
 
143
143
  class << self
144
+ # rubocop:disable Development/NoEvalCop This eval takes static inputs at load-time
145
+
144
146
  # Add a default `#visit_method` and `#children_method_name` using the class name
145
147
  def inherited(child_class)
146
148
  super
@@ -343,6 +345,7 @@ module GraphQL
343
345
  RUBY
344
346
  end
345
347
  end
348
+ # rubocop:enable Development/NoEvalCop
346
349
  end
347
350
  end
348
351
 
@@ -22,39 +22,6 @@ module GraphQL
22
22
  end
23
23
  end
24
24
 
25
- # We don't use `alias` here because it breaks `super`
26
- def self.make_visit_methods(ast_node_class)
27
- node_method = ast_node_class.visit_method
28
- children_of_type = ast_node_class.children_of_type
29
- child_visit_method = :"#{node_method}_children"
30
-
31
- class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
32
- # The default implementation for visiting an AST node.
33
- # It doesn't _do_ anything, but it continues to visiting the node's children.
34
- # To customize this hook, override one of its make_visit_methods (or the base method?)
35
- # in your subclasses.
36
- #
37
- # @param node [GraphQL::Language::Nodes::AbstractNode] the node being visited
38
- # @param parent [GraphQL::Language::Nodes::AbstractNode, nil] the previously-visited node, or `nil` if this is the root node.
39
- # @return [void]
40
- def #{node_method}(node, parent)
41
- #{
42
- if method_defined?(child_visit_method)
43
- "#{child_visit_method}(node)"
44
- elsif children_of_type
45
- children_of_type.map do |child_accessor, child_class|
46
- "node.#{child_accessor}.each do |child_node|
47
- #{child_class.visit_method}(child_node, node)
48
- end"
49
- end.join("\n")
50
- else
51
- ""
52
- end
53
- }
54
- end
55
- RUBY
56
- end
57
-
58
25
  def on_document_children(document_node)
59
26
  document_node.children.each do |child_node|
60
27
  visit_method = child_node.visit_method
@@ -123,6 +90,41 @@ module GraphQL
123
90
  end
124
91
  end
125
92
 
93
+ # rubocop:disable Development/NoEvalCop This eval takes static inputs at load-time
94
+
95
+ # We don't use `alias` here because it breaks `super`
96
+ def self.make_visit_methods(ast_node_class)
97
+ node_method = ast_node_class.visit_method
98
+ children_of_type = ast_node_class.children_of_type
99
+ child_visit_method = :"#{node_method}_children"
100
+
101
+ class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
102
+ # The default implementation for visiting an AST node.
103
+ # It doesn't _do_ anything, but it continues to visiting the node's children.
104
+ # To customize this hook, override one of its make_visit_methods (or the base method?)
105
+ # in your subclasses.
106
+ #
107
+ # @param node [GraphQL::Language::Nodes::AbstractNode] the node being visited
108
+ # @param parent [GraphQL::Language::Nodes::AbstractNode, nil] the previously-visited node, or `nil` if this is the root node.
109
+ # @return [void]
110
+ def #{node_method}(node, parent)
111
+ #{
112
+ if method_defined?(child_visit_method)
113
+ "#{child_visit_method}(node)"
114
+ elsif children_of_type
115
+ children_of_type.map do |child_accessor, child_class|
116
+ "node.#{child_accessor}.each do |child_node|
117
+ #{child_class.visit_method}(child_node, node)
118
+ end"
119
+ end.join("\n")
120
+ else
121
+ ""
122
+ end
123
+ }
124
+ end
125
+ RUBY
126
+ end
127
+
126
128
  [
127
129
  Language::Nodes::Argument,
128
130
  Language::Nodes::Directive,
@@ -162,6 +164,8 @@ module GraphQL
162
164
  ].each do |ast_node_class|
163
165
  make_visit_methods(ast_node_class)
164
166
  end
167
+
168
+ # rubocop:disable Development/NoEvalCop
165
169
  end
166
170
  end
167
171
  end
@@ -61,61 +61,6 @@ module GraphQL
61
61
  end
62
62
  end
63
63
 
64
- # We don't use `alias` here because it breaks `super`
65
- def self.make_visit_methods(ast_node_class)
66
- node_method = ast_node_class.visit_method
67
- children_of_type = ast_node_class.children_of_type
68
- child_visit_method = :"#{node_method}_children"
69
-
70
- class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
71
- # The default implementation for visiting an AST node.
72
- # It doesn't _do_ anything, but it continues to visiting the node's children.
73
- # To customize this hook, override one of its make_visit_methods (or the base method?)
74
- # in your subclasses.
75
- #
76
- # @param node [GraphQL::Language::Nodes::AbstractNode] the node being visited
77
- # @param parent [GraphQL::Language::Nodes::AbstractNode, nil] the previously-visited node, or `nil` if this is the root node.
78
- # @return [Array, nil] If there were modifications, it returns an array of new nodes, otherwise, it returns `nil`.
79
- def #{node_method}(node, parent)
80
- if node.equal?(DELETE_NODE)
81
- # This might be passed to `super(DELETE_NODE, ...)`
82
- # by a user hook, don't want to keep visiting in that case.
83
- [node, parent]
84
- else
85
- new_node = node
86
- #{
87
- if method_defined?(child_visit_method)
88
- "new_node = #{child_visit_method}(new_node)"
89
- elsif children_of_type
90
- children_of_type.map do |child_accessor, child_class|
91
- "node.#{child_accessor}.each do |child_node|
92
- new_child_and_node = #{child_class.visit_method}_with_modifications(child_node, new_node)
93
- # Reassign `node` in case the child hook makes a modification
94
- if new_child_and_node.is_a?(Array)
95
- new_node = new_child_and_node[1]
96
- end
97
- end"
98
- end.join("\n")
99
- else
100
- ""
101
- end
102
- }
103
-
104
- if new_node.equal?(node)
105
- [node, parent]
106
- else
107
- [new_node, parent]
108
- end
109
- end
110
- end
111
-
112
- def #{node_method}_with_modifications(node, parent)
113
- new_node_and_new_parent = #{node_method}(node, parent)
114
- apply_modifications(node, parent, new_node_and_new_parent)
115
- end
116
- RUBY
117
- end
118
-
119
64
  def on_document_children(document_node)
120
65
  new_node = document_node
121
66
  document_node.children.each do |child_node|
@@ -216,6 +161,63 @@ module GraphQL
216
161
  new_node
217
162
  end
218
163
 
164
+ # rubocop:disable Development/NoEvalCop This eval takes static inputs at load-time
165
+
166
+ # We don't use `alias` here because it breaks `super`
167
+ def self.make_visit_methods(ast_node_class)
168
+ node_method = ast_node_class.visit_method
169
+ children_of_type = ast_node_class.children_of_type
170
+ child_visit_method = :"#{node_method}_children"
171
+
172
+ class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
173
+ # The default implementation for visiting an AST node.
174
+ # It doesn't _do_ anything, but it continues to visiting the node's children.
175
+ # To customize this hook, override one of its make_visit_methods (or the base method?)
176
+ # in your subclasses.
177
+ #
178
+ # @param node [GraphQL::Language::Nodes::AbstractNode] the node being visited
179
+ # @param parent [GraphQL::Language::Nodes::AbstractNode, nil] the previously-visited node, or `nil` if this is the root node.
180
+ # @return [Array, nil] If there were modifications, it returns an array of new nodes, otherwise, it returns `nil`.
181
+ def #{node_method}(node, parent)
182
+ if node.equal?(DELETE_NODE)
183
+ # This might be passed to `super(DELETE_NODE, ...)`
184
+ # by a user hook, don't want to keep visiting in that case.
185
+ [node, parent]
186
+ else
187
+ new_node = node
188
+ #{
189
+ if method_defined?(child_visit_method)
190
+ "new_node = #{child_visit_method}(new_node)"
191
+ elsif children_of_type
192
+ children_of_type.map do |child_accessor, child_class|
193
+ "node.#{child_accessor}.each do |child_node|
194
+ new_child_and_node = #{child_class.visit_method}_with_modifications(child_node, new_node)
195
+ # Reassign `node` in case the child hook makes a modification
196
+ if new_child_and_node.is_a?(Array)
197
+ new_node = new_child_and_node[1]
198
+ end
199
+ end"
200
+ end.join("\n")
201
+ else
202
+ ""
203
+ end
204
+ }
205
+
206
+ if new_node.equal?(node)
207
+ [node, parent]
208
+ else
209
+ [new_node, parent]
210
+ end
211
+ end
212
+ end
213
+
214
+ def #{node_method}_with_modifications(node, parent)
215
+ new_node_and_new_parent = #{node_method}(node, parent)
216
+ apply_modifications(node, parent, new_node_and_new_parent)
217
+ end
218
+ RUBY
219
+ end
220
+
219
221
  [
220
222
  Language::Nodes::Argument,
221
223
  Language::Nodes::Directive,
@@ -256,6 +258,8 @@ module GraphQL
256
258
  make_visit_methods(ast_node_class)
257
259
  end
258
260
 
261
+ # rubocop:enable Development/NoEvalCop
262
+
259
263
  private
260
264
 
261
265
  def apply_modifications(node, parent, new_node_and_new_parent)
@@ -53,6 +53,7 @@ module GraphQL
53
53
  def initialize(arg_name = nil, type_expr = nil, desc = nil, required: true, type: nil, name: nil, loads: nil, description: nil, comment: nil, ast_node: nil, default_value: NOT_CONFIGURED, as: nil, from_resolver: false, camelize: true, prepare: nil, owner:, validates: nil, directives: nil, deprecation_reason: nil, replace_null_with_default: false, &definition_block)
54
54
  arg_name ||= name
55
55
  @name = -(camelize ? Member::BuildType.camelize(arg_name.to_s) : arg_name.to_s)
56
+ NameValidator.validate!(@name)
56
57
  @type_expr = type_expr || type
57
58
  @description = desc || description
58
59
  @comment = comment
@@ -89,11 +90,8 @@ module GraphQL
89
90
  end
90
91
 
91
92
  if definition_block
92
- if definition_block.arity == 1
93
- instance_exec(self, &definition_block)
94
- else
95
- instance_eval(&definition_block)
96
- end
93
+ # `self` will still be self, it will also be the first argument to the block:
94
+ instance_exec(self, &definition_block)
97
95
  end
98
96
  end
99
97
 
@@ -467,17 +467,18 @@ module GraphQL
467
467
 
468
468
  # Don't do this for interfaces
469
469
  if default_resolve
470
- owner.class_eval <<-RUBY, __FILE__, __LINE__
471
- # frozen_string_literal: true
472
- def #{resolve_method_name}(**args)
473
- field_instance = self.class.get_field("#{field_definition.name}")
474
- context.schema.definition_default_resolve.call(self.class, field_instance, object, args, context)
475
- end
476
- RUBY
470
+ define_field_resolve_method(owner, resolve_method_name, field_definition.name)
477
471
  end
478
472
  end
479
473
  end
480
474
 
475
+ def define_field_resolve_method(owner, method_name, field_name)
476
+ owner.define_method(method_name) { |**args|
477
+ field_instance = self.class.get_field(field_name)
478
+ context.schema.definition_default_resolve.call(self.class, field_instance, object, args, context)
479
+ }
480
+ end
481
+
481
482
  def build_resolve_type(lookup_hash, directives, missing_type_handler)
482
483
  resolve_type_proc = nil
483
484
  resolve_type_proc = ->(ast_node) {
@@ -99,7 +99,7 @@ module GraphQL
99
99
 
100
100
  def inherited(subclass)
101
101
  super
102
- subclass.class_eval do
102
+ subclass.class_exec do
103
103
  @default_graphql_name ||= nil
104
104
  end
105
105
  end
@@ -234,7 +234,7 @@ module GraphQL
234
234
  # because they would end up with names like `#<Class0x1234>::UnresolvedValueError` which messes up bug trackers
235
235
  child_class.const_set(:UnresolvedValueError, Class.new(Schema::Enum::UnresolvedValueError))
236
236
  end
237
- child_class.class_eval { @value_methods = nil }
237
+ child_class.class_exec { @value_methods = nil }
238
238
  super
239
239
  end
240
240
 
@@ -256,7 +256,7 @@ module GraphQL
256
256
  return
257
257
  end
258
258
 
259
- instance_eval("def #{value_method_name}; #{value.graphql_name.inspect}; end;", __FILE__, __LINE__)
259
+ define_singleton_method(value_method_name) { value.graphql_name }
260
260
  end
261
261
  end
262
262
 
@@ -48,7 +48,7 @@ module GraphQL
48
48
  end
49
49
 
50
50
  if block_given?
51
- instance_eval(&block)
51
+ instance_exec(self, &block)
52
52
  end
53
53
  end
54
54
 
@@ -255,7 +255,7 @@ module GraphQL
255
255
 
256
256
  @underscored_name = -Member::BuildType.underscore(name_s)
257
257
  @name = -(camelize ? Member::BuildType.camelize(name_s) : name_s)
258
-
258
+ NameValidator.validate!(@name)
259
259
  @description = description
260
260
  @comment = comment
261
261
  @type = @owner_type = @own_validators = @own_directives = @own_arguments = @arguments_statically_coercible = nil # these will be prepared later if necessary
@@ -369,7 +369,7 @@ module GraphQL
369
369
  if @definition_block.arity == 1
370
370
  @definition_block.call(self)
371
371
  else
372
- instance_eval(&@definition_block)
372
+ instance_exec(self, &@definition_block)
373
373
  end
374
374
  self.extensions.each(&:after_define_apply)
375
375
  @call_after_define = true
@@ -59,7 +59,7 @@ module GraphQL
59
59
  else
60
60
  new_h = {}
61
61
  keys.each { |k| @ruby_style_hash.key?(k) && new_h[k] = @ruby_style_hash[k] }
62
- new_h
62
+ new_h
63
63
  end
64
64
  end
65
65
 
@@ -150,14 +150,8 @@ module GraphQL
150
150
  end
151
151
  end
152
152
  # Add a method access
153
- method_name = argument_defn.keyword
154
153
  suppress_redefinition_warning do
155
- class_eval <<-RUBY, __FILE__, __LINE__
156
- def #{method_name}
157
- self[#{method_name.inspect}]
158
- end
159
- alias_method #{method_name.inspect}, #{method_name.inspect}
160
- RUBY
154
+ define_accessor_method(argument_defn.keyword)
161
155
  end
162
156
  argument_defn
163
157
  end
@@ -293,6 +287,11 @@ module GraphQL
293
287
  ensure
294
288
  $VERBOSE = verbose
295
289
  end
290
+
291
+ def define_accessor_method(method_name)
292
+ define_method(method_name) { self[method_name] }
293
+ alias_method(method_name, method_name)
294
+ end
296
295
  end
297
296
 
298
297
  private
@@ -30,7 +30,7 @@ module GraphQL
30
30
  const_set(:DefinitionMethods, defn_methods_module)
31
31
  extend(self::DefinitionMethods)
32
32
  end
33
- self::DefinitionMethods.module_eval(&block)
33
+ self::DefinitionMethods.module_exec(&block)
34
34
  end
35
35
 
36
36
  # @see {Schema::Warden} hides interfaces without visible implementations
@@ -6,7 +6,7 @@ module GraphQL
6
6
  module HasDirectives
7
7
  def self.extended(child_cls)
8
8
  super
9
- child_cls.module_eval { self.own_directives = nil }
9
+ child_cls.module_exec { self.own_directives = nil }
10
10
  end
11
11
 
12
12
  def inherited(child_cls)
@@ -202,7 +202,7 @@ module GraphQL
202
202
 
203
203
  def inherited(subclass)
204
204
  super
205
- subclass.class_eval do
205
+ subclass.class_exec do
206
206
  @own_fields ||= nil
207
207
  @field_class ||= nil
208
208
  @has_no_fields ||= false
@@ -133,7 +133,7 @@ module GraphQL
133
133
 
134
134
  def inherited(subclass)
135
135
  super
136
- subclass.class_eval do
136
+ subclass.class_exec do
137
137
  @own_interface_type_memberships ||= nil
138
138
  end
139
139
  end
@@ -30,7 +30,7 @@ module GraphQL
30
30
 
31
31
  def inherited(subclass)
32
32
  super
33
- subclass.class_eval do
33
+ subclass.class_exec do
34
34
  @reauthorize_scoped_objects = nil
35
35
  end
36
36
  end
@@ -42,7 +42,7 @@ module GraphQL
42
42
  private
43
43
 
44
44
  def inherited(subclass)
45
- subclass.class_eval do
45
+ subclass.class_exec do
46
46
  @to_non_null_type ||= nil
47
47
  @to_list_type ||= nil
48
48
  end
@@ -32,6 +32,8 @@ module GraphQL
32
32
  Gem::Version.new('1.0.0')
33
33
  end
34
34
 
35
+ # rubocop:disable Development/NoEvalCop This eval takes static inputs at load-time
36
+
35
37
  [
36
38
  'lex',
37
39
  'parse',
@@ -59,6 +61,8 @@ module GraphQL
59
61
  RUBY
60
62
  end
61
63
 
64
+ # rubocop:enable Development/NoEvalCop
65
+
62
66
  def execute_field(query:, field:, ast_node:, arguments:, object:)
63
67
  return_type = field.type.unwrap
64
68
  trace_field = if return_type.kind.scalar? || return_type.kind.enum?
@@ -21,6 +21,8 @@ module GraphQL
21
21
  super
22
22
  end
23
23
 
24
+ # rubocop:disable Development/NoEvalCop This eval takes static inputs at load-time
25
+
24
26
  {
25
27
  "lex" => "lex.graphql",
26
28
  "parse" => "parse.graphql",
@@ -51,6 +53,8 @@ module GraphQL
51
53
  RUBY
52
54
  end
53
55
 
56
+ # rubocop:enable Development/NoEvalCop
57
+
54
58
  def platform_execute_field(platform_key)
55
59
  Appsignal.instrument(platform_key) do
56
60
  yield
@@ -27,6 +27,8 @@ module GraphQL
27
27
  super
28
28
  end
29
29
 
30
+ # rubocop:disable Development/NoEvalCop This eval takes static inputs at load-time
31
+
30
32
  {
31
33
  'lex' => 'lex.graphql',
32
34
  'parse' => 'parse.graphql',
@@ -76,6 +78,8 @@ module GraphQL
76
78
  RUBY
77
79
  end
78
80
 
81
+ # rubocop:enable Development/NoEvalCop
82
+
79
83
  def execute_field_span(span_key, query, field, ast_node, arguments, object)
80
84
  return_type = field.type.unwrap
81
85
  trace_field = if return_type.kind.scalar? || return_type.kind.enum?
@@ -16,6 +16,8 @@ module GraphQL
16
16
  super
17
17
  end
18
18
 
19
+ # rubocop:disable Development/NoEvalCop This eval takes static inputs at load-time
20
+
19
21
  {
20
22
  "lex" => "lex.graphql",
21
23
  "parse" => "parse.graphql",
@@ -39,6 +41,8 @@ module GraphQL
39
41
  RUBY
40
42
  end
41
43
 
44
+ # rubocop:enable Development/NoEvalCop
45
+
42
46
  include PlatformTrace
43
47
  end
44
48
  end
@@ -39,6 +39,9 @@ module GraphQL
39
39
  include(BaseKeyCache)
40
40
  }
41
41
  child_class.const_set(:KeyCache, key_methods_class)
42
+
43
+ # rubocop:disable Development/NoEvalCop This eval takes static inputs at load-time
44
+
42
45
  [:execute_field, :execute_field_lazy].each do |field_trace_method|
43
46
  if !child_class.method_defined?(field_trace_method)
44
47
  child_class.module_eval <<-RUBY, __FILE__, __LINE__
@@ -91,6 +94,8 @@ module GraphQL
91
94
  end
92
95
  RUBY
93
96
  end
97
+
98
+ # rubocop:enable Development/NoEvalCop
94
99
  end
95
100
  end
96
101
 
@@ -40,6 +40,8 @@ module GraphQL
40
40
  super(**rest)
41
41
  end
42
42
 
43
+ # rubocop:disable Development/NoEvalCop This eval takes static inputs at load-time
44
+
43
45
  {
44
46
  'lex' => "graphql.lex",
45
47
  'parse' => "graphql.parse",
@@ -57,6 +59,8 @@ module GraphQL
57
59
  RUBY
58
60
  end
59
61
 
62
+ # rubocop:enable Development/NoEvalCop
63
+
60
64
  def platform_execute_field(platform_key, &block)
61
65
  instrument_prometheus_execution(platform_key, "execute_field", &block)
62
66
  end
@@ -24,6 +24,8 @@ module GraphQL
24
24
  super
25
25
  end
26
26
 
27
+ # rubocop:disable Development/NoEvalCop This eval takes static inputs at load-time
28
+
27
29
  {
28
30
  "lex" => "lex.graphql",
29
31
  "parse" => "parse.graphql",
@@ -53,6 +55,7 @@ module GraphQL
53
55
  end
54
56
  RUBY
55
57
  end
58
+ # rubocop:enable Development/NoEvalCop
56
59
 
57
60
  def platform_execute_field(platform_key, &block)
58
61
  self.class.instrument("GraphQL", platform_key, INSTRUMENT_OPTS, &block)
@@ -30,6 +30,8 @@ module GraphQL
30
30
  instrument_sentry_execution("graphql.execute", "execute_query", data) { super }
31
31
  end
32
32
 
33
+ # rubocop:disable Development/NoEvalCop This eval takes static inputs at load-time
34
+
33
35
  {
34
36
  "lex" => "graphql.lex",
35
37
  "parse" => "graphql.parse",
@@ -46,6 +48,8 @@ module GraphQL
46
48
  RUBY
47
49
  end
48
50
 
51
+ # rubocop:enable Development/NoEvalCop
52
+
49
53
  def platform_execute_field(platform_key, &block)
50
54
  instrument_sentry_execution(platform_key, "execute_field", &block)
51
55
  end
@@ -22,6 +22,8 @@ module GraphQL
22
22
  super(**rest)
23
23
  end
24
24
 
25
+ # rubocop:disable Development/NoEvalCop This eval takes static inputs at load-time
26
+
25
27
  {
26
28
  'lex' => "graphql.lex",
27
29
  'parse' => "graphql.parse",
@@ -41,6 +43,8 @@ module GraphQL
41
43
  RUBY
42
44
  end
43
45
 
46
+ # rubocop:enable Development/NoEvalCop
47
+
44
48
  def platform_execute_field(platform_key, &block)
45
49
  @statsd.time(platform_key, &block)
46
50
  end
@@ -13,7 +13,7 @@ module GraphQL
13
13
  child_class.node_nullable(true)
14
14
  child_class.edges_nullable(true)
15
15
  child_class.edge_nullable(true)
16
- child_class.module_eval {
16
+ child_class.module_exec {
17
17
  self.edge_type = nil
18
18
  self.node_type = nil
19
19
  self.edge_class = nil
@@ -8,7 +8,7 @@ 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.class_eval { self.node_type = nil }
11
+ child_class.class_exec { self.node_type = nil }
12
12
  child_class.node_nullable(true)
13
13
  child_class.default_broadcastable(nil)
14
14
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module GraphQL
3
- VERSION = "2.4.12"
3
+ VERSION = "2.4.13"
4
4
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.12
4
+ version: 2.4.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Mosolgo
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-11 00:00:00.000000000 Z
10
+ date: 2025-03-12 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: base64