Improve some utils modules
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
parent
d43e7f2c34
commit
b36ce27bbe
|
@ -1,11 +1,9 @@
|
||||||
async function asyncForEach(
|
async function asyncForEach(
|
||||||
array: Array<any>,
|
array: Array<any>,
|
||||||
// eslint-disable-next-line no-unused-vars
|
|
||||||
callback: (arg0: any, arg1: number, arg2: Array<any>) => void
|
callback: (arg0: any, arg1: number, arg2: Array<any>) => void
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
for (let index = 0; index < array.length; index += 1) {
|
for (let index = 0; index < array.length; index += 1) {
|
||||||
// eslint-disable-next-line no-await-in-loop
|
callback(array[index], index, array);
|
||||||
await callback(array[index], index, array);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,16 +22,39 @@ function localeShortWeekDayNames(): string[] {
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://stackoverflow.com/a/18650828/10204399
|
// https://stackoverflow.com/a/18650828/10204399
|
||||||
function formatBytes(bytes: number, decimals = 2, zero = "0 Bytes"): string {
|
function formatBytes(
|
||||||
if (bytes === 0) return zero;
|
bytes: number,
|
||||||
|
decimals = 2,
|
||||||
|
locale: string | undefined = undefined
|
||||||
|
): string {
|
||||||
|
const formatNumber = (value = 0, unit = "byte") =>
|
||||||
|
new Intl.NumberFormat(locale, {
|
||||||
|
style: "unit",
|
||||||
|
unit,
|
||||||
|
unitDisplay: "long",
|
||||||
|
}).format(value);
|
||||||
|
|
||||||
|
if (bytes === 0) return formatNumber(0);
|
||||||
|
if (bytes < 0 || bytes > Number.MAX_SAFE_INTEGER) {
|
||||||
|
throw new RangeError(
|
||||||
|
"Number mustn't be negative and be inferior to Number.MAX_SAFE_INTEGER"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const k = 1024;
|
const k = 1024;
|
||||||
const dm = decimals < 0 ? 0 : decimals;
|
const dm = decimals < 0 ? 0 : decimals;
|
||||||
const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
|
const sizes = [
|
||||||
|
"byte",
|
||||||
|
"kilobyte",
|
||||||
|
"megabyte",
|
||||||
|
"gigabyte",
|
||||||
|
"terabyte",
|
||||||
|
"petabyte",
|
||||||
|
];
|
||||||
|
|
||||||
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
||||||
|
|
||||||
return `${parseFloat((bytes / k ** i).toFixed(dm))} ${sizes[i]}`;
|
return formatNumber(parseFloat((bytes / k ** i).toFixed(dm)), sizes[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function roundToNearestMinute(date = new Date()) {
|
function roundToNearestMinute(date = new Date()) {
|
||||||
|
|
Loading…
Reference in a new issue