@huggingface/hub
Version:
Utilities to interact with the Hugging Face hub
20 lines (19 loc) • 598 B
text/typescript
/**
* Format a byte count using SI units (multiples of 1000, e.g. `1.2 GB`).
*
* Negative or non-finite inputs are returned as `"<value> B"` without unit conversion.
*/
export function formatBytes(bytes: number): string {
if (!Number.isFinite(bytes) || bytes < 0) {
return `${bytes} B`;
}
const units = ["B", "kB", "MB", "GB", "TB", "PB"];
let value = bytes;
let i = 0;
while (value >= 1000 && i < units.length - 1) {
value /= 1000;
i++;
}
const formatted = i === 0 ? value.toString() : value.toFixed(value >= 100 ? 0 : value >= 10 ? 1 : 2);
return `${formatted} ${units[i]}`;
}