// pack:ignore // onDOMContentLoaded(url: string) { // let refresh = serviceWorker.reloads.get(url) // let servedETag = ETAGS.get(url) // // If the user requests a sub-page we should prefetch the full page, too. // if(url.includes("/_/") && !url.includes("/_/search/")) { // var prefetch = true // for(let pattern of EXCLUDECACHE.keys()) { // if(url.includes(pattern)) { // prefetch = false // break // } // } // if(prefetch) { // this.prefetchFullPage(url) // } // } // if(!refresh || !servedETag) { // return Promise.resolve() // } // return refresh.then(async (response: Response) => { // // When the actual network request was used by the client, response.bodyUsed is set. // // In that case the client is already up to date and we don"t need to tell the client to do a refresh. // if(response.bodyUsed) { // return // } // // Get the ETag of the cached response we sent to the client earlier. // let eTag = response.headers.get("ETag") // // Update ETag // ETAGS.set(url, eTag) // // If the ETag changed, we need to do a reload. // if(eTag !== servedETag) { // return this.reloadContent(url) // } // // Do nothing // return Promise.resolve() // }) // } // prefetchFullPage(url: string) { // let fullPage = new Request(url.replace("/_/", "/")) // let fullPageRefresh = fetch(fullPage, { // credentials: "same-origin" // }).then(response => { // // Save the new version of the resource in the cache // let cacheRefresh = caches.open(serviceWorker.cache.version).then(cache => { // return cache.put(fullPage, response) // }) // CACHEREFRESH.set(fullPage.url, cacheRefresh) // return response // }) // // Save in map // serviceWorker.reloads.set(fullPage.url, fullPageRefresh) // } // async reloadContent(url: string) { // let cacheRefresh = CACHEREFRESH.get(url) // if(cacheRefresh) { // await cacheRefresh // } // return this.postMessage({ // type: "new content", // url // }) // } // async reloadPage(url: string) { // let networkFetch = serviceWorker.reloads.get(url.replace("/_/", "/")) // if(networkFetch) { // await networkFetch // } // return this.postMessage({ // type: "reload page", // url // }) // } // reloadStyles() { // return this.postMessage({ // type: "reload styles" // }) // }