ecstatic
Version:
A simple static file server middleware that works with both Express and Flatiron
31 lines (24 loc) • 763 B
JavaScript
;
// given a file's stat, return the size of it in string
// humanReadable: (boolean) whether to result is human readable
// si: (boolean) whether to use si (1k = 1000), otherwise 1k = 1024
// adopted from http://stackoverflow.com/a/14919494/665507
module.exports = function sizeToString(stat, humanReadable, si) {
if (stat.isDirectory && stat.isDirectory()) {
return '';
}
let bytes = stat.size;
const threshold = si ? 1000 : 1024;
if (!humanReadable || bytes < threshold) {
return `${bytes}B`;
}
const units = ['k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'];
let u = -1;
do {
bytes /= threshold;
u += 1;
} while (bytes >= threshold);
let b = bytes.toFixed(1);
if (isNaN(b)) b = '??';
return b + units[u];
};