const CACHE = "package-tools-v0.2.0"; const APP = [ "./", "./index.html", "./manifest.webmanifest", "./favicon.svg", "./toolbox-app.json", ]; self.addEventListener("install", (event) => { event.waitUntil( caches .open(CACHE) .then((cache) => cache.addAll(APP)) .then(() => self.skipWaiting()), ); }); self.addEventListener("activate", (event) => { event.waitUntil( caches .keys() .then((keys) => Promise.all( keys.filter((key) => key !== CACHE).map((key) => caches.delete(key)), ), ) .then(() => self.clients.claim()), ); }); self.addEventListener("fetch", (event) => { if ( event.request.method !== "GET" || new URL(event.request.url).origin !== self.location.origin ) return; event.respondWith( caches.match(event.request).then( (hit) => hit || fetch(event.request).then((response) => { if (response.ok) caches .open(CACHE) .then((cache) => cache.put(event.request, response.clone())); return response; }), ), ); });