graphql 2.0.20 → 2.0.22

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 (50) 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 +33 -33
  6. data/lib/graphql/execution/interpreter/runtime.rb +274 -209
  7. data/lib/graphql/execution/interpreter.rb +2 -3
  8. data/lib/graphql/execution/lookahead.rb +1 -1
  9. data/lib/graphql/filter.rb +8 -2
  10. data/lib/graphql/language/document_from_schema_definition.rb +37 -17
  11. data/lib/graphql/language/lexer.rb +5 -3
  12. data/lib/graphql/language/nodes.rb +2 -2
  13. data/lib/graphql/language/parser.rb +475 -458
  14. data/lib/graphql/language/parser.y +5 -1
  15. data/lib/graphql/pagination/connection.rb +5 -5
  16. data/lib/graphql/query/context.rb +22 -12
  17. data/lib/graphql/query/null_context.rb +4 -1
  18. data/lib/graphql/query.rb +25 -11
  19. data/lib/graphql/schema/argument.rb +12 -14
  20. data/lib/graphql/schema/build_from_definition.rb +15 -3
  21. data/lib/graphql/schema/enum_value.rb +2 -5
  22. data/lib/graphql/schema/field/connection_extension.rb +1 -1
  23. data/lib/graphql/schema/field.rb +17 -16
  24. data/lib/graphql/schema/field_extension.rb +1 -4
  25. data/lib/graphql/schema/find_inherited_value.rb +2 -7
  26. data/lib/graphql/schema/input_object.rb +1 -1
  27. data/lib/graphql/schema/member/has_arguments.rb +10 -8
  28. data/lib/graphql/schema/member/has_directives.rb +4 -6
  29. data/lib/graphql/schema/member/has_fields.rb +80 -36
  30. data/lib/graphql/schema/member/has_validators.rb +2 -2
  31. data/lib/graphql/schema/object.rb +1 -1
  32. data/lib/graphql/schema/printer.rb +3 -1
  33. data/lib/graphql/schema/relay_classic_mutation.rb +1 -1
  34. data/lib/graphql/schema/resolver.rb +8 -8
  35. data/lib/graphql/schema/validator.rb +1 -1
  36. data/lib/graphql/schema/warden.rb +11 -3
  37. data/lib/graphql/schema.rb +41 -12
  38. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +12 -4
  39. data/lib/graphql/static_validation/rules/fields_will_merge.rb +2 -2
  40. data/lib/graphql/tracing/appsignal_trace.rb +6 -0
  41. data/lib/graphql/tracing/legacy_trace.rb +65 -0
  42. data/lib/graphql/tracing/notifications_trace.rb +5 -1
  43. data/lib/graphql/tracing/platform_trace.rb +21 -19
  44. data/lib/graphql/tracing/prometheus_tracing/graphql_collector.rb +1 -1
  45. data/lib/graphql/tracing/trace.rb +75 -0
  46. data/lib/graphql/tracing.rb +4 -123
  47. data/lib/graphql/version.rb +1 -1
  48. data/lib/graphql.rb +4 -0
  49. data/readme.md +1 -1
  50. metadata +6 -3
@@ -1,4 +1,7 @@
1
1
  # frozen_string_literal: true
2
+ require "graphql/tracing/trace"
3
+ require "graphql/tracing/legacy_trace"
4
+
2
5
  # Legacy tracing:
3
6
  require "graphql/tracing/active_support_notifications_tracing"
4
7
  require "graphql/tracing/platform_tracing"
@@ -11,6 +14,7 @@ require "graphql/tracing/statsd_tracing"
11
14
  require "graphql/tracing/prometheus_tracing"
12
15
 
13
16
  # New Tracing:
17
+ require "graphql/tracing/active_support_notifications_trace"
14
18
  require "graphql/tracing/platform_trace"
15
19
  require "graphql/tracing/appoptics_trace"
16
20
  require "graphql/tracing/appsignal_trace"
@@ -26,131 +30,8 @@ end
26
30
 
