def argument_values(owner_defn, argument_nodes, field_resolve_step)
arg_defns = @query.types.arguments(owner_defn)
argument_values = {}
errors = nil
arg_defns.each do |argument_definition|
arg_ruby_key = argument_definition.keyword
arg_graphql_key = argument_definition.graphql_name
arg_node = argument_nodes.find { |a| a.name == arg_graphql_key }
if arg_node.nil? || (arg_node.value.is_a?(Language::Nodes::VariableIdentifier) && !variable_values.key?(arg_node.value.name))
if argument_definition.default_value?
arg_value = value_from_ast(argument_definition.default_value, argument_definition.type)
argument_value(argument_values, arg_ruby_key, argument_definition, arg_value, nil, field_resolve_step)
end
else
arg_value = value_from_ast(arg_node.value, argument_definition.type)
argument_value(argument_values, arg_ruby_key, argument_definition, arg_value, nil, field_resolve_step)
end
rescue GraphQL::RuntimeError => exec_err
errors ||= []
errors << exec_err
end
return argument_values, errors
end