From 087843c800d82657f03961ae0d55519beec09dc5 Mon Sep 17 00:00:00 2001 From: Julien Oculi Date: Wed, 17 Jul 2024 12:21:22 +0200 Subject: [PATCH] fix(pwa): :bug: don't serve errored resources in service worker proxy --- src/serviceworker/mod.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/serviceworker/mod.ts b/src/serviceworker/mod.ts index 6929001..a9a0649 100644 --- a/src/serviceworker/mod.ts +++ b/src/serviceworker/mod.ts @@ -90,7 +90,9 @@ async function fetchHandler(event: FetchEvent) { // Cache first for "pre-cached-urls" if (preCachedUrls.includes(url.pathname) && method === 'GET') { const cached = await cache.match(event.request) ?? - await fetch(event.request).catch(() => null) ?? + await fetch(event.request).then((response) => + response.ok ? response : null + ).catch(() => null) ?? await cache.match(event.request, { ignoreSearch: true }) if (cached === undefined) { @@ -105,7 +107,12 @@ async function fetchHandler(event: FetchEvent) { const response = fetch(event.request) .then((response) => { - // Update cache + if (!response.ok) { + throw new Error( + `failed to get request: [${response.status}] ${response.statusText}`, + ) + } + // Update cache if ok cache.put(event.request, response.clone()) return response })