Add Individual Calls for Resilience

This commit is contained in:
ingalls
2025-12-02 14:00:35 -07:00
parent efb836ae6c
commit 0fa6c06356
2 changed files with 22 additions and 7 deletions

View File

@@ -10,13 +10,14 @@ self.addEventListener('install', (event) => {
event.waitUntil((async () => {
const cache = await caches.open(CACHE_NAME);
const assets = new Set(['/']);
try {
const res = await fetch('./.vite/manifest.json');
if (res.ok) {
const manifest = await res.json();
const assets = new Set(['/']);
Object.values(manifest).forEach((entry) => {
if (entry.file && !entry.file.endsWith('.html')) {
assets.add(entry.file);
@@ -30,11 +31,25 @@ self.addEventListener('install', (event) => {
assets.add(cssFile);
}
});
await cache.addAll(Array.from(assets));
}
} catch (err) {
console.warn('Failed to pre-cache Vite chunks:', err);
console.warn('Failed to obtain Vite Manifest:', err);
}
const urls = Array.from(assets);
const results = await Promise.allSettled(
urls.map(url => cache.add(url))
);
onst failedUrls = results
.filter(result => result.status === 'rejected')
.map((result, index) => urls[index]);
if (failedUrls.length > 0) {
console.error('Failed to cache the following URLs:', failedUrls);
} else {
console.log('All resources cached successfully.');
}
})());
});

View File

@@ -168,7 +168,7 @@ export default class AtlasConnection {
if (this.version !== status.version) {
console.log(`Version change detected: ${this.version} -> ${status.version}`);
if (self.navigator.serviceWorker) {
if ('serviceWorker' in self.navigator) {
const registration = await self.navigator.serviceWorker.ready;
registration.update();
@@ -177,7 +177,7 @@ export default class AtlasConnection {
console.log('No Service Worker available');
}
} else {
if (self.navigator.serviceWorker) {
if ('serviceWorker' in self.navigator) {
const regs = await self.navigator.serviceWorker.getRegistrations()
if (!regs.some(reg => reg.active?.scriptURL.includes(`version=${status.version}`))) {