truncateBody function
Bounds data before capture, without pretty-printing a Map/List
just to measure it — that cost must stay lazy, paid only on open.
Implementation
Object? truncateBody(Object? data, int maxLength) {
if (data == null) return null;
if (data is Uint8List || data is FormData) return prettyFormatBody(data);
if (data is String && data.length > maxLength) {
return '${data.substring(0, maxLength)}… [truncated, ${data.length} chars total]';
}
return data;
}