diff --git a/examples/lib/cache.js b/examples/lib/cache.js index a402e303..969ea3c6 100644 --- a/examples/lib/cache.js +++ b/examples/lib/cache.js @@ -1,6 +1,8 @@ +const { reject } = require("lodash"); + var setupCache = function() { let newWorker; // When sw.js is changed, this is the new service worker generated. - + // Toggle a CSS class to display a popup prompting the user to fetch a new version. function showUpdateModal() { $('#update-prompt-modal').addClass('show'); @@ -22,6 +24,11 @@ var setupCache = function() { registration.addEventListener('updatefound', () => { // When sw.js has been changed, get a reference to the new service worker. newWorker = registration.installing; + + if(!newWorker){ + return reject(new Error('error in installing service worker')); + } + newWorker.addEventListener('statechange', () => { // Check if service worker state has changed. switch(newWorker.state) { @@ -29,24 +36,23 @@ var setupCache = function() { if(navigator.serviceWorker.controller) { // New service worker available; prompt the user to update. showUpdateModal(); + $('#reload').on('click',(e) => { + e.preventDefault(); + console.log('New Service Worker Installed Successfully'); + location.reload(); + return resolve(); + }) } // No updates available; do nothing. break; - } - }); - }); - const installingWorker = registration.installing; - installingWorker.onstatechange = () => { - console.log(installingWorker); - if (installingWorker.state === 'installed') { - location.reload(); - } - }; - console.log('Registration successful, scope is:', registration.scope); - }) - .catch(function(error) { - console.log('Service worker registration failed, error:', error); + case 'redundant': + return reject(new Error('installing new service worker now became redundant')); + } + }) + }) + }).catch(err => { + console.log('Failed In Registering Service Worker: ',err); }); /** @@ -69,21 +75,22 @@ var setupCache = function() { }); } - $('#clear-cache').click(function() { + const clearCache = () => { if ('serviceWorker' in navigator) { - caches.keys().then(function(cacheNames) { - cacheNames.forEach(function(cacheName) { - caches.delete(cacheName); - }); + return caches.keys() + .then(function(cache) { + return Promise.all(cache.map(function(cacheItem) { + return caches.delete(cacheItem); + })); }); } + } + + $('#clear-cache').click(function() { + clearCache(); location.reload(); }); - - - - }; module.exports = setupCache; diff --git a/examples/lib/defaultHtmlStepUi.js b/examples/lib/defaultHtmlStepUi.js index cb22797b..d50caab3 100644 --- a/examples/lib/defaultHtmlStepUi.js +++ b/examples/lib/defaultHtmlStepUi.js @@ -121,7 +121,14 @@ function DefaultHtmlStepUi(_sequencer, options) { paramVal + '">' + '' + ''; } - else { // Non color-picker input types + else if(inputDesc.type === 'button'){ + html = '
\ + click to select coordinates\ +
'; + } + else { // Non color-picker input types and other than a button + html = ' { + return setupCache(); + }); +} + +function UnRegisterSW(){ + + function unregister() { + return navigator.serviceWorker.getRegistrations() + .then(function(registrations) { + var unRegisteredWorker = registrations.map(function(registration) { + return registration.unregister(); + }); + return Promise.all(unRegisteredWorker); + }); + } + + return Promise.all([ + unregister(), + setUpCache.clearCache() + ]); +} + +test('Register service worker',function(t) { + + t.test('unregister service worker',function(st) { + st.equal(UnRegisterSW(),true,'unregistered successfully and cleared the cache') + }) + + t.test('install service worker',function(st) { + st.equal(SWInstallation(),true,'successfully installed new service worker') + }); +}); diff --git a/yarn.lock b/yarn.lock index d9a5bb75..a0d27152 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,15 +10,15 @@ "@babel/highlight" "^7.12.13" "@babel/core@^7.1.0", "@babel/core@^7.4.3", "@babel/core@^7.7.5": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.13.tgz#b73a87a3a3e7d142a66248bf6ad88b9ceb093425" - integrity sha512-BQKE9kXkPlXHPeqissfxo0lySWJcYdEP0hdtJOH/iJfDdhOCcgtNCjftCJg3qqauB4h+lz2N6ixM++b9DN1Tcw== + version "7.12.16" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.16.tgz#8c6ba456b23b680a6493ddcfcd9d3c3ad51cab7c" + integrity sha512-t/hHIB504wWceOeaOoONOhu+gX+hpjfeN6YRBT209X/4sibZQfSF1I0HFRRlBe97UZZosGx5XwUg1ZgNbelmNw== dependencies: "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.12.13" + "@babel/generator" "^7.12.15" "@babel/helper-module-transforms" "^7.12.13" "@babel/helpers" "^7.12.13" - "@babel/parser" "^7.12.13" + "@babel/parser" "^7.12.16" "@babel/template" "^7.12.13" "@babel/traverse" "^7.12.13" "@babel/types" "^7.12.13" @@ -30,10 +30,10 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.13.tgz#5f6ebe6c85db99886db2d7b044409196f872a503" - integrity sha512-9qQ8Fgo8HaSvHEt6A5+BATP7XktD/AdAnObUeTRz5/e2y3kbrxZgz32qUJJsdmwUvBJzF4AeV21nGTNwv05Mpw== +"@babel/generator@^7.12.13", "@babel/generator@^7.12.15": + version "7.12.15" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.15.tgz#4617b5d0b25cc572474cc1aafee1edeaf9b5368f" + integrity sha512-6F2xHxBiFXWNSGb7vyCUTBF8RCLY66rS0zEPcP8t/nQyXjha5EuK4z7H5o7fWG8B4M7y6mqVWq1J+1PuwRhecQ== dependencies: "@babel/types" "^7.12.13" jsesc "^2.5.1" @@ -143,10 +143,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.7.5": - version "7.12.14" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.14.tgz#4adb7c5eef1d437ef965ad1569cd826db8c11dc9" - integrity sha512-xcfxDq3OrBnDsA/Z8eK5/2iPcLD8qbOaSSfOw4RA6jp4i7e6dEQ7+wTwxItEwzcXPQcsry5nZk96gmVPKletjQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.16", "@babel/parser@^7.7.5": + version "7.12.16" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.16.tgz#cc31257419d2c3189d394081635703f549fc1ed4" + integrity sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw== "@babel/plugin-proposal-object-rest-spread@^7.4.3": version "7.12.13" @@ -2430,6 +2430,11 @@ commander@^6.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== +commander@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.0.0.tgz#3e2bbfd8bb6724760980988fb5b22b7ee6b71ab2" + integrity sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA== + commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" @@ -6851,9 +6856,9 @@ lines-and-columns@^1.1.6: integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= lint-staged@^10.0.3: - version "10.5.3" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.3.tgz#c682838b3eadd4c864d1022da05daa0912fb1da5" - integrity sha512-TanwFfuqUBLufxCc3RUtFEkFraSPNR3WzWcGF39R3f2J7S9+iF9W0KTVLfSy09lYGmZS5NDCxjNvhGMSJyFCWg== + version "10.5.4" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.4.tgz#cd153b5f0987d2371fc1d2847a409a2fe705b665" + integrity sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg== dependencies: chalk "^4.1.0" cli-truncate "^2.1.0"