Corrections de liens morts
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user