1

Corrections de liens morts

This commit is contained in:
2025-12-07 23:34:59 +01:00
parent 893794bba7
commit 9f1a81f8f5
5 changed files with 35 additions and 6 deletions

View File

@@ -326,6 +326,34 @@ function mergeOccurrences(entries, occurrences) {
return merged;
}
// Liste les URLs réellement présentes dans le contenu pour supprimer les entrées obsolètes.
function buildActiveUrlSet(occurrences) {
const active = new Set();
for (const url of occurrences.keys()) {
active.add(url);
}
return active;
}
// Conserve uniquement les liens du rapport encore utilisés dans le contenu.
function filterReportLinks(links, activeUrls) {
if (!Array.isArray(links) || activeUrls.size === 0) {
return [];
}
const filtered = [];
for (const link of links) {
if (!link?.url || !activeUrls.has(link.url)) {
continue;
}
filtered.push({
...link,
locations: Array.isArray(link.locations) ? dedupeAndSortLocations(link.locations) : [],
});
}
return filtered;
}
function recordOccurrence(map, filePath, line, url) {
if (!map.has(url)) {
map.set(url, []);
@@ -720,6 +748,7 @@ async function main() {
return;
}
const activeUrls = buildActiveUrlSet(occurrences);
const state = loadState();
const mergedEntries = mergeOccurrences(state.entries, occurrences);
const entriesArray = Object.values(mergedEntries);
@@ -727,7 +756,7 @@ async function main() {
const snapshotMeta = {
generatedAt: state.generatedAt || null,
links: Array.isArray(state.links) ? state.links : [],
links: filterReportLinks(state.links, activeUrls),
};
await checkEntries(pending, mergedEntries, snapshotMeta);
@@ -735,7 +764,7 @@ async function main() {
const deadLinks = buildDeadLinks(mergedEntries);
const nextState = {
generatedAt: new Date().toISOString(),
links: deadLinks,
links: filterReportLinks(deadLinks, activeUrls),
entries: mergedEntries,
};
saveState(nextState);