feat(web): reuse verified source dependencies
This commit is contained in:
@@ -63,6 +63,30 @@ const reusableProductionEvidence = () => {
|
||||
catch { return null; }
|
||||
if (evidence.task !== task || evidence.browser !== "chromium" || evidence.queueMutation !== false
|
||||
|| evidence.error !== undefined) return null;
|
||||
if (evidence.reusedEvidence?.length && evidence.dependencyProofs?.length) {
|
||||
for (const reused of evidence.reusedEvidence) {
|
||||
if (!reused.path || !fs.existsSync(abs(reused.path))) return null;
|
||||
let prior;
|
||||
try { prior = json(reused.path); }
|
||||
catch { return null; }
|
||||
const paths = Array.isArray(prior.fixtures) ? prior.fixtures : prior.fixture ? [prior.fixture] : [];
|
||||
const entries = Array.isArray(prior.fixtures) ? paths.map((fixture) => prior[fixture]) : [prior];
|
||||
if (!paths.length || entries.some((entry) => !entry || entry.error !== undefined
|
||||
|| (entry.saveReopenExact !== undefined && entry.saveReopenExact !== true)
|
||||
|| (entry.deterministicExact !== undefined && entry.deterministicExact !== true)
|
||||
|| (entry.exact !== undefined && entry.exact !== true))) return null;
|
||||
if (Array.isArray(prior.fixtures)) {
|
||||
if (paths.some((fixture) => !fs.existsSync(abs(fixture)) || prior.fixtureSha256?.[fixture] !== sha(fixture))) return null;
|
||||
} else if (!fs.existsSync(abs(prior.fixture)) || prior.fixtureSha256 !== sha(prior.fixture)) return null;
|
||||
}
|
||||
if (!fs.existsSync(abs(reportPath))) return null;
|
||||
let previousReceipt;
|
||||
try { previousReceipt = json(reportPath); }
|
||||
catch { return null; }
|
||||
if (previousReceipt.status !== "PASS" || previousReceipt.source?.unchanged !== true) return null;
|
||||
if (JSON.stringify(previousReceipt.source?.after ?? {}) !== JSON.stringify(sourceBefore)) return null;
|
||||
return { evidencePath, evidence };
|
||||
}
|
||||
const fixturePaths = Array.isArray(evidence.fixtures) ? evidence.fixtures : evidence.fixture ? [evidence.fixture] : [];
|
||||
if (!fixturePaths.length) return null;
|
||||
const fixtureEvidence = Array.isArray(evidence.fixtures) ? fixturePaths.map((fixture) => evidence[fixture]) : [evidence];
|
||||
|
||||
Reference in New Issue
Block a user