const CACHE = "warm-demo-v1";
self.addEventListener("install", () => self.skipWaiting());
self.addEventListener("activate", (event) => event.waitUntil(self.clients.claim()));
self.addEventListener("fetch", (event) => {
const { request } = event;
if (request.method !== "GET" || new URL(request.url).origin !== self.location.origin) return;
event.respondWith(
(async () => {
const cache = await caches.open(CACHE);
try {
const fresh = await fetch(request);
if (fresh.ok) await cache.put(request, fresh.clone());
return fresh;
} catch (error) {
const cached = await cache.match(request, { ignoreSearch: true });
if (cached) return cached;
throw error;
}
})(),
);
});