dop-stick
Version:
Source control tooling for versionable-upgradeable smart contracts
72 lines • 4.23 kB
JavaScript
;
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