graphql 1.10.0.pre1 → 1.10.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/graphql/core.rb +1 -0
  3. data/lib/generators/graphql/install_generator.rb +1 -0
  4. data/lib/generators/graphql/mutation_generator.rb +1 -1
  5. data/lib/generators/graphql/templates/base_field.erb +0 -4
  6. data/lib/generators/graphql/templates/base_mutation.erb +8 -0
  7. data/lib/generators/graphql/templates/graphql_controller.erb +5 -0
  8. data/lib/generators/graphql/templates/mutation.erb +1 -1
  9. data/lib/generators/graphql/templates/schema.erb +1 -1
  10. data/lib/graphql.rb +4 -1
  11. data/lib/graphql/analysis/ast.rb +14 -13
  12. data/lib/graphql/analysis/ast/analyzer.rb +23 -4
  13. data/lib/graphql/analysis/ast/field_usage.rb +1 -1
  14. data/lib/graphql/analysis/ast/max_query_complexity.rb +3 -3
  15. data/lib/graphql/analysis/ast/max_query_depth.rb +7 -3
  16. data/lib/graphql/analysis/ast/query_complexity.rb +2 -2
  17. data/lib/graphql/analysis/ast/visitor.rb +3 -3
  18. data/lib/graphql/base_type.rb +1 -1
  19. data/lib/graphql/directive.rb +0 -1
  20. data/lib/graphql/directive/deprecated_directive.rb +1 -12
  21. data/lib/graphql/execution/errors.rb +4 -8
  22. data/lib/graphql/execution/interpreter.rb +5 -11
  23. data/lib/graphql/execution/interpreter/runtime.rb +56 -48
  24. data/lib/graphql/execution/lazy/lazy_method_map.rb +4 -0
  25. data/lib/graphql/execution/lookahead.rb +5 -5
  26. data/lib/graphql/execution/multiplex.rb +10 -0
  27. data/lib/graphql/function.rb +1 -1
  28. data/lib/graphql/input_object_type.rb +3 -2
  29. data/lib/graphql/interface_type.rb +1 -1
  30. data/lib/graphql/introspection/base_object.rb +2 -5
  31. data/lib/graphql/introspection/directive_type.rb +1 -1
  32. data/lib/graphql/introspection/entry_points.rb +6 -6
  33. data/lib/graphql/introspection/schema_type.rb +1 -6
  34. data/lib/graphql/introspection/type_type.rb +5 -5
  35. data/lib/graphql/language.rb +1 -1
  36. data/lib/graphql/language/block_string.rb +2 -2
  37. data/lib/graphql/language/definition_slice.rb +21 -10
  38. data/lib/graphql/language/document_from_schema_definition.rb +42 -42
  39. data/lib/graphql/language/lexer.rb +49 -48
  40. data/lib/graphql/language/lexer.rl +49 -48
  41. data/lib/graphql/language/nodes.rb +11 -8
  42. data/lib/graphql/language/parser.rb +4 -1
  43. data/lib/graphql/language/parser.y +4 -1
  44. data/lib/graphql/language/token.rb +1 -1
  45. data/lib/graphql/pagination/array_connection.rb +0 -1
  46. data/lib/graphql/pagination/connection.rb +31 -10
  47. data/lib/graphql/pagination/connections.rb +7 -2
  48. data/lib/graphql/pagination/relation_connection.rb +1 -7
  49. data/lib/graphql/query.rb +9 -4
  50. data/lib/graphql/query/arguments.rb +8 -1
  51. data/lib/graphql/query/literal_input.rb +2 -1
  52. data/lib/graphql/query/variables.rb +5 -1
  53. data/lib/graphql/relay/base_connection.rb +3 -3
  54. data/lib/graphql/relay/relation_connection.rb +9 -5
  55. data/lib/graphql/schema.rb +699 -153
  56. data/lib/graphql/schema/argument.rb +20 -4
  57. data/lib/graphql/schema/build_from_definition.rb +64 -31
  58. data/lib/graphql/schema/built_in_types.rb +5 -5
  59. data/lib/graphql/schema/directive.rb +16 -1
  60. data/lib/graphql/schema/directive/deprecated.rb +18 -0
  61. data/lib/graphql/schema/directive/feature.rb +1 -1
  62. data/lib/graphql/schema/enum.rb +39 -3
  63. data/lib/graphql/schema/field.rb +39 -9
  64. data/lib/graphql/schema/field/connection_extension.rb +4 -4
  65. data/lib/graphql/schema/find_inherited_value.rb +13 -0
  66. data/lib/graphql/schema/finder.rb +13 -11
  67. data/lib/graphql/schema/input_object.rb +109 -1
  68. data/lib/graphql/schema/interface.rb +8 -7
  69. data/lib/graphql/schema/introspection_system.rb +104 -36
  70. data/lib/graphql/schema/late_bound_type.rb +1 -0
  71. data/lib/graphql/schema/list.rb +26 -0
  72. data/lib/graphql/schema/loader.rb +10 -4
  73. data/lib/graphql/schema/member.rb +3 -0
  74. data/lib/graphql/schema/member/base_dsl_methods.rb +23 -13
  75. data/lib/graphql/schema/member/build_type.rb +1 -1
  76. data/lib/graphql/schema/member/has_arguments.rb +2 -2
  77. data/lib/graphql/schema/member/has_fields.rb +15 -6
  78. data/lib/graphql/schema/member/instrumentation.rb +6 -1
  79. data/lib/graphql/schema/member/type_system_helpers.rb +1 -1
  80. data/lib/graphql/schema/member/validates_input.rb +33 -0
  81. data/lib/graphql/schema/non_null.rb +25 -0
  82. data/lib/graphql/schema/object.rb +14 -1
  83. data/lib/graphql/schema/printer.rb +4 -3
  84. data/lib/graphql/schema/relay_classic_mutation.rb +5 -1
  85. data/lib/graphql/schema/resolver.rb +20 -2
  86. data/lib/graphql/schema/scalar.rb +18 -3
  87. data/lib/graphql/schema/subscription.rb +1 -1
  88. data/lib/graphql/schema/timeout_middleware.rb +3 -2
  89. data/lib/graphql/schema/traversal.rb +1 -1
  90. data/lib/graphql/schema/type_expression.rb +22 -24
  91. data/lib/graphql/schema/validation.rb +17 -1
  92. data/lib/graphql/schema/warden.rb +46 -17
  93. data/lib/graphql/schema/wrapper.rb +1 -1
  94. data/lib/graphql/static_validation/base_visitor.rb +10 -6
  95. data/lib/graphql/static_validation/definition_dependencies.rb +21 -12
  96. data/lib/graphql/static_validation/rules/fields_are_defined_on_type.rb +4 -4
  97. data/lib/graphql/static_validation/rules/fragment_spreads_are_possible.rb +3 -3
  98. data/lib/graphql/static_validation/type_stack.rb +2 -2
  99. data/lib/graphql/static_validation/validator.rb +1 -1
  100. data/lib/graphql/subscriptions.rb +38 -13
  101. data/lib/graphql/subscriptions/event.rb +24 -7
  102. data/lib/graphql/subscriptions/instrumentation.rb +1 -1
  103. data/lib/graphql/subscriptions/subscription_root.rb +0 -1
  104. data/lib/graphql/tracing/active_support_notifications_tracing.rb +10 -10
  105. data/lib/graphql/tracing/platform_tracing.rb +1 -2
  106. data/lib/graphql/tracing/skylight_tracing.rb +1 -0
  107. data/lib/graphql/unresolved_type_error.rb +2 -2
  108. data/lib/graphql/upgrader/member.rb +1 -1
  109. data/lib/graphql/version.rb +1 -1
  110. metadata +5 -2
