graphql 2.5.23 → 2.5.24

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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/lib/graphql/analysis.rb +20 -13
  3. data/lib/graphql/execution/field_resolve_step.rb +631 -0
  4. data/lib/graphql/execution/finalize.rb +217 -0
  5. data/lib/graphql/execution/input_values.rb +261 -0
  6. data/lib/graphql/execution/interpreter/handles_raw_value.rb +6 -0
  7. data/lib/graphql/execution/load_argument_step.rb +64 -0
  8. data/lib/graphql/execution/next.rb +23 -5
  9. data/lib/graphql/execution/prepare_object_step.rb +128 -0
  10. data/lib/graphql/execution/runner.rb +410 -0
  11. data/lib/graphql/execution/selections_step.rb +91 -0
  12. data/lib/graphql/execution.rb +2 -2
  13. data/lib/graphql/execution_error.rb +1 -1
  14. data/lib/graphql/query/context.rb +6 -0
  15. data/lib/graphql/query/partial.rb +18 -3
  16. data/lib/graphql/query.rb +10 -1
  17. data/lib/graphql/runtime_error.rb +6 -0
  18. data/lib/graphql/schema/directive.rb +23 -9
  19. data/lib/graphql/schema/field/connection_extension.rb +2 -15
  20. data/lib/graphql/schema/field/scope_extension.rb +0 -4
  21. data/lib/graphql/schema/field.rb +20 -20
  22. data/lib/graphql/schema/field_extension.rb +11 -41
  23. data/lib/graphql/schema/interface.rb +26 -0
  24. data/lib/graphql/schema/list.rb +4 -0
  25. data/lib/graphql/schema/member/base_dsl_methods.rb +0 -10
  26. data/lib/graphql/schema/resolver.rb +2 -2
  27. data/lib/graphql/schema.rb +12 -10
  28. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +25 -25
  29. data/lib/graphql/subscriptions.rb +15 -0
  30. data/lib/graphql/tracing/trace.rb +6 -0
  31. data/lib/graphql/unauthorized_error.rb +1 -1
  32. data/lib/graphql/version.rb +1 -1
  33. data/lib/graphql.rb +1 -3
  34. metadata +10 -7
  35. data/lib/graphql/execution/next/field_resolve_step.rb +0 -743
  36. data/lib/graphql/execution/next/load_argument_step.rb +0 -64
  37. data/lib/graphql/execution/next/prepare_object_step.rb +0 -129
  38. data/lib/graphql/execution/next/runner.rb +0 -411
  39. data/lib/graphql/execution/next/selections_step.rb +0 -37
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 724e526bb33dee5a8b39cb04b4d42f2e969e45aafe73581c5bdd02177cfa1347
4
- data.tar.gz: f211ca87d49c5077b0ae4744ce5956795835a6405a07e8782970cde14d172d7e
3
+ metadata.gz: edd07077eba1bb80e09f60cefbb284c8f3d520c89f515708e62a1ea63e10eeee
4
+ data.tar.gz: 921a1370ea598626b4248ea8723f0361550686d3eabd39b9fb8d234642c7b5dd
5
5
  SHA512:
6
- metadata.gz: 5d9c249f5d7bbe3ef06070cf52b04586eedf2df06f7c1fc95c6ab47bdc8182218fff2281d76a3f2a18bef4f1ad9c508901e6c7a3f882d28390afdd2f4dca6fd0
7
- data.tar.gz: 5179a34bc5c34769021fab1dff6384c22f73f776dc994a82f9bce635ddf6ead05ec0a3d2ff37bfcedbc892d87d2d7a82b08eab4e4cf319ee390e2c5a34db76fa
6
+ metadata.gz: 68dd9c0b0d92d1787dfc76a163d2a057377466246814e694c021cb2a9e994d04974369b74cdb591db7581cc2987e0527e86073554669a77cc9c3be07dfa4c68a
7
+ data.tar.gz: ab56518a1d21932d0a9026e76340e9fc4b5d3088c3e002ddc002c6afec4171a86b9778a0f82878ead52d57ac8ea950b0a7aa68cf67aa54a77b600f7cd45d1eca
@@ -40,13 +40,13 @@ module GraphQL
40
40
  end
41
41
  end
42
42
 
43
- multiplex_results = multiplex_analyzers.map(&:result)
44
- multiplex_errors = analysis_errors(multiplex_results)
45
43
 
44
+ multiplex_analyzers.map!(&:result)
45
+ multiplex_errors = analysis_errors(EmptyObjects::EMPTY_ARRAY, multiplex_analyzers)
46
46
  multiplex.queries.each_with_index do |query, idx|
47
- query.analysis_errors = multiplex_errors + analysis_errors(query_results[idx])
47
+ query.analysis_errors = analysis_errors(multiplex_errors, query_results[idx])
48
48
  end
49
- multiplex_results
49
+ multiplex_analyzers
50
50
  end
51
51
  end
52
52
 
@@ -55,13 +55,11 @@ module GraphQL
55
55
  # @return [Array<Any>] Results from those analyzers
56
56
  def analyze_query(query, analyzers, multiplex_analyzers: [])
57
57
  query.current_trace.analyze_query(query: query) do
58
- query_analyzers = analyzers
59
- .map { |analyzer| analyzer.new(query) }
60
- .tap { _1.select!(&:analyze?) }
61
-
58
+ query_analyzers = analyzers.map { |analyzer| analyzer.new(query) }
59
+ query_analyzers.select!(&:analyze?)
62
60
  analyzers_to_run = query_analyzers + multiplex_analyzers
63
- if !analyzers_to_run.empty?
64
61
 
62
+ if !analyzers_to_run.empty?
65
63
  analyzers_to_run.select!(&:visit?)
66
64
  if !analyzers_to_run.empty?
67
65
  visitor = GraphQL::Analysis::Visitor.new(
@@ -79,18 +77,27 @@ module GraphQL
79
77
 
80
78
  query_analyzers.map(&:result)
81
79
  else
82
- []
80
+ EmptyObjects::EMPTY_ARRAY
83
81
  end
84
82
  end
85
83
  rescue TimeoutError => err
86
84
  [err]
87
85
  rescue GraphQL::UnauthorizedError, GraphQL::ExecutionError
88
86
  # This error was raised during analysis and will be returned the client before execution
89
- []
87
+ EmptyObjects::EMPTY_ARRAY
90
88
  end
91
89
 
92
- def analysis_errors(results)
93
- results.flatten.tap { _1.select! { |r| r.is_a?(GraphQL::AnalysisError) } }
90
+ def analysis_errors(parent_errors, results)
91
+ if !results.empty?
92
+ results = results.flatten
93
+ results.select! { |r| r.is_a?(GraphQL::AnalysisError) }
94
+ end
95
+
96
+ if parent_errors.empty?
97
+ results
98
+ else
99
+ parent_errors + results
100
+ end
94
101
  end
95
102
  end
96
103
  end