mirror of
https://github.com/iptv-org/iptv-org.github.io.git
synced 2025-05-12 01:50:05 -04:00
64 lines
2.2 KiB
JavaScript
64 lines
2.2 KiB
JavaScript
const build = [
|
|
"/_app/start-f0f93327.js",
|
|
"/_app/pages/__layout.svelte-3c12cae0.js",
|
|
"/_app/assets/pages/__layout.svelte-472c5a6c.css",
|
|
"/_app/error.svelte-7e306514.js",
|
|
"/_app/pages/index.svelte-88360dd0.js",
|
|
"/_app/assets/pages/index.svelte-fade4f59.css",
|
|
"/_app/chunks/vendor-585ed223.js",
|
|
"/_app/assets/vendor-c8b32335.css",
|
|
"/_app/chunks/store-2c58625c.js"
|
|
];
|
|
const files = [
|
|
"/.nojekyll",
|
|
"/favicon.png",
|
|
"/logo_512.png",
|
|
"/manifest.json"
|
|
];
|
|
const version = "1650113468328";
|
|
const ASSETS = `cache_${version}`;
|
|
const to_cache = build.concat(files);
|
|
const staticAssets = new Set(to_cache);
|
|
console.log(ASSETS, staticAssets);
|
|
self.addEventListener("install", (event) => {
|
|
event.waitUntil(caches.open(ASSETS).then((cache) => cache.addAll(to_cache)).then(() => {
|
|
self.skipWaiting();
|
|
}).catch(console.error));
|
|
});
|
|
self.addEventListener("activate", (event) => {
|
|
event.waitUntil(caches.keys().then(async (keys) => {
|
|
for (const key of keys) {
|
|
if (key !== ASSETS)
|
|
await caches.delete(key);
|
|
}
|
|
self.clients.claim();
|
|
}).catch(console.error));
|
|
});
|
|
async function fetchAndCache(request) {
|
|
const cache = await caches.open(`offline_${version}`);
|
|
try {
|
|
const response = await fetch(request);
|
|
cache.put(request, response.clone());
|
|
return response;
|
|
} catch (err) {
|
|
const response = await cache.match(request);
|
|
if (response)
|
|
return response;
|
|
throw err;
|
|
}
|
|
}
|
|
self.addEventListener("fetch", (event) => {
|
|
if (event.request.method !== "GET" || event.request.headers.has("range"))
|
|
return;
|
|
const url = new URL(event.request.url);
|
|
const isHttp = url.protocol.startsWith("http");
|
|
const isDevServerRequest = url.hostname === self.location.hostname && url.port !== self.location.port;
|
|
const isStaticAsset = url.host === self.location.host && staticAssets.has(url.pathname);
|
|
const skipBecauseUncached = event.request.cache === "only-if-cached" && !isStaticAsset;
|
|
if (isHttp && !isDevServerRequest && !skipBecauseUncached) {
|
|
event.respondWith((async () => {
|
|
const cachedAsset = isStaticAsset && await caches.match(event.request);
|
|
return cachedAsset || fetchAndCache(event.request);
|
|
})());
|
|
}
|
|
});
|