Skip to content

Commit 2a262d4

Browse files
deploy: 006ba60
1 parent 3c6e75f commit 2a262d4

File tree

11 files changed

+1245
-0
lines changed

11 files changed

+1245
-0
lines changed

pr-326/android-chrome-192x192.png

64.3 KB
Loading

pr-326/android-chrome-512x512.png

431 KB
Loading

pr-326/apple-touch-icon.png

57.9 KB
Loading

pr-326/assets/index-p5NheC2Z.js

Lines changed: 302 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pr-326/favicon-16x16.png

738 Bytes
Loading

pr-326/favicon-32x32.png

2.18 KB
Loading

pr-326/favicon.ico

15 KB
Binary file not shown.

pr-326/index.html

Lines changed: 867 additions & 0 deletions
Large diffs are not rendered by default.

pr-326/preview.png

829 KB
Loading

pr-326/service-worker.js

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
const CACHE_NAME = 'game-cache-v1';
2+
3+
self.addEventListener('install', (event) => {
4+
event.waitUntil(
5+
caches.open(CACHE_NAME).then((cache) => {
6+
return fetch('asset-manifest.json')
7+
.then((response) => (response.ok ? response.json() : { files: [] }))
8+
.then((manifest) => {
9+
// Fallback: cache index.html and root if manifest missing
10+
const files = manifest.files || ['/', '/index.html'];
11+
return cache.addAll(files);
12+
})
13+
.catch(() => cache.addAll(['/', '/index.html']));
14+
})
15+
);
16+
self.skipWaiting();
17+
});
18+
19+
self.addEventListener('activate', (event) => {
20+
event.waitUntil(
21+
caches
22+
.keys()
23+
.then((keys) =>
24+
Promise.all(
25+
keys
26+
.filter((key) => key !== CACHE_NAME)
27+
.map((key) => caches.delete(key))
28+
)
29+
)
30+
);
31+
self.clients.claim();
32+
});
33+
34+
self.addEventListener('fetch', (event) => {
35+
if (event.request.method !== 'GET') return;
36+
const _url = new URL(event.request.url);
37+
// Handle navigation requests (SPA fallback)
38+
if (event.request.mode === 'navigate') {
39+
event.respondWith(
40+
fetch(event.request).catch(() => caches.match('/index.html'))
41+
);
42+
return;
43+
}
44+
// Cache-first for static assets
45+
event.respondWith(
46+
caches.match(event.request).then((response) => {
47+
return (
48+
response ||
49+
fetch(event.request).then((fetchRes) => {
50+
// Optionally cache new requests here if desired
51+
return fetchRes;
52+
})
53+
);
54+
})
55+
);
56+
});

0 commit comments

Comments
 (0)