graphql 2.0.26 → 2.0.27

Sign up to get free protection for your applications and to get access to all the features.
@@ -150,6 +150,7 @@ rule
150
150
  | REPEATABLE
151
151
  | TRUE
152
152
  | FALSE
153
+ | NULL
153
154
  | operation_type
154
155
  | schema_keyword
155
156
 
@@ -258,6 +258,12 @@ module GraphQL
258
258
  end
259
259
  path.pop
260
260
  end
261
+
262
+ if type.kind.enum?
263
+ type.all_enum_value_definitions.each do |value_definition|
264
+ add_directives_from(value_definition)
265
+ end
266
+ end
261
267
  end
262
268
  end
263
269
  end
@@ -92,7 +92,7 @@ module GraphQL
92
92
  # @param resolver [Class] A {GraphQL::Schema::Resolver} class to use for field configuration
93
93
  # @param mutation [Class] A {GraphQL::Schema::Mutation} class to use for field configuration
94
94
  # @param subscription [Class] A {GraphQL::Schema::Subscription} class to use for field configuration
95
- # @return [GraphQL::Schema:Field] an instance of `self
95
+ # @return [GraphQL::Schema:Field] an instance of `self`
96
96
  # @see {.initialize} for other options
97
97
  def self.from_options(name = nil, type = nil, desc = nil, resolver: nil, mutation: nil, subscription: nil,**kwargs, &block)
98
98
  if (resolver_class = resolver || mutation || subscription)
@@ -65,19 +65,20 @@ module GraphQL
65
65
  # @api private
66
66
  def resolve_with_support(**args)
67
67
  # First call the ready? hook which may raise
68
- ready_val = if args.any?
68
+ raw_ready_val = if args.any?
69
69
  ready?(**args)
70
70
  else
71
71
  ready?
72
72
  end
73
- context.query.after_lazy(ready_val) do |is_ready, ready_early_return|
74
- if ready_early_return
73
+ context.query.after_lazy(raw_ready_val) do |ready_val|
74
+ if ready_val.is_a?(Array)
75
+ is_ready, ready_early_return = ready_val
75
76
  if is_ready != false
76
77
  raise "Unexpected result from #ready? (expected `true`, `false` or `[false, {...}]`): [#{is_ready.inspect}, #{ready_early_return.inspect}]"
77
78
  else
78
79
  ready_early_return
79
80
  end
80
- elsif is_ready
81
+ elsif ready_val
81
82
  # Then call each prepare hook, which may return a different value
82
83
  # for that argument, or may return a lazy object
83
84
  load_arguments_val = load_arguments(args)
@@ -85,21 +86,22 @@ module GraphQL
85
86
  @prepared_arguments = loaded_args
86
87
  Schema::Validator.validate!(self.class.validators, object, context, loaded_args, as: @field)
87
88
  # Then call `authorized?`, which may raise or may return a lazy object
88
- authorized_val = if loaded_args.any?
89
+ raw_authorized_val = if loaded_args.any?
89
90
  authorized?(**loaded_args)
90
91
  else
91
92
  authorized?
92
93
  end
93
- context.query.after_lazy(authorized_val) do |(authorized_result, early_return)|
94
+ context.query.after_lazy(raw_authorized_val) do |authorized_val|
94
95
  # If the `authorized?` returned two values, `false, early_return`,
95
96
  # then use the early return value instead of continuing
96
- if early_return
97
+ if authorized_val.is_a?(Array)
98
+ authorized_result, early_return = authorized_val
97
99
  if authorized_result == false
98
100
  early_return
99
101
  else
100
102
  raise "Unexpected result from #authorized? (expected `true`, `false` or `[false, {...}]`): [#{authorized_result.inspect}, #{early_return.inspect}]"
101
103
  end
102
- elsif authorized_result
104
+ elsif authorized_val
103
105
  # Finally, all the hooks have passed, so resolve it
104
106
  if loaded_args.any?
105
107
  public_send(self.class.resolve_method, **loaded_args)
@@ -133,7 +133,7 @@ module GraphQL
133
133
  if all_errors.frozen? # It's empty
134
134
  all_errors = []
135
135
  end
136
- interpolation_vars = { validated: validated.graphql_name }
136
+ interpolation_vars = { validated: validated.graphql_name, value: value.inspect }
137
137
  if errors.is_a?(String)
138
138
  all_errors << (errors % interpolation_vars)
139
139
  else
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module GraphQL
3
- VERSION = "2.0.26"
3
+ VERSION = "2.0.27"
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: 2.0.26
4
+ version: 2.0.27
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-08-08 00:00:00.000000000 Z
11
+ date: 2023-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark-ips