graphql 1.10.0.pre1 → 1.10.0.pre2

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.
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