graphql 2.0.20 → 2.0.21

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.

Potentially problematic release.


This version of graphql might be problematic. Click here for more details.

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