{"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"]}