diff options
Diffstat (limited to 'src/worker/sw.ts')
-rw-r--r-- | src/worker/sw.ts | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/src/worker/sw.ts b/src/worker/sw.ts deleted file mode 100644 index e125879..0000000 --- a/src/worker/sw.ts +++ /dev/null @@ -1,51 +0,0 @@ -declare var self: ServiceWorkerGlobalScope; -export {}; - - -const sw_cache = { - offline: "/offline", - default: [ - "/index.js", - "/index.css", - "/app.webmanifest", - "/favicon.svg" - ], - store: "app", -} - -async function install() { - const cache = await self.caches.open(sw_cache.store) - return cache.addAll([sw_cache.offline, ...sw_cache.default]) -} - -async function activate() { - const keys = await self.caches.keys() - return Promise.all(keys.map(key => { - return key !== sw_cache.store ? self.caches.delete(key) : undefined - })) -} - -async function req(event: FetchEvent) { - const cache = await caches.open(sw_cache.store) - const cachedResponse = await cache.match(event.request) - var networkResponse - try { - networkResponse = await fetch(event.request) - if (networkResponse.ok) { - cache.put(event.request, networkResponse.clone()) - } - } catch(error) { - console.error(error) - if (event.request.mode === "navigate") { - networkResponse = await caches.match("/offline") - } - } - return (cachedResponse || networkResponse) as Response - -} - -self.addEventListener("install", event => event.waitUntil(install())) - -self.addEventListener("activate", event => event.waitUntil(activate())) - -self.addEventListener("fetch", event => event.respondWith(req(event))) |