27
31
  module GraphQL
28
32
  module Tracing
29
- class Trace
30
- # @param multiplex [GraphQL::Execution::Multiplex, nil]
31
- # @param query [GraphQL::Query, nil]
32
- def initialize(multiplex: nil, query: nil, **_options)
33
- @multiplex = multiplex
34
- @query = query
35
- end
36
-
37
- def lex(query_string:)
38
- yield
39
- end
40
-
41
- def parse(query_string:)
42
- yield
43
- end
44
-
45
- def validate(query:, validate:)
46
- yield
47
- end
48
-
49
- def analyze_multiplex(multiplex:)
50
- yield
51
- end
52
-
53
- def analyze_query(query:)
54
- yield
55
- end
56
-
57
- def execute_multiplex(multiplex:)
58
- yield
59
- end
60
-
61
- def execute_query(query:)
62
- yield
63
- end
64
-
65
- def execute_query_lazy(query:, multiplex:)
66
- yield
67
- end
68
-
69
- def execute_field(field:, query:, ast_node:, arguments:, object:)
70
- yield
71
- end
72
-
73
- def execute_field_lazy(field:, query:, ast_node:, arguments:, object:)
74
- yield
75
- end
76
-
77
- def authorized(query:, type:, object:)
78
- yield
79
- end
80
-
81
- def authorized_lazy(query:, type:, object:)
82
- yield
83
- end
84
-
85
- def resolve_type(query:, type:, object:)
86
- yield
87
- end
88
-
89
- def resolve_type_lazy(query:, type:, object:)
90
- yield
91
- end
92
- end
93
-
94
33
  NullTrace = Trace.new
95
34
 
96
- class LegacyTrace < Trace
97
- def lex(query_string:, &block)
98
- (@multiplex || @query).trace("lex", { query_string: query_string }, &block)
99
- end
100
-
101
- def parse(query_string:, &block)
102
- (@multiplex || @query).trace("parse", { query_string: query_string }, &block)
103
- end
104
-
105
- def validate(query:, validate:, &block)
106
- query.trace("validate", { validate: validate, query: query }, &block)
107
- end
108
-
109
- def analyze_multiplex(multiplex:, &block)
110
- multiplex.trace("analyze_multiplex", { multiplex: multiplex }, &block)
111
- end
112
-
113
- def analyze_query(query:, &block)
114
- query.trace("analyze_query", { query: query }, &block)
115
- end
116
-
117
- def execute_multiplex(multiplex:, &block)
118
- multiplex.trace("execute_multiplex", { multiplex: multiplex }, &block)
119
- end
120
-
121
- def execute_query(query:, &block)
122
- query.trace("execute_query", { query: query }, &block)
123
- end
124
-
125
- def execute_query_lazy(query:, multiplex:, &block)
126
- multiplex.trace("execute_query_lazy", { multiplex: multiplex, query: query }, &block)
127
- end
128
-
129
- def execute_field(field:, query:, ast_node:, arguments:, object:, &block)
130
- query.trace("execute_field", { field: field, query: query, ast_node: ast_node, arguments: arguments, object: object, owner: field.owner, path: query.context[:current_path] }, &block)
131
- end
132
-
133
- def execute_field_lazy(field:, query:, ast_node:, arguments:, object:, &block)
134
- query.trace("execute_field_lazy", { field: field, query: query, ast_node: ast_node, arguments: arguments, object: object, owner: field.owner, path: query.context[:current_path] }, &block)
135
- end
136
-
137
- def authorized(query:, type:, object:, &block)
138
- query.trace("authorized", { context: query.context, type: type, object: object, path: query.context[:current_path] }, &block)
139
- end
140
-
141
- def authorized_lazy(query:, type:, object:, &block)
142
- query.trace("authorized_lazy", { context: query.context, type: type, object: object, path: query.context[:current_path] }, &block)
143
- end
144
-
145
- def resolve_type(query:, type:, object:, &block)
146
- query.trace("resolve_type", { context: query.context, type: type, object: object, path: query.context[:current_path] }, &block)
147
- end
148
-
149
- def resolve_type_lazy(query:, type:, object:, &block)
150
- query.trace("resolve_type_lazy", { context: query.context, type: type, object: object, path: query.context[:current_path] }, &block)
151
- end
152
- end
153
-
154
35
  # Objects may include traceable to gain a `.trace(...)` method.
