@@ -30,10 +30,15 @@ def resolve_object_scope(raw_object, parent_type, selections, typename = nil)
3030 case node
3131 when GraphQL ::Language ::Nodes ::Field
3232 field_name = node . alias || node . name
33+ raw_value = raw_object . delete ( field_name )
3334
3435 if @request . query . get_field ( parent_type , node . name ) . introspection?
35- if node . name == TYPENAME && parent_type == @root_type && node != TypeResolver ::TYPENAME_EXPORT_NODE
36- raw_object [ field_name ] = @root_type . graphql_name
36+ next if TypeResolver . export_key? ( field_name )
37+
38+ raw_object [ field_name ] = if node . name == TYPENAME && parent_type == @root_type
39+ @root_type . graphql_name
40+ else
41+ raw_value
3742 end
3843 next
3944 end
@@ -42,14 +47,14 @@ def resolve_object_scope(raw_object, parent_type, selections, typename = nil)
4247 named_type = node_type . unwrap
4348
4449 raw_object [ field_name ] = if node_type . list?
45- resolve_list_scope ( raw_object [ field_name ] , Util . unwrap_non_null ( node_type ) , node . selections )
50+ resolve_list_scope ( raw_value , Util . unwrap_non_null ( node_type ) , node . selections )
4651 elsif Util . is_leaf_type? ( named_type )
47- raw_object [ field_name ]
52+ raw_value
4853 else
49- resolve_object_scope ( raw_object [ field_name ] , named_type , node . selections )
54+ resolve_object_scope ( raw_value , named_type , node . selections )
5055 end
5156
52- return nil if raw_object [ field_name ] . nil ? && node_type . non_null ?
57+ return nil if node_type . non_null ? && raw_object [ field_name ] . nil ?
5358
5459 when GraphQL ::Language ::Nodes ::InlineFragment
5560 fragment_type = node . type ? @supergraph . memoized_schema_types [ node . type . name ] : parent_type
0 commit comments