svgomg-ui/sw.js.map

1 satır
15 KiB
Plaintext

{"version":3,"file":"sw.js","sources":["../../src/js/sw/index.js","../../src/js/utils/storage.js"],"sourcesContent":["import {idbKeyval as storage} from '../utils/storage.js';\n\nconst version = SVGOMG_VERSION;\nconst cachePrefix = 'svgomg-';\nconst staticCacheName = `${cachePrefix}static-${version}`;\nconst fontCacheName = `${cachePrefix}fonts`;\nconst expectedCaches = [staticCacheName, fontCacheName];\n\naddEventListener('install', event => {\n event.waitUntil((async () => {\n const activeVersionPromise = storage.get('active-version');\n const cache = await caches.open(staticCacheName);\n\n await cache.addAll([\n './',\n 'imgs/icon.png',\n 'css/all.css',\n 'js/gzip-worker.js',\n 'js/page.js',\n 'js/prism-worker.js',\n 'js/svgo-worker.js',\n 'changelog.json',\n 'https://fonts.googleapis.com/css?family=Roboto:400,700|Inconsolata'\n ]);\n\n const activeVersion = await activeVersionPromise;\n\n // If it's a major version change, don't skip waiting\n if (!activeVersion || activeVersion.split('.')[0] === version.split('.')[0]) {\n self.skipWaiting();\n }\n })());\n});\n\naddEventListener('activate', event => {\n event.waitUntil((async () => {\n // remove caches beginning \"svgomg-\" that aren't in expectedCaches\n for (const cacheName of await caches.keys()) {\n if (!cacheName.startsWith(cachePrefix)) continue;\n if (!expectedCaches.includes(cacheName)) await caches.delete(cacheName);\n }\n\n await storage.set('active-version', version);\n })());\n});\n\nasync function handleFontRequest(request) {\n const match = await caches.match(request);\n if (match) return match;\n\n const [response, fontCache] = await Promise.all([\n fetch(request),\n caches.open(fontCacheName)\n ]);\n\n fontCache.put(request, response.clone());\n return response;\n}\n\naddEventListener('fetch', event => {\n const url = new URL(event.request.url);\n\n if (url.host == 'fonts.gstatic.com') {\n event.respondWith(handleFontRequest(event.request));\n return;\n }\n event.respondWith(\n caches.match(event.request).then(r => r || fetch(event.request))\n );\n});\n","export let idbKeyval = (() => {\n let db;\n\n function getDB() {\n if (!db) {\n db = new Promise((resolve, reject) => {\n const openreq = indexedDB.open('svgo-keyval', 1);\n\n openreq.onerror = () => {\n reject(openreq.error);\n };\n\n openreq.onupgradeneeded = () => {\n // First time setup: create an empty object store\n openreq.result.createObjectStore('keyval');\n };\n\n openreq.onsuccess = () => {\n resolve(openreq.result);\n };\n });\n }\n return db;\n }\n\n async function withStore(type, callback) {\n const db = await getDB();\n return new Promise((resolve, reject) => {\n const transaction = db.transaction('keyval', type);\n transaction.oncomplete = () => resolve();\n transaction.onerror = () => reject(transaction.error);\n callback(transaction.objectStore('keyval'));\n });\n }\n\n return {\n async get(key) {\n let req;\n await withStore('readonly', store => {\n req = store.get(key);\n });\n return req.result;\n },\n set(key, value) {\n return withStore('readwrite', store => {\n store.put(value, key);\n });\n },\n delete(key) {\n return withStore('readwrite', store => {\n store.delete(key);\n });\n }\n };\n})();\n\n// iOS add-to-homescreen is missing IDB, or at least it used to.\n// I haven't tested this in a while.\nif (!self.indexedDB) {\n idbKeyval = {\n get: key => Promise.resolve(localStorage.getItem(key)),\n set: (key, val) => Promise.resolve(localStorage.setItem(key, val)),\n delete: key => Promise.resolve(localStorage.removeItem(key))\n };\n}\n"],"names":["caches","match","Promise","all","fetch","open","put","clone","indexedDB","onerror","error","onupgradeneeded","result","createObjectStore","onsuccess","transaction","oncomplete","objectStore","get","set","delete","self","resolve","localStorage","getItem","setItem","removeItem","addEventListener","waitUntil","storage","addAll","split","skipWaiting","keys","startsWith","includes","URL","request","url","host","respondWith","then"],"mappings":"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","preExistingComment":"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjpudWxsLCJzb3VyY2VzIjpbIi9ob21lL3RyYXZpcy9idWlsZC9qYWtlYXJjaGliYWxkL3N2Z29tZy9zcmMvanMvc3cvaW5kZXguanMiLCIvaG9tZS90cmF2aXMvYnVpbGQvamFrZWFyY2hpYmFsZC9zdmdvbWcvc3JjL2pzL3V0aWxzL3N0b3JhZ2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpZGJLZXl2YWwgYXMgc3RvcmFnZX0gZnJvbSAnLi4vdXRpbHMvc3RvcmFnZS5qcyc7XG5cbmNvbnN0IHZlcnNpb24gPSBTVkdPTUdfVkVSU0lPTjtcbmNvbnN0IGNhY2hlUHJlZml4ID0gJ3N2Z29tZy0nO1xuY29uc3Qgc3RhdGljQ2FjaGVOYW1lID0gYCR7Y2FjaGVQcmVmaXh9c3RhdGljLSR7dmVyc2lvbn1gO1xuY29uc3QgZm9udENhY2hlTmFtZSA9IGAke2NhY2hlUHJlZml4fWZvbnRzYDtcbmNvbnN0IGV4cGVjdGVkQ2FjaGVzID0gW3N0YXRpY0NhY2hlTmFtZSwgZm9udENhY2hlTmFtZV07XG5cbmFkZEV2ZW50TGlzdGVuZXIoJ2luc3RhbGwnLCBldmVudCA9PiB7XG4gIGV2ZW50LndhaXRVbnRpbCgoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGFjdGl2ZVZlcnNpb25Qcm9taXNlID0gc3RvcmFnZS5nZXQoJ2FjdGl2ZS12ZXJzaW9uJyk7XG4gICAgY29uc3QgY2FjaGUgPSBhd2FpdCBjYWNoZXMub3BlbihzdGF0aWNDYWNoZU5hbWUpO1xuXG4gICAgYXdhaXQgY2FjaGUuYWRkQWxsKFtcbiAgICAgICcuLycsXG4gICAgICAnaW1ncy9pY29uLnBuZycsXG4gICAgICAnY3NzL2FsbC5jc3MnLFxuICAgICAgJ2pzL2d6aXAtd29ya2VyLmpzJyxcbiAgICAgICdqcy9wYWdlLmpzJyxcbiAgICAgICdqcy9wcmlzbS13b3JrZXIuanMnLFxuICAgICAgJ2pzL3N2Z28td29ya2VyLmpzJyxcbiAgICAgICdjaGFuZ2Vsb2cuanNvbicsXG4gICAgICAnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bzo0MDAsNzAwfEluY29uc29sYXRhJ1xuICAgIF0pO1xuXG4gICAgY29uc3QgYWN0aXZlVmVyc2lvbiA9IGF3YWl0IGFjdGl2ZVZlcnNpb25Qcm9taXNlO1xuXG4gICAgLy8gSWYgaXQncyBhIG1ham9yIHZlcnNpb24gY2hhbmdlLCBkb24ndCBza2lwIHdhaXRpbmdcbiAgICBpZiAoIWFjdGl2ZVZlcnNpb24gfHwgYWN0aXZlVmVyc2lvbi5zcGxpdCgnLicpWzBdID09PSB2ZXJzaW9uLnNwbGl0KCcuJylbMF0pIHtcbiAgICAgIHNlbGYuc2tpcFdhaXRpbmcoKTtcbiAgICB9XG4gIH0pKCkpO1xufSk7XG5cbmFkZEV2ZW50TGlzdGVuZXIoJ2FjdGl2YXRlJywgZXZlbnQgPT4ge1xuICBldmVudC53YWl0VW50aWwoKGFzeW5jICgpID0+IHtcbiAgICAvLyByZW1vdmUgY2FjaGVzIGJlZ2lubmluZyBcInN2Z29tZy1cIiB0aGF0IGFyZW4ndCBpbiBleHBlY3RlZENhY2hlc1xuICAgIGZvciAoY29uc3QgY2FjaGVOYW1lIG9mIGF3YWl0IGNhY2hlcy5rZXlzKCkpIHtcbiAgICAgIGlmICghY2FjaGVOYW1lLnN0YXJ0c1dpdGgoY2FjaGVQcmVmaXgpKSBjb250aW51ZTtcbiAgICAgIGlmICghZXhwZWN0ZWRDYWNoZXMuaW5jbHVkZXMoY2FjaGVOYW1lKSkgYXdhaXQgY2FjaGVzLmRlbGV0ZShjYWNoZU5hbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHN0b3JhZ2Uuc2V0KCdhY3RpdmUtdmVyc2lvbicsIHZlcnNpb24pO1xuICB9KSgpKTtcbn0pO1xuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVGb250UmVxdWVzdChyZXF1ZXN0KSB7XG4gIGNvbnN0IG1hdGNoID0gYXdhaXQgY2FjaGVzLm1hdGNoKHJlcXVlc3QpO1xuICBpZiAobWF0Y2gpIHJldHVybiBtYXRjaDtcblxuICBjb25zdCBbcmVzcG9uc2UsIGZvbnRDYWNoZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgZmV0Y2gocmVxdWVzdCksXG4gICAgY2FjaGVzLm9wZW4oZm9udENhY2hlTmFtZSlcbiAgXSk7XG5cbiAgZm9udENhY2hlLnB1dChyZXF1ZXN0LCByZXNwb25zZS5jbG9uZSgpKTtcbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuXG5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIGV2ZW50ID0+IHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChldmVudC5yZXF1ZXN0LnVybCk7XG5cbiAgaWYgKHVybC5ob3N0ID09ICdmb250cy5nc3RhdGljLmNvbScpIHtcbiAgICBldmVudC5yZXNwb25kV2l0aChoYW5kbGVGb250UmVxdWVzdChldmVudC5yZXF1ZXN0KSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGV2ZW50LnJlc3BvbmRXaXRoKFxuICAgIGNhY2hlcy5tYXRjaChldmVudC5yZXF1ZXN0KS50aGVuKHIgPT4gciB8fCBmZXRjaChldmVudC5yZXF1ZXN0KSlcbiAgKTtcbn0pO1xuIiwiZXhwb3J0IGxldCBpZGJLZXl2YWwgPSAoKCkgPT4ge1xuICBsZXQgZGI7XG5cbiAgZnVuY3Rpb24gZ2V0REIoKSB7XG4gICAgaWYgKCFkYikge1xuICAgICAgZGIgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IG9wZW5yZXEgPSBpbmRleGVkREIub3Blbignc3Znby1rZXl2YWwnLCAxKTtcblxuICAgICAgICBvcGVucmVxLm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KG9wZW5yZXEuZXJyb3IpO1xuICAgICAgICB9O1xuXG4gICAgICAgIG9wZW5yZXEub251cGdyYWRlbmVlZGVkID0gKCkgPT4ge1xuICAgICAgICAgIC8vIEZpcnN0IHRpbWUgc2V0dXA6IGNyZWF0ZSBhbiBlbXB0eSBvYmplY3Qgc3RvcmVcbiAgICAgICAgICBvcGVucmVxLnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSgna2V5dmFsJyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgb3BlbnJlcS5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShvcGVucmVxLnJlc3VsdCk7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGRiO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gd2l0aFN0b3JlKHR5cGUsIGNhbGxiYWNrKSB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCBnZXREQigpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdrZXl2YWwnLCB0eXBlKTtcbiAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSAoKSA9PiByZXNvbHZlKCk7XG4gICAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gKCkgPT4gcmVqZWN0KHRyYW5zYWN0aW9uLmVycm9yKTtcbiAgICAgIGNhbGxiYWNrKHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdrZXl2YWwnKSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFzeW5jIGdldChrZXkpIHtcbiAgICAgIGxldCByZXE7XG4gICAgICBhd2FpdCB3aXRoU3RvcmUoJ3JlYWRvbmx5Jywgc3RvcmUgPT4ge1xuICAgICAgICByZXEgPSBzdG9yZS5nZXQoa2V5KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlcS5yZXN1bHQ7XG4gICAgfSxcbiAgICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHdpdGhTdG9yZSgncmVhZHdyaXRlJywgc3RvcmUgPT4ge1xuICAgICAgICBzdG9yZS5wdXQodmFsdWUsIGtleSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGRlbGV0ZShrZXkpIHtcbiAgICAgIHJldHVybiB3aXRoU3RvcmUoJ3JlYWR3cml0ZScsIHN0b3JlID0+IHtcbiAgICAgICAgc3RvcmUuZGVsZXRlKGtleSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59KSgpO1xuXG4vLyBpT1MgYWRkLXRvLWhvbWVzY3JlZW4gaXMgbWlzc2luZyBJREIsIG9yIGF0IGxlYXN0IGl0IHVzZWQgdG8uXG4vLyBJIGhhdmVuJ3QgdGVzdGVkIHRoaXMgaW4gYSB3aGlsZS5cbmlmICghc2VsZi5pbmRleGVkREIpIHtcbiAgaWRiS2V5dmFsID0ge1xuICAgIGdldDoga2V5ID0+IFByb21pc2UucmVzb2x2ZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKSxcbiAgICBzZXQ6IChrZXksIHZhbCkgPT4gUHJvbWlzZS5yZXNvbHZlKGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsKSksXG4gICAgZGVsZXRlOiBrZXkgPT4gUHJvbWlzZS5yZXNvbHZlKGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSkpXG4gIH07XG59XG4iXSwibmFtZXMiOlsiY2FjaGVzIiwibWF0Y2giLCJQcm9taXNlIiwiYWxsIiwiZmV0Y2giLCJvcGVuIiwicHV0IiwiY2xvbmUiLCJpbmRleGVkREIiLCJvbmVycm9yIiwiZXJyb3IiLCJvbnVwZ3JhZGVuZWVkZWQiLCJyZXN1bHQiLCJjcmVhdGVPYmplY3RTdG9yZSIsIm9uc3VjY2VzcyIsInRyYW5zYWN0aW9uIiwib25jb21wbGV0ZSIsIm9iamVjdFN0b3JlIiwiZ2V0Iiwic2V0IiwiZGVsZXRlIiwic2VsZiIsInJlc29sdmUiLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwic2V0SXRlbSIsInJlbW92ZUl0ZW0iLCJhZGRFdmVudExpc3RlbmVyIiwid2FpdFVudGlsIiwic3RvcmFnZSIsImFkZEFsbCIsInNwbGl0Iiwic2tpcFdhaXRpbmciLCJrZXlzIiwic3RhcnRzV2l0aCIsImluY2x1ZGVzIiwiVVJMIiwicmVxdWVzdCIsInVybCIsImhvc3QiLCJyZXNwb25kV2l0aCIsInRoZW4iXSwibWFwcGluZ3MiOiJ5QkE4Q0EsbUJBQTBDLENBQ3hDLEtBQU0sR0FBUSxLQUFNQSxRQUFPQyxLQUFQLEdBQXBCLENBQ0EsS0FBVyxTQUVYLEtBQU0sTUFBd0Is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"}