Disallow async function in service worker (#7482)
offline-plugin depends on webpack.optimize.UglifyJsPlugin, which is an alias of uglifyjs-webpack-plugin v0.4.6. uglifyjs-webpack-plugin v0.4.6 uses uglify-js 2.8.29, which is not compatible with async function.
This commit is contained in:
		
					parent
					
						
							
								ed4bae182b
							
						
					
				
			
			
				commit
				
					
						03b69ebc45
					
				
			
		
					 1 changed files with 23 additions and 21 deletions
				
			
		|  | @ -28,11 +28,10 @@ self.addEventListener('fetch', function(event) { | |||
|     const asyncResponse = fetchRoot(); | ||||
|     const asyncCache = openWebCache(); | ||||
| 
 | ||||
|     event.respondWith(asyncResponse.then(async response => { | ||||
|     event.respondWith(asyncResponse.then(response => { | ||||
|       if (response.ok) { | ||||
|         const cache = await asyncCache; | ||||
|         await cache.put('/', response); | ||||
|         return response.clone(); | ||||
|         return asyncCache.then(cache => cache.put('/', response)) | ||||
|                          .then(() => response.clone()); | ||||
|       } | ||||
| 
 | ||||
|       throw null; | ||||
|  | @ -41,35 +40,38 @@ self.addEventListener('fetch', function(event) { | |||
|     const asyncResponse = fetch(event.request); | ||||
|     const asyncCache = openWebCache(); | ||||
| 
 | ||||
|     event.respondWith(asyncResponse.then(async response => { | ||||
|     event.respondWith(asyncResponse.then(response => { | ||||
|       if (response.ok || response.type === 'opaqueredirect') { | ||||
|         await Promise.all([ | ||||
|         return Promise.all([ | ||||
|           asyncCache.then(cache => cache.delete('/')), | ||||
|           indexedDB.deleteDatabase('mastodon'), | ||||
|         ]); | ||||
|         ]).then(() => response); | ||||
|       } | ||||
| 
 | ||||
|       return response; | ||||
|     })); | ||||
|   } else if (process.env.CDN_HOST ? url.host === process.env.CDN_HOST : url.pathname.startsWith('/system/')) { | ||||
|     event.respondWith(openSystemCache().then(async cache => { | ||||
|       const cached = await cache.match(event.request.url); | ||||
|     event.respondWith(openSystemCache().then(cache => { | ||||
|       return cache.match(event.request.url).then(cached => { | ||||
|         if (cached === undefined) { | ||||
|           return fetch(event.request).then(fetched => { | ||||
|             if (fetched.ok) { | ||||
|               const put = cache.put(event.request.url, fetched.clone()); | ||||
| 
 | ||||
|       if (cached === undefined) { | ||||
|         const fetched = await fetch(event.request); | ||||
|               put.catch(() => freeStorage()); | ||||
| 
 | ||||
|         if (fetched.ok) { | ||||
|           try { | ||||
|             await cache.put(event.request.url, fetched.clone()); | ||||
|           } finally { | ||||
|             freeStorage(); | ||||
|           } | ||||
|               return put.then(() => { | ||||
|                 freeStorage(); | ||||
|                 return fetched; | ||||
|               }); | ||||
|             } | ||||
| 
 | ||||
|             return fetched; | ||||
|           }); | ||||
|         } | ||||
| 
 | ||||
|         return fetched; | ||||
|       } | ||||
| 
 | ||||
|       return cached; | ||||
|         return cached; | ||||
|       }); | ||||
|     })); | ||||
|   } | ||||
| }); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue