/* EMOJESIS — minimal offline cache. Bump CACHE on every release. */ 'use strict'; var CACHE = 'emojesis-v1'; var ASSETS = [ './', './index.html', './css/style.css', './js/data.js', './js/app.js', './favicon.svg' ]; self.addEventListener('install', function (ev) { ev.waitUntil( caches.open(CACHE).then(function (c) { return c.addAll(ASSETS); }) .then(function () { return self.skipWaiting(); }) ); }); self.addEventListener('activate', function (ev) { ev.waitUntil( caches.keys().then(function (keys) { return Promise.all(keys.map(function (k) { if (k !== CACHE) return caches.delete(k); })); }).then(function () { return self.clients.claim(); }) ); }); self.addEventListener('fetch', function (ev) { if (ev.request.method !== 'GET' || !ev.request.url.startsWith(self.location.origin)) return; ev.respondWith( caches.match(ev.request).then(function (hit) { return hit || fetch(ev.request).then(function (res) { if (res && res.ok) { var copy = res.clone(); caches.open(CACHE).then(function (c) { c.put(ev.request, copy); }); } return res; }); }) ); });