Convert from Webpack to Vite (#34450)
Co-authored-by: Renaud Chaput <renchap@gmail.com>
This commit is contained in:
		
					parent
					
						
							
								a5a2c6dc7e
							
						
					
				
			
			
				commit
				
					
						c4f47adb49
					
				
			
		
					 100 changed files with 2031 additions and 7424 deletions
				
			
		|  | @ -1,90 +0,0 @@ | |||
| import { ExpirationPlugin } from 'workbox-expiration'; | ||||
| import { precacheAndRoute } from 'workbox-precaching'; | ||||
| import { registerRoute } from 'workbox-routing'; | ||||
| import { CacheFirst } from 'workbox-strategies'; | ||||
| 
 | ||||
| import { handleNotificationClick, handlePush } from './web_push_notifications'; | ||||
| 
 | ||||
| const CACHE_NAME_PREFIX = 'mastodon-'; | ||||
| 
 | ||||
| function openWebCache() { | ||||
|   return caches.open(`${CACHE_NAME_PREFIX}web`); | ||||
| } | ||||
| 
 | ||||
| function fetchRoot() { | ||||
|   return fetch('/', { credentials: 'include', redirect: 'manual' }); | ||||
| } | ||||
| 
 | ||||
| precacheAndRoute(self.__WB_MANIFEST); | ||||
| 
 | ||||
| registerRoute( | ||||
|   /locale_.*\.js$/, | ||||
|   new CacheFirst({ | ||||
|     cacheName: `${CACHE_NAME_PREFIX}locales`, | ||||
|     plugins: [ | ||||
|       new ExpirationPlugin({ | ||||
|         maxAgeSeconds: 30 * 24 * 60 * 60, // 1 month
 | ||||
|         maxEntries: 5, | ||||
|       }), | ||||
|     ], | ||||
|   }), | ||||
| ); | ||||
| 
 | ||||
| registerRoute( | ||||
|   ({ request }) => request.destination === 'font', | ||||
|   new CacheFirst({ | ||||
|     cacheName: `${CACHE_NAME_PREFIX}fonts`, | ||||
|     plugins: [ | ||||
|       new ExpirationPlugin({ | ||||
|         maxAgeSeconds: 30 * 24 * 60 * 60, // 1 month
 | ||||
|         maxEntries: 5, | ||||
|       }), | ||||
|     ], | ||||
|   }), | ||||
| ); | ||||
| 
 | ||||
| registerRoute( | ||||
|   ({ request }) => request.destination === 'image', | ||||
|   new CacheFirst({ | ||||
|     cacheName: `m${CACHE_NAME_PREFIX}media`, | ||||
|     plugins: [ | ||||
|       new ExpirationPlugin({ | ||||
|         maxAgeSeconds: 7 * 24 * 60 * 60, // 1 week
 | ||||
|         maxEntries: 256, | ||||
|       }), | ||||
|     ], | ||||
|   }), | ||||
| ); | ||||
| 
 | ||||
| // Cause a new version of a registered Service Worker to replace an existing one
 | ||||
| // that is already installed, and replace the currently active worker on open pages.
 | ||||
| self.addEventListener('install', function(event) { | ||||
|   event.waitUntil(Promise.all([openWebCache(), fetchRoot()]).then(([cache, root]) => cache.put('/', root))); | ||||
| }); | ||||
| 
 | ||||
| self.addEventListener('activate', function(event) { | ||||
|   event.waitUntil(self.clients.claim()); | ||||
| }); | ||||
| 
 | ||||
| self.addEventListener('fetch', function(event) { | ||||
|   const url = new URL(event.request.url); | ||||
| 
 | ||||
|   if (url.pathname === '/auth/sign_out') { | ||||
|     const asyncResponse = fetch(event.request); | ||||
|     const asyncCache = openWebCache(); | ||||
| 
 | ||||
|     event.respondWith(asyncResponse.then(response => { | ||||
|       if (response.ok || response.type === 'opaqueredirect') { | ||||
|         return Promise.all([ | ||||
|           asyncCache.then(cache => cache.delete('/')), | ||||
|           indexedDB.deleteDatabase('mastodon'), | ||||
|         ]).then(() => response); | ||||
|       } | ||||
| 
 | ||||
|       return response; | ||||
|     })); | ||||
|   } | ||||
| }); | ||||
| 
 | ||||
| self.addEventListener('push', handlePush); | ||||
| self.addEventListener('notificationclick', handleNotificationClick); | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue