@casoon/auditmysite
Version:
Professional website analysis suite with robust accessibility testing, Core Web Vitals performance monitoring, SEO analysis, and content optimization insights. Features isolated browser contexts, retry mechanisms, and comprehensive API endpoints for profe
73 lines • 2.01 kB
JavaScript
;
/**
* 🔧 Base Report Generator
*
* Abstract base class for all report generators.
* Provides common functionality and template pattern.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.ReportGenerator = void 0;
class ReportGenerator {
constructor(format) {
this.format = format;
}
/**
* Validate report data
*/
validateData(data) {
const errors = [];
if (!data.summary) {
errors.push('Summary is required');
}
if (!data.metadata) {
errors.push('Metadata is required');
}
if (!Array.isArray(data.issues)) {
errors.push('Issues must be an array');
}
return {
valid: errors.length === 0,
errors
};
}
/**
* Generate filename
*/
generateFilename(options, suffix = '') {
if (options.filename) {
return options.filename;
}
const timestamp = new Date().toISOString().split('T')[0];
const formatSuffix = suffix ? `-${suffix}` : '';
return `audit-report${formatSuffix}-${timestamp}.${this.getExtension()}`;
}
/**
* Calculate file size
*/
calculateFileSize(content) {
return Buffer.byteLength(content, 'utf8');
}
/**
* Format duration
*/
formatDuration(ms) {
if (ms < 1000)
return `${ms}ms`;
const seconds = Math.floor(ms / 1000);
if (seconds < 60)
return `${seconds}s`;
const minutes = Math.floor(seconds / 60);
const remainingSeconds = seconds % 60;
return `${minutes}m ${remainingSeconds}s`;
}
/**
* Calculate success rate
*/
calculateSuccessRate(summary) {
if (summary.testedPages === 0)
return 0;
return Math.round((summary.passedPages / summary.testedPages) * 100);
}
}
exports.ReportGenerator = ReportGenerator;
//# sourceMappingURL=base-generator.js.map