Add service-worker.js
This commit is contained in:
parent
209355156c
commit
543a1ed63f
|
@ -0,0 +1,66 @@
|
|||
/// <reference types="@sveltejs/kit" />
|
||||
import { build, files, version } from "$service-worker"
|
||||
|
||||
const CACHE = `cache-${version}`
|
||||
|
||||
const ASSETS = [...build, ...files]
|
||||
|
||||
self.addEventListener("install", (event) => {
|
||||
async function addFilesToCache() {
|
||||
const cache = await caches.open(CACHE)
|
||||
await cache.addAll(ASSETS)
|
||||
}
|
||||
|
||||
event.waitUntil(addFilesToCache())
|
||||
})
|
||||
|
||||
self.addEventListener("activate", (event) => {
|
||||
async function deleteOldCaches() {
|
||||
for (const key of await caches.keys()) {
|
||||
if (key !== CACHE) await caches.delete(key)
|
||||
}
|
||||
}
|
||||
|
||||
event.waitUntil(deleteOldCaches())
|
||||
})
|
||||
|
||||
self.addEventListener("fetch", (event) => {
|
||||
if (event.request.method !== "GET") return
|
||||
|
||||
async function respond() {
|
||||
const url = new URL(event.request.url)
|
||||
const cache = await caches.open(CACHE)
|
||||
|
||||
if (ASSETS.includes(url.pathname)) {
|
||||
const response = await cache.match(url.pathname)
|
||||
|
||||
if (response) {
|
||||
return response
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch(event.request)
|
||||
|
||||
if (!(response instanceof Response)) {
|
||||
throw new Error("invalid response from fetch")
|
||||
}
|
||||
|
||||
if (response.status === 200) {
|
||||
cache.put(event.request, response.clone())
|
||||
}
|
||||
|
||||
return response
|
||||
} catch (err) {
|
||||
const response = await cache.match(event.request)
|
||||
|
||||
if (response) {
|
||||
return response
|
||||
}
|
||||
|
||||
throw err
|
||||
}
|
||||
}
|
||||
|
||||
event.respondWith(respond())
|
||||
})
|
Loading…
Reference in New Issue