From e39d5741b600f04673044addeb8ddc11992cf064 Mon Sep 17 00:00:00 2001 From: Larvey <39219859+LarveyOfficial@users.noreply.github.com> Date: Sun, 12 Jun 2022 01:13:51 -0400 Subject: [PATCH] Create humanFileSize.ts --- src/tools/humanFileSize.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/tools/humanFileSize.ts diff --git a/src/tools/humanFileSize.ts b/src/tools/humanFileSize.ts new file mode 100644 index 000000000..3bc16f5ae --- /dev/null +++ b/src/tools/humanFileSize.ts @@ -0,0 +1,21 @@ +export function humanFileSize(initialBytes: number, si = true, dp = 1) { + const thresh = si ? 1000 : 1024; + let bytes = initialBytes; + + if (Math.abs(bytes) < thresh) { + return `${bytes} B`; + } + + const units = si + ? ['kb', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] + : ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']; + let u = -1; + const r = 10 ** dp; + + do { + bytes /= thresh; + u += 1; + } while (Math.round(Math.abs(bytes) * r) / r >= thresh && u < units.length - 1); + + return `${bytes.toFixed(dp)} ${units[u]}`; + }