UNPKG

ipull

Version:

The only file downloader you'll ever need. For node.js and the browser, CLI and library for fast and reliable file downloads.

63 lines 2.36 kB
import prettyBytes from "pretty-bytes"; import prettyMilliseconds from "pretty-ms"; import { DownloadStatus } from "../download-engine/download-file/progress-status-file.js"; const DEFAULT_LOCALIZATION = "en-US"; const NUMBER_FORMAT_OPTIONS = { maximumFractionDigits: 2, minimumFractionDigits: 2, minimumIntegerDigits: 3 }; export const PRETTY_MS_OPTIONS = { ...NUMBER_FORMAT_OPTIONS, keepDecimalsOnWholeSeconds: true, secondsDecimalDigits: 2, compact: true }; const PRETTY_BYTES_OPTIONS = { ...NUMBER_FORMAT_OPTIONS, space: false, locale: DEFAULT_LOCALIZATION }; const DEFAULT_CLI_INFO_STATUS = { speed: 0, transferredBytes: 0, totalBytes: 0, percentage: 0, timeLeft: 0, ended: false }; function formatSpeed(speed) { return prettyBytes(Math.min(speed, 9999999999) || 0, PRETTY_BYTES_OPTIONS) + "/s"; } export function createFormattedStatus(status) { if ("formattedSpeed" in status) { return status; } const fullStatus = { ...DEFAULT_CLI_INFO_STATUS, ...status }; const formattedSpeed = formatSpeed(fullStatus.speed); const formatTransferred = prettyBytes(fullStatus.transferredBytes, PRETTY_BYTES_OPTIONS); const formatTotal = fullStatus.totalBytes === 0 ? "???" : prettyBytes(fullStatus.totalBytes, PRETTY_BYTES_OPTIONS); const formatTransferredOfTotal = `${formatTransferred}/${formatTotal}`; const formatTimeLeft = fullStatus.totalBytes === 0 ? "unknown time" : prettyMilliseconds(fullStatus.timeLeft, PRETTY_MS_OPTIONS); const formattedPercentage = fullStatus.percentage.toLocaleString(DEFAULT_LOCALIZATION, { minimumIntegerDigits: 1, minimumFractionDigits: 4 }) .slice(0, 5) + "%"; let fullComment = fullStatus.comment; if (status.downloadStatus === DownloadStatus.Cancelled || status.downloadStatus === DownloadStatus.Paused) { if (fullComment) { fullComment += " | " + status.downloadStatus; } else { fullComment = status.downloadStatus; } } return { ...fullStatus, formattedSpeed, formatTransferred, formatTransferredOfTotal, formatTotal, formatTimeLeft, formattedPercentage, formattedComment: fullComment ? `(${fullComment})` : "" }; } //# sourceMappingURL=format-transfer-status.js.map