-
Notifications
You must be signed in to change notification settings - Fork 0
/
service-worker.js
35 lines (34 loc) · 3.61 KB
/
service-worker.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
"use strict";
var precacheConfig = [
["/portofolio/index.html", "202575e3949883fda99dcd6f2c28a268"],
["/portofolio/static/css/main.d41d8cd9.css", "f0c753866484ee7c4f835badbb0dec7b"],
["/portofolio/static/js/main.2f65ef0e.js", "76c54a3f063a42acff92a545528a6cfe"]
],
cacheName = "sw-precache-v3-sw-precache-webpack-plugin-" + (self.registration ? self.registration.scope : ""),
ignoreUrlParametersMatching = [/^utm_/],
addDirectoryIndex = function(e, t) { var n = new URL(e); return "/" === n.pathname.slice(-1) && (n.pathname += t), n.toString() },
cleanResponse = function(t) { return t.redirected ? ("body" in t ? Promise.resolve(t.body) : t.blob()).then(function(e) { return new Response(e, { headers: t.headers, status: t.status, statusText: t.statusText }) }) : Promise.resolve(t) },
createCacheKey = function(e, t, n, r) { var a = new URL(e); return r && a.pathname.match(r) || (a.search += (a.search ? "&" : "") + encodeURIComponent(t) + "=" + encodeURIComponent(n)), a.toString() },
isPathWhitelisted = function(e, t) { if (0 === e.length) return !0; var n = new URL(t).pathname; return e.some(function(e) { return n.match(e) }) },
stripIgnoredUrlParameters = function(e, n) { var t = new URL(e); return t.hash = "", t.search = t.search.slice(1).split("&").map(function(e) { return e.split("=") }).filter(function(t) { return n.every(function(e) { return !e.test(t[0]) }) }).map(function(e) { return e.join("=") }).join("&"), t.toString() },
hashParamName = "_sw-precache",
urlsToCacheKeys = new Map(precacheConfig.map(function(e) {
var t = e[0],
n = e[1],
r = new URL(t, self.location),
a = createCacheKey(r, hashParamName, n, /\.\w{8}\./);
return [r.toString(), a]
}));
function setOfCachedUrls(e) { return e.keys().then(function(e) { return e.map(function(e) { return e.url }) }).then(function(e) { return new Set(e) }) }
self.addEventListener("install", function(e) { e.waitUntil(caches.open(cacheName).then(function(r) { return setOfCachedUrls(r).then(function(n) { return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(t) { if (!n.has(t)) { var e = new Request(t, { credentials: "same-origin" }); return fetch(e).then(function(e) { if (!e.ok) throw new Error("Request for " + t + " returned a response with status " + e.status); return cleanResponse(e).then(function(e) { return r.put(t, e) }) }) } })) }) }).then(function() { return self.skipWaiting() })) }), self.addEventListener("activate", function(e) {
var n = new Set(urlsToCacheKeys.values());
e.waitUntil(caches.open(cacheName).then(function(t) { return t.keys().then(function(e) { return Promise.all(e.map(function(e) { if (!n.has(e.url)) return t.delete(e) })) }) }).then(function() { return self.clients.claim() }))
}), self.addEventListener("fetch", function(t) {
if ("GET" === t.request.method) {
var e, n = stripIgnoredUrlParameters(t.request.url, ignoreUrlParametersMatching),
r = "index.html";
(e = urlsToCacheKeys.has(n)) || (n = addDirectoryIndex(n, r), e = urlsToCacheKeys.has(n));
var a = "/index.html";
!e && "navigate" === t.request.mode && isPathWhitelisted(["^(?!\\/__).*"], t.request.url) && (n = new URL(a, self.location).toString(), e = urlsToCacheKeys.has(n)), e && t.respondWith(caches.open(cacheName).then(function(e) { return e.match(urlsToCacheKeys.get(n)).then(function(e) { if (e) return e; throw Error("The cached response that was expected is missing.") }) }).catch(function(e) { return console.warn('Couldn\'t serve response for "%s" from cache: %O', t.request.url, e), fetch(t.request) }))
}
});