155
36
  # The object must have a `@tracers` ivar of type `Array<<#trace(k, d, &b)>>`.
156
37
  # @api private
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module GraphQL
3
- VERSION = "2.0.20"
3
+ VERSION = "2.0.22"
4
4
  end
data/lib/graphql.rb CHANGED
@@ -69,6 +69,10 @@ This is probably a bug in GraphQL-Ruby, please report this error on GitHub: http
69
69
 
70
70
  NOT_CONFIGURED = Object.new
71
71
  private_constant :NOT_CONFIGURED
72
+ module EmptyObjects
73
+ EMPTY_HASH = {}.freeze
74
+ EMPTY_ARRAY = [].freeze
75
+ end
72
76
  end
73
77
 
74
78
  # Order matters for these:
data/readme.md CHANGED
@@ -44,6 +44,6 @@ I also sell [GraphQL::Pro](https://graphql.pro) which provides several features
44
44
 
45
45
  ## Getting Involved
46
46
 
47
- - __Say hi & ask questions__ in the #graphql-ruby channel on [Discord](https://discord.com/invite/xud7bH9) or [on Twitter](https://twitter.com/rmosolgo)!
47
+ - __Say hi & ask questions__ in the #graphql-ruby channel on [Discord](https://discord.com/invite/xud7bH9).
48
48
  - __Report bugs__ by posting a description, full stack trace, and all relevant code in a [GitHub issue](https://github.com/rmosolgo/graphql-ruby/issues).
49
49
  - __Start hacking__ with the [Development guide](https://graphql-ruby.org/development).
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: 2.0.20
4
+ version: 2.0.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Mosolgo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-30 00:00:00.000000000 Z
11
+ date: 2023-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark-ips
@@ -303,6 +303,7 @@ files:
303
303
  - lib/graphql/backtrace.rb
304
304
  - lib/graphql/backtrace/inspect_result.rb
305
305
  - lib/graphql/backtrace/table.rb
306
+ - lib/graphql/backtrace/trace.rb
306
307
  - lib/graphql/backtrace/traced_error.rb
307
308
  - lib/graphql/backtrace/tracer.rb
308
309
  - lib/graphql/coercion_error.rb
@@ -555,6 +556,7 @@ files:
555
556
  - lib/graphql/tracing/appsignal_tracing.rb
556
557
  - lib/graphql/tracing/data_dog_trace.rb
557
558
  - lib/graphql/tracing/data_dog_tracing.rb
559
+ - lib/graphql/tracing/legacy_trace.rb
558
560
  - lib/graphql/tracing/new_relic_trace.rb
559
561
  - lib/graphql/tracing/new_relic_tracing.rb
560
562
  - lib/graphql/tracing/notifications_trace.rb
@@ -568,6 +570,7 @@ files:
568
570
  - lib/graphql/tracing/scout_tracing.rb
569
571
  - lib/graphql/tracing/statsd_trace.rb
570
572
  - lib/graphql/tracing/statsd_tracing.rb
573
+ - lib/graphql/tracing/trace.rb
571
574
  - lib/graphql/type_kinds.rb
572
575
  - lib/graphql/types.rb
573
576
  - lib/graphql/types/big_int.rb
@@ -619,7 +622,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
619
622
  - !ruby/object:Gem::Version
620
623
  version: '0'
621
624
  requirements: []
622
- rubygems_version: 3.4.1
625
+ rubygems_version: 3.4.13
623
626
  signing_key:
624
627
  specification_version: 4
625
628
  summary: A GraphQL language and runtime for Ruby