@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
108 lines • 3.54 kB
JavaScript
;
/**
* 🔧 Unified Report System
*
* Central system for generating reports in multiple formats.
* Uses Template Pattern for consistent report structure.
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UnifiedReportSystem = void 0;
// Re-export from base generator
__exportStar(require("./base-generator"), exports);
const generators_1 = require("./generators");
class UnifiedReportSystem {
constructor() {
this.generators = new Map();
this.registerDefaultGenerators();
}
/**
* Register default generators
*/
registerDefaultGenerators() {
// Register all available generators
this.registerGenerator('html', new generators_1.ModernHTMLReportGenerator());
this.registerGenerator('markdown', new generators_1.ModernMarkdownReportGenerator());
this.registerGenerator('json', new generators_1.JSONReportGenerator());
this.registerGenerator('csv', new generators_1.CSVReportGenerator());
// PDF generator will be added in future sprint
// this.registerGenerator('pdf', new PDFReportGenerator());
}
/**
* Register a report generator
*/
registerGenerator(format, generator) {
this.generators.set(format, generator);
}
/**
* Generate report in specified format
*/
async generateReport(format, data, options) {
const generator = this.generators.get(format);
if (!generator) {
throw new Error(`No generator registered for format: ${format}`);
}
return await generator.generate(data, options);
}
/**
* Generate reports in multiple formats
*/
async generateMultipleReports(formats, data, options) {
const reports = [];
for (const format of formats) {
try {
const report = await this.generateReport(format, data, options);
reports.push(report);
}
catch (error) {
console.warn(`Failed to generate ${format} report: ${error}`);
}
}
return reports;
}
/**
* Get available formats
*/
getAvailableFormats() {
return Array.from(this.generators.keys());
}
/**
* Check if format is supported
*/
isFormatSupported(format) {
return this.generators.has(format);
}
/**
* Get generator for format
*/
getGenerator(format) {
return this.generators.get(format);
}
/**
* Unregister generator
*/
unregisterGenerator(format) {
return this.generators.delete(format);
}
/**
* Clear all generators
*/
clearGenerators() {
this.generators.clear();
}
}
exports.UnifiedReportSystem = UnifiedReportSystem;
//# sourceMappingURL=unified-report-system.js.map