1 |
|
2 | "use strict";
|
3 |
|
4 | const UNITS = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | function 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 |
|
30 | module.exports = prettyBytes; |
\ | No newline at end of file |