@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
98 lines • 4.28 kB
JavaScript
;
/**
* 📊 FIXED AUDIT DATA STRUCTURE
*
* Definitive data structure for all reports.
* Any missing data must immediately throw an error.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateAuditData = validateAuditData;
exports.validateComprehensiveData = validateComprehensiveData;
/**
* VALIDATION FUNCTIONS
* Immediately throw errors if required data is missing
*/
function validateAuditData(data) {
// Validate metadata
if (!data.metadata)
throw new Error('Missing metadata in AuditData');
if (!data.metadata.version)
throw new Error('Missing metadata.version');
if (!data.metadata.timestamp)
throw new Error('Missing metadata.timestamp');
if (!data.metadata.sitemapUrl)
throw new Error('Missing metadata.sitemapUrl');
if (!data.metadata.toolVersion)
throw new Error('Missing metadata.toolVersion');
if (typeof data.metadata.duration !== 'number')
throw new Error('Missing metadata.duration');
// Validate summary
if (!data.summary)
throw new Error('Missing summary in AuditData');
if (typeof data.summary.totalPages !== 'number')
throw new Error('Missing summary.totalPages');
if (typeof data.summary.testedPages !== 'number')
throw new Error('Missing summary.testedPages');
if (typeof data.summary.passedPages !== 'number')
throw new Error('Missing summary.passedPages');
if (typeof data.summary.failedPages !== 'number')
throw new Error('Missing summary.failedPages');
if (typeof data.summary.crashedPages !== 'number')
throw new Error('Missing summary.crashedPages');
if (typeof data.summary.totalErrors !== 'number')
throw new Error('Missing summary.totalErrors');
if (typeof data.summary.totalWarnings !== 'number')
throw new Error('Missing summary.totalWarnings');
// Validate pages
if (!Array.isArray(data.pages))
throw new Error('Missing or invalid pages array in AuditData');
if (data.pages.length === 0)
throw new Error('Empty pages array in AuditData');
// Validate each page
data.pages.forEach((page, index) => {
if (!page.url)
throw new Error(`Missing url in page ${index}`);
if (!page.title)
throw new Error(`Missing title in page ${index}`);
if (!page.status)
throw new Error(`Missing status in page ${index}`);
if (typeof page.duration !== 'number')
throw new Error(`Missing duration in page ${index}`);
if (!page.accessibility)
throw new Error(`Missing accessibility data in page ${index}`);
if (typeof page.accessibility.score !== 'number')
throw new Error(`Missing accessibility.score in page ${index}`);
if (!Array.isArray(page.accessibility.errors))
throw new Error(`Missing accessibility.errors in page ${index}`);
if (!Array.isArray(page.accessibility.warnings))
throw new Error(`Missing accessibility.warnings in page ${index}`);
});
console.log('✅ AuditData validation passed - all required data present');
}
/**
* Check for comprehensive analysis data
*/
function validateComprehensiveData(data) {
const missingData = [];
data.pages.forEach((page, index) => {
if (!page.performance) {
missingData.push(`Performance data missing in page ${index}: ${page.url}`);
}
if (!page.seo) {
missingData.push(`SEO data missing in page ${index}: ${page.url}`);
}
if (!page.contentWeight) {
missingData.push(`Content Weight data missing in page ${index}: ${page.url}`);
}
if (!page.mobileFriendliness) {
missingData.push(`Mobile Friendliness data missing in page ${index}: ${page.url}`);
}
});
if (missingData.length > 0) {
console.error('❌ COMPREHENSIVE ANALYSIS DATA MISSING:');
missingData.forEach(msg => console.error(` - ${msg}`));
throw new Error(`Comprehensive analysis failed: ${missingData.length} data points missing`);
}
console.log('✅ Comprehensive analysis data validation passed - all analysis types present');
}
//# sourceMappingURL=audit-data.js.map