static-router-sw.js (1100B)
1 'use strict'; 2 3 import {routerRules, cacheName} from './router-rules.js'; 4 import { 5 recordRequest, 6 recordError, 7 getRecords, 8 resetRecords } from './static-router-sw.sub.js'; 9 10 import './imported-sw.js'; 11 12 self.addEventListener('install', async e => { 13 e.waitUntil(caches.open(cacheName).then( 14 cache => {cache.put('cache.txt', new Response('From cache'))})); 15 16 const params = new URLSearchParams(location.search); 17 const key = params.get('key'); 18 try { 19 await e.addRoutes(routerRules[key]); 20 } catch (e) { 21 recordError(e); 22 } 23 self.skipWaiting(); 24 }); 25 26 self.addEventListener('activate', e => { 27 e.waitUntil(clients.claim()); 28 }); 29 30 self.addEventListener('fetch', function(event) { 31 recordRequest(event.request); 32 const url = new URL(event.request.url); 33 const nonce = url.searchParams.get('nonce'); 34 event.respondWith(new Response(nonce)); 35 }); 36 37 self.addEventListener('message', function(event) { 38 if (event.data.reset) { 39 resetRecords(); 40 } 41 if (event.data.port) { 42 const {requests, errors} = getRecords(); 43 event.data.port.postMessage({requests, errors}); 44 } 45 });