sr2ini/tools/service-worker.js
2023-09-07 09:25:14 +02:00

39 lines
1.2 KiB
JavaScript

import {manifest, version} from '@parcel/service-worker';
console.log("[Service Worker] Version:", version);
console.log("[Service Worker] Manifest:", manifest);
// install Service Worker
async function install() {
const cache = await caches.open(version); //cacheNAme
console.log("[Service Worker] Caching all: app shell and content");
await cache.addAll(manifest); // fileList
}
console.log("[Service Worker] Install");
self.addEventListener("install", e => e.waitUntil(install()));
// fetch content
self.addEventListener('fetch', (e) => {
e.respondWith((async () => {
const r = await caches.match(e.request);
console.log(`[Service Worker] Fetching resource: ${e.request.url}`);
if (r) {
return r;
}
const response = await fetch(e.request);
const cache = await caches.open(cacheName);
console.log(`[Service Worker] Caching new resource: ${e.request.url}`);
cache.put(e.request, response.clone());
return response;
})());
});
// activate: clear outdated files from cache
async function activate() {
const keys = await caches.keys();
await Promise.all(keys.map(key => key !== version && caches.delete(key)));
};
console.log("[Service Worker] Activate");
self.addEventListener("activate", e => e.waitUntil(activate()));