@@ -9,16 +9,16 @@ module GraphQL
9
9
  if field.nil?
10
10
  if parent_type.kind.union?
11
11
  add_error(GraphQL::StaticValidation::FieldsHaveAppropriateSelectionsError.new(
12
- "Selections can't be made directly on unions (see selections on #{parent_type.name})",
12
+ "Selections can't be made directly on unions (see selections on #{parent_type.graphql_name})",
13
13
  nodes: parent,
14
- node_name: parent_type.name
14
+ node_name: parent_type.graphql_name
15
15
  ))
16
16
  else
17
17
  add_error(GraphQL::StaticValidation::FieldsAreDefinedOnTypeError.new(
18
- "Field '#{node.name}' doesn't exist on type '#{parent_type.name}'",
18
+ "Field '#{node.name}' doesn't exist on type '#{parent_type.graphql_name}'",
19
19
  nodes: node,
20
20
  field: node.name,
21
- type: parent_type.name
21
+ type: parent_type.graphql_name
22
22
  ))
23
23
  end
24
24
  else
@@ -50,12 +50,12 @@ module GraphQL
50
50
  if child_types.none? { |c| parent_types.include?(c) }
51
51
  name = node.respond_to?(:name) ? " #{node.name}" : ""
52
52
  add_error(GraphQL::StaticValidation::FragmentSpreadsArePossibleError.new(
53
- "Fragment#{name} on #{child_type.name} can't be spread inside #{parent_type.name}",
53
+ "Fragment#{name} on #{child_type.graphql_name} can't be spread inside #{parent_type.graphql_name}",
54
54
  nodes: node,
55
55
  path: path,
56
56
  fragment_name: name.empty? ? "unknown" : name,
57
- type: child_type.name,
58
- parent: parent_type.name
57
+ type: child_type.graphql_name,
58
+ parent: parent_type.graphql_name
59
59
  ))
