fehlerDetails function
Siebt das data einer Fehlerantwort zu einer Form, die man gefahrlos an
einem Fehler mitfuehren kann.
Ein Fehler landet in Protokollen, und der Rumpf kommt ueber fremde Proxys.
Deshalb ueberlebt nur, was flach, klein und bezeichner-foermig benannt ist
-- und kein Wert, der mit einem der gesendeten geheimnisse ueberlappt.
Der Parameter hat aus demselben Grund keinen Vorgabewert: ein Sieb ohne
Abgleichliste waere nur ein Formfilter und damit keine Zusage.
Implementation
Map<String, dynamic> fehlerDetails(Object? daten, List<String> geheimnisse) {
final gesiebt = _sieben(daten, geheimnisse, 0);
return gesiebt is Map<String, dynamic> ? gesiebt : <String, dynamic>{};
}