diff --git a/internal/check-retry-fetch.mjs b/internal/check-retry-fetch.mjs index 57c1b5843..b89d8d52c 100644 --- a/internal/check-retry-fetch.mjs +++ b/internal/check-retry-fetch.mjs @@ -67,16 +67,27 @@ const realFetch = globalThis.fetch globalThis.fetch = realFetch // ── and the shared data paths actually use it ──────────────────────────────────────────────────── +// ★ ONE SITE IS DELIBERATELY EXEMPT AND IS NAMED, not silently skipped. usePosterPrints probes for an +// OPTIONAL pre-rendered .webp and falls through to generating the poster when it is absent — a miss is +// the expected path, so retrying would delay the fallback for an asset that is legitimately not there. +// Everything else in that file, and every other runtime request, must retry. +const EXEMPT = new Map([['library/composables/usePosterPrints.js', 1]]) for (const rel of [ 'library/composables/useMapLayers.js', 'library/composables/useCountryOutline.js', 'library/lists/peopleGroupList.js', 'library/composables/usePrayerStatistics.js', + 'library/composables/usePosterPrints.js', + 'library/composables/useSharedMapToken.js', + 'library/composables/useCsvExport.js', + 'library/components/PeopleGroupDetail.vue', ]) { const src = readFileSync(join(ROOT, rel), 'utf8').replace(/\/\*[\s\S]*?\*\//g, '').replace(/^\s*\/\/.*$/gm, '') - if (/(? allowed) { + fails.push(`${rel} has ${bare} bare fetch() call(s) for a runtime request, ${allowed} allowed — a transport\n` + + ' blip there leaves the feature silently absent. Use retryFetch().') } } diff --git a/library/components/PeopleGroupDetail.vue b/library/components/PeopleGroupDetail.vue index 611b695b4..62e9e2328 100644 --- a/library/components/PeopleGroupDetail.vue +++ b/library/components/PeopleGroupDetail.vue @@ -108,6 +108,7 @@