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.

Potentially problematic release.


This version of graphql might be problematic. Click here for more details.

Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/lib/graphql/backtrace/table.rb +95 -55
  3. data/lib/graphql/backtrace.rb +1 -19
  4. data/lib/graphql/current.rb +5 -0
  5. data/lib/graphql/dashboard/statics/bootstrap-5.3.3.min.css +6 -0
  6. data/lib/graphql/dashboard/statics/bootstrap-5.3.3.min.js +7 -0
  7. data/lib/graphql/dashboard/statics/dashboard.css +3 -0
  8. data/lib/graphql/dashboard/statics/dashboard.js +78 -0
  9. data/lib/graphql/dashboard/statics/header-icon.png +0 -0
  10. data/lib/graphql/dashboard/statics/icon.png +0 -0
  11. data/lib/graphql/dashboard/views/graphql/dashboard/landings/show.html.erb +18 -0
  12. data/lib/graphql/dashboard/views/graphql/dashboard/traces/index.html.erb +63 -0
  13. data/lib/graphql/dashboard/views/layouts/graphql/dashboard/application.html.erb +60 -0
  14. data/lib/graphql/dashboard.rb +142 -0
  15. data/lib/graphql/dataloader/active_record_association_source.rb +64 -0
  16. data/lib/graphql/dataloader/active_record_source.rb +26 -0
  17. data/lib/graphql/dataloader/async_dataloader.rb +17 -5
  18. data/lib/graphql/dataloader/null_dataloader.rb +1 -1
  19. data/lib/graphql/dataloader/source.rb +2 -2
  20. data/lib/graphql/dataloader.rb +37 -5
  21. data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +11 -4
  22. data/lib/graphql/execution/interpreter/runtime.rb +60 -33
  23. data/lib/graphql/execution/interpreter.rb +9 -1
  24. data/lib/graphql/execution/multiplex.rb +0 -4
  25. data/lib/graphql/introspection/directive_location_enum.rb +1 -1
  26. data/lib/graphql/invalid_name_error.rb +1 -1
  27. data/lib/graphql/invalid_null_error.rb +6 -12
  28. data/lib/graphql/language/parser.rb +1 -1
  29. data/lib/graphql/query.rb +8 -12
  30. data/lib/graphql/schema/enum.rb +36 -1
  31. data/lib/graphql/schema/input_object.rb +1 -1
  32. data/lib/graphql/schema/interface.rb +1 -0
  33. data/lib/graphql/schema/member/has_dataloader.rb +60 -0
  34. data/lib/graphql/schema/member.rb +1 -0
  35. data/lib/graphql/schema/object.rb +17 -8
  36. data/lib/graphql/schema/resolver.rb +2 -5
  37. data/lib/graphql/schema/validator/required_validator.rb +23 -6
  38. data/lib/graphql/schema/visibility/profile.rb +5 -5
  39. data/lib/graphql/schema/visibility.rb +14 -9
  40. data/lib/graphql/schema.rb +54 -28
  41. data/lib/graphql/static_validation/validator.rb +6 -1
  42. data/lib/graphql/subscriptions/serialize.rb +1 -3
  43. data/lib/graphql/tracing/active_support_notifications_trace.rb +6 -2
  44. data/lib/graphql/tracing/appoptics_trace.rb +3 -1
  45. data/lib/graphql/tracing/appsignal_trace.rb +6 -0
  46. data/lib/graphql/tracing/data_dog_trace.rb +5 -0
  47. data/lib/graphql/tracing/detailed_trace/memory_backend.rb +60 -0
  48. data/lib/graphql/tracing/detailed_trace/redis_backend.rb +72 -0
  49. data/lib/graphql/tracing/detailed_trace.rb +93 -0
  50. data/lib/graphql/tracing/new_relic_trace.rb +147 -41
  51. data/lib/graphql/tracing/perfetto_trace/trace.proto +141 -0
  52. data/lib/graphql/tracing/perfetto_trace/trace_pb.rb +33 -0
  53. data/lib/graphql/tracing/perfetto_trace.rb +737 -0
  54. data/lib/graphql/tracing/prometheus_trace.rb +22 -0
  55. data/lib/graphql/tracing/scout_trace.rb +6 -0
  56. data/lib/graphql/tracing/sentry_trace.rb +5 -0
  57. data/lib/graphql/tracing/statsd_trace.rb +9 -0
  58. data/lib/graphql/tracing/trace.rb +125 -1
  59. data/lib/graphql/tracing.rb +2 -0
  60. data/lib/graphql/version.rb +1 -1
  61. data/lib/graphql.rb +3 -0
  62. metadata +148 -10
  63. data/lib/graphql/backtrace/inspect_result.rb +0 -38
  64. data/lib/graphql/backtrace/trace.rb +0 -93
  65. data/lib/graphql/backtrace/tracer.rb +0 -80
  66. 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
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
- module GraphQL
3
- class Schema
4
- # @api private
5
- module NullMask
6
- def self.call(member, ctx)
7
- false
8
- end
9
- end
10
- end
11
- end