60
60
  end
61
61
  end
@@ -55,7 +55,7 @@ module GraphQL
55
55
  module FragmentWithTypeStrategy
56
56
  def push(stack, node)
57
57
  object_type = if node.type
58
- stack.schema.types.fetch(node.type.name, nil)
58
+ stack.schema.get_type(node.type.name)
59
59
  else
60
60
  stack.object_types.last
61
61
  end
@@ -148,7 +148,7 @@ module GraphQL
148
148
  if stack.argument_definitions.last
149
149
  arg_type = stack.argument_definitions.last.type.unwrap
150
150
  if arg_type.kind.input_object?
151
- argument_defn = arg_type.input_fields[node.name]
151
+ argument_defn = arg_type.arguments[node.name]
152
152
  else
153
153
  argument_defn = nil
154
154
  end
@@ -23,7 +23,7 @@ module GraphQL
23
23
  # @return [Array<Hash>]
24
24
  def validate(query, validate: true)
25
25
  query.trace("validate", { validate: validate, query: query }) do
26
- can_skip_rewrite = query.context.interpreter? && query.schema.using_ast_analysis?
26
+ can_skip_rewrite = query.context.interpreter? && query.schema.using_ast_analysis? && query.schema.is_a?(Class)
27
27
  errors = if validate == false && can_skip_rewrite
28
28
  []
29
29
  else
@@ -18,12 +18,17 @@ module GraphQL
18
18
 
19
19
  # @see {Subscriptions#initialize} for options, concrete implementations may add options.
20
20
  def self.use(defn, options = {})
21
- schema = defn.target
22
- options[:schema] = schema
23
- schema.subscriptions = self.new(options)
21
+ schema = defn.is_a?(Class) ? defn : defn.target
22
+
23
+ if schema.subscriptions
24
+ raise ArgumentError, "Can't reinstall subscriptions. #{schema} is using #{schema.subscriptions}, can't also add #{self}"
25
+ end
26
+
24
27
  instrumentation = Subscriptions::Instrumentation.new(schema: schema)
25
- defn.instrument(:field, instrumentation)
26
28
  defn.instrument(:query, instrumentation)
29
+ defn.instrument(:field, instrumentation)
30
+ options[:schema] = schema
31
+ schema.subscriptions = self.new(options)
27
32
  nil
28
33
  end
29
34
 
@@ -124,7 +129,7 @@ module GraphQL
124
129
  # @yieldparam subscription_id [String]
125
130
  # @return [void]
126
131
  def each_subscription_id(event)
127
- raise NotImplementedError
132
+ raise GraphQL::RequiredImplementationMissingError
128
133
  end
129
134
 
130
135
  # The system wants to send an update to this subscription.
@@ -132,7 +137,7 @@ module GraphQL
132
137
  # @param subscription_id [String]
133
138
  # @return [Hash] Containing required keys
134
139
  def read_subscription(subscription_id)
135
- raise NotImplementedError
140
+ raise GraphQL::RequiredImplementationMissingError
136
141
  end
137
142
 
138
143
  # A subscription query was re-evaluated, returning `result`.
@@ -141,7 +146,7 @@ module GraphQL
141
146
  # @param result [Hash]
142
147
  # @return [void]
143
148
  def deliver(subscription_id, result)
