-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathservice-worker.js
More file actions
61 lines (54 loc) · 1.84 KB
/
service-worker.js
File metadata and controls
61 lines (54 loc) · 1.84 KB
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
'use strict';
const version = 'v5'
self.addEventListener('install', (event) => {
event.waitUntil(caches.open(version).then((cache) => {
return cache.addAll([
'/',
'/assets/fresh-codes.svg',
'/components/fc-fish/fc-fish.js',
'/components/fc-fish/fc-fish.css',
'/components/fc-fish-scene/fc-fish-scene.js',
'/components/fc-fish-scene/fc-fish-scene.css',
'/components/fc-fish-scene/fc-fish-scene-controller.js',
'/components/fc-fish-scene/fc-fish-scene-fish-controller.js',
'/components/fc-draw/fc-draw-brush-color.js',
'/components/fc-draw/fc-draw-brush-size.js',
'/components/fc-draw/fc-draw-cursor.js',
'/components/fc-draw/fc-draw.js',
'/components/fc-draw/fc-draw.css',
'/components/fc-contact-form/fc-contact-form.js',
'/components/fc-contact-form/fc-contact-form.css'
])
}))
})
self.addEventListener('fetch', (event) => {
// pass on non-get based requests
if (event.request.method !== 'GET') return
event.respondWith(caches.match(event.request).then(cached => {
let networked = fetch(event.request).then(fetchedFromNetwork, unableToResolve).catch(unableToResolve)
return cached || networked
}))
function fetchedFromNetwork (response) {
var cacheCopy = response.clone()
caches.open(version).then(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'
})
})
}
})
// remove older caches
self.addEventListener('activate', (event) => {
event.waitUntil(caches.keys().then(keys => {
return Promise.all(keys
.filter(key => !key.startsWith(version))
.map(key => caches.delete(key))
)
}))
})