graphql 2.4.8 → 2.4.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/backtrace/table.rb +95 -55
- data/lib/graphql/backtrace.rb +1 -19
- data/lib/graphql/current.rb +5 -0
- 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 +17 -5
- data/lib/graphql/dataloader/null_dataloader.rb +1 -1
- data/lib/graphql/dataloader/source.rb +2 -2
- data/lib/graphql/dataloader.rb +37 -5
- data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +11 -4
- data/lib/graphql/execution/interpreter/runtime.rb +60 -33
- data/lib/graphql/execution/interpreter.rb +9 -1
- 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 +6 -12
- data/lib/graphql/language/parser.rb +1 -1
- data/lib/graphql/query.rb +8 -12
- data/lib/graphql/schema/enum.rb +36 -1
- data/lib/graphql/schema/input_object.rb +1 -1
- data/lib/graphql/schema/interface.rb +1 -0
- data/lib/graphql/schema/member/has_dataloader.rb +60 -0
- data/lib/graphql/schema/member.rb +1 -0
- data/lib/graphql/schema/object.rb +17 -8
- data/lib/graphql/schema/resolver.rb +2 -5
- data/lib/graphql/schema/validator/required_validator.rb +23 -6
- data/lib/graphql/schema/visibility/profile.rb +5 -5
- data/lib/graphql/schema/visibility.rb +14 -9
- data/lib/graphql/schema.rb +54 -28
- data/lib/graphql/static_validation/validator.rb +6 -1
- data/lib/graphql/subscriptions/serialize.rb +1 -3
- data/lib/graphql/tracing/active_support_notifications_trace.rb +6 -2
- data/lib/graphql/tracing/appoptics_trace.rb +3 -1
- data/lib/graphql/tracing/appsignal_trace.rb +6 -0
- data/lib/graphql/tracing/data_dog_trace.rb +5 -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/new_relic_trace.rb +147 -41
- 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/prometheus_trace.rb +22 -0
- data/lib/graphql/tracing/scout_trace.rb +6 -0
- data/lib/graphql/tracing/sentry_trace.rb +5 -0
- data/lib/graphql/tracing/statsd_trace.rb +9 -0
- data/lib/graphql/tracing/trace.rb +125 -1
- data/lib/graphql/tracing.rb +2 -0
- data/lib/graphql/version.rb +1 -1
- data/lib/graphql.rb +3 -0
- metadata +148 -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
|
@@ -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
|