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:
		
				
					committed by
					
						
						Eugen Rochko
					
				
			
			
				
	
			
			
			
						parent
						
							ed4bae182b
						
					
				
				
					commit
					03b69ebc45
				
			@@ -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;
 | 
			
		||||
      });
 | 
			
		||||
    }));
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user