@@ -101,8 +101,7 @@ def initialize(active_support_notifications_pattern: nil, save_profile: false, *
101101 else
102102 [ ]
103103 end
104- as_param_filter = ActiveSupport ::ParameterFilter . new ( fp , mask : ArgumentsFilter ::FILTERED )
105- ActiveSupportArgumentsFilter . new ( as_param_filter )
104+ ActiveSupport ::ParameterFilter . new ( fp , mask : ArgumentsFilter ::FILTERED )
106105 else
107106 ArgumentsFilter . new
108107 end
@@ -270,9 +269,9 @@ def end_execute_field(field, object, arguments, query, app_result)
270269 if @create_debug_annotations
271270 start_field . track_event = dup_with ( start_field . track_event , {
272271 debug_annotations : [
273- payload_to_debug ( nil , filter_if_hash ( object . object ) , iid : DA_OBJECT_IID , intern_value : true ) ,
274- payload_to_debug ( nil , filter_if_hash ( arguments ) , iid : DA_ARGUMENTS_IID ) ,
275- payload_to_debug ( nil , filter_if_hash ( app_result ) , iid : DA_RESULT_IID , intern_value : true )
272+ payload_to_debug ( nil , object . object , iid : DA_OBJECT_IID , intern_value : true ) ,
273+ payload_to_debug ( nil , arguments , iid : DA_ARGUMENTS_IID ) ,
274+ payload_to_debug ( nil , app_result , iid : DA_RESULT_IID , intern_value : true )
276275 ]
277276 } )
278277 end
@@ -606,86 +605,18 @@ def fid
606605 Fiber . current . object_id
607606 end
608607
609- def filter_if_hash ( args )
610- if args . is_a? ( Hash )
611- @arguments_filter . filter ( args )
612- else
613- args
614- end
615- end
616-
617- class ActiveSupportArgumentsFilter
618- def initialize ( parameter_filter )
619- @parameter_filter = parameter_filter
620- end
621-
622- def filter ( args )
623- args_h = remove_wrappers ( args )
624- @parameter_filter . filter ( args_h )
625- end
626-
627- private
628-
629- def remove_wrappers ( args )
630- case args
631- when Array
632- args . map { |a | remove_wrappers ( a ) }
633- when Hash
634- args2 = args . dup
635- args . each do |k , v |
636- args2 [ k ] = remove_wrappers ( v )
637- end
638- args2
639- when GraphQL ::Schema ::InputObject
640- args_h = args . to_h
641- args_h . each do |k , v |
642- args_h [ k ] = remove_wrappers ( v )
643- end
644- args_h
645- else
646- args
647- end
648- end
649- end
650-
651608 class ArgumentsFilter
652609 # From Rails defaults
653610 # https://github.com/rails/rails/blob/main/railties/lib/rails/generators/rails/app/templates/config/initializers/filter_parameter_logging.rb.tt#L6-L8
654611 SENSITIVE_KEY = /passw|token|crypt|email|_key|salt|certificate|secret|ssn|cvv|cvc|otp/i
655612 FILTERED = "[FILTERED]"
656613
657- def filter ( argument )
658- case argument
659- when GraphQL ::Schema ::InputObject
660- filter ( argument . to_h )
661- when Hash
662- target_h = nil
663- argument . each do |k , v |
664- if ( k . is_a? ( String ) && SENSITIVE_KEY . match? ( k ) ) ||
665- ( k . is_a? ( Symbol ) && SENSITIVE_KEY . match? ( k . name ) )
666- target_h ||= argument . dup
667- target_h [ k ] = FILTERED
668- else
669- new_v = filter ( v )
670- if !v . equal? ( new_v )
671- target_h ||= argument . dup
672- target_h [ k ] = new_v
673- end
674- end
675- end
676- target_h || argument
677- when Array
678- target_arr = nil
679- argument . each_with_index do |inner_v , i |
680- new_v = filter ( inner_v )
681- if !inner_v . equal? ( new_v )
682- target_arr ||= argument . dup
683- target_arr [ i ] = new_v
684- end
685- end
686- target_arr || argument
614+ def filter_param ( key , value )
615+ if ( key . is_a? ( String ) && SENSITIVE_KEY . match? ( key ) ) ||
616+ ( key . is_a? ( Symbol ) && SENSITIVE_KEY . match? ( key . name ) )
617+ FILTERED
687618 else
688- argument
619+ value
689620 end
690621 end
691622 end
@@ -743,10 +674,13 @@ def payload_to_debug(k, v, iid: nil, intern_value: false)
743674 else
744675 String ( k2 )
745676 end
746- payload_to_debug ( debug_k , v2 , intern_value : intern_value )
677+ filtered_v2 = @arguments_filter . filter_param ( debug_k , v2 )
678+ payload_to_debug ( debug_k , filtered_v2 , intern_value : intern_value )
747679 }
748680 debug_v . compact!
749681 debug_annotation ( iid , :dict_entries , debug_v )
682+ when GraphQL ::Schema ::InputObject
683+ payload_to_debug ( k , v . to_h , iid : iid , intern_value : intern_value )
750684 else
751685 class_name_iid = @interned_da_string_values [ v . class . name ]
752686 da = [
0 commit comments