// ============================================================================ // Service Worker de AUTO-LIMPIEZA (kill switch) // ---------------------------------------------------------------------------- // El SW anterior (PWA experimental) usaba estrategia cache-first para todo: // - servía HTML/JS obsoletos tras cada deploy ("los cambios no se ven"), // - intentaba cache.put() sobre POSTs (TypeError) rompiendo peticiones Livewire, // - su precache incluía /css/app.css y /js/app.js, que no existen con Vite, // haciendo fallar la instalación (Failed to execute 'addAll' on 'Cache'). // // Este SW sustituye al anterior en cuanto el navegador lo actualiza: // borra TODOS los caches, se desregistra y recarga las pestañas abiertas. // Mantener este fichero publicado un tiempo para que todos los clientes // que tengan la PWA vieja instalada se limpien solos. // ============================================================================ self.addEventListener('install', () => { self.skipWaiting(); }); self.addEventListener('activate', (event) => { event.waitUntil((async () => { // 1) Borrar todos los caches que dejó la versión anterior const keys = await caches.keys(); await Promise.all(keys.map((key) => caches.delete(key))); // 2) Desregistrarse await self.registration.unregister(); // 3) Recargar las pestañas controladas para que salgan del SW const clients = await self.clients.matchAll({ type: 'window' }); clients.forEach((client) => client.navigate(client.url)); })()); });