graphql 2.4.3 → 2.4.13
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/analysis/analyzer.rb +2 -1
- data/lib/graphql/analysis/visitor.rb +38 -41
- data/lib/graphql/analysis.rb +15 -12
- data/lib/graphql/autoload.rb +38 -0
- data/lib/graphql/backtrace/table.rb +95 -55
- data/lib/graphql/backtrace.rb +1 -19
- data/lib/graphql/current.rb +6 -1
- data/lib/graphql/dashboard/statics/bootstrap-5.3.3.min.css +6 -0
- data/lib/graphql/dashboard/statics/bootstrap-5.3.3.min.js +7 -0
- data/lib/graphql/dashboard/statics/dashboard.css +3 -0
- data/lib/graphql/dashboard/statics/dashboard.js +78 -0
- data/lib/graphql/dashboard/statics/header-icon.png +0 -0
- data/lib/graphql/dashboard/statics/icon.png +0 -0
- data/lib/graphql/dashboard/views/graphql/dashboard/landings/show.html.erb +18 -0
- data/lib/graphql/dashboard/views/graphql/dashboard/traces/index.html.erb +63 -0
- data/lib/graphql/dashboard/views/layouts/graphql/dashboard/application.html.erb +60 -0
- data/lib/graphql/dashboard.rb +142 -0
- data/lib/graphql/dataloader/active_record_association_source.rb +64 -0
- data/lib/graphql/dataloader/active_record_source.rb +26 -0
- data/lib/graphql/dataloader/async_dataloader.rb +21 -9
- data/lib/graphql/dataloader/null_dataloader.rb +1 -1
- data/lib/graphql/dataloader/source.rb +3 -3
- data/lib/graphql/dataloader.rb +43 -14
- data/lib/graphql/execution/interpreter/resolve.rb +3 -3
- data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +11 -4
- data/lib/graphql/execution/interpreter/runtime.rb +67 -40
- data/lib/graphql/execution/interpreter.rb +16 -6
- data/lib/graphql/execution/multiplex.rb +0 -4
- data/lib/graphql/introspection/directive_location_enum.rb +1 -1
- data/lib/graphql/invalid_name_error.rb +1 -1
- data/lib/graphql/invalid_null_error.rb +5 -15
- data/lib/graphql/language/cache.rb +13 -0
- data/lib/graphql/language/document_from_schema_definition.rb +8 -7
- data/lib/graphql/language/lexer.rb +11 -4
- data/lib/graphql/language/nodes.rb +3 -0
- data/lib/graphql/language/parser.rb +2 -2
- data/lib/graphql/language/printer.rb +8 -8
- data/lib/graphql/language/static_visitor.rb +37 -33
- data/lib/graphql/language/visitor.rb +59 -55
- data/lib/graphql/pagination/connection.rb +1 -1
- data/lib/graphql/query/context/scoped_context.rb +1 -1
- data/lib/graphql/query/context.rb +6 -5
- data/lib/graphql/query/variable_validation_error.rb +1 -1
- data/lib/graphql/query.rb +20 -22
- data/lib/graphql/railtie.rb +7 -0
- data/lib/graphql/schema/addition.rb +1 -1
- data/lib/graphql/schema/argument.rb +3 -5
- data/lib/graphql/schema/build_from_definition.rb +8 -7
- data/lib/graphql/schema/directive/flagged.rb +1 -1
- data/lib/graphql/schema/directive.rb +2 -2
- data/lib/graphql/schema/enum.rb +36 -1
- data/lib/graphql/schema/enum_value.rb +1 -1
- data/lib/graphql/schema/field/scope_extension.rb +1 -1
- data/lib/graphql/schema/field.rb +12 -12
- data/lib/graphql/schema/field_extension.rb +1 -1
- data/lib/graphql/schema/has_single_input_argument.rb +3 -1
- data/lib/graphql/schema/input_object.rb +70 -34
- data/lib/graphql/schema/interface.rb +3 -2
- data/lib/graphql/schema/loader.rb +1 -1
- data/lib/graphql/schema/member/has_arguments.rb +25 -17
- data/lib/graphql/schema/member/has_dataloader.rb +60 -0
- data/lib/graphql/schema/member/has_directives.rb +4 -4
- data/lib/graphql/schema/member/has_fields.rb +19 -1
- data/lib/graphql/schema/member/has_interfaces.rb +5 -5
- data/lib/graphql/schema/member/has_validators.rb +1 -1
- data/lib/graphql/schema/member/scoped.rb +1 -1
- data/lib/graphql/schema/member/type_system_helpers.rb +1 -1
- data/lib/graphql/schema/member.rb +1 -0
- data/lib/graphql/schema/object.rb +25 -8
- data/lib/graphql/schema/relay_classic_mutation.rb +0 -1
- data/lib/graphql/schema/resolver.rb +11 -10
- data/lib/graphql/schema/subscription.rb +52 -6
- data/lib/graphql/schema/union.rb +1 -1
- data/lib/graphql/schema/validator/required_validator.rb +23 -6
- data/lib/graphql/schema/validator.rb +1 -1
- data/lib/graphql/schema/visibility/migration.rb +1 -0
- data/lib/graphql/schema/visibility/profile.rb +69 -237
- data/lib/graphql/schema/visibility/visit.rb +190 -0
- data/lib/graphql/schema/visibility.rb +169 -28
- data/lib/graphql/schema/warden.rb +18 -5
- data/lib/graphql/schema.rb +90 -43
- data/lib/graphql/static_validation/rules/argument_names_are_unique.rb +1 -1
- data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +1 -1
- data/lib/graphql/static_validation/rules/fields_will_merge.rb +1 -1
- data/lib/graphql/static_validation/rules/no_definitions_are_present.rb +1 -1
- data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +1 -1
- data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +1 -1
- data/lib/graphql/static_validation/rules/variable_names_are_unique.rb +1 -1
- data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +1 -1
- data/lib/graphql/static_validation/validation_context.rb +1 -0
- data/lib/graphql/static_validation/validator.rb +6 -1
- data/lib/graphql/subscriptions/action_cable_subscriptions.rb +1 -1
- data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +12 -10
- data/lib/graphql/subscriptions/event.rb +12 -1
- data/lib/graphql/subscriptions/serialize.rb +1 -1
- data/lib/graphql/subscriptions.rb +1 -1
- data/lib/graphql/testing/helpers.rb +2 -2
- data/lib/graphql/tracing/active_support_notifications_trace.rb +7 -3
- data/lib/graphql/tracing/active_support_notifications_tracing.rb +1 -1
- data/lib/graphql/tracing/appoptics_trace.rb +9 -1
- data/lib/graphql/tracing/appoptics_tracing.rb +2 -0
- data/lib/graphql/tracing/appsignal_trace.rb +12 -0
- data/lib/graphql/tracing/appsignal_tracing.rb +2 -0
- data/lib/graphql/tracing/call_legacy_tracers.rb +66 -0
- data/lib/graphql/tracing/data_dog_trace.rb +11 -0
- data/lib/graphql/tracing/data_dog_tracing.rb +2 -0
- data/lib/graphql/tracing/detailed_trace/memory_backend.rb +60 -0
- data/lib/graphql/tracing/detailed_trace/redis_backend.rb +72 -0
- data/lib/graphql/tracing/detailed_trace.rb +93 -0
- data/lib/graphql/tracing/legacy_hooks_trace.rb +1 -0
- data/lib/graphql/tracing/legacy_trace.rb +4 -61
- data/lib/graphql/tracing/new_relic_trace.rb +164 -41
- data/lib/graphql/tracing/new_relic_tracing.rb +2 -0
- data/lib/graphql/tracing/notifications_trace.rb +4 -0
- data/lib/graphql/tracing/notifications_tracing.rb +2 -0
- data/lib/graphql/tracing/null_trace.rb +9 -0
- data/lib/graphql/tracing/perfetto_trace/trace.proto +141 -0
- data/lib/graphql/tracing/perfetto_trace/trace_pb.rb +33 -0
- data/lib/graphql/tracing/perfetto_trace.rb +737 -0
- data/lib/graphql/tracing/platform_trace.rb +5 -0
- data/lib/graphql/tracing/prometheus_trace/graphql_collector.rb +2 -0
- data/lib/graphql/tracing/prometheus_trace.rb +31 -0
- data/lib/graphql/tracing/prometheus_tracing.rb +2 -0
- data/lib/graphql/tracing/scout_trace.rb +11 -0
- data/lib/graphql/tracing/scout_tracing.rb +2 -0
- data/lib/graphql/tracing/sentry_trace.rb +11 -0
- data/lib/graphql/tracing/statsd_trace.rb +15 -0
- data/lib/graphql/tracing/statsd_tracing.rb +2 -0
- data/lib/graphql/tracing/trace.rb +128 -1
- data/lib/graphql/tracing.rb +30 -30
- data/lib/graphql/types/relay/connection_behaviors.rb +3 -3
- data/lib/graphql/types/relay/edge_behaviors.rb +2 -2
- data/lib/graphql/types.rb +18 -11
- data/lib/graphql/version.rb +1 -1
- data/lib/graphql.rb +55 -47
- metadata +152 -10
- data/lib/graphql/backtrace/inspect_result.rb +0 -38
- data/lib/graphql/backtrace/trace.rb +0 -93
- data/lib/graphql/backtrace/tracer.rb +0 -80
- data/lib/graphql/schema/null_mask.rb +0 -11
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.
|
4
|
+
version: 2.4.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Mosolgo
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-03-12 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: base64
|
@@ -38,6 +37,20 @@ dependencies:
|
|
38
37
|
- - ">="
|
39
38
|
- !ruby/object:Gem::Version
|
40
39
|
version: '0'
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: logger
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
type: :runtime
|
48
|
+
prerelease: false
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
41
54
|
- !ruby/object:Gem::Dependency
|
42
55
|
name: benchmark-ips
|
43
56
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +79,20 @@ dependencies:
|
|
66
79
|
- - "~>"
|
67
80
|
- !ruby/object:Gem::Version
|
68
81
|
version: '1.0'
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: google-protobuf
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
type: :development
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
69
96
|
- !ruby/object:Gem::Dependency
|
70
97
|
name: graphql-batch
|
71
98
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,6 +205,76 @@ dependencies:
|
|
178
205
|
- - ">="
|
179
206
|
- !ruby/object:Gem::Version
|
180
207
|
version: '0'
|
208
|
+
- !ruby/object:Gem::Dependency
|
209
|
+
name: simplecov
|
210
|
+
requirement: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - ">="
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '0'
|
215
|
+
type: :development
|
216
|
+
prerelease: false
|
217
|
+
version_requirements: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - ">="
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: '0'
|
222
|
+
- !ruby/object:Gem::Dependency
|
223
|
+
name: simplecov-lcov
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - ">="
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: '0'
|
229
|
+
type: :development
|
230
|
+
prerelease: false
|
231
|
+
version_requirements: !ruby/object:Gem::Requirement
|
232
|
+
requirements:
|
233
|
+
- - ">="
|
234
|
+
- !ruby/object:Gem::Version
|
235
|
+
version: '0'
|
236
|
+
- !ruby/object:Gem::Dependency
|
237
|
+
name: undercover
|
238
|
+
requirement: !ruby/object:Gem::Requirement
|
239
|
+
requirements:
|
240
|
+
- - ">="
|
241
|
+
- !ruby/object:Gem::Version
|
242
|
+
version: '0'
|
243
|
+
type: :development
|
244
|
+
prerelease: false
|
245
|
+
version_requirements: !ruby/object:Gem::Requirement
|
246
|
+
requirements:
|
247
|
+
- - ">="
|
248
|
+
- !ruby/object:Gem::Version
|
249
|
+
version: '0'
|
250
|
+
- !ruby/object:Gem::Dependency
|
251
|
+
name: pronto
|
252
|
+
requirement: !ruby/object:Gem::Requirement
|
253
|
+
requirements:
|
254
|
+
- - ">="
|
255
|
+
- !ruby/object:Gem::Version
|
256
|
+
version: '0'
|
257
|
+
type: :development
|
258
|
+
prerelease: false
|
259
|
+
version_requirements: !ruby/object:Gem::Requirement
|
260
|
+
requirements:
|
261
|
+
- - ">="
|
262
|
+
- !ruby/object:Gem::Version
|
263
|
+
version: '0'
|
264
|
+
- !ruby/object:Gem::Dependency
|
265
|
+
name: pronto-undercover
|
266
|
+
requirement: !ruby/object:Gem::Requirement
|
267
|
+
requirements:
|
268
|
+
- - ">="
|
269
|
+
- !ruby/object:Gem::Version
|
270
|
+
version: '0'
|
271
|
+
type: :development
|
272
|
+
prerelease: false
|
273
|
+
version_requirements: !ruby/object:Gem::Requirement
|
274
|
+
requirements:
|
275
|
+
- - ">="
|
276
|
+
- !ruby/object:Gem::Version
|
277
|
+
version: '0'
|
181
278
|
- !ruby/object:Gem::Dependency
|
182
279
|
name: jekyll
|
183
280
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,6 +289,20 @@ dependencies:
|
|
192
289
|
- - ">="
|
193
290
|
- !ruby/object:Gem::Version
|
194
291
|
version: '0'
|
292
|
+
- !ruby/object:Gem::Dependency
|
293
|
+
name: jekyll-sass-converter
|
294
|
+
requirement: !ruby/object:Gem::Requirement
|
295
|
+
requirements:
|
296
|
+
- - "~>"
|
297
|
+
- !ruby/object:Gem::Version
|
298
|
+
version: '2.2'
|
299
|
+
type: :development
|
300
|
+
prerelease: false
|
301
|
+
version_requirements: !ruby/object:Gem::Requirement
|
302
|
+
requirements:
|
303
|
+
- - "~>"
|
304
|
+
- !ruby/object:Gem::Version
|
305
|
+
version: '2.2'
|
195
306
|
- !ruby/object:Gem::Dependency
|
196
307
|
name: yard
|
197
308
|
requirement: !ruby/object:Gem::Requirement
|
@@ -248,6 +359,20 @@ dependencies:
|
|
248
359
|
- - "~>"
|
249
360
|
- !ruby/object:Gem::Version
|
250
361
|
version: 1.5.0
|
362
|
+
- !ruby/object:Gem::Dependency
|
363
|
+
name: mutex_m
|
364
|
+
requirement: !ruby/object:Gem::Requirement
|
365
|
+
requirements:
|
366
|
+
- - ">="
|
367
|
+
- !ruby/object:Gem::Version
|
368
|
+
version: '0'
|
369
|
+
type: :development
|
370
|
+
prerelease: false
|
371
|
+
version_requirements: !ruby/object:Gem::Requirement
|
372
|
+
requirements:
|
373
|
+
- - ">="
|
374
|
+
- !ruby/object:Gem::Version
|
375
|
+
version: '0'
|
251
376
|
- !ruby/object:Gem::Dependency
|
252
377
|
name: webrick
|
253
378
|
requirement: !ruby/object:Gem::Requirement
|
@@ -328,15 +453,25 @@ files:
|
|
328
453
|
- lib/graphql/analysis/query_depth.rb
|
329
454
|
- lib/graphql/analysis/visitor.rb
|
330
455
|
- lib/graphql/analysis_error.rb
|
456
|
+
- lib/graphql/autoload.rb
|
331
457
|
- lib/graphql/backtrace.rb
|
332
|
-
- lib/graphql/backtrace/inspect_result.rb
|
333
458
|
- lib/graphql/backtrace/table.rb
|
334
|
-
- lib/graphql/backtrace/trace.rb
|
335
459
|
- lib/graphql/backtrace/traced_error.rb
|
336
|
-
- lib/graphql/backtrace/tracer.rb
|
337
460
|
- lib/graphql/coercion_error.rb
|
338
461
|
- lib/graphql/current.rb
|
462
|
+
- lib/graphql/dashboard.rb
|
463
|
+
- lib/graphql/dashboard/statics/bootstrap-5.3.3.min.css
|
464
|
+
- lib/graphql/dashboard/statics/bootstrap-5.3.3.min.js
|
465
|
+
- lib/graphql/dashboard/statics/dashboard.css
|
466
|
+
- lib/graphql/dashboard/statics/dashboard.js
|
467
|
+
- lib/graphql/dashboard/statics/header-icon.png
|
468
|
+
- lib/graphql/dashboard/statics/icon.png
|
469
|
+
- lib/graphql/dashboard/views/graphql/dashboard/landings/show.html.erb
|
470
|
+
- lib/graphql/dashboard/views/graphql/dashboard/traces/index.html.erb
|
471
|
+
- lib/graphql/dashboard/views/layouts/graphql/dashboard/application.html.erb
|
339
472
|
- lib/graphql/dataloader.rb
|
473
|
+
- lib/graphql/dataloader/active_record_association_source.rb
|
474
|
+
- lib/graphql/dataloader/active_record_source.rb
|
340
475
|
- lib/graphql/dataloader/async_dataloader.rb
|
341
476
|
- lib/graphql/dataloader/null_dataloader.rb
|
342
477
|
- lib/graphql/dataloader/request.rb
|
@@ -465,6 +600,7 @@ files:
|
|
465
600
|
- lib/graphql/schema/member/graphql_type_names.rb
|
466
601
|
- lib/graphql/schema/member/has_arguments.rb
|
467
602
|
- lib/graphql/schema/member/has_ast_node.rb
|
603
|
+
- lib/graphql/schema/member/has_dataloader.rb
|
468
604
|
- lib/graphql/schema/member/has_deprecation_reason.rb
|
469
605
|
- lib/graphql/schema/member/has_directives.rb
|
470
606
|
- lib/graphql/schema/member/has_fields.rb
|
@@ -478,7 +614,6 @@ files:
|
|
478
614
|
- lib/graphql/schema/member/validates_input.rb
|
479
615
|
- lib/graphql/schema/mutation.rb
|
480
616
|
- lib/graphql/schema/non_null.rb
|
481
|
-
- lib/graphql/schema/null_mask.rb
|
482
617
|
- lib/graphql/schema/object.rb
|
483
618
|
- lib/graphql/schema/printer.rb
|
484
619
|
- lib/graphql/schema/relay_classic_mutation.rb
|
@@ -504,6 +639,7 @@ files:
|
|
504
639
|
- lib/graphql/schema/visibility.rb
|
505
640
|
- lib/graphql/schema/visibility/migration.rb
|
506
641
|
- lib/graphql/schema/visibility/profile.rb
|
642
|
+
- lib/graphql/schema/visibility/visit.rb
|
507
643
|
- lib/graphql/schema/warden.rb
|
508
644
|
- lib/graphql/schema/wrapper.rb
|
509
645
|
- lib/graphql/static_validation.rb
|
@@ -592,14 +728,22 @@ files:
|
|
592
728
|
- lib/graphql/tracing/appoptics_tracing.rb
|
593
729
|
- lib/graphql/tracing/appsignal_trace.rb
|
594
730
|
- lib/graphql/tracing/appsignal_tracing.rb
|
731
|
+
- lib/graphql/tracing/call_legacy_tracers.rb
|
595
732
|
- lib/graphql/tracing/data_dog_trace.rb
|
596
733
|
- lib/graphql/tracing/data_dog_tracing.rb
|
734
|
+
- lib/graphql/tracing/detailed_trace.rb
|
735
|
+
- lib/graphql/tracing/detailed_trace/memory_backend.rb
|
736
|
+
- lib/graphql/tracing/detailed_trace/redis_backend.rb
|
597
737
|
- lib/graphql/tracing/legacy_hooks_trace.rb
|
598
738
|
- lib/graphql/tracing/legacy_trace.rb
|
599
739
|
- lib/graphql/tracing/new_relic_trace.rb
|
600
740
|
- lib/graphql/tracing/new_relic_tracing.rb
|
601
741
|
- lib/graphql/tracing/notifications_trace.rb
|
602
742
|
- lib/graphql/tracing/notifications_tracing.rb
|
743
|
+
- lib/graphql/tracing/null_trace.rb
|
744
|
+
- lib/graphql/tracing/perfetto_trace.rb
|
745
|
+
- lib/graphql/tracing/perfetto_trace/trace.proto
|
746
|
+
- lib/graphql/tracing/perfetto_trace/trace_pb.rb
|
603
747
|
- lib/graphql/tracing/platform_trace.rb
|
604
748
|
- lib/graphql/tracing/platform_tracing.rb
|
605
749
|
- lib/graphql/tracing/prometheus_trace.rb
|
@@ -650,7 +794,6 @@ metadata:
|
|
650
794
|
bug_tracker_uri: https://github.com/rmosolgo/graphql-ruby/issues
|
651
795
|
mailing_list_uri: https://buttondown.email/graphql-ruby
|
652
796
|
rubygems_mfa_required: 'true'
|
653
|
-
post_install_message:
|
654
797
|
rdoc_options: []
|
655
798
|
require_paths:
|
656
799
|
- lib
|
@@ -665,8 +808,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
665
808
|
- !ruby/object:Gem::Version
|
666
809
|
version: '0'
|
667
810
|
requirements: []
|
668
|
-
rubygems_version: 3.
|
669
|
-
signing_key:
|
811
|
+
rubygems_version: 3.6.3
|
670
812
|
specification_version: 4
|
671
813
|
summary: A GraphQL language and runtime for Ruby
|
672
814
|
test_files: []
|
@@ -1,38 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module GraphQL
|
3
|
-
class Backtrace
|
4
|
-
module InspectResult
|
5
|
-
module_function
|
6
|
-
|
7
|
-
def inspect_result(obj)
|
8
|
-
case obj
|
9
|
-
when Hash
|
10
|
-
"{" +
|
11
|
-
obj.map do |key, val|
|
12
|
-
"#{key}: #{inspect_truncated(val)}"
|
13
|
-
end.join(", ") +
|
14
|
-
"}"
|
15
|
-
when Array
|
16
|
-
"[" +
|
17
|
-
obj.map { |v| inspect_truncated(v) }.join(", ") +
|
18
|
-
"]"
|
19
|
-
else
|
20
|
-
inspect_truncated(obj)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def inspect_truncated(obj)
|
25
|
-
case obj
|
26
|
-
when Hash
|
27
|
-
"{...}"
|
28
|
-
when Array
|
29
|
-
"[...]"
|
30
|
-
when GraphQL::Execution::Lazy
|
31
|
-
"(unresolved)"
|
32
|
-
else
|
33
|
-
"#{obj.inspect}"
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,93 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module GraphQL
|
3
|
-
class Backtrace
|
4
|
-
module Trace
|
5
|
-
def initialize(*args, **kwargs, &block)
|
6
|
-
@__backtrace_contexts = {}
|
7
|
-
@__backtrace_last_context = nil
|
8
|
-
super
|
9
|
-
end
|
10
|
-
|
11
|
-
def validate(query:, validate:)
|
12
|
-
if query.multiplex
|
13
|
-
push_query_backtrace_context(query)
|
14
|
-
end
|
15
|
-
super
|
16
|
-
end
|
17
|
-
|
18
|
-
def analyze_query(query:)
|
19
|
-
if query.multiplex # missing for stand-alone static validation
|
20
|
-
push_query_backtrace_context(query)
|
21
|
-
end
|
22
|
-
super
|
23
|
-
end
|
24
|
-
|
25
|
-
def execute_query(query:)
|
26
|
-
push_query_backtrace_context(query)
|
27
|
-
super
|
28
|
-
end
|
29
|
-
|
30
|
-
def execute_query_lazy(query:, multiplex:)
|
31
|
-
query ||= multiplex.queries.first
|
32
|
-
push_query_backtrace_context(query)
|
33
|
-
super
|
34
|
-
end
|
35
|
-
|
36
|
-
def execute_field(field:, query:, ast_node:, arguments:, object:)
|
37
|
-
push_field_backtrace_context(field, query, ast_node, arguments, object)
|
38
|
-
super
|
39
|
-
end
|
40
|
-
|
41
|
-
def execute_field_lazy(field:, query:, ast_node:, arguments:, object:)
|
42
|
-
push_field_backtrace_context(field, query, ast_node, arguments, object)
|
43
|
-
super
|
44
|
-
end
|
45
|
-
|
46
|
-
def execute_multiplex(multiplex:)
|
47
|
-
super
|
48
|
-
rescue StandardError => err
|
49
|
-
# This is an unhandled error from execution,
|
50
|
-
# Re-raise it with a GraphQL trace.
|
51
|
-
potential_context = @__backtrace_last_context
|
52
|
-
if potential_context.is_a?(GraphQL::Query::Context) ||
|
53
|
-
potential_context.is_a?(Backtrace::Frame)
|
54
|
-
raise TracedError.new(err, potential_context)
|
55
|
-
else
|
56
|
-
raise
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
private
|
61
|
-
|
62
|
-
def push_query_backtrace_context(query)
|
63
|
-
push_data = query
|
64
|
-
push_key = []
|
65
|
-
@__backtrace_contexts[push_key] = push_data
|
66
|
-
@__backtrace_last_context = push_data
|
67
|
-
end
|
68
|
-
|
69
|
-
def push_field_backtrace_context(field, query, ast_node, arguments, object)
|
70
|
-
push_key = query.context[:current_path]
|
71
|
-
push_storage = @__backtrace_contexts
|
72
|
-
parent_frame = push_storage[push_key[0..-2]]
|
73
|
-
|
74
|
-
if parent_frame.is_a?(GraphQL::Query)
|
75
|
-
parent_frame = parent_frame.context
|
76
|
-
end
|
77
|
-
|
78
|
-
push_data = Frame.new(
|
79
|
-
query: query,
|
80
|
-
path: push_key,
|
81
|
-
ast_node: ast_node,
|
82
|
-
field: field,
|
83
|
-
object: object,
|
84
|
-
arguments: arguments,
|
85
|
-
parent_frame: parent_frame,
|
86
|
-
)
|
87
|
-
push_storage[push_key] = push_data
|
88
|
-
@__backtrace_last_context = push_data
|
89
|
-
end
|
90
|
-
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
@@ -1,80 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module GraphQL
|
3
|
-
class Backtrace
|
4
|
-
# TODO this is not fiber-friendly
|
5
|
-
module Tracer
|
6
|
-
module_function
|
7
|
-
|
8
|
-
# Implement the {GraphQL::Tracing} API.
|
9
|
-
def trace(key, metadata)
|
10
|
-
case key
|
11
|
-
when "lex", "parse"
|
12
|
-
# No context here, don't have a query yet
|
13
|
-
nil
|
14
|
-
when "execute_multiplex", "analyze_multiplex"
|
15
|
-
# No query context yet
|
16
|
-
nil
|
17
|
-
when "validate", "analyze_query", "execute_query", "execute_query_lazy"
|
18
|
-
push_key = []
|
19
|
-
if (query = metadata[:query]) || ((queries = metadata[:queries]) && (query = queries.first))
|
20
|
-
push_data = query
|
21
|
-
multiplex = query.multiplex
|
22
|
-
elsif (multiplex = metadata[:multiplex])
|
23
|
-
push_data = multiplex.queries.first
|
24
|
-
end
|
25
|
-
when "execute_field", "execute_field_lazy"
|
26
|
-
query = metadata[:query]
|
27
|
-
multiplex = query.multiplex
|
28
|
-
push_key = query.context[:current_path]
|
29
|
-
parent_frame = multiplex.context[:graphql_backtrace_contexts][push_key[0..-2]]
|
30
|
-
|
31
|
-
if parent_frame.is_a?(GraphQL::Query)
|
32
|
-
parent_frame = parent_frame.context
|
33
|
-
end
|
34
|
-
|
35
|
-
push_data = Frame.new(
|
36
|
-
query: query,
|
37
|
-
path: push_key,
|
38
|
-
ast_node: metadata[:ast_node],
|
39
|
-
field: metadata[:field],
|
40
|
-
object: metadata[:object],
|
41
|
-
arguments: metadata[:arguments],
|
42
|
-
parent_frame: parent_frame,
|
43
|
-
)
|
44
|
-
else
|
45
|
-
# Custom key, no backtrace data for this
|
46
|
-
nil
|
47
|
-
end
|
48
|
-
|
49
|
-
if push_data && multiplex
|
50
|
-
push_storage = multiplex.context[:graphql_backtrace_contexts] ||= {}
|
51
|
-
push_storage[push_key] = push_data
|
52
|
-
multiplex.context[:last_graphql_backtrace_context] = push_data
|
53
|
-
end
|
54
|
-
|
55
|
-
if key == "execute_multiplex"
|
56
|
-
multiplex_context = metadata[:multiplex].context
|
57
|
-
begin
|
58
|
-
yield
|
59
|
-
rescue StandardError => err
|
60
|
-
# This is an unhandled error from execution,
|
61
|
-
# Re-raise it with a GraphQL trace.
|
62
|
-
potential_context = multiplex_context[:last_graphql_backtrace_context]
|
63
|
-
|
64
|
-
if potential_context.is_a?(GraphQL::Query::Context) ||
|
65
|
-
potential_context.is_a?(Backtrace::Frame)
|
66
|
-
raise TracedError.new(err, potential_context)
|
67
|
-
else
|
68
|
-
raise
|
69
|
-
end
|
70
|
-
ensure
|
71
|
-
multiplex_context.delete(:graphql_backtrace_contexts)
|
72
|
-
multiplex_context.delete(:last_graphql_backtrace_context)
|
73
|
-
end
|
74
|
-
else
|
75
|
-
yield
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|