commit 82cd74597baca8a90bab26fe0f6a539b67384dd3
parent def58d99303663fd182ea89db79ab00eb13dea2f
Author: Hunter
Date: Fri, 11 Jul 2025 16:51:02 -0400
cache codemirror dependencies when installing PWA
Diffstat:
| M | sw.js | | | 27 | +++++++++++++++++++++++---- |
1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/sw.js b/sw.js
@@ -1,8 +1,15 @@
-const CACHE_NAME = 'web-workshop-v1';
+const CACHE_NAME = 'web-workshop-v2';
const urlsToCache = [
'/',
'/index.html',
- '/manifest.json'
+ '/manifest.json',
+ // CodeMirror dependencies
+ 'https://esm.sh/@codemirror/view@6',
+ 'https://esm.sh/@codemirror/state@6',
+ 'https://esm.sh/@codemirror/commands@6',
+ 'https://esm.sh/@codemirror/lang-html@6',
+ 'https://esm.sh/@fsegurai/codemirror-theme-github-dark',
+ 'https://esm.sh/@codemirror/language@6'
];
// Function to discover and cache all files in directories
@@ -42,8 +49,20 @@ self.addEventListener('install', event => {
event.waitUntil(
caches.open(CACHE_NAME)
.then(async cache => {
- // Cache core files
- await cache.addAll(urlsToCache);
+ // Cache core files first
+ const coreFiles = urlsToCache.filter(url => !url.startsWith('https://'));
+ await cache.addAll(coreFiles);
+
+ // Cache external dependencies with better error handling
+ const externalFiles = urlsToCache.filter(url => url.startsWith('https://'));
+ for (const url of externalFiles) {
+ try {
+ await cache.add(url);
+ } catch (error) {
+ console.log(`Failed to cache ${url}:`, error);
+ }
+ }
+
// Cache directory files
await cacheDirectoryFiles(cache, ['/images/', '/pages/']);
})