UNPKG

dop-stick

Version:

Source control tooling for versionable-upgradeable smart contracts

142 lines 3.92 kB
"use strict"; 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