const assets = ["<@ASSETS@>"]; const staticCacheName = "tytd-static-<@BUILD_TIME@>"; self.addEventListener('install',evt => { evt.waitUntil( caches.open(staticCacheName).then(cache =>{ cache.addAll(assets); }) ); }); self.addEventListener('activate',(evt)=>{ evt.waitUntil( caches.keys().then(keys => { return Promise.all(keys.filter(key => key !== staticCacheName).map(key => caches.delete(key))); }) ); }); self.addEventListener('fetch', evt => { const uri = new URL(evt.request.url); evt.respondWith( caches.match(evt.request).then(cacheRes=>{ return cacheRes || fetch(evt.request); }).catch(()=>{ if(uri.pathname === '/queue-size') { return new Response('?',{ headers: { 'Content-Type': 'text/html' } }); } if(uri.pathname === "/progress") { return caches.match("/offline-progress.html"); } return caches.match('/offline.html'); }) ); });