dop-stick
Version:
Source control tooling for versionable-upgradeable smart contracts
142 lines • 3.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProgressAdapter = void 0;
const logger_1 = require("../core/logger");
const progress_1 = require("../core/progress");
class ProgressAdapter {
constructor() {
this.progressBars = new Map();
this.activeSpinner = null;
}
static getInstance() {
if (!this.instance) {
this.instance = new ProgressAdapter();
}
return this.instance;
}
/**
* Creates and tracks a progress bar for module validation
*/
trackModuleValidation(total) {
const id = `validation-${Date.now()}`;
const options = {
title: 'Validating Modules',
showPercentage: true,
showCount: true,
barColor: 'cyan'
};
const progress = new progress_1.ProgressBar(total, options);
this.progressBars.set(id, progress);
return id;
}
/**
* Updates progress for module validation
*/
updateModuleValidation(id, current, status) {
const progress = this.progressBars.get(id);
if (progress) {
progress.update(current, status);
}
}
/**
* Gets a progress bar by ID
*/
getProgress(id) {
return this.progressBars.get(id);
}
/**
* Marks a progress bar as failed
*/
failProgress(id, message) {
const progress = this.getProgress(id);
if (progress) {
progress.fail(message);
this.progressBars.delete(id);
}
}
/**
* Completes module validation tracking
*/
completeModuleValidation(id, success, message) {
const progress = this.getProgress(id);
if (!progress)
return;
if (success) {
progress.complete(message);
}
else {
progress.fail(message);
}
this.progressBars.delete(id);
}
/**
* Creates and tracks a new progress bar
*/
createProgress(id, total, options) {
const progress = new progress_1.ProgressBar(total, options);
this.progressBars.set(id, progress);
return id;
}
/**
* Updates progress for a specific operation
*/
updateProgress(id, current, status) {
const progress = this.progressBars.get(id);
if (progress) {
progress.update(current, status);
}
}
/**
* Completes a progress bar
*/
completeProgress(id, success, message) {
const progress = this.getProgress(id);
if (progress) {
if (success) {
progress.complete(message);
}
else {
progress.fail(message);
}
this.progressBars.delete(id);
}
}
/**
* Starts a spinner with a message
*/
startSpinner(message) {
const id = `spinner-${Date.now()}`;
this.activeSpinner = id;
logger_1.Logger.startSpinner(message);
return id;
}
/**
* Stops the active spinner with optional success state and message
*/
stopSpinner(success = true, message) {
if (this.activeSpinner) {
logger_1.Logger.stopSpinner(success, message);
this.activeSpinner = null;
}
}
/**
* Cleans up all progress tracking
*/
cleanup() {
this.progressBars.forEach(progress => {
try {
progress.stop();
}
catch (error) {
// Ignore cleanup errors
}
});
this.progressBars.clear();
if (this.activeSpinner) {
logger_1.Logger.stopSpinner(false); // Just pass success state without message for cleanup
this.activeSpinner = null;
}
}
}
exports.ProgressAdapter = ProgressAdapter;
//# sourceMappingURL=progressAdapter.js.map