UNPKG

681 BJavaScriptView Raw
1///@ts-check
2"use strict";
3
4const UNITS = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
5
6/**
7 *
8 * @param {number} number
9 * @returns {string}
10 */
11function prettyBytes(number) {
12 if (!Number.isFinite(number)) {
13 return 'NAN';
14 }
15
16 if (number < 1) {
17 const numberString = number.toLocaleString();
18 return numberString + ' B';
19 }
20
21 const exponent = Math.min(Math.floor(Math.log10(number) / 3), UNITS.length - 1);
22 number = Number((number / (1000 ** exponent)).toPrecision(3));
23 const numberString = number.toLocaleString();
24
25 const unit = UNITS[exponent];
26
27 return numberString + ' ' + unit;
28};
29
30module.exports = prettyBytes;
\No newline at end of file