{"version":3,"sources":["../src/registerServiceWorker.js"],"names":["register","unregister","isLocalhost","Boolean","window","location","hostname","match","process","env","NODE_ENV","navigator","publicUrl","URL","PUBLIC_URL","origin","addEventListener","swUrl","checkValidServiceWorker","serviceWorker","ready","then","console","log","registerValidSW","registration","onupdatefound","installingWorker","installing","onstatechange","state","controller","catch","error","fetch","response","status","headers","get","indexOf","reload"],"mappings":"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","file":"registerServiceWorker.js","sourcesContent":["// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n  window.location.hostname === \"localhost\" ||\n    // [::1] is the IPv6 localhost address.\n    window.location.hostname === \"[::1]\" ||\n    // 127.0.0.1/8 is considered localhost for IPv4.\n    window.location.hostname.match(\n      /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n    )\n);\n\nexport default function register() {\n  if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n    // The URL constructor is available in all browsers that support SW.\n    const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n    if (publicUrl.origin !== window.location.origin) {\n      // Our service worker won't work if PUBLIC_URL is on a different origin\n      // from what our page is served on. This might happen if a CDN is used to\n      // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n      return;\n    }\n\n    window.addEventListener(\"load\", () => {\n      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n      if (isLocalhost) {\n        // This is running on localhost. Lets check if a service worker still exists or not.\n        checkValidServiceWorker(swUrl);\n\n        // Add some additional logging to localhost, pointing developers to the\n        // service worker/PWA documentation.\n        navigator.serviceWorker.ready.then(() => {\n          console.log(\n            \"This web app is being served cache-first by a service \" +\n              \"worker. To learn more, visit https://goo.gl/SC7cgQ\"\n          );\n        });\n      } else {\n        // Is not local host. Just register service worker\n        registerValidSW(swUrl);\n      }\n    });\n  }\n}\n\nfunction registerValidSW(swUrl) {\n  navigator.serviceWorker\n    .register(swUrl)\n    .then(registration => {\n      registration.onupdatefound = () => {\n        const installingWorker = registration.installing;\n        installingWorker.onstatechange = () => {\n          if (installingWorker.state === \"installed\") {\n            if (navigator.serviceWorker.controller) {\n              // At this point, the old content will have been purged and\n              // the fresh content will have been added to the cache.\n              // It's the perfect time to display a \"New content is\n              // available; please refresh.\" message in your web app.\n              console.log(\"New content is available; please refresh.\");\n            } else {\n              // At this point, everything has been precached.\n              // It's the perfect time to display a\n              // \"Content is cached for offline use.\" message.\n              console.log(\"Content is cached for offline use.\");\n            }\n          }\n        };\n      };\n    })\n    .catch(error => {\n      console.error(\"Error during service worker registration:\", error);\n    });\n}\n\nfunction checkValidServiceWorker(swUrl) {\n  // Check if the service worker can be found. If it can't reload the page.\n  fetch(swUrl)\n    .then(response => {\n      // Ensure service worker exists, and that we really are getting a JS file.\n      if (\n        response.status === 404 ||\n        response.headers.get(\"content-type\").indexOf(\"javascript\") === -1\n      ) {\n        // No service worker found. Probably a different app. Reload the page.\n        navigator.serviceWorker.ready.then(registration => {\n          registration.unregister().then(() => {\n            window.location.reload();\n          });\n        });\n      } else {\n        // Service worker found. Proceed as normal.\n        registerValidSW(swUrl);\n      }\n    })\n    .catch(() => {\n      console.log(\n        \"No internet connection found. App is running in offline mode.\"\n      );\n    });\n}\n\nexport function unregister() {\n  if (\"serviceWorker\" in navigator) {\n    navigator.serviceWorker.ready.then(registration => {\n      registration.unregister();\n    });\n  }\n}\n"]}