Files

33 lines
864 B
JavaScript

const CACHE = 'budget-commun-v3'
const ASSETS = ['/', '/index.html', '/manifest.json']
self.addEventListener('install', e => {
e.waitUntil(caches.open(CACHE).then(c => c.addAll(ASSETS)))
self.skipWaiting()
})
self.addEventListener('activate', e => {
e.waitUntil(
caches.keys().then(keys =>
Promise.all(keys.filter(k => k !== CACHE).map(k => caches.delete(k)))
)
)
self.clients.claim()
})
self.addEventListener('fetch', e => {
// API : réseau uniquement, jamais de cache
if (e.request.url.includes('/api/')) return
// Assets statiques : network first → cache en fallback offline
e.respondWith(
fetch(e.request)
.then(response => {
const clone = response.clone()
caches.open(CACHE).then(c => c.put(e.request, clone))
return response
})
.catch(() => caches.match(e.request))
)
})