graphql 2.0.20 → 2.0.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/lib/graphql/backtrace/trace.rb +96 -0
  3. data/lib/graphql/backtrace.rb +6 -1
  4. data/lib/graphql/execution/interpreter/arguments.rb +1 -1
  5. data/lib/graphql/execution/interpreter/arguments_cache.rb +2 -3
  6. data/lib/graphql/execution/interpreter/runtime.rb +200 -161
  7. data/lib/graphql/execution/interpreter.rb +1 -1
  8. data/lib/graphql/filter.rb +7 -2
  9. data/lib/graphql/language/document_from_schema_definition.rb +25 -9
  10. data/lib/graphql/language/nodes.rb +2 -2
  11. data/lib/graphql/language/parser.rb +475 -458
  12. data/lib/graphql/language/parser.y +5 -1
  13. data/lib/graphql/pagination/connection.rb +5 -5
  14. data/lib/graphql/query/context.rb +13 -12
  15. data/lib/graphql/query/null_context.rb +1 -1
  16. data/lib/graphql/query.rb +9 -5
  17. data/lib/graphql/schema/argument.rb +7 -9
  18. data/lib/graphql/schema/build_from_definition.rb +15 -3
  19. data/lib/graphql/schema/enum_value.rb +2 -5
  20. data/lib/graphql/schema/field.rb +14 -13
  21. data/lib/graphql/schema/field_extension.rb +1 -4
  22. data/lib/graphql/schema/find_inherited_value.rb +2 -7
  23. data/lib/graphql/schema/member/has_arguments.rb +1 -1
  24. data/lib/graphql/schema/member/has_directives.rb +4 -6
  25. data/lib/graphql/schema/member/has_fields.rb +80 -36
  26. data/lib/graphql/schema/member/has_validators.rb +2 -2
  27. data/lib/graphql/schema/resolver.rb +4 -4
  28. data/lib/graphql/schema/validator.rb +1 -1
  29. data/lib/graphql/schema/warden.rb +3 -1
  30. data/lib/graphql/schema.rb +40 -11
  31. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +12 -4
  32. data/lib/graphql/static_validation/rules/fields_will_merge.rb +2 -2
  33. data/lib/graphql/tracing/appsignal_trace.rb +6 -0
  34. data/lib/graphql/tracing/legacy_trace.rb +65 -0
  35. data/lib/graphql/tracing/notifications_trace.rb +2 -1
  36. data/lib/graphql/tracing/platform_trace.rb +21 -19
  37. data/lib/graphql/tracing/prometheus_tracing/graphql_collector.rb +1 -1
  38. data/lib/graphql/tracing/trace.rb +75 -0
  39. data/lib/graphql/tracing.rb +3 -123
  40. data/lib/graphql/version.rb +1 -1
  41. data/lib/graphql.rb +4 -0
  42. metadata +5 -2
@@ -22,8 +22,9 @@ module GraphQL
22
22
  @include_introspection_types = include_introspection_types
23
23
  @include_built_in_scalars = include_built_in_scalars
24
24
  @include_built_in_directives = include_built_in_directives
25
+ @include_one_of = false
25
26
 
26
- filter = GraphQL::Filter.new(only: only, except: except)
27
+ filter = GraphQL::Filter.new(only: only, except: except, silence_deprecation_warning: true)
27
28
  if @schema.respond_to?(:visible?)
28
29
  filter = filter.merge(only: @schema.method(:visible?))
29
30
  end
@@ -245,20 +246,30 @@ module GraphQL
245
246
  end
246
247
 
247
248
  def build_directive_nodes(directives)
248
- if !include_built_in_directives
249
- directives = directives.reject { |directive| directive.default_directive? }
250
- end
251
-
252
249
  directives
253
250
  .map { |directive| build_directive_node(directive) }
254
251
  .sort_by(&:name)
255
252
  end
256
253
 
257
254
  def build_definition_nodes
258
- definitions = []
259
- definitions << build_schema_node if include_schema_node?
260
- definitions += build_directive_nodes(warden.directives)
261
- definitions += build_type_definition_nodes(warden.reachable_types)
255
+ dirs_to_build = warden.directives
256
+ if !include_built_in_directives
257
+ dirs_to_build = dirs_to_build.reject { |directive| directive.default_directive? }
258
+ end
259
+ dir_nodes = build_directive_nodes(dirs_to_build)
260
+
261
+ type_nodes = build_type_definition_nodes(warden.reachable_types)
262
+
263
+ if @include_one_of
264
+ # This may have been set to true when iterating over all types
265
+ dir_nodes.concat(build_directive_nodes([GraphQL::Schema::Directive::OneOf]))
266
+ end
267
+
268
+ definitions = [*dir_nodes, *type_nodes]
269
+ if include_schema_node?
270
+ definitions.unshift(build_schema_node)
271
+ end
272
+
262
273
  definitions
263
274
  end
264
275
 
@@ -318,6 +329,11 @@ module GraphQL
318
329
  )
319
330
  end
320
331
  end
332
+
333
+ # If this schema uses this built-in directive definition,
334
+ # include it in the print-out since it's not part of the spec yet.
335
+ @include_one_of ||= dir.class == GraphQL::Schema::Directive::OneOf
336
+
321
337
  GraphQL::Language::Nodes::Directive.new(
322
338
  name: dir.class.graphql_name,
323
339
  arguments: args
@@ -2,7 +2,7 @@
2
2
  module GraphQL
3
3
  module Language
4
4
  module Nodes
5
- NONE = [].freeze
5
+ NONE = GraphQL::EmptyObjects::EMPTY_ARRAY
6
6
  # {AbstractNode} is the base class for all nodes in a GraphQL AST.
7
7
  #
8
8
  # It provides some APIs for working with ASTs:
@@ -51,7 +51,7 @@ module GraphQL
51
51
  other.children == self.children
52
52
  end
53
53
 
54
- NO_CHILDREN = [].freeze
54
+ NO_CHILDREN = GraphQL::EmptyObjects::EMPTY_ARRAY
55
55
 
56
56
  # @return [Array<GraphQL::Language::Nodes::AbstractNode>] all nodes in the tree below this one
57
57
  def children