// Håndskrevet service worker: precacher sitet, så det virker offline. // postbuild.py sætter version og URL-liste ind. Alt der ikke er precachet, går til netværket. const CACHE = 'pw-__VERSION__'; const URLS = __URLS__; const known = new Set(URLS); self.addEventListener('install', (e) => { e.waitUntil(caches.open(CACHE).then((c) => c.addAll(URLS)).then(() => self.skipWaiting())); }); // Rydder forrige version, også de gamle workbox-caches. self.addEventListener('activate', (e) => { e.waitUntil(caches.keys() .then((keys) => Promise.all(keys.filter((k) => k !== CACHE).map((k) => caches.delete(k)))) .then(() => self.clients.claim())); }); self.addEventListener('fetch', (e) => { const url = new URL(e.request.url); if (e.request.method !== 'GET' || url.origin !== location.origin) return; const p = url.pathname; const key = [p, p.replace(/\/?$/, '/index.html')].find((k) => known.has(k)); if (key) e.respondWith(caches.match(key).then((r) => r || fetch(e.request))); });