import { createNavigationHandler } from './swNavigation'
importScripts('3rdparty/workbox/workbox-sw.js')
workbox.setConfig({
modulePathPrefix: '3rdparty/workbox/',
debug: false,
})
workbox.loadModule('workbox-core')
workbox.loadModule('workbox-strategies')
workbox.loadModule('workbox-routing')
workbox.loadModule('workbox-navigation-preload')
workbox.loadModule('workbox-precaching')
workbox.core.clientsClaim()
self.skipWaiting()
addEventListener('message', (event) => {
if (event.data && event.data.type === 'SKIP_WAITING') {
skipWaiting()
}
})
const CACHE_NAME = 'offline-html'
const FALLBACK_HTML_URL = './offline.html'
self.addEventListener('install', async (event) => {
event.waitUntil(
caches.open(CACHE_NAME).then((cache) => cache.add(FALLBACK_HTML_URL)),
)
})
const networkOnly = new workbox.strategies.NetworkOnly()
const fallbackToCachedHtml = () =>
caches.match(FALLBACK_HTML_URL, { cacheName: CACHE_NAME })
const navigationHandler = createNavigationHandler(
networkOnly,
fallbackToCachedHtml,
)
workbox.precaching.precacheAndRoute(self.__WB_MANIFEST)
workbox.routing.registerRoute(
new workbox.routing.NavigationRoute(navigationHandler),
)