if (typeof window !== "undefined") {
if (!window.crossOriginIsolated && "serviceWorker" in navigator) {
const swUrl = document.currentScript.src;
navigator.serviceWorker
.register(swUrl)
.then(() => {
if (navigator.serviceWorker.controller) return;
navigator.serviceWorker.addEventListener(
"controllerchange",
() => window.location.reload(),
{ once: true },
);
})
.catch((err) =>
console.error("coi-serviceworker: registration failed", err),
);
}
} else {
self.addEventListener("install", () => self.skipWaiting());
self.addEventListener("activate", (event) =>
event.waitUntil(self.clients.claim()),
);
self.addEventListener("fetch", (event) => {
const request = event.request;
if (request.cache === "only-if-cached" && request.mode !== "same-origin") {
return;
}
event.respondWith(
fetch(request).then((response) => {
if (response.status === 0) return response;
const headers = new Headers(response.headers);
headers.set("Cross-Origin-Embedder-Policy", "require-corp");
headers.set("Cross-Origin-Opener-Policy", "same-origin");
return new Response(response.body, {
status: response.status,
statusText: response.statusText,
headers,
});
}),
);
});
}