UNPKG

tty-aware-progress

Version:

[![Build Status](https://travis-ci.org/bkniffler/tty-aware-progress.png?branch=master)](https://travis-ci.org/bkniffler/tty-aware-progress)

34 lines (33 loc) 1.39 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const progress_1 = __importDefault(require("progress")); function createProgress(total, { stream = process.stderr } = {}) { if (process.stderr.isTTY) { const progress = new progress_1.default(`[:bar] :current/:total :percent :rate/s :etas `, { total, stream }); return (numberOfTick = 1) => progress.tick(numberOfTick); } else { let current = 0; let percent = 0; let start = +new Date(); return (numberOfTick = 1) => { current += numberOfTick; const ratio = Math.min(Math.max(current / total, 0), 1); const value = Math.floor(ratio * 100); if (value !== percent) { percent = value; const elapsed = +new Date() - start; const eta = percent === 100 ? 0 : elapsed * (total / current - 1); const rate = current / (elapsed / 1000); stream.write(` ${percent}% ${Math.round(rate)}/s ${isNaN(eta) || !isFinite(eta) ? '0.0' : (eta / 1000).toFixed(1)}s`); } }; } } exports.default = createProgress;