tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

start_url-member-service-worker.js (1621B)


      1 // Some user agents only offer app installation if there is a SW and it handles
      2 // offline requests.
      3 
      4 const cacheVersion = "1.2";
      5 const CACHE_NAME = `cache-v${cacheVersion}`;
      6 
      7 // The resources cached by this service worker.
      8 const resources = [
      9  "fail.html",
     10  "pass.html",
     11  "start_url-member-fail-manual.sub.html",
     12  "start_url-member-pass-manual.html",
     13  "start_url-member-service-worker.js",
     14  "resources/start_url-member-manual.js",
     15  "resources/icon.png"
     16 ];
     17 
     18 // Load all resources for this service worker.
     19 const precache = async () => {
     20  const cache = await caches.open(CACHE_NAME);
     21  await cache.addAll(resources);
     22 };
     23 
     24 // Get a resource from the cache.
     25 const fromCache = async request => {
     26  const cache = await caches.open(CACHE_NAME);
     27  return await cache.match(request.url);
     28 };
     29 
     30 // Attempt to get resources from the network first, fallback to the cache if we're
     31 // offline.
     32 const networkFallbackToCache = async request => {
     33  try {
     34    const response = await fetch(request);
     35    if (response.ok) return response;
     36  } catch (err) {}
     37  return await fromCache(request);
     38 };
     39 
     40 // When we have a new service worker, update the caches and swap immediately.
     41 self.addEventListener("install", e => {
     42  e.waitUntil(precache().then(() => self.skipWaiting()));
     43 });
     44 
     45 // Claim existing clients.
     46 self.addEventListener("activate", e => {
     47  e.waitUntil(self.clients.claim());
     48 });
     49 
     50 // When a resource need to be fetched, check whether it is
     51 // contained in the cache and return the cached version, otherwise
     52 // get it from the network.
     53 self.addEventListener("fetch", e => {
     54  e.respondWith(networkFallbackToCache(e.request));
     55 });