module WebAuthn::JSONSerializer

def as_json(*)

Argument wildcard for Ruby on Rails controller automatic object JSON serialization
def as_json(*)
  deep_camelize_keys(to_hash)
end

def camelize(term)

def camelize(term)
  first_term, *rest = term.to_s.split('_')
  [first_term, *rest.map(&:capitalize)].join.to_sym
end

def deep_camelize_keys(object)

def deep_camelize_keys(object)
  case object
  when Hash
    object.each_with_object({}) do |(key, value), result|
      result[camelize(key)] = deep_camelize_keys(value)
    end
  when Array
    object.map { |element| deep_camelize_keys(element) }
  else
    object
  end
end

def to_hash

def to_hash
  attributes.each_with_object({}) do |attribute_name, hash|
    value = send(attribute_name)
    if value.respond_to?(:as_json)
      value = value.as_json
    end
    if value
      hash[attribute_name] = value
    end
  end
end