graphql 1.10.7 → 1.10.8

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: dffbc22cc92ab7e74cf26f0a6e916ae1f03014722e350318af8ee367c9eb6f40
4
- data.tar.gz: 8b98748a98c2a7b5d471542989245a16d148b44519c69aa51cec062649357b31
3
+ metadata.gz: 13caa4920df03f81232a23cf9fe5707ee3602a6c42bedace93870645f35d1248
4
+ data.tar.gz: 597cbe2fd51c36a0e0de158d51c70d1d057a2712d44a34c71872ef0586a9c3d9
5
5
  SHA512:
6
- metadata.gz: bf169d1fe41d60ad045e0faae46cfa263d4b5f2bffd56bdd527b940702e9a6e44996d7b8402a6a213a593e68adcd1b885b3ba8d7240b236db1383ae9d9073f6c
7
- data.tar.gz: 24293245691980f79e316977fe24a6dfc6025f25d7d46806d6e46a8cc44ce9d1f84a7217487fd147209d6bef4a4ffdb0d67645fb87506850e420683a745aa90a
6
+ metadata.gz: ca5468c4b6632a4028f4bebf226c7a3aee5bb6786096b1b5a843b2ae476043160b1fe52111ae70d62c5a35cc66f9edd2d903128ebb2412c87054b9040f2a55aa
7
+ data.tar.gz: e9ad2d87cb3898d849266bb743251d922024541ee9d08090cb4f7898331fa15962697a87f386011b7450ca9af3c730c23ff74ca4d2191af6c319d3168add1bdd
@@ -54,7 +54,7 @@ module GraphQL
54
54
  case defined_complexity
55
55
  when Proc
56
56
  arguments = @query.arguments_for(@node, @field_definition)
57
- defined_complexity.call(@query.context, arguments, child_complexity)
57
+ defined_complexity.call(@query.context, arguments.keyword_arguments, child_complexity)
58
58
  when Numeric
59
59
  defined_complexity + child_complexity
60
60
  else
@@ -43,8 +43,8 @@ module GraphQL
43
43
  @storage = storage
44
44
  end
45
45
 
46
- def each
47
- @storage.each { |i| yield(i) }
46
+ def each(&block)
47
+ @storage.each(&block)
48
48
  end
49
49
  end
50
50
 
@@ -1,4 +1,6 @@
1
1
  # frozen_string_literal: true
2
+ require "graphql/execution/interpreter/argument_value"
3
+ require "graphql/execution/interpreter/arguments"
2
4
  require "graphql/execution/interpreter/arguments_cache"
3
5
  require "graphql/execution/interpreter/execution_errors"
4
6
  require "graphql/execution/interpreter/hash_response"
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GraphQL
4
+ module Execution
5
+ class Interpreter
6
+ # A container for metadata regarding arguments present in a GraphQL query.
7
+ # @see Interpreter::Arguments#argument_values for a hash of these objects.
8
+ class ArgumentValue
9
+ def initialize(definition:, value:, default_used:)
10
+ @definition = definition
11
+ @value = value
12
+ @default_used = default_used
13
+ end
14
+
15
+ # @return [Object] The Ruby-ready value for this Argument
16
+ attr_reader :value
17
+
18
+ # @return [GraphQL::Schema::Argument] The definition instance for this argument
19
+ attr_reader :definition
20
+
21
+ # @return [Boolean] `true` if the schema-defined `default_value:` was applied in this case. (No client-provided value was present.)
22
+ def default_used?
23
+ @default_used
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GraphQL
4
+ module Execution
5
+ class Interpreter
6
+ # A wrapper for argument hashes in GraphQL queries.
7
+ #
8
+ # @see GraphQL::Query#arguments_for to get access to these objects.
9
+ class Arguments
10
+ extend Forwardable
11
+
12
+ # The Ruby-style arguments hash, ready for a resolver.
13
+ # This hash is the one used at runtime.
14
+ #
15
+ # @return [Hash<Symbol, Object>]
16
+ attr_reader :keyword_arguments
17
+
18
+ def initialize(keyword_arguments:, argument_values:)
19
+ @keyword_arguments = keyword_arguments
20
+ @argument_values = argument_values
21
+ end
22
+
23
+ # Yields `ArgumentValue` instances which contain detailed metadata about each argument.
24
+ def each_value
25
+ argument_values.each { |arg_v| yield(arg_v) }
26
+ end
27
+
28
+ # @return [Hash{Symbol => ArgumentValue}]
29
+ attr_reader :argument_values
30
+
31
+ def_delegators :@keyword_arguments, :key?, :[], :keys, :each, :values
32
+
33
+ def inspect
34
+ "#<#{self.class} @keyword_arguments=#{keyword_arguments.inspect}>"
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -14,13 +14,9 @@ module GraphQL
14
14
  # Then call into the schema to coerce those incoming values
