UNPKG

qcobjects-docs

Version:

The official app and website for documentation of QCObjects

55 lines (44 loc) 1.43 kB
/* eslint-disable no-undef */ // This is the service worker with the combined offline experience (Offline page + Offline copy of pages) const CACHE = "qcobjectsnewapp-offline-page"; importScripts("https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js"); const offlineFallbackPage = "index-fallback.html"; self.addEventListener("message", (event) => { if (event.data && event.data.type === "SKIP_WAITING") { self.skipWaiting(); } }); self.addEventListener("install", async (event) => { event.waitUntil( caches.open(CACHE) .then((cache) => cache.add(offlineFallbackPage)) ); }); if (workbox.navigationPreload.isSupported()) { workbox.navigationPreload.enable(); } workbox.routing.registerRoute( // eslint-disable-next-line prefer-regex-literals new RegExp("/*"), new workbox.strategies.StaleWhileRevalidate({ cacheName: CACHE }) ); self.addEventListener("fetch", (event) => { if (event.request.mode === "navigate") { event.respondWith((async () => { try { const preloadResp = await event.preloadResponse; if (preloadResp) { return preloadResp; } const networkResp = await fetch(event.request); return networkResp; } catch (error) { const cache = await caches.open(CACHE); const cachedResp = await cache.match(offlineFallbackPage); return cachedResp; } })()); } });