144
- raise NotImplementedError
149
+ raise GraphQL::RequiredImplementationMissingError
145
150
  end
146
151
 
147
152
  # `query` was executed and found subscriptions to `events`.
@@ -150,7 +155,7 @@ module GraphQL
150
155
  # @param events [Array<GraphQL::Subscriptions::Event>]
151
156
  # @return [void]
152
157
  def write_subscription(query, events)
153
- raise NotImplementedError
158
+ raise GraphQL::RequiredImplementationMissingError
154
159
  end
155
160
 
156
161
  # A subscription was terminated server-side.
@@ -158,7 +163,7 @@ module GraphQL
158
163
  # @param subscription_id [String]
159
164
  # @return void.
160
165
  def delete_subscription(subscription_id)
161
- raise NotImplementedError
166
+ raise GraphQL::RequiredImplementationMissingError
162
167
  end
163
168
 
164
169
  # @return [String] A new unique identifier for a subscription
@@ -188,7 +193,11 @@ module GraphQL
188
193
  # @return [Any] normalized arguments value
189
194
  def normalize_arguments(event_name, arg_owner, args)
190
195
  case arg_owner
191
- when GraphQL::Field, GraphQL::InputObjectType
196
+ when GraphQL::Field, GraphQL::InputObjectType, GraphQL::Schema::Field, Class
197
+ if arg_owner.is_a?(Class) && !arg_owner.kind.input_object?
198
+ # it's a type, but not an input object
199
+ return args
200
+ end
192
201
  normalized_args = {}
193
202
  missing_arg_names = []
194
203
  args.each do |k, v|
@@ -202,16 +211,32 @@ module GraphQL
202
211
  end
203
212
 
204
213
  if arg_defn
205
- normalized_args[normalized_arg_name] = normalize_arguments(event_name, arg_defn.type, v)
214
+ if arg_defn.loads
215
+ normalized_arg_name = arg_defn.keyword.to_s
216
+ end
217
+ normalized = normalize_arguments(event_name, arg_defn.type, v)
218
+ normalized_args[normalized_arg_name] = normalized
206
219
  else
207
220
  # Couldn't find a matching argument definition
208
221
  missing_arg_names << arg_name
209
222
  end
210
223
  end
211
224
 
225
+ # Backfill default values so that trigger arguments
226
+ # match query arguments.
227
+ arg_owner.arguments.each do |name, arg_defn|
228
+ if arg_defn.default_value? && !normalized_args.key?(arg_defn.name)
229
+ normalized_args[arg_defn.name] = arg_defn.default_value
230
+ end
231
+ end
232
+
212
233
  if missing_arg_names.any?
213
234
  arg_owner_name = if arg_owner.is_a?(GraphQL::Field)
214
235
  "Subscription.#{arg_owner.name}"
236
+ elsif arg_owner.is_a?(GraphQL::Schema::Field)
237
+ arg_owner.path
238
+ elsif arg_owner.is_a?(Class)
239
+ arg_owner.graphql_name
215
240
  else
216
241
  arg_owner.to_s
217
242
  end
@@ -219,9 +244,9 @@ module GraphQL
219
244
  end
220
245
 
221
246
  normalized_args
222
- when GraphQL::ListType
247
+ when GraphQL::ListType, GraphQL::Schema::List
223
248
  args.map { |a| normalize_arguments(event_name, arg_owner.of_type, a) }
224
- when GraphQL::NonNullType
249
+ when GraphQL::NonNullType, GraphQL::Schema::NonNull
225
250
  normalize_arguments(event_name, arg_owner.of_type, args)
226
251
  else
227
252
  args
@@ -37,7 +37,7 @@ module GraphQL
37
37
  arguments
38
38
  when Hash
39
39
  if field.is_a?(GraphQL::Schema::Field)
40
- stringify_args(arguments)
40
+ stringify_args(field, arguments)
41
41
  else