15
15
  args = arg_owner.coerce_arguments(parent_object, args_hash, query.context)
16
16
 
17
- h3[parent_object] = if args.is_a?(GraphQL::Execution::Lazy)
18
- args.then { |resolved_args|
19
- # when this promise is resolved, update the cache with the resolved value
20
- h3[parent_object] = resolved_args
21
- }
22
- else
23
- args
17
+ h3[parent_object] = @query.schema.after_lazy(args) do |resolved_args|
18
+ # when this promise is resolved, update the cache with the resolved value
19
+ h3[parent_object] = resolved_args
24
20
  end
25
21
  end
26
22
  end
@@ -174,7 +174,14 @@ module GraphQL
174
174
  next
175
175
  end
176
176
 
177
- after_lazy(kwarg_arguments, owner: owner_type, field: field_defn, path: next_path, scoped_context: context.scoped_context, owner_object: object, arguments: kwarg_arguments) do |kwarg_arguments|
177
+ after_lazy(kwarg_arguments, owner: owner_type, field: field_defn, path: next_path, scoped_context: context.scoped_context, owner_object: object, arguments: kwarg_arguments) do |resolved_arguments|
178
+ if resolved_arguments.is_a? GraphQL::ExecutionError
179
+ continue_value(next_path, resolved_arguments, field_defn, return_type.non_null?, ast_node)
180
+ next
181
+ end
182
+
183
+ kwarg_arguments = resolved_arguments.keyword_arguments
184
+
178
185
  # It might turn out that making arguments for every field is slow.
179
186
  # If we have to cache them, we'll need a more subtle approach here.
180
187
  field_defn.extras.each do |extra|
@@ -194,6 +201,8 @@ module GraphQL
194
201
  ast_nodes: field_ast_nodes,
195
202
  field: field_defn,
196
203
  )
204
+ when :argument_details
205
+ kwarg_arguments[:argument_details] = resolved_arguments
197
206
  else
198
207
  kwarg_arguments[extra] = field_defn.fetch_extra(extra, context)
199
208
  end
@@ -369,11 +378,12 @@ module GraphQL
369
378
  end
370
379
  end
371
380
 
372
- def resolve_with_directives(object, ast_node)
373
- run_directive(object, ast_node, 0) { yield }
381
+ def resolve_with_directives(object, ast_node, &block)
382
+ return yield if ast_node.directives.empty?
383
+ run_directive(object, ast_node, 0, &block)
374
384
  end
375
385
 
376
- def run_directive(object, ast_node, idx)
386
+ def run_directive(object, ast_node, idx, &block)
377
387
  dir_node = ast_node.directives[idx]
378
388
  if !dir_node
379
389
  yield
@@ -382,9 +392,9 @@ module GraphQL
382
392
  if !dir_defn.is_a?(Class)
383
393
  dir_defn = dir_defn.type_class || raise("Only class-based directives are supported (not `@#{dir_node.name}`)")
384
394
  end
385
- dir_args = arguments(nil, dir_defn, dir_node)
395
+ dir_args = arguments(nil, dir_defn, dir_node).keyword_arguments
386
396
  dir_defn.resolve(object, dir_args, context) do
387
- run_directive(object, ast_node, idx + 1) { yield }
397
+ run_directive(object, ast_node, idx + 1, &block)
388
398
  end
389
399
  end
390
400
  end
@@ -393,7 +403,7 @@ module GraphQL
393
403
  def directives_include?(node, graphql_object, parent_type)
394
404
  node.directives.each do |dir_node|
