1const CACHE_NAME = "cryptolens-v1"; 2const CACHE_NAME = "cryptolens-shell-v2"; 3const APP_SHELL = ["/", "/manifest.json", "/cryptolens-icon.svg"]; 4 5self.addEventListener("install", event => { 6 event.waitUntil(caches.open(CACHE_NAME).then(cache => cache.addAll(APP_SHELL)).then(() => self.skipWaiting())); 7}); 8 9self.addEventListener("activate", event => { 10 event.waitUntil(caches.keys().then(keys => Promise.all(keys.filter(key => key !== CACHE_NAME).map(key => caches.delete(key)))).then(() => self.clients.claim())); 11}); 12 13self.addEventListener("fetch", event => { 14 const request = event.request; 15 const url = new URL(request.url); 16 if (request.method !== "GET" || url.origin !== self.location.origin) return; 17 if (url.pathname.startsWith("/api/")) { 18 event.respondWith(fetch(request).catch(() => caches.match(request))); 19 return; 20 } 21 if (request.mode === "navigate") { 22 event.respondWith(fetch(request).catch(() => caches.match("/"))); 23 return; 24 } 25 if (APP_SHELL.includes(url.pathname)) { 26 event.respondWith(caches.match(request).then(cached => cached || fetch(request))); 27 return; 28 } 29 // ØØ²Ù /assets اÙÙ ÙÙ ÙÙØ¯Ø© ÙØ¬Ø¨ Ø£Ù ØªØ£ØªÙ Ù Ù Ø§ÙØ´Ø¨ÙØ© Ø¯Ø§Ø¦Ù Ø§Ù ØØªÙ ÙØ§ ÙØ·Ùب HTML Ø¬Ø¯ÙØ¯ Ù ÙÙØ§Ù ÙØ¯Ù٠اÙ. 30 event.respondWith(fetch(request).catch(() => caches.match(request))); 31});
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.