"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProgressCallbackTransform = void 0; function _stream() { const data = require("stream"); _stream = function () { return data; }; return data; } class ProgressCallbackTransform extends _stream().Transform { constructor(total, cancellationToken, onProgress) { super(); this.total = total; this.cancellationToken = cancellationToken; this.onProgress = onProgress; this.start = Date.now(); this.transferred = 0; this.delta = 0; this.nextUpdate = this.start + 1000; } _transform(chunk, encoding, callback) { if (this.cancellationToken.cancelled) { callback(new Error("Cancelled"), null); return; } this.transferred += chunk.length; this.delta += chunk.length; const now = Date.now(); if (now >= this.nextUpdate && this.transferred !== this.total /* will be emitted on _flush */ ) { this.nextUpdate = now + 1000; this.onProgress({ total: this.total, delta: this.delta, transferred: this.transferred, percent: this.transferred / this.total * 100, bytesPerSecond: Math.round(this.transferred / ((now - this.start) / 1000)) }); this.delta = 0; } callback(null, chunk); } _flush(callback) { if (this.cancellationToken.cancelled) { callback(new Error("Cancelled")); return; } this.onProgress({ total: this.total, delta: this.delta, transferred: this.total, percent: 100, bytesPerSecond: Math.round(this.transferred / ((Date.now() - this.start) / 1000)) }); this.delta = 0; callback(null); } } exports.ProgressCallbackTransform = ProgressCallbackTransform; // __ts-babel@6.0.4 //# sourceMappingURL=ProgressCallbackTransform.js.map