1var CACHE_VERSION = 'v1'; 2var CACHE_NAME = CACHE_VERSION + ':sw-cache-'; 3 4function onInstall(event) { 5 console.log('[Serviceworker]', "Installing!", event); 6 7 event.waitUntil( 8 caches.open(CACHE_NAME).then(function prefill(cache) { 9 }) 10 ); 11 12 // Uppy ServiceWorker 13 event.waitUntil(Promise.resolve().then(() => self.skipWaiting())); 14} 15 16function onActivate(event) { 17 console.log('[Serviceworker]', "Activating!", event); 18 19 event.waitUntil( 20 caches.keys().then(function(cacheNames) { 21 return Promise.all( 22 cacheNames.filter(function(cacheName) { 23 // Return true if you want to remove this cache, 24 // but remember that caches are shared across 25 // the whole origin 26 return cacheName.indexOf(CACHE_VERSION) !== 0; 27 }).map(function(cacheName) { 28 return caches.delete(cacheName); 29 }) 30 ); 31 }) 32 ); 33 34 // Uppy ServiceWorker 35 event.waitUntil(self.clients.claim()); 36} 37 38function onFetch(event) { 39 return; 40 event.respondWith( 41 // try to return untouched request from network first 42 fetch(event.request).catch(function() { 43 // if it fails, try to return request from the cache 44 return caches.match(event.request).then(function(response) { 45 if (response) { 46 return response; 47 } 48 // if not found in cache, return default offline content for navigate requests 49 if (event.request.mode === 'navigate' || 50 (event.request.method === 'GET' && event.request.headers.get('accept').includes('text/html'))) { 51 console.log('[Serviceworker]', "Fetching offline content", event); 52 return caches.match('/offline.html'); 53 } 54 }) 55 }) 56 ); 57} 58 59// Uppy ServiceWorker 60const fileCache = Object.create(null); 61 62// Uppy ServiceWorker 63function getCache(name) { 64 if (!fileCache[name]) { 65 fileCache[name] = Object.create(null); 66 } 67 68 return fileCache[name]; 69} 70 71// Uppy ServiceWorker 72function sendMessageToAllClients(msg) { 73 clients.matchAll().then(clients => { 74 clients.forEach(client => { 75 client.postMessage(msg); 76 }); 77 }); 78} 79 80// Uppy ServiceWorker 81function addFile(store, file) { 82 getCache(store)[file.id] = file.data; 83} 84 85// Uppy ServiceWorker 86function removeFile(store, fileID) { 87 delete getCache(store)[fileID]; 88} 89 90// Uppy ServiceWorker 91function getFiles(store) { 92 sendMessageToAllClients({ 93 type: 'uppy/ALL_FILES', 94 store, 95 files: getCache(store) 96 }); 97} 98 99// Uppy ServiceWorker 100self.addEventListener('message', event => { 101 var _event$data; 102 103 switch (event.data.type) { 104 case 'uppy/ADD_FILE': 105 addFile(event.data.store, event.data.file); 106 break; 107 108 case 'uppy/REMOVE_FILE': 109 removeFile(event.data.store, event.data.fileID); 110 break; 111 112 case 'uppy/GET_FILES': 113 getFiles(event.data.store); 114 break; 115 116 default: 117 throw new Error(`[ServiceWorker] Unsupported event.data.type. Got: ${event == null ? void 0 : (_event$data = event.data) == null ? void 0 : _event$data.type}`); 118 } 119}); 120 121self.addEventListener('install', onInstall); 122self.addEventListener('activate', onActivate); 123self.addEventListener('fetch', onFetch);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.