@dvcol/common-utils
Version:
Typescript library for common utility functions and constants
86 lines (84 loc) • 2.88 kB
JavaScript
// lib/common/utils/format.utils.ts
import prettyBytes from "pretty-bytes";
var computeProgress = (downloaded, size) => {
const numDownloaded = Number(downloaded);
const numSize = Number(size);
if (numDownloaded && Number.isFinite(numDownloaded) && numSize && Number.isFinite(numSize)) {
const progress = Math.floor(numDownloaded / numSize * 100);
return Number.isFinite(progress) ? progress : 0;
}
return 0;
};
var formatTimeShort = ({ years, months, days, hours, minutes, seconds }, separator = ":") => {
const hms = [];
hms.push(hours.toString().padStart(2, "0"));
hms.push(minutes.toString().padStart(2, "0"));
hms.push(seconds.toString().padStart(2, "0"));
if (!years && !months && !days) return hms.join(separator);
const ymd = [];
ymd.push(years.toString().padStart(2, "0"));
ymd.push(months.toString().padStart(2, "0"));
ymd.push(days.toString().padStart(2, "0"));
return `${ymd.join(separator)}-${hms.join(separator)}`;
};
var formatTimeLong = ({ years, months, days, hours, minutes, seconds }) => {
const parts = [];
if (years) parts.push(`${years}y`);
if (months || years) parts.push(`${months ?? 0}m`);
if (days || years || months) parts.push(`${days ?? 0}d`);
if (hours || years || months || days) parts.push(`${hours ?? 0}h`);
if (minutes || years || months || days || hours) parts.push(`${minutes ?? 0}m`);
parts.push(`${seconds ?? 0}s`);
return parts.join(" ");
};
var InSeconds = {
minute: 60,
hour: 60 * 60,
day: 60 * 60 * 24,
week: 60 * 60 * 24 * 7,
month: 60 * 60 * 24 * (365 / 12),
year: 60 * 60 * 24 * 365
};
var formatHMS = (s) => {
const hours = Math.floor(s / InSeconds.hour);
const minutes = Math.floor(s % InSeconds.hour / InSeconds.minute);
const seconds = Math.floor(s % InSeconds.minute);
return { years: 0, months: 0, days: 0, hours, minutes, seconds };
};
var formatDHMS = (s) => {
const days = Math.floor(s / InSeconds.day);
return { ...formatHMS(s % InSeconds.day), days };
};
var formatYMD = (s) => {
let remaining = 0;
const years = Math.floor(s / InSeconds.year);
remaining = s % InSeconds.year;
const months = Math.floor(remaining / InSeconds.month);
remaining %= InSeconds.month;
return { ...formatDHMS(remaining), years, months };
};
var formatTime = (s, format = "short") => {
if (format === "short") return formatTimeShort(formatHMS(s));
if (format === "long") return formatTimeLong(formatHMS(s));
if (format === "days") return formatTimeLong(formatDHMS(s));
if (format === "ymd") return formatTimeLong(formatYMD(s));
return formatYMD(s);
};
var formatBytes = (byte) => {
const num = Number(byte);
if (num && Number.isFinite(num)) {
return prettyBytes(num);
}
return "0 B";
};
export {
computeProgress,
formatTimeShort,
formatTimeLong,
InSeconds,
formatHMS,
formatDHMS,
formatYMD,
formatTime,
formatBytes
};