const options = {"workboxURL":"https://cdn.jsdelivr.net/npm/workbox-cdn@5.1.4/workbox/workbox-sw.js","importScripts":[],"config":{"debug":false},"cacheOptions":{"cacheId":"wieerwill.github.io-prod","directoryIndex":"/","revision":"4mSsITzWDChA"},"clientsClaim":true,"skipWaiting":true,"cleanupOutdatedCaches":true,"offlineAnalytics":false,"preCaching":[{"revision":"4mSsITzWDChA","url":"/wieerwill.github.io/?standalone=true"}],"runtimeCaching":[{"urlPattern":"/wieerwill.github.io/_nuxt/","handler":"CacheFirst","method":"GET","strategyPlugins":[]},{"urlPattern":"/wieerwill.github.io/","handler":"NetworkFirst","method":"GET","strategyPlugins":[]}],"offlinePage":null,"pagesURLPattern":"/wieerwill.github.io/","offlineStrategy":"NetworkFirst"} importScripts(...[options.workboxURL, ...options.importScripts]) initWorkbox(workbox, options) workboxExtensions(workbox, options) precacheAssets(workbox, options) cachingExtensions(workbox, options) runtimeCaching(workbox, options) offlinePage(workbox, options) routingExtensions(workbox, options) function getProp(obj, prop) { return prop.split('.').reduce((p, c) => p[c], obj) } function initWorkbox(workbox, options) { if (options.config) { // Set workbox config workbox.setConfig(options.config) } if (options.cacheNames) { // Set workbox cache names workbox.core.setCacheNameDetails(options.cacheNames) } if (options.clientsClaim) { // Start controlling any existing clients as soon as it activates workbox.core.clientsClaim() } if (options.skipWaiting) { workbox.core.skipWaiting() } if (options.cleanupOutdatedCaches) { workbox.precaching.cleanupOutdatedCaches() } if (options.offlineAnalytics) { // Enable offline Google Analytics tracking workbox.googleAnalytics.initialize() } } function precacheAssets(workbox, options) { if (options.preCaching.length) { workbox.precaching.precacheAndRoute(options.preCaching, options.cacheOptions) } } function runtimeCaching(workbox, options) { const requestInterceptor = { requestWillFetch({ request }) { if (request.cache === 'only-if-cached' && request.mode === 'no-cors') { return new Request(request.url, { ...request, cache: 'default', mode: 'no-cors' }) } return request }, fetchDidFail(ctx) { ctx.error.message = '[workbox] Network request for ' + ctx.request.url + ' threw an error: ' + ctx.error.message console.error(ctx.error, 'Details:', ctx) }, handlerDidError(ctx) { ctx.error.message = `[workbox] Network handler threw an error: ` + ctx.error.message console.error(ctx.error, 'Details:', ctx) return null } } for (const entry of options.runtimeCaching) { const urlPattern = new RegExp(entry.urlPattern) const method = entry.method || 'GET' const plugins = (entry.strategyPlugins || []) .map(p => new (getProp(workbox, p.use))(...p.config)) plugins.unshift(requestInterceptor) const strategyOptions = { ...entry.strategyOptions, plugins } const strategy = new workbox.strategies[entry.handler](strategyOptions) workbox.routing.registerRoute(urlPattern, strategy, method) } } function offlinePage(workbox, options) { if (options.offlinePage) { // Register router handler for offlinePage workbox.routing.registerRoute(new RegExp(options.pagesURLPattern), ({ request, event }) => { const strategy = new workbox.strategies[options.offlineStrategy] return strategy .handle({ request, event }) .catch(() => caches.match(options.offlinePage)) }) } } function workboxExtensions(workbox, options) { } function cachingExtensions(workbox, options) { } function routingExtensions(workbox, options) { }