395
405
  dir_defn = schema.directives.fetch(dir_node.name).type_class || raise("Only class-based directives are supported (not #{dir_node.name.inspect})")
396
- args = arguments(graphql_object, dir_defn, dir_node)
406
+ args = arguments(graphql_object, dir_defn, dir_node).keyword_arguments
397
407
  if !dir_defn.include?(graphql_object, args, context)
398
408
  return false
399
409
  end
@@ -407,7 +417,7 @@ module GraphQL
407
417
  # @param eager [Boolean] Set to `true` for mutation root fields only
408
418
  # @param trace [Boolean] If `false`, don't wrap this with field tracing
409
419
  # @return [GraphQL::Execution::Lazy, Object] If loading `object` will be deferred, it's a wrapper over it.
410
- def after_lazy(lazy_obj, owner:, field:, path:, scoped_context:, owner_object:, arguments:, eager: false, trace: true)
420
+ def after_lazy(lazy_obj, owner:, field:, path:, scoped_context:, owner_object:, arguments:, eager: false, trace: true, &block)
411
421
  @interpreter_context[:current_object] = owner_object
412
422
  @interpreter_context[:current_arguments] = arguments
413
423
  @interpreter_context[:current_path] = path
@@ -432,11 +442,9 @@ module GraphQL
432
442
  end
433
443
  end
434
444
  rescue GraphQL::ExecutionError, GraphQL::UnauthorizedError => err
435
- yield(err)
436
- end
437
- after_lazy(inner_obj, owner: owner, field: field, path: path, scoped_context: context.scoped_context, owner_object: owner_object, arguments: arguments, eager: eager) do |really_inner_obj|
438
- yield(really_inner_obj)
445
+ err
439
446
  end
447
+ after_lazy(inner_obj, owner: owner, field: field, path: path, scoped_context: context.scoped_context, owner_object: owner_object, arguments: arguments, eager: eager, trace: trace, &block)
440
448
  end
441
449
 
442
450
  if eager
@@ -55,7 +55,9 @@ module GraphQL
55
55
  @arguments
56
56
  else
57
57
  @arguments = if @field
58
- @query.arguments_for(@ast_nodes.first, @field)
58
+ @query.schema.after_lazy(@query.arguments_for(@ast_nodes.first, @field)) do |args|
59
+ args.is_a?(Execution::Interpreter::Arguments) ? args.keyword_arguments : args
60
+ end
59
61
  else
60
62
  nil
61
63
  end
@@ -66,11 +66,11 @@ module GraphQL
66
66
  # Call the block for each type in `self`.
67
67
  # This uses the simplest possible expression of `self`,
68
68
  # so if this scope is defined by an abstract type, it gets yielded.
69
- def each
69
+ def each(&block)
70
70
  if @abstract_type
71
71
  yield(@type)
72
72
  else
73
- @types.each { |t| yield(t) }
73
+ @types.each(&block)
74
74
  end
75
75
  end
76
76
 
@@ -23,11 +23,11 @@ module GraphQL
23
23
 
24
24
  # Traverse a node in a rewritten query tree,
25
25
  # visiting the node itself and each of its typed children.
26
- def each_node(node)
26
+ def each_node(node, &block)
27
27
  yield(node)
28
28
  node.typed_children.each do |obj_type, children|
29
29
  children.each do |name, node|
30
- each_node(node) { |n| yield(n) }
30
+ each_node(node, &block)
31
31
  end
32
32
  end
33
33
  end
@@ -74,8 +74,6 @@ module GraphQL
74
74
 
75
75
  def decode(data)
76
76
  @encoder.decode(data, nonce: true)
77
- rescue ArgumentError
78
- raise GraphQL::ExecutionError, "Invalid cursor: #{data.inspect}"
79
77
  end
80
78
 
81
79
  # The value passed as `first:`, if there was one. Negative numbers become `0`.
@@ -101,14 +101,12 @@ module GraphQL
101
101
  # - Right away, if `value` is not registered with `lazy_resolve`
102
102
  # - After resolving `value`, if it's registered with `lazy_resolve` (eg, `Promise`)
103
103
  # @api private
