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
		
		Reference in a new issue