deploy: 6c483decd3
This commit is contained in:
114
sw.js
Normal file
114
sw.js
Normal file
@@ -0,0 +1,114 @@
|
||||
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":"edTD9SM6SNdm"},"clientsClaim":true,"skipWaiting":true,"cleanupOutdatedCaches":true,"offlineAnalytics":false,"preCaching":[{"revision":"edTD9SM6SNdm","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) {
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user