class Dry::Schema::KeyValidator

def call(result)

Other tags:
    Api: - private
def call(result)
  input = result.to_h
  input_paths = key_paths(input)
  key_paths = key_map.to_dot_notation
  input_paths.each do |path|
    error_path =
      if path[INDEX_REGEX]
        key = path.gsub(INDEX_REGEX, BRACKETS)
        if key_paths.none? { |key_path| key_path.include?(key) }
          arr = path.gsub(INDEX_REGEX) { |m| ".#{m[1]}" }
          arr.split(DOT).map { |s| DIGIT_REGEX.match?(s) ? s.to_i : s.to_sym }
        end
      elsif key_paths.none? { |key_path| key_path.include?(path) }
        path
      end
    next unless error_path
    result.add_error([:unexpected_key, [error_path, input]])
  end
  result
end