1async function getVersion() { 2 const response = await fetch("./version.js?v=" + new Date().getTime()); 3 const text = await response.text(); 4 const match = text.match(/version:\s*"([^"]+)"/); 5 const version = match ? match[1] : "unknown"; 6 return version; 7} 8 9self.addEventListener("install", (event) => { 10 console.log("[SW] Service Worker installing"); 11 event.waitUntil( 12 getVersion().then((version) => { 13 self.version = version; 14 console.log("****************************************************"); 15 console.log(`WebInterface v${version}`); 16 console.log("****************************************************"); 17 }) 18 ); 19}); 20 21self.addEventListener("activate", (event) => { 22 console.log("[SW] Service Worker activated"); 23}); 24 25self.addEventListener("fetch", (e) => { 26 if (e.request.method !== "GET") return; 27 28 const url = new URL(e.request.url); 29 30 url.searchParams.set("v", self.version || "unknown"); 31 32 e.respondWith( 33 fetch(url.toString(), { 34 headers: e.request.headers, 35 mode: e.request.mode === "navigate" ? "same-origin" : e.request.mode, 36 credentials: e.request.credentials, 37 redirect: e.request.redirect, 38 }) 39 .then((response) => { 40 return response; 41 }) 42 .catch((error) => { 43 console.error(`[SW] Fetch failed for: ${url.pathname}`, error); 44 throw error; 45 }) 46 ); 47}); 48 49console.log("[SW] Service Worker script loaded");
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.