'use strict'; const name = 'example-pwa-site-v1'; const assets = [ '/', '/index.html', '/styles.css', '/app.js', '/images/Bear.png', '/images/DeusEx.png', '/images/Face.png', '/images/Tony_Stark.jpg', ]; // install - https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/install_event // activate - https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/activate_event // message - https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/message_event // fetch - https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/fetch_event // sync - https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/sync_event // push - https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/push_event self.addEventListener('install', (event) => { event.waitUntil( caches.open(name).then((cache) => { cache.addAll(assets); }), ); }); self.addEventListener('fetch', (event) => { event.respondWith( caches.match(event.request).then((res) => { return res || fetch(event.request); }), ); }); const enableNavigationPreload = async () => { if (self.registration.navigationPreload) { await self.registration.navigationPreload.enable(); } }; self.addEventListener('activate', (event) => { event.waitUntil(enableNavigationPreload()); }); self.addEventListener('push', function (event) { console.log('[Service Worker] Push Received.'); console.log(`[Service Worker] Push had this data: "${event.data.text()}"`); const title = 'Push Codelab'; const options = { body: 'Yay it works.', icon: 'images/icon.png', badge: 'images/badge.png', }; event.waitUntil(self.registration.showNotification(title, options)); });