(function () {

  var swRegistration;
  var newWorker;
  var isRefreshing = false;
  var pathname = window.location.pathname;
  var deferredPrompt;

  if ('serviceWorker' in navigator) {
    console.info('Service Worker is supported');

    window.addEventListener('load', function () {
      navigator.serviceWorker.register('/sw.js', {
        updateViaCache: 'all',
      }).then(function (registration) {
        swRegistration = registration;
        console.log('[SW] registration successful with scope: ', swRegistration.scope);
        console.log('[SW] is waiting: ', swRegistration.waiting);

        navigator.serviceWorker.addEventListener('controllerchange', function () {
          if (isRefreshing) {
            return;
          }
          window.location.reload();
          isRefreshing = true;
        });
      }, function (err) {
        console.log('[SW] registration failed: ', err);
      });
    });
  }
})();
