UNPKG

@dvcol/common-utils

Version:

Typescript library for common utility functions and constants

86 lines (74 loc) 3.54 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }// lib/common/utils/format.utils.ts var _prettybytes = require('pretty-bytes'); var _prettybytes2 = _interopRequireDefault(_prettybytes); 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(`${_nullishCoalesce(months, () => ( 0))}m`); if (days || years || months) parts.push(`${_nullishCoalesce(days, () => ( 0))}d`); if (hours || years || months || days) parts.push(`${_nullishCoalesce(hours, () => ( 0))}h`); if (minutes || years || months || days || hours) parts.push(`${_nullishCoalesce(minutes, () => ( 0))}m`); parts.push(`${_nullishCoalesce(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 _prettybytes2.default.call(void 0, num); } return "0 B"; }; exports.computeProgress = computeProgress; exports.formatTimeShort = formatTimeShort; exports.formatTimeLong = formatTimeLong; exports.InSeconds = InSeconds; exports.formatHMS = formatHMS; exports.formatDHMS = formatDHMS; exports.formatYMD = formatYMD; exports.formatTime = formatTime; exports.formatBytes = formatBytes;