Release Healer Man 0.1.14

This commit is contained in:
phenom committed 2026-09-05 11:40:50 -04:00
1 parent 67d7a8ebe7
commit 7b41b102fa
147 files changed
+169892 -1342

No files matched your search

+68
View File
@@ -0,0 +1,68 @@
const CONTENT_CACHE_NAME = "healer-man-content-v1";
const MANAGED_ASSET_PREFIXES = [
"/assets/characters/",
"/assets/creatures/",
"/assets/equipment/",
"/assets/game/",
"/assets/ui/",
];
const BUNDLED_ASSET_PREFIXES = [
"/assets/ui/",
"/assets/equipment/",
"/assets/characters/wow335a-v1/manifest.json",
"/assets/characters/wow335a-v1/human/",
"/assets/creatures/wailing-caverns/",
"/assets/game/dungeons/wailing-caverns/",
];
const BUNDLED_ASSET_PATHS = new Set([
"/assets/characters/wow335a-v1/textures/character/human/faciallowerhair00_00.webp",
"/assets/characters/wow335a-v1/textures/character/human/facialupperhair00_00.webp",
"/assets/characters/wow335a-v1/textures/character/human/female/humanfemalefacelower00_00.webp",
"/assets/characters/wow335a-v1/textures/character/human/female/humanfemalefaceupper00_00.webp",
"/assets/characters/wow335a-v1/textures/character/human/female/humanfemalenakedpelvisskin00_00.webp",
"/assets/characters/wow335a-v1/textures/character/human/female/humanfemalenakedtorsoskin00_00.webp",
"/assets/characters/wow335a-v1/textures/character/human/female/humanfemaleskin00_00.webp",
"/assets/characters/wow335a-v1/textures/character/human/hair00_00.webp",
"/assets/characters/wow335a-v1/textures/character/human/male/humanmalefacelower00_00.webp",
"/assets/characters/wow335a-v1/textures/character/human/male/humanmalefaceupper00_00.webp",
"/assets/characters/wow335a-v1/textures/character/human/male/humanmalenakedpelvisskin00_00.webp",
"/assets/characters/wow335a-v1/textures/character/human/male/humanmaleskin00_00.webp",
"/assets/characters/wow335a-v1/textures/character/human/scalplowerhair00_00.webp",
"/assets/characters/wow335a-v1/textures/character/human/scalpupperhair00_00.webp",
]);
self.addEventListener("install", (event) => {
event.waitUntil(self.skipWaiting());
});
self.addEventListener("activate", (event) => {
event.waitUntil((async () => {
const names = await caches.keys();
await Promise.all(names
.filter((name) => name.startsWith(`${CONTENT_CACHE_NAME}-staging-`))
.map((name) => caches.delete(name)));
await self.clients.claim();
})());
});
self.addEventListener("fetch", (event) => {
const { request } = event;
if (request.method !== "GET") return;
const url = new URL(request.url);
if (url.origin !== self.location.origin
|| !MANAGED_ASSET_PREFIXES.some((prefix) => url.pathname.startsWith(prefix))) return;
event.respondWith((async () => {
const cache = await caches.open(CONTENT_CACHE_NAME);
const cached = await cache.match(request, { ignoreSearch: true });
if (cached) return cached;
if (BUNDLED_ASSET_PATHS.has(url.pathname)
|| BUNDLED_ASSET_PREFIXES.some((prefix) => url.pathname.startsWith(prefix))) {
return fetch(request);
}
return new Response("Optional content is not installed.", {
status: 404,
headers: { "content-type": "text/plain; charset=utf-8" },
});
})());
});