39 lines
1.2 KiB
JavaScript
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()));
|