redactSecrets static method
Returns a deep copy of json in which every secret value, i.e. every
password, access_token and refresh_token, is replaced by ***.
Used by the toString() implementations so that interpolating an
account, server configuration or token into log output does not leak
credentials.
Implementation
static Map<String, dynamic> redactSecrets(Map<String, dynamic> json) {
Object? redact(Object? value) {
if (value is Map) {
return <String, dynamic>{
for (final entry in value.entries)
entry.key.toString(): _secretKeys.contains(entry.key)
? '***'
: redact(entry.value),
};
}
if (value is List) {
return value.map(redact).toList();
}
return value;
}
return redact(json)! as Map<String, dynamic>;
}