Skip to content

Commit 060cfbd

Browse files
committed
chore(playgroud): tweak service worker
1 parent 600f2df commit 060cfbd

File tree

2 files changed

+31
-7
lines changed

2 files changed

+31
-7
lines changed

playground/public/sw.js

+30-7
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,31 @@ self.addEventListener('install', function (event) {
55
})
66

77
self.addEventListener('activate', function (event) {
8-
event.waitUntil(self.clients.claim())
8+
const expectedCacheNames = ['esm.sh']
9+
event.waitUntil(
10+
self.clients.claim().then(() =>
11+
caches.keys().then(function (cacheNames) {
12+
return Promise.all(
13+
cacheNames.map(function (cacheName) {
14+
if (!expectedCacheNames.includes(cacheName)) {
15+
return caches.delete(cacheName)
16+
}
17+
})
18+
)
19+
})
20+
)
21+
)
922
})
1023

11-
self.addEventListener('fetch', async (event) => {
24+
self.addEventListener('fetch', function (event) {
1225
const url = event.request.url
1326
if (!url.startsWith('http') || event.request.method !== 'GET') return
1427

1528
event.respondWith(
1629
(async function () {
17-
const cache = await caches.open('v1')
30+
const cachedResponse = await caches.match(event.request)
31+
if (cachedResponse) return cachedResponse
32+
1833
if (shouldPatchReact(url)) {
1934
return createScriptResponse(reactScript)
2035
}
@@ -25,11 +40,19 @@ self.addEventListener('fetch', async (event) => {
2540
return createScriptResponse(reactDOMScript)
2641
}
2742

28-
const cachedResponse = await cache.match(event.request)
29-
if (cachedResponse) return cachedResponse
30-
3143
const networkResponse = await fetch(event.request)
32-
event.waitUntil(cache.put(event.request, networkResponse.clone()))
44+
if (networkResponse.ok) {
45+
const clonedResponse = networkResponse.clone()
46+
if (/^https:\/\/(cdn.)?esm.sh\//.test(url)) {
47+
caches
48+
.open('esm.sh')
49+
.then((cache) => cache.put(event.request, clonedResponse))
50+
} else {
51+
caches
52+
.open('web')
53+
.then((cache) => cache.put(event.request, clonedResponse))
54+
}
55+
}
3356
return networkResponse
3457
})()
3558
)

playground/src/App.module.css

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
.EditorPane {
1818
all: unset;
19+
position: relative;
1920
box-sizing: border-box;
2021
display: flex;
2122
border-right: var(--border);

0 commit comments

Comments
 (0)