1/* Signal Atlas offline shell: static interface caching plus locally persisted story data for graceful return visits. */ 2const CACHE_NAME = "cskuan-signal-atlas-v2-cskuan-identity"; 3const APP_SHELL = ["/", "/manifest.webmanifest"]; 4 5self.addEventListener("install", (event) => { 6 event.waitUntil(caches.open(CACHE_NAME).then((cache) => cache.addAll(APP_SHELL))); 7 self.skipWaiting(); 8}); 9 10self.addEventListener("activate", (event) => { 11 event.waitUntil(caches.keys().then((keys) => Promise.all(keys.filter((key) => key !== CACHE_NAME).map((key) => caches.delete(key))))); 12 self.clients.claim(); 13}); 14 15self.addEventListener("fetch", (event) => { 16 if (event.request.method !== "GET") return; 17 const requestUrl = new URL(event.request.url); 18 if (requestUrl.origin !== self.location.origin) return; 19 event.respondWith( 20 caches.match(event.request).then((cached) => cached || fetch(event.request).then((response) => { 21 const copy = response.clone(); 22 caches.open(CACHE_NAME).then((cache) => cache.put(event.request, copy)); 23 return response; 24 }).catch(() => caches.match("/"))) 25 ); 26});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.