104
- def after_lazy(value)
104
+ def after_lazy(value, &block)
105
105
  if lazy?(value)
106
106
  GraphQL::Execution::Lazy.new do
107
107
  result = sync_lazy(value)
108
108
  # The returned result might also be lazy, so check it, too
109
- after_lazy(result) do |final_result|
110
- yield(final_result) if block_given?
111
- end
109
+ after_lazy(result, &block)
112
110
  end
113
111
  else
114
112
  yield(value) if block_given?
@@ -146,10 +144,10 @@ module GraphQL
146
144
  def after_any_lazies(maybe_lazies)
147
145
  if maybe_lazies.any? { |l| lazy?(l) }
148
146
  GraphQL::Execution::Lazy.all(maybe_lazies).then do |result|
149
- yield
147
+ yield result
150
148
  end
151
149
  else
152
- yield
150
+ yield maybe_lazies
153
151
  end
154
152
  end
155
153
  end
@@ -872,8 +870,8 @@ module GraphQL
872
870
  # Returns the JSON response of {Introspection::INTROSPECTION_QUERY}.
873
871
  # @see {#as_json}
874
872
  # @return [String]
875
- def to_json(*args)
876
- JSON.pretty_generate(as_json(*args))
873
+ def to_json(**args)
874
+ JSON.pretty_generate(as_json(**args))
877
875
  end
878
876
 
879
877
  # Return the Hash response of {Introspection::INTROSPECTION_QUERY}.
@@ -13,6 +13,8 @@ module GraphQL
13
13
  def self.decode(encoded_text, nonce: false)
14
14
  # urlsafe_decode64 is for forward compatibility
15
15
  Base64Bp.urlsafe_decode64(encoded_text)
16
+ rescue ArgumentError
17
+ raise GraphQL::ExecutionError, "Invalid input: #{encoded_text.inspect}"
16
18
  end
17
19
  end
18
20
  end
@@ -47,6 +47,11 @@ module GraphQL
47
47
  @resolver_class
48
48
  end
49
49
 
50
+ # @return [Boolean] Is this field a predefined introspection field?
51
+ def introspection?
52
+ @introspection
53
+ end
54
+
50
55
  alias :mutation :resolver
51
56
 
52
57
  # @return [Boolean] Apply tracing to this field? (Default: skip scalars, this is the override value)
@@ -663,7 +668,7 @@ module GraphQL
663
668
  loaded_value = if loads && !arg_defn.from_resolver?
664
669
  if arg_defn.type.list?
665
670
  loaded_values = value.map { |val| load_application_object(arg_defn, loads, val, field_ctx.query.context) }
666
- maybe_lazies.concat(loaded_values)
671
+ field_ctx.schema.after_any_lazies(loaded_values) { |result| result }
667
672
  else
668
673
  load_application_object(arg_defn, loads, value, field_ctx.query.context)
669
674
  end
@@ -10,12 +10,13 @@ module GraphQL
10
10
 
11
11
  include GraphQL::Dig
12
12
 
13
- def initialize(values = nil, ruby_kwargs: nil, context:, defaults_used:)
13
+ def initialize(arguments = nil, ruby_kwargs: nil, context:, defaults_used:)
14
14
  @context = context
15
15
  if ruby_kwargs
16
16
  @ruby_style_hash = ruby_kwargs
17
+ @arguments = arguments
17
18
  else
18
- @arguments = self.class.arguments_class.new(values, context: context, defaults_used: defaults_used)
19
+ @arguments = self.class.arguments_class.new(arguments, context: context, defaults_used: defaults_used)
19
20
  # Symbolized, underscored hash:
20
21
  @ruby_style_hash = @arguments.to_kwargs
21
22
  end
@@ -56,7 +57,7 @@ module GraphQL
56
57
  # @return [GraphQL::Query::Context] The context for this query
57
58
  attr_reader :context
58
59
 
59
- # @return [GraphQL::Query::Arguments] The underlying arguments instance
60
+ # @return [GraphQL::Query::Arguments, GraphQL::Execution::Interpereter::Arguments] The underlying arguments instance
60
61
  attr_reader :arguments
61
62
 
62
63
  # Ruby-like hash behaviors, read-only
