11# frozen_string_literal: true
22require "graphql/schema/field/connection_extension"
33require "graphql/schema/field/scope_extension"
4+ require "graphql/schema/field/default_resolver_tracker"
45
56module GraphQL
67 class Schema
@@ -737,7 +738,10 @@ def resolve(object, args, query_ctx)
737738
738739 inner_object = obj . object
739740
741+ tracker = query_ctx [ :_default_resolver_tracker ]
742+
740743 if !NOT_CONFIGURED . equal? ( @hash_key )
744+ tracker &.track ( self , :hash_key )
741745 hash_value = if inner_object . is_a? ( Hash )
742746 inner_object . key? ( @hash_key ) ? inner_object [ @hash_key ] : inner_object [ @hash_key_str ]
743747 elsif inner_object . respond_to? ( :[] )
@@ -751,6 +755,7 @@ def resolve(object, args, query_ctx)
751755 hash_value || ( @fallback_value != NOT_CONFIGURED ? @fallback_value : nil )
752756 end
753757 elsif obj . respond_to? ( resolver_method )
758+ tracker &.track ( self , :resolver_method )
754759 method_to_call = resolver_method
755760 method_receiver = obj
756761 # Call the method with kwargs, if there are any
@@ -761,17 +766,22 @@ def resolve(object, args, query_ctx)
761766 end
762767 elsif inner_object . is_a? ( Hash )
763768 if @dig_keys
769+ tracker &.track ( self , :hash_dig_keys )
764770 inner_object . dig ( *@dig_keys )
765771 elsif inner_object . key? ( @method_sym )
772+ tracker &.track ( self , :hash_method_sym )
766773 inner_object [ @method_sym ]
767774 elsif inner_object . key? ( @method_str ) || !inner_object . default_proc . nil?
775+ tracker &.track ( self , :hash_method_str )
768776 inner_object [ @method_str ]
769777 elsif @fallback_value != NOT_CONFIGURED
778+ tracker &.track ( self , :hash_fallback )
770779 @fallback_value
771780 else
772781 nil
773782 end
774783 elsif inner_object . respond_to? ( @method_sym )
784+ tracker &.track ( self , :send_method_sym )
775785 method_to_call = @method_sym
776786 method_receiver = obj . object
777787 if !ruby_kwargs . empty?
@@ -780,6 +790,7 @@ def resolve(object, args, query_ctx)
780790 inner_object . public_send ( @method_sym )
781791 end
782792 elsif @fallback_value != NOT_CONFIGURED
793+ tracker &.track ( self , :fallback )
783794 @fallback_value
784795 else
785796 raise <<-ERR
0 commit comments