class Dry::Schema::DSL

def key_spec(name, type)

Other tags:
    Api: - private
def key_spec(name, type)
  if type.respond_to?(:keys)
    {name => key_map(type.name_key_map)}
  elsif type.respond_to?(:member)
    kv = key_spec(name, type.member)
    kv.equal?(name) ? name : kv.flatten(1)
  elsif type.meta[:maybe] && type.respond_to?(:right)
    key_spec(name, type.right)
  elsif type.respond_to?(:type)
    key_spec(name, type.type)
  else
    name
  end
end