@@ -208,10 +209,12 @@ module GraphQL
208
209
  return nil
209
210
  end
210
211
 
211
- input_values = coerce_arguments(nil, value, ctx)
212
+ arguments = coerce_arguments(nil, value, ctx)
212
213
 
213
- input_obj_instance = self.new(ruby_kwargs: input_values, context: ctx, defaults_used: nil)
214
- input_obj_instance.prepare
214
+ ctx.schema.after_lazy(arguments) do |resolved_arguments|
215
+ input_obj_instance = self.new(resolved_arguments, ruby_kwargs: resolved_arguments.keyword_arguments, context: ctx, defaults_used: nil)
216
+ input_obj_instance.prepare
217
+ end
215
218
  end
216
219
 
217
220
  # It's funny to think of a _result_ of an input object.
@@ -63,10 +63,12 @@ module GraphQL
63
63
  self.class.argument_class(new_arg_class)
64
64
  end
65
65
 
66
+ # @api private
66
67
  # @param values [Hash<String, Object>]
67
68
  # @param context [GraphQL::Query::Context]
68
- # @return Hash<Symbol, Object>
69
+ # @return [Hash<Symbol, Object>, Execution::Lazy<Hash>]
69
70
  def coerce_arguments(parent_object, values, context)
71
+ argument_values = {}
70
72
  kwarg_arguments = {}
71
73
  # Cache this hash to avoid re-merging it
72
74
  arg_defns = self.arguments
@@ -75,6 +77,7 @@ module GraphQL
75
77
  arg_lazies = arg_defns.map do |arg_name, arg_defn|
76
78
  arg_key = arg_defn.keyword
77
79
  has_value = false
80
+ default_used = false
78
81
  if values.key?(arg_name)
79
82
  has_value = true
80
83
  value = values[arg_name]
@@ -84,6 +87,7 @@ module GraphQL
84
87
  elsif arg_defn.default_value?
85
88
  has_value = true
86
89
  value = arg_defn.default_value
90
+ default_used = true
87
91
  end
88
92
 
89
93
  if has_value
@@ -91,33 +95,43 @@ module GraphQL
91
95
  loaded_value = nil
92
96
  if loads && !arg_defn.from_resolver?
93
97
  loaded_value = if arg_defn.type.list?
94
- value.map { |val| load_application_object(arg_defn, loads, val, context) }
98
+ loaded_values = value.map { |val| load_application_object(arg_defn, loads, val, context) }
99
+ context.schema.after_any_lazies(loaded_values) { |result| result }
95
100
  else
96
101
  load_application_object(arg_defn, loads, value, context)
97
102
  end
98
103
  end
99
104
 
100
- context.schema.after_lazy(loaded_value) do |loaded_value|
101
- coerced_value = nil
102
- prepared_value = context.schema.error_handler.with_error_handling(context) do
103
-
104
- coerced_value = if loaded_value
105
- loaded_value
106
- else
107
- arg_defn.type.coerce_input(value, context)
108
- end
105
+ coerced_value = if loaded_value
106
+ loaded_value
107
+ else
108
+ context.schema.error_handler.with_error_handling(context) do
109
+ arg_defn.type.coerce_input(value, context)
110
+ end
111
+ end
109
112
 
113
+ context.schema.after_lazy(coerced_value) do |coerced_value|
114
+ prepared_value = context.schema.error_handler.with_error_handling(context) do
110
115
  arg_defn.prepare_value(parent_object, coerced_value, context: context)
111
116
  end
112
117
 
113
- kwarg_arguments[arg_defn.keyword] = prepared_value
118
+ kwarg_arguments[arg_key] = prepared_value
119
+ # TODO code smell to access such a deeply-nested constant in a distant module
120
+ argument_values[arg_key] = GraphQL::Execution::Interpreter::ArgumentValue.new(
121
+ value: prepared_value,
122
+ definition: arg_defn,
123
+ default_used: default_used,
124
+ )
114
125
  end
115
126
  end
116
127
  end
117
128
 
118
129
  maybe_lazies.concat(arg_lazies)
119
130
  context.schema.after_any_lazies(maybe_lazies) do
