self.addEventListener('install', function(event) {
event.waitUntil(preLoad());
});
var preLoad = function() {
return caches.open('pwa-offline').then(function(cache) { return cache.addAll(['/offline']); });
};
self.addEventListener('fetch', function(event) {
event.respondWith(checkResponse(event.request).catch(function() { return returnFromCache(event.request); })); event.waitUntil(addToCache(event.request));
});
var checkResponse = function(request) {
return new Promise(function(fulfill, reject) { fetch(request).then(function(response) { if (response.status !== 404) { fulfill(response); } else { reject(); } }, reject); });
};
var addToCache = function(request) {
return caches.open('pwa-offline').then(function(cache) { return fetch(request).then(function(response) { if (request.url) return cache.put(request, response); }); });
};
var returnFromCache = function(request) {
return caches.open('pwa-offline').then(function(cache) { return cache.match(request).then(function(matching) { if (!matching || matching.status == 404) { return cache.match('offline'); } else { return matching; } }); });
};