@@ -5,16 +5,31 @@ self.addEventListener('install', function (event) {
5
5
} )
6
6
7
7
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
+ )
9
22
} )
10
23
11
- self . addEventListener ( 'fetch' , async ( event ) => {
24
+ self . addEventListener ( 'fetch' , function ( event ) {
12
25
const url = event . request . url
13
26
if ( ! url . startsWith ( 'http' ) || event . request . method !== 'GET' ) return
14
27
15
28
event . respondWith (
16
29
( async function ( ) {
17
- const cache = await caches . open ( 'v1' )
30
+ const cachedResponse = await caches . match ( event . request )
31
+ if ( cachedResponse ) return cachedResponse
32
+
18
33
if ( shouldPatchReact ( url ) ) {
19
34
return createScriptResponse ( reactScript )
20
35
}
@@ -25,11 +40,19 @@ self.addEventListener('fetch', async (event) => {
25
40
return createScriptResponse ( reactDOMScript )
26
41
}
27
42
28
- const cachedResponse = await cache . match ( event . request )
29
- if ( cachedResponse ) return cachedResponse
30
-
31
43
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 ( / ^ h t t p s : \/ \/ ( c d n .) ? e s m .s h \/ / . 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
+ }
33
56
return networkResponse
34
57
} ) ( )
35
58
)
0 commit comments