@@ -5,16 +5,31 @@ self.addEventListener('install', function (event) {
55} )
66
77self . 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 ( / ^ 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+ }
3356 return networkResponse
3457 } ) ( )
3558 )
0 commit comments