UNPKG

dop-stick

Version:

Source control tooling for versionable-upgradeable smart contracts

72 lines 4.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ValidationTimelineAdapter = void 0; const timelineLogAdapter_1 = require("./timelineLogAdapter"); const terminal_1 = require("../core/terminal"); const reviewAdapter_1 = require("./reviewAdapter"); class ValidationTimelineAdapter { constructor(mode) { this.timeline = new timelineLogAdapter_1.TimelineLogAdapter(); this.reviewAdapter = new reviewAdapter_1.ReviewAdapter(mode); this.mode = mode; } startValidation(moduleCount, isParallel) { this.timeline.startSection('BATCH VALIDATION'); isParallel ? this.timeline.logColoredStep('Validating batches in parallel...', 0, terminal_1.Terminal.colors.magenta) : this.timeline.logColoredStep('Validating batches sequentially...', 0, terminal_1.Terminal.colors.magenta); } async processValidationResults(validatedModules) { const summary = this.reviewAdapter.prepareSummary(validatedModules); // Display timeline-style results for each module summary.moduleResults.forEach((module) => { // Module header this.timeline.logArrowStep(`${module.moduleName}: ${module.originalSignatures.size} functions`, 1); // Module issues - single level indentation if (module.missingFunctions.length > 0) { this.timeline.logInnerStep(`🔴 ${module.missingFunctions.length} missing function${module.missingFunctions.length === 1 ? '' : 's'}`, 2); } if (module.collisions.length > 0) { this.timeline.logInnerStep(`🟡 ${module.collisions.length} selector collision${module.collisions.length === 1 ? '' : 's'}`, 2); } if (module.suggestedChanges.length > 0) { this.timeline.logInnerColoredStep(`↪ ${module.suggestedChanges.length} action${module.suggestedChanges.length === 1 ? '' : 's'} modified`, 2, terminal_1.Terminal.colors.magenta); } this.timeline.logEmptyStep(); }); // Summary section this.timeline.logStep('Summary'); this.timeline.logStep(`Total functions validated: ${this.calculateTotalFunctions(summary)}`); // Only count actual issues: critical issues, suggestions (action changes), and invalid actions const totalIssues = summary.criticalIssues + summary.suggestions + summary.invalidActions; this.timeline.logStep(`Issues found: ${totalIssues}`, 1); // Still show collisions, but as informational if (summary.warnings > 0) { this.timeline.logInnerStep(`🟡 ${summary.warnings} selector collision${summary.warnings === 1 ? '' : 's'}`, 2); } if (summary.criticalIssues > 0) { this.timeline.logInnerStep(`🔴 ${summary.criticalIssues} critical issue${summary.criticalIssues === 1 ? '' : 's'}`, 2); } if (summary.suggestions > 0) { this.timeline.logInnerColoredStep(`↪ ${summary.suggestions} action change${summary.suggestions === 1 ? '' : 's'}`, 2, terminal_1.Terminal.colors.magenta); } if (summary.invalidActions > 0) { this.timeline.logInnerStep(`🟠 ${summary.invalidActions} invalid action${summary.invalidActions === 1 ? '' : 's'}`, 2); } this.timeline.logSuccessWithTime('Batch validation completed'); // Auto-apply in auto-pilot-beta mode if (this.mode === 'auto-pilot-beta') { this.timeline.logStep('🤖 Auto-pilot: Automatically applying all suggested changes'); this.timeline.logEmptyStep(); return true; } // Interactive prompt for other modes terminal_1.Terminal.write('\nUse \'details <module>\' for more information'); terminal_1.Terminal.write('\'apply\' to accept all changes, \'exit\' to cancel\n'); return await this.reviewAdapter.handleUserCommands(summary); } calculateTotalFunctions(summary) { return summary.moduleResults.reduce((total, module) => total + module.originalSignatures.size, 0); } } exports.ValidationTimelineAdapter = ValidationTimelineAdapter; //# sourceMappingURL=validationTimelineAdapter.js.map