graphql 2.2.9 → 2.2.11
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.
- checksums.yaml +4 -4
- data/lib/graphql/language/nodes.rb +1 -1
- data/lib/graphql/language/parser.rb +11 -1
- data/lib/graphql/language/printer.rb +4 -0
- data/lib/graphql/schema/interface.rb +5 -1
- data/lib/graphql/schema.rb +42 -16
- data/lib/graphql/tracing/sentry_trace.rb +18 -1
- data/lib/graphql/version.rb +1 -1
- metadata +29 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1bae060f1dcf449082e9e53be024476505d848448a13d592f31e67c11024caa4
|
|
4
|
+
data.tar.gz: ebc753b89b657c18771641869a4dffea9e79fe324a3f7e46c1a84304a6cc3375
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0bd27d12cd1efd1c4166c20062e401fa524bcda469de51cbfe89fd21542fd3433a2f23628c21330c9e3d700a9627c683a6a1691887a06ef06105ede4c2241b26
|
|
7
|
+
data.tar.gz: abc65a9217ae76239458695a3ee47d3e2bf3d072e16d62b9df16a65a380110e4a9a207af17473ca0f14fcce5d907a2552866597dd53785c890979a37aa2c500b
|
|
@@ -512,7 +512,7 @@ module GraphQL
|
|
|
512
512
|
# An operation-level query variable
|
|
513
513
|
class VariableDefinition < AbstractNode
|
|
514
514
|
scalar_methods :name, :type, :default_value
|
|
515
|
-
children_methods
|
|
515
|
+
children_methods(directives: Directive)
|
|
516
516
|
# @!attribute default_value
|
|
517
517
|
# @return [String, Integer, Float, Boolean, Array, NullValue] A Ruby value to use if no other value is provided
|
|
518
518
|
|
|
@@ -121,7 +121,17 @@ module GraphQL
|
|
|
121
121
|
value
|
|
122
122
|
end
|
|
123
123
|
|
|
124
|
-
|
|
124
|
+
directives = parse_directives
|
|
125
|
+
|
|
126
|
+
defs << Nodes::VariableDefinition.new(
|
|
127
|
+
pos: loc,
|
|
128
|
+
name: var_name,
|
|
129
|
+
type: var_type,
|
|
130
|
+
default_value: default_value,
|
|
131
|
+
directives: directives,
|
|
132
|
+
filename: @filename,
|
|
133
|
+
source_string: @graphql_str
|
|
134
|
+
)
|
|
125
135
|
end
|
|
126
136
|
expect_token(:RPAREN)
|
|
127
137
|
defs
|
|
@@ -208,6 +208,10 @@ module GraphQL
|
|
|
208
208
|
print_string(" = ")
|
|
209
209
|
print_node(variable_definition.default_value)
|
|
210
210
|
end
|
|
211
|
+
variable_definition.directives.each do |dir|
|
|
212
|
+
print_string(" ")
|
|
213
|
+
print_directive(dir)
|
|
214
|
+
end
|
|
211
215
|
end
|
|
212
216
|
|
|
213
217
|
def print_variable_identifier(variable_identifier)
|
|
@@ -69,7 +69,11 @@ module GraphQL
|
|
|
69
69
|
end
|
|
70
70
|
elsif child_class < GraphQL::Schema::Object
|
|
71
71
|
# This is being included into an object type, make sure it's using `implements(...)`
|
|
72
|
-
backtrace_line =
|
|
72
|
+
backtrace_line = caller_locations(0, 10).find do |location|
|
|
73
|
+
location.base_label == "implements" &&
|
|
74
|
+
location.path.end_with?("schema/member/has_interfaces.rb")
|
|
75
|
+
end
|
|
76
|
+
|
|
73
77
|
if !backtrace_line
|
|
74
78
|
raise "Attach interfaces using `implements(#{self})`, not `include(#{self})`"
|
|
75
79
|
end
|
data/lib/graphql/schema.rb
CHANGED
|
@@ -167,13 +167,20 @@ module GraphQL
|
|
|
167
167
|
backtrace_class.include(GraphQL::Backtrace::Trace)
|
|
168
168
|
trace_mode(:default_backtrace, backtrace_class)
|
|
169
169
|
end
|
|
170
|
-
trace_class_for(:default)
|
|
170
|
+
trace_class_for(:default, build: true)
|
|
171
171
|
end
|
|
172
172
|
|
|
173
173
|
# @return [Class] Return the trace class to use for this mode, looking one up on the superclass if this Schema doesn't have one defined.
|
|
174
|
-
def trace_class_for(mode, build:
|
|
175
|
-
own_trace_modes[mode]
|
|
176
|
-
|
|
174
|
+
def trace_class_for(mode, build: false)
|
|
175
|
+
if (trace_class = own_trace_modes[mode])
|
|
176
|
+
trace_class
|
|
177
|
+
elsif superclass.respond_to?(:trace_class_for) && (trace_class = superclass.trace_class_for(mode, build: false))
|
|
178
|
+
trace_class
|
|
179
|
+
elsif build
|
|
180
|
+
own_trace_modes[mode] = build_trace_mode(mode)
|
|
181
|
+
else
|
|
182
|
+
nil
|
|
183
|
+
end
|
|
177
184
|
end
|
|
178
185
|
|
|
179
186
|
# Configure `trace_class` to be used whenever `context: { trace_mode: mode_name }` is requested.
|
|
@@ -211,20 +218,24 @@ module GraphQL
|
|
|
211
218
|
include DefaultTraceClass
|
|
212
219
|
end
|
|
213
220
|
when :default_backtrace
|
|
214
|
-
schema_base_class = trace_class_for(:default)
|
|
221
|
+
schema_base_class = trace_class_for(:default, build: true)
|
|
215
222
|
Class.new(schema_base_class) do
|
|
216
223
|
include(GraphQL::Backtrace::Trace)
|
|
217
224
|
end
|
|
218
225
|
else
|
|
219
226
|
# First, see if the superclass has a custom-defined class for this.
|
|
220
227
|
# Then, if it doesn't, use this class's default trace
|
|
221
|
-
base_class = (superclass.respond_to?(:trace_class_for) && superclass.trace_class_for(mode
|
|
228
|
+
base_class = (superclass.respond_to?(:trace_class_for) && superclass.trace_class_for(mode)) || trace_class_for(:default, build: true)
|
|
222
229
|
# Prepare the default trace class if it hasn't been initialized yet
|
|
223
230
|
base_class ||= (own_trace_modes[:default] = build_trace_mode(:default))
|
|
224
231
|
mods = trace_modules_for(mode)
|
|
225
232
|
if base_class < DefaultTraceClass
|
|
226
233
|
mods = trace_modules_for(:default) + mods
|
|
227
234
|
end
|
|
235
|
+
# Copy the existing default options into this mode's options
|
|
236
|
+
default_options = trace_options_for(:default)
|
|
237
|
+
add_trace_options_for(mode, default_options)
|
|
238
|
+
|
|
228
239
|
Class.new(base_class) do
|
|
229
240
|
mods.any? && include(*mods)
|
|
230
241
|
end
|
|
@@ -1107,7 +1118,7 @@ module GraphQL
|
|
|
1107
1118
|
end
|
|
1108
1119
|
|
|
1109
1120
|
def tracer(new_tracer)
|
|
1110
|
-
default_trace = trace_class_for(:default)
|
|
1121
|
+
default_trace = trace_class_for(:default, build: true)
|
|
1111
1122
|
if default_trace.nil? || !(default_trace < GraphQL::Tracing::CallLegacyTracers)
|
|
1112
1123
|
trace_with(GraphQL::Tracing::CallLegacyTracers)
|
|
1113
1124
|
end
|
|
@@ -1133,20 +1144,23 @@ module GraphQL
|
|
|
1133
1144
|
tc = own_trace_modes[mode] ||= build_trace_mode(mode)
|
|
1134
1145
|
tc.include(trace_mod)
|
|
1135
1146
|
own_trace_modules[mode] << trace_mod
|
|
1136
|
-
|
|
1147
|
+
add_trace_options_for(mode, options)
|
|
1137
1148
|
if mode == :default
|
|
1138
1149
|
# This module is being added as a default tracer. If any other mode classes
|
|
1139
1150
|
# have already been created, but get their default behavior from a superclass,
|
|
1140
1151
|
# Then mix this into this schema's subclass.
|
|
1141
1152
|
# (But don't mix it into mode classes that aren't default-based.)
|
|
1142
1153
|
own_trace_modes.each do |other_mode_name, other_mode_class|
|
|
1143
|
-
if other_mode_class < DefaultTraceClass
|
|
1144
|
-
|
|
1154
|
+
if other_mode_class < DefaultTraceClass
|
|
1155
|
+
# Don't add it back to the inheritance tree if it's already there
|
|
1156
|
+
if !(other_mode_class < trace_mod)
|
|
1157
|
+
other_mode_class.include(trace_mod)
|
|
1158
|
+
end
|
|
1159
|
+
# Add any options so they'll be available
|
|
1160
|
+
add_trace_options_for(other_mode_name, options)
|
|
1145
1161
|
end
|
|
1146
1162
|
end
|
|
1147
1163
|
end
|
|
1148
|
-
t_opts = trace_options_for(mode)
|
|
1149
|
-
t_opts.merge!(options)
|
|
1150
1164
|
end
|
|
1151
1165
|
nil
|
|
1152
1166
|
end
|
|
@@ -1156,10 +1170,14 @@ module GraphQL
|
|
|
1156
1170
|
def trace_options_for(mode)
|
|
1157
1171
|
@trace_options_for_mode ||= {}
|
|
1158
1172
|
@trace_options_for_mode[mode] ||= begin
|
|
1173
|
+
# It may be time to create an options hash for a mode that wasn't registered yet.
|
|
1174
|
+
# Mix in the default options in that case.
|
|
1175
|
+
default_options = mode == :default ? EMPTY_HASH : trace_options_for(:default)
|
|
1176
|
+
# Make sure this returns a new object so that other hashes aren't modified later
|
|
1159
1177
|
if superclass.respond_to?(:trace_options_for)
|
|
1160
|
-
superclass.trace_options_for(mode).
|
|
1178
|
+
superclass.trace_options_for(mode).merge(default_options)
|
|
1161
1179
|
else
|
|
1162
|
-
|
|
1180
|
+
default_options.dup
|
|
1163
1181
|
end
|
|
1164
1182
|
end
|
|
1165
1183
|
end
|
|
@@ -1182,15 +1200,17 @@ module GraphQL
|
|
|
1182
1200
|
raise ArgumentError, "Can't use `context[:backtrace]` with a custom default trace mode (`#{dm.inspect}`)"
|
|
1183
1201
|
else
|
|
1184
1202
|
own_trace_modes[:default_backtrace] ||= build_trace_mode(:default_backtrace)
|
|
1203
|
+
options_trace_mode = :default
|
|
1185
1204
|
:default_backtrace
|
|
1186
1205
|
end
|
|
1187
1206
|
else
|
|
1188
1207
|
default_trace_mode
|
|
1189
1208
|
end
|
|
1190
1209
|
|
|
1191
|
-
|
|
1210
|
+
options_trace_mode ||= trace_mode
|
|
1211
|
+
base_trace_options = trace_options_for(options_trace_mode)
|
|
1192
1212
|
trace_options = base_trace_options.merge(options)
|
|
1193
|
-
trace_class_for_mode = trace_class_for(trace_mode
|
|
1213
|
+
trace_class_for_mode = trace_class_for(trace_mode, build: true)
|
|
1194
1214
|
trace_class_for_mode.new(**trace_options)
|
|
1195
1215
|
end
|
|
1196
1216
|
|
|
@@ -1344,6 +1364,12 @@ module GraphQL
|
|
|
1344
1364
|
|
|
1345
1365
|
private
|
|
1346
1366
|
|
|
1367
|
+
def add_trace_options_for(mode, new_options)
|
|
1368
|
+
t_opts = trace_options_for(mode)
|
|
1369
|
+
t_opts.merge!(new_options)
|
|
1370
|
+
nil
|
|
1371
|
+
end
|
|
1372
|
+
|
|
1347
1373
|
# @param t [Module, Array<Module>]
|
|
1348
1374
|
# @return [void]
|
|
1349
1375
|
def add_type_and_traverse(t, root:)
|
|
@@ -5,6 +5,24 @@ module GraphQL
|
|
|
5
5
|
module SentryTrace
|
|
6
6
|
include PlatformTrace
|
|
7
7
|
|
|
8
|
+
# @param set_transaction_name [Boolean] If true, the GraphQL operation name will be used as the transaction name.
|
|
9
|
+
# This is not advised if you run more than one query per HTTP request, for example, with `graphql-client` or multiplexing.
|
|
10
|
+
# It can also be specified per-query with `context[:set_sentry_transaction_name]`.
|
|
11
|
+
def initialize(set_transaction_name: false, **_rest)
|
|
12
|
+
@set_transaction_name = set_transaction_name
|
|
13
|
+
super
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def execute_query(**data)
|
|
17
|
+
set_this_txn_name = data[:query].context[:set_sentry_transaction_name]
|
|
18
|
+
if set_this_txn_name == true || (set_this_txn_name.nil? && @set_transaction_name)
|
|
19
|
+
Sentry.configure_scope do |scope|
|
|
20
|
+
scope.set_transaction_name(transaction_name(data[:query]))
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
instrument_execution("graphql.execute", "execute_query", data) { super }
|
|
24
|
+
end
|
|
25
|
+
|
|
8
26
|
{
|
|
9
27
|
"lex" => "graphql.lex",
|
|
10
28
|
"parse" => "graphql.parse",
|
|
@@ -12,7 +30,6 @@ module GraphQL
|
|
|
12
30
|
"analyze_query" => "graphql.analyze",
|
|
13
31
|
"analyze_multiplex" => "graphql.analyze_multiplex",
|
|
14
32
|
"execute_multiplex" => "graphql.execute_multiplex",
|
|
15
|
-
"execute_query" => "graphql.execute",
|
|
16
33
|
"execute_query_lazy" => "graphql.execute"
|
|
17
34
|
}.each do |trace_method, platform_key|
|
|
18
35
|
module_eval <<-RUBY, __FILE__, __LINE__
|
data/lib/graphql/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: graphql
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.2.
|
|
4
|
+
version: 2.2.11
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Robert Mosolgo
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-02-
|
|
11
|
+
date: 2024-02-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: base64
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
13
27
|
- !ruby/object:Gem::Dependency
|
|
14
28
|
name: benchmark-ips
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -56,44 +70,44 @@ dependencies:
|
|
|
56
70
|
name: minitest
|
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
|
58
72
|
requirements:
|
|
59
|
-
- - "
|
|
73
|
+
- - ">="
|
|
60
74
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
75
|
+
version: '0'
|
|
62
76
|
type: :development
|
|
63
77
|
prerelease: false
|
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
79
|
requirements:
|
|
66
|
-
- - "
|
|
80
|
+
- - ">="
|
|
67
81
|
- !ruby/object:Gem::Version
|
|
68
|
-
version:
|
|
82
|
+
version: '0'
|
|
69
83
|
- !ruby/object:Gem::Dependency
|
|
70
84
|
name: minitest-focus
|
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
|
72
86
|
requirements:
|
|
73
|
-
- - "
|
|
87
|
+
- - ">="
|
|
74
88
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '
|
|
89
|
+
version: '0'
|
|
76
90
|
type: :development
|
|
77
91
|
prerelease: false
|
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
93
|
requirements:
|
|
80
|
-
- - "
|
|
94
|
+
- - ">="
|
|
81
95
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '
|
|
96
|
+
version: '0'
|
|
83
97
|
- !ruby/object:Gem::Dependency
|
|
84
98
|
name: minitest-reporters
|
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
|
86
100
|
requirements:
|
|
87
|
-
- - "
|
|
101
|
+
- - ">="
|
|
88
102
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '
|
|
103
|
+
version: '0'
|
|
90
104
|
type: :development
|
|
91
105
|
prerelease: false
|
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
107
|
requirements:
|
|
94
|
-
- - "
|
|
108
|
+
- - ">="
|
|
95
109
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '
|
|
110
|
+
version: '0'
|
|
97
111
|
- !ruby/object:Gem::Dependency
|
|
98
112
|
name: rake
|
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -617,7 +631,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
617
631
|
- !ruby/object:Gem::Version
|
|
618
632
|
version: '0'
|
|
619
633
|
requirements: []
|
|
620
|
-
rubygems_version: 3.5.
|
|
634
|
+
rubygems_version: 3.5.3
|
|
621
635
|
signing_key:
|
|
622
636
|
specification_version: 4
|
|
623
637
|
summary: A GraphQL language and runtime for Ruby
|