Browse Source

#218 fixes and improvements - adding missing file

singulart 3 years ago
parent
commit
0375f5753b
1 changed files with 31 additions and 0 deletions
  1. 31 0
      community-contributions/joystreamvideobot/src/sizeformat.ts

+ 31 - 0
community-contributions/joystreamvideobot/src/sizeformat.ts

@@ -0,0 +1,31 @@
+/**
+* Format bytes as human-readable text.
+* 
+* @param bytes Number of bytes.
+* @param si True to use metric (SI) units, aka powers of 1000. False to use 
+*           binary (IEC), aka powers of 1024.
+* @param dp Number of decimal places to display.
+* 
+* @return Formatted string.
+*/
+export const humanFileSize = (bytes: number, si=false, dp=1): string => {
+ const thresh = si ? 1000 : 1024;
+
+ 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;
+ } while (Math.round(Math.abs(bytes) * r) / r >= thresh && u < units.length - 1);
+
+
+ return bytes.toFixed(dp) + ' ' + units[u];
+}