120
- kwarg_arguments
131
+ GraphQL::Execution::Interpreter::Arguments.new(
132
+ keyword_arguments: kwarg_arguments,
133
+ argument_values: argument_values,
134
+ )
121
135
  end
122
136
  end
123
137
 
@@ -79,14 +79,14 @@ module GraphQL
79
79
  raise "#{int} cannot be implemented since it's not a GraphQL Interface. Use `include` for plain Ruby modules."
80
80
  end
81
81
 
82
- new_memberships << int.type_membership_class.new(int, self, options)
82
+ new_memberships << int.type_membership_class.new(int, self, **options)
83
83
 
84
84
  # Include the methods here,
85
85
  # `.fields` will use the inheritance chain
86
86
  # to find inherited fields
87
87
  include(int)
88
88
  elsif int.is_a?(GraphQL::InterfaceType)
89
- new_memberships << int.type_membership_class.new(int, self, options)
89
+ new_memberships << int.type_membership_class.new(int, self, **options)
90
90
  elsif int.is_a?(String) || int.is_a?(GraphQL::Schema::LateBoundType)
91
91
  if options.any?
92
92
  raise ArgumentError, "`implements(...)` doesn't support options with late-loaded types yet. Remove #{options} and open an issue to request this feature."
@@ -220,7 +220,7 @@ module GraphQL
220
220
  # or use it as a configuration method to assign a return type
221
221
  # instead of generating one.
222
222
  # TODO unify with {#null}
223
- # @param new_type [Class, nil] If a type definition class is provided, it will be used as the return type of the field
223
+ # @param new_type [Class, Array<Class>, nil] If a type definition class is provided, it will be used as the return type of the field
224
224
  # @param null [true, false] Whether or not the field may return `nil`
225
225
  # @return [Class] The type which this field returns.
226
226
  def type(new_type = nil, null: nil)
@@ -63,8 +63,9 @@ module GraphQL
63
63
  # @param key [String] The name of the event in GraphQL internals
64
64
  # @param metadata [Hash] Event-related metadata (can be anything)
65
65
  # @return [Object] Must return the value of the block
66
- def trace(key, metadata)
67
- call_tracers(0, key, metadata) { yield }
66
+ def trace(key, metadata, &block)
67
+ return yield if @tracers.empty?
68
+ call_tracers(0, key, metadata, &block)
68
69
  end
69
70
 
70
71
  private
@@ -76,11 +77,11 @@ module GraphQL
76
77
  # @param key [String] The current event name
77
78
  # @param metadata [Object] The current event object
78
79
  # @return Whatever the block returns
79
- def call_tracers(idx, key, metadata)
80
+ def call_tracers(idx, key, metadata, &block)
80
81
  if idx == @tracers.length
81
82
  yield
82
83
  else
83
- @tracers[idx].trace(key, metadata) { call_tracers(idx + 1, key, metadata) { yield } }
84
+ @tracers[idx].trace(key, metadata) { call_tracers(idx + 1, key, metadata, &block) }
84
85
  end
85
86
  end
86
87
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module GraphQL
3
- VERSION = "1.10.7"
3
+ VERSION = "1.10.8"
4
4
  end
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: 1.10.7
4
+ version: 1.10.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Mosolgo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-16 00:00:00.000000000 Z
11
+ date: 2020-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark-ips
@@ -422,6 +422,8 @@ files:
422
422
  - lib/graphql/execution/flatten.rb
423
423
  - lib/graphql/execution/instrumentation.rb
424
424
  - lib/graphql/execution/interpreter.rb
425
+ - lib/graphql/execution/interpreter/argument_value.rb
426
+ - lib/graphql/execution/interpreter/arguments.rb
425
427
  - lib/graphql/execution/interpreter/arguments_cache.rb
426
428
  - lib/graphql/execution/interpreter/execution_errors.rb
427
429
  - lib/graphql/execution/interpreter/handles_raw_value.rb
@@ -746,7 +748,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
746
748
  - !ruby/object:Gem::Version
747
749
  version: '0'
748
750
  requirements: []
749
- rubygems_version: 3.0.3
751
+ rubygems_version: 3.1.2
750
752
  signing_key:
751
753
  specification_version: 4
752
754
  summary: A GraphQL language and runtime for Ruby