From 1066a32f981fdd69e85464656e027b0ca926cf89 Mon Sep 17 00:00:00 2001 From: "Builder.io" Date: Thu, 18 Sep 2025 04:39:18 +0000 Subject: [PATCH] Add a simple service worker for offline shell cgen-1bb0676720c6412bade128fbb38b3686 --- website/public/sw.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 website/public/sw.js diff --git a/website/public/sw.js b/website/public/sw.js new file mode 100644 index 00000000..0d20aa2e --- /dev/null +++ b/website/public/sw.js @@ -0,0 +1,26 @@ +const CACHE = 'switch-cache-v1'; +const ASSETS = [ + '/', + '/index.html', + '/playground.html', + '/monarch.html', + '/switch.html' +]; +self.addEventListener('install', (e) => { + e.waitUntil(caches.open(CACHE).then(c=>c.addAll(ASSETS)).then(()=>self.skipWaiting())); +}); +self.addEventListener('activate', (e) => { + e.waitUntil(caches.keys().then(keys=>Promise.all(keys.filter(k=>k!==CACHE).map(k=>caches.delete(k)))).then(()=>self.clients.claim())); +}); +self.addEventListener('fetch', (e) => { + const url = new URL(e.request.url); + if (url.origin === location.origin) { + e.respondWith(caches.match(e.request).then(r=> r || fetch(e.request).then(resp=>{ + if (e.request.method==='GET' && resp.ok && resp.type==='basic') { + const clone = resp.clone(); + caches.open(CACHE).then(c=>c.put(e.request, clone)); + } + return resp; + }).catch(()=>caches.match('/index.html')))); + } +});