Sha256: 4437c954fb76ea5038df9e897750606db596077a91bae9ebae587cd8a8dfefb6
Contents?: true
Size: 1.9 KB
Versions: 11
Compression:
Stored size: 1.9 KB
Contents
--- layout: compress permalink: '/sw.js' # PWA service worker --- self.importScripts('{{ "/assets/js/data/swcache.js" | relative_url }}'); const cacheName = 'chirpy-{{ "now" | date: "%s" }}'; function verifyDomain(url) { for (const domain of allowedDomains) { const regex = RegExp(`^http(s)?:\/\/${domain}\/`); if (regex.test(url)) { return true; } } return false; } function isExcluded(url) { for (const item of denyUrls) { if (url === item) { return true; } } return false; } self.addEventListener('install', (event) => { event.waitUntil( caches.open(cacheName).then((cache) => { return cache.addAll(resource); }) ); }); self.addEventListener('activate', (event) => { event.waitUntil( caches.keys().then((keyList) => { return Promise.all( keyList.map((key) => { if (key !== cacheName) { return caches.delete(key); } }) ); }) ); }); self.addEventListener('message', (event) => { if (event.data === 'SKIP_WAITING') { self.skipWaiting(); } }); self.addEventListener('fetch', (event) => { event.respondWith( caches.match(event.request).then((response) => { if (response) { return response; } return fetch(event.request).then((response) => { const url = event.request.url; if ( event.request.method !== 'GET' || !verifyDomain(url) || isExcluded(url) ) { return response; } /* see: <https://developers.google.com/web/fundamentals/primers/service-workers#cache_and_return_requests> */ let responseToCache = response.clone(); caches.open(cacheName).then((cache) => { /* console.log('[sw] Caching new resource: ' + event.request.url); */ cache.put(event.request, responseToCache); }); return response; }); }) ); });
Version data entries
11 entries across 11 versions & 2 rubygems