1
0
Fork 0
forked from svrjs/svrjs
This repository has been archived on 2024-11-10. You can view files and clone it, but cannot push or open issues or pull requests.
svrjs/src/utils/sizify.js

25 lines
727 B
JavaScript

function sizify(bytes, addI) {
if (bytes === 0) return "0";
if (bytes < 0) bytes = -bytes;
const prefixes = ["", "K", "M", "G", "T", "P", "E", "Z", "Y", "R", "Q"];
const prefixIndex = Math.min(
Math.floor(Math.log2(bytes) / 10),
prefixes.length - 1,
);
const prefixIndexTranslated = Math.pow(2, 10 * prefixIndex);
const decimalPoints = Math.max(
2 - Math.floor(Math.log10(bytes / prefixIndexTranslated)),
0,
);
const size =
Math.ceil((bytes / prefixIndexTranslated) * Math.pow(10, decimalPoints)) /
Math.pow(10, decimalPoints);
const prefix = prefixes[prefixIndex];
const suffix = prefixIndex > 0 && addI ? "i" : "";
return size + prefix + suffix;
}
module.exports = sizify;