@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
89 lines • 2.24 kB
TypeScript
/**
* 🔧 Base Report Generator
*
* Abstract base class for all report generators.
* Provides common functionality and template pattern.
*/
import { TestSummary, AuditIssue } from '../../core/types';
export interface ReportData {
summary: TestSummary;
issues: AuditIssue[];
metadata: {
timestamp: string;
version: string;
duration: number;
sitemapUrl?: string;
environment?: string;
};
config?: any;
}
export interface ReportOptions {
outputDir: string;
filename?: string;
template?: string;
includeDetails?: boolean;
includePa11yIssues?: boolean;
summaryOnly?: boolean;
prettyPrint?: boolean;
branding?: {
logo?: string;
company?: string;
footer?: string;
colors?: {
primary?: string;
success?: string;
warning?: string;
error?: string;
};
};
}
export interface GeneratedReport {
path: string;
format: ReportFormat;
size: number;
metadata: {
generatedAt: Date;
duration: number;
};
}
export type ReportFormat = 'html' | 'markdown' | 'json' | 'pdf' | 'csv';
export declare abstract class ReportGenerator {
protected format: ReportFormat;
constructor(format: ReportFormat);
/**
* Generate report
*/
abstract generate(data: ReportData, options: ReportOptions): Promise<GeneratedReport>;
/**
* Get file extension for this format
*/
abstract getExtension(): string;
/**
* Get MIME type for this format
*/
abstract getMimeType(): string;
/**
* Validate report data
*/
protected validateData(data: ReportData): {
valid: boolean;
errors: string[];
};
/**
* Generate filename
*/
protected generateFilename(options: ReportOptions, suffix?: string): string;
/**
* Calculate file size
*/
protected calculateFileSize(content: string): number;
/**
* Format duration
*/
protected formatDuration(ms: number): string;
/**
* Calculate success rate
*/
protected calculateSuccessRate(summary: TestSummary): number;
}
//# sourceMappingURL=base-generator.d.ts.map