UNPKG

eas-cli

Version:
66 lines (65 loc) 2.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createProgressTracker = void 0; const tslib_1 = require("tslib"); const chalk_1 = tslib_1.__importDefault(require("chalk")); const node_crypto_1 = require("node:crypto"); const timer_1 = require("./timer"); const ora_1 = require("../ora"); function createProgressTracker({ total, message, completedMessage, }) { let bar = null; let calcTotal = total ?? 0; let transferredSoFar = 0; let current = 0; const timerLabel = String((0, node_crypto_1.randomUUID)()); const getMessage = (v, total) => { const ratio = Math.min(Math.max(v, 0), 1); const percent = Math.floor(ratio * 100); return typeof message === 'string' ? `${message} ${percent.toFixed(0)}%` : message(ratio, total); }; return ({ progress, isComplete, error }) => { if (progress) { if (!bar && (progress.total !== undefined || total !== undefined)) { calcTotal = total ?? progress.total; bar = (0, ora_1.ora)(getMessage(0, calcTotal)).start(); (0, timer_1.startTimer)(timerLabel); } if (progress.total) { calcTotal = progress.total; } if (bar) { let percentage = 0; if (progress.percent) { percentage = progress.percent; } else { current += progress.transferred - transferredSoFar; percentage = current / calcTotal; } bar.text = getMessage(percentage, calcTotal); } transferredSoFar = progress.transferred; } if (!bar) { return; } if (isComplete) { const duration = (0, timer_1.endTimer)(timerLabel); const prettyTime = (0, timer_1.formatMilliseconds)(duration); if (error) { bar.fail(); } else if (isComplete) { if (typeof completedMessage === 'string') { bar.succeed(`${completedMessage} ${chalk_1.default.dim(prettyTime)}`); } else { bar.succeed(completedMessage(prettyTime)); } } } }; } exports.createProgressTracker = createProgressTracker;