42
42
  GraphQL::Query::LiteralInput.from_arguments(
43
43
  arguments,
@@ -49,27 +49,44 @@ module GraphQL
49
49
  raise ArgumentError, "Unexpected arguments: #{arguments}, must be Hash or GraphQL::Arguments"
50
50
  end
51
51
 
52
- sorted_h = normalized_args.to_h.sort.to_h
52
+ sorted_h = stringify_args(field, normalized_args.to_h)
53
53
  Serialize.dump_recursive([scope, name, sorted_h])
54
54
  end
55
55
 
56
56
  class << self
57
57
  private
58
- def stringify_args(args)
58
+ def stringify_args(arg_owner, args)
59
59
  case args
60
60
  when Hash
61
61
  next_args = {}
62
62
  args.each do |k, v|
63
- str_k = GraphQL::Schema::Member::BuildType.camelize(k.to_s)
64
- next_args[str_k] = stringify_args(v)
63
+ arg_name = k.to_s
64
+ camelized_arg_name = GraphQL::Schema::Member::BuildType.camelize(arg_name)
65
+ arg_defn = get_arg_definition(arg_owner, camelized_arg_name)
66
+
67
+ if arg_defn
68
+ normalized_arg_name = camelized_arg_name
69
+ else
70
+ normalized_arg_name = arg_name
71
+ arg_defn = get_arg_definition(arg_owner, normalized_arg_name)
72
+ end
73
+
74
+ next_args[normalized_arg_name] = stringify_args(arg_defn.type, v)
65
75
  end
66
- next_args
76
+ # Make sure they're deeply sorted
77
+ next_args.sort.to_h
67
78
  when Array
68
- args.map { |a| stringify_args(a) }
79
+ args.map { |a| stringify_args(arg_owner, a) }
80
+ when GraphQL::Schema::InputObject
81
+ stringify_args(arg_owner, args.to_h)
69
82
  else
70
83
  args
71
84
  end
72
85
  end
86
+
87
+ def get_arg_definition(arg_owner, arg_name)
88
+ arg_owner.arguments[arg_name] || arg_owner.arguments.each_value.find { |v| v.keyword.to_s == arg_name }
89
+ end
73
90
  end
74
91
  end
75
92
  end
@@ -11,7 +11,7 @@ module GraphQL
11
11
  end
12
12
 
13
13
  def instrument(type, field)
14
- if type == @schema.subscription
14
+ if type == @schema.subscription.graphql_definition
15
15
  # This is a root field of `subscription`
16
16
  subscribing_resolve_proc = SubscriptionRegistrationResolve.new(field.resolve_proc)
17
17
  field.redefine(resolve: subscribing_resolve_proc)
@@ -44,7 +44,6 @@ module GraphQL
44
44
  context: context,
45
45
  field: field,
46
46
  )
47
- # TODO compat with non-class-based subscriptions?
48
47
  value
