-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathservice-worker.js
101 lines (85 loc) · 2.17 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
"use strict";
var name = "";
// The version of the cache, changing this will force everything to be cached
// again.
var version = "";
var files = [
// Style Sheets
"style/font-awesome.min.css",
"style/animate.min.css",
"style/kayros.css",
"style/main.css",
// Scripts
"js/artemis.js",
"js/main.js",
// Fonts
"fonts/fontawesome-webfont.eot",
"fonts/fontawesome-webfont.svg",
"fonts/fontawesome-webfont.ttf",
"fonts/fontawesome-webfont.woff",
"fonts/fontawesome-webfont.woff2",
"fonts/FontAwesome.otf",
// Images
"img/favicon.ico",
"img/icons/icon_48x48.png",
"img/icons/icon_60x60.png",
"img/icons/icon_70x70.png",
"img/icons/icon_76x76.png",
"img/icons/icon_96x96.png",
"img/icons/icon_128x128.png",
"img/icons/icon_150x150.png",
"img/icons/icon_152x152.png",
"img/icons/icon_167x167.png",
"img/icons/icon_180x180.png",
"img/icons/icon_192x192.png",
"img/icons/icon_310x310.png",
"img/icons/icon_512x512.png"
];
self.addEventListener("install", function (event) {
event.waitUntil(
caches.open(`${name}-v${version}`).then(function (cache) {
return cache.addAll(files);
})
);
});
self.addEventListener("activate", function (event) {
event.waitUntil(
caches.keys().then(function (keyList) {
return Promise.all(keyList.map(function (key) {
if (key !== `${name}-v${version}`) {
return caches.delete(key);
}
}));
})
);
return self.clients.claim();
});
self.addEventListener("fetch", function (event) {
if (event.request.method !== "GET") {
return;
}
event.respondWith(
caches.match(event.request).then(function (cached) {
var networked = fetch(event.request)
.then(fetchedFromNetwork, unableToResolve)
.catch(unableToResolve);
return cached || networked;
function fetchedFromNetwork (response) {
var cacheCopy = response.clone();
caches.open(`${name}-v${version}`).then(function add (cache) {
cache.put(event.request, cacheCopy);
});
return response;
}
function unableToResolve () {
return new Response("<h1>Service Unavailable</h1>", {
status: 503,
statusText: "Service Unavailable",
headers: new Headers({
"Content-Type": "text/html"
})
});
}
})
);
});