@serverless-devs/s-progress-bar
Version:
Serverless Devs Tool Core Component
153 lines • 10.5 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProgressService = exports.ProgressType = void 0;
var MyProgressBar = __importStar(require("progress"));
var _a = require('chalk'), green = _a.green, white = _a.white;
var ProgressBar = MyProgressBar.default ? MyProgressBar.default : MyProgressBar;
var ProgressType;
(function (ProgressType) {
ProgressType[ProgressType["Bar"] = 0] = "Bar";
ProgressType[ProgressType["Loading"] = 1] = "Loading";
})(ProgressType = exports.ProgressType || (exports.ProgressType = {}));
var DEFAULT_BAR_FORMAT = "downloading " + green(':loading') + " ((:bar)) :current/:total(Bytes) :percent :etas";
var DEFAULT_LOADING_FORMAT = green(':loading') + " ((:bar))";
var ProgressService = /** @class */ (function () {
/**
* @param type, Bar: a progress bar with total size known, Loading: a loading style with unknown total size
* @param format, format of progress bar
* @param options, options of progress bar, with type Loading, just set {width:50, total:100}
*/
function ProgressService(type, options, format) {
this.type = type;
this.options = options;
var opts = ProgressService.initProgressBarOptions(type, options);
var fmt = ProgressService.initFormat(type, format);
this.progressType = type;
// init backward for loading type
this.backward = false;
// @ts-ignore
var pb = new ProgressBar(fmt, opts);
var loadingChars = ['⣴', '⣆', '⢻', '⢪', '⢫'];
// set tick callback with loading chars
var oldTick = pb.tick;
// @ts-ignore
pb.tick = function (len, tokens) {
var newTokens = Object.assign({
loading: loadingChars[parseInt(String(Math.random() * 5))],
}, tokens);
// console.log(newTokens);
oldTick.call(pb, len, newTokens);
};
this.bar = pb;
}
ProgressService.initFormat = function (type, format) {
if (!format) {
if (type === ProgressType.Bar) {
format = DEFAULT_BAR_FORMAT;
}
else if (type === ProgressType.Loading) {
format = DEFAULT_LOADING_FORMAT;
}
}
return format;
};
ProgressService.initProgressBarOptions = function (type, options) {
if (!options.width) {
options.width = 30;
}
if (!options.complete) {
if (type === ProgressType.Loading) {
options.complete = green('█');
}
else {
options.complete = green('█');
}
}
if (!options.incomplete) {
if (type === ProgressType.Loading) {
options.incomplete = '░';
}
else {
options.incomplete = white('░');
}
}
if (!options.clear) {
options.clear = true;
}
return options;
};
/**
* update progress status
* @param currentTransferred, when progress type is bar, increase progress ticks with
*/
ProgressService.prototype.update = function (currentTransferred) {
if (this.progressType === ProgressType.Bar) {
if (!currentTransferred) {
// warning, update bar with empty transferred tick.
return;
}
this.updateBarType(currentTransferred);
}
else if (this.progressType === ProgressType.Loading) {
this.updateLoadingType();
}
};
ProgressService.prototype.updateBarType = function (currentTransferred) {
var increment = currentTransferred - this.bar.curr;
this.bar.tick(increment);
};
ProgressService.prototype.updateLoadingType = function () {
if (!this.backward && this.bar.curr === this.bar.total) {
this.backward = true;
}
else if (this.backward && this.bar.curr === 0) {
this.backward = false;
}
if (this.backward) {
this.bar.tick(0);
}
else {
this.bar.tick(0);
}
};
ProgressService.prototype.terminate = function () {
this.bar.terminate();
};
ProgressService.prototype.complete = function () {
return this.bar.complete;
};
ProgressService.prototype.curr = function () {
return this.bar.curr;
};
ProgressService.prototype.total = function () {
return this.bar.total;
};
/**
* "interrupt" the progress bar and write a message above it.
*/
ProgressService.prototype.interrupt = function (message) {
this.bar.interrupt(message);
};
return ProgressService;
}());
exports.ProgressService = ProgressService;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUEwQztBQUVwQyxJQUFBLEtBQW1CLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBakMsS0FBSyxXQUFBLEVBQUUsS0FBSyxXQUFxQixDQUFDO0FBRTFDLElBQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztBQUVsRixJQUFZLFlBR1g7QUFIRCxXQUFZLFlBQVk7SUFDdEIsNkNBQUcsQ0FBQTtJQUNILHFEQUFPLENBQUE7QUFDVCxDQUFDLEVBSFcsWUFBWSxHQUFaLG9CQUFZLEtBQVosb0JBQVksUUFHdkI7QUFzREQsSUFBTSxrQkFBa0IsR0FBRyxpQkFBZSxLQUFLLENBQzdDLFVBQVUsQ0FDWCxvREFBaUQsQ0FBQztBQUNuRCxJQUFNLHNCQUFzQixHQUFNLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBVyxDQUFDO0FBRS9EO0lBS0U7Ozs7T0FJRztJQUNILHlCQUNxQixJQUFrQixFQUNsQixPQUEyQixFQUM5QyxNQUFlO1FBRkksU0FBSSxHQUFKLElBQUksQ0FBYztRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUc5QyxJQUFNLElBQUksR0FBRyxlQUFlLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLElBQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLGlDQUFpQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUV0QixhQUFhO1FBQ2IsSUFBTSxFQUFFLEdBQUcsSUFBSSxXQUFXLENB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