49
48
  elsif context.query.subscription_topic == Subscriptions::Event.serialize(
50
49
  field.name,
@@ -8,19 +8,19 @@ module GraphQL
8
8
  module ActiveSupportNotificationsTracing
9
9
  # A cache of frequently-used keys to avoid needless string allocations
10
10
  KEYS = {
11
- "lex" => "graphql.lex",
12
- "parse" => "graphql.parse",
13
- "validate" => "graphql.validate",
14
- "analyze_multiplex" => "graphql.analyze_multiplex",
15
- "analyze_query" => "graphql.analyze_query",
16
- "execute_query" => "graphql.execute_query",
17
- "execute_query_lazy" => "graphql.execute_query_lazy",
18
- "execute_field" => "graphql.execute_field",
19
- "execute_field_lazy" => "graphql.execute_field_lazy",
11
+ "lex" => "lex.graphql",
12
+ "parse" => "parse.graphql",
13
+ "validate" => "validate.graphql",
14
+ "analyze_multiplex" => "analyze_multiplex.graphql",
15
+ "analyze_query" => "analyze_query.graphql",
16
+ "execute_query" => "execute_query.graphql",
17
+ "execute_query_lazy" => "execute_query_lazy.graphql",
18
+ "execute_field" => "execute_field.graphql",
19
+ "execute_field_lazy" => "execute_field_lazy.graphql",
20
20
  }
21
21
 
22
22
  def self.trace(key, metadata)
23
- prefixed_key = KEYS[key] || "graphql.#{key}"
23
+ prefixed_key = KEYS[key] || "#{key}.graphql"
24
24
  ActiveSupport::Notifications.instrument(prefixed_key, metadata) do
25
25
  yield
26
26
  end
@@ -39,8 +39,7 @@ module GraphQL
39
39
  end
40
40
 
41
41
  return_type = field.type.unwrap
42
- # Handle LateBoundTypes, which don't have `#kind`
43
- trace_field = if return_type.respond_to?(:kind) && (return_type.kind.scalar? || return_type.kind.enum?)
42
+ trace_field = if return_type.kind.scalar? || return_type.kind.enum?
44
43
  (field.trace.nil? && @trace_scalars) || field.trace
45
44
  else
46
45
  true
@@ -18,6 +18,7 @@ module GraphQL
18
18
  # This is not advised if you run more than one query per HTTP request, for example, with `graphql-client` or multiplexing.
19
19
  # It can also be specified per-query with `context[:set_skylight_endpoint_name]`.
20
20
  def initialize(options = {})
21
+ warn("GraphQL::Tracing::SkylightTracing is deprecated, please enable Skylight's GraphQL probe instead: https://www.skylight.io/support/getting-more-from-skylight#graphql.")
21
22
  @set_endpoint_name = options.fetch(:set_endpoint_name, false)
22
23
  super
23
24
  end
@@ -24,8 +24,8 @@ module GraphQL
24
24
  @parent_type = parent_type
25
25
  @resolved_type = resolved_type
26
26
  @possible_types = possible_types
27
- message = "The value from \"#{field.name}\" on \"#{parent_type}\" could not be resolved to \"#{field.type}\". " \
28
- "(Received: `#{resolved_type.inspect}`, Expected: [#{possible_types.map(&:inspect).join(", ")}]) " \
27
+ message = "The value from \"#{field.graphql_name}\" on \"#{parent_type.graphql_name}\" could not be resolved to \"#{field.type.to_type_signature}\". " \
28
+ "(Received: `#{resolved_type.inspect}`, Expected: [#{possible_types.map(&:graphql_name).join(", ")}]) " \
29
29
  "Make sure you have defined a `resolve_type` proc on your schema and that value `#{value.inspect}` " \
30
30
  "gets resolved to a valid type. You may need to add your type to `orphan_types` if it implements an " \
31
31
  "interface but isn't a return type of any other field."
@@ -13,7 +13,7 @@ module GraphQL
13
13
  # @param input_text [String] Untransformed GraphQL-Ruby code
14
14
  # @return [String] The input text, with a transformation applied if necessary
15
15
  def apply(input_text)
16
- raise NotImplementedError, "Return transformed text here"
16
+ raise GraphQL::RequiredImplementationMissingError, "Return transformed text here"
17
17
  end
18
18
 
19
19
  # Recursively transform a `.define`-DSL-based type expression into a class-ready expression, for example:
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module GraphQL
3
- VERSION = "1.10.0.pre1"
3
+ VERSION = "1.10.0.pre2"
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.0.pre1
4
+ version: 1.10.0.pre2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Mosolgo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-10 00:00:00.000000000 Z
11
+ date: 2019-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark-ips
@@ -340,6 +340,7 @@ files:
340
340
  - lib/generators/graphql/templates/base_field.erb
341
341
  - lib/generators/graphql/templates/base_input_object.erb
342
342
  - lib/generators/graphql/templates/base_interface.erb
343
+ - lib/generators/graphql/templates/base_mutation.erb
343
344
  - lib/generators/graphql/templates/base_object.erb
344
345
  - lib/generators/graphql/templates/base_scalar.erb
345
346
  - lib/generators/graphql/templates/base_union.erb
@@ -546,6 +547,7 @@ files:
546
547
  - lib/graphql/schema/default_parse_error.rb
547
548
  - lib/graphql/schema/default_type_error.rb
548
549
  - lib/graphql/schema/directive.rb
550
+ - lib/graphql/schema/directive/deprecated.rb
549
551
  - lib/graphql/schema/directive/feature.rb
550
552
  - lib/graphql/schema/directive/include.rb
551
553
  - lib/graphql/schema/directive/skip.rb
@@ -579,6 +581,7 @@ files:
579
581
  - lib/graphql/schema/member/relay_shortcuts.rb
580
582
  - lib/graphql/schema/member/scoped.rb
581
583
  - lib/graphql/schema/member/type_system_helpers.rb
584
+ - lib/graphql/schema/member/validates_input.rb
582
585
  - lib/graphql/schema/middleware_chain.rb
583
586
  - lib/graphql/schema/mutation.rb
584
587
  - lib/graphql/schema/non_null.rb