Granite-4.0-Nano-WebGPU / coi-serviceworker.js
hantech's picture
Create coi-serviceworker.js
dfee815 verified
/*! coi-serviceworker v0.1.7 - By Guido Zuidhof, licensed under MIT */
let coepCredentialless = false;
if (typeof window === 'undefined') {
self.addEventListener("install", () => self.skipWaiting());
self.addEventListener("activate", (event) => event.waitUntil(self.clients.claim()));
self.addEventListener("message", (ev) => {
if (!ev.data) return;
if (ev.data.type === "deregister") {
self.registration.unregister().then(() => self.clients.matchAll().then(clients => clients.forEach(client => client.navigate(client.url))));
}
});
self.addEventListener("fetch", function (event) {
const { request } = event;
if (request.cache === "only-if-cached" && request.mode !== "same-origin") return;
event.respondWith(
fetch(request).then((response) => {
if (response.status === 0) return response;
const newHeaders = new Headers(response.headers);
newHeaders.set("Cross-Origin-Embedder-Policy", coepCredentialless ? "credentialless" : "require-corp");
if (!coepCredentialless) newHeaders.set("Cross-Origin-Resource-Policy", "cross-origin");
newHeaders.set("Cross-Origin-Opener-Policy", "same-origin");
return new Response(response.body, { status: response.status, statusText: response.statusText, headers: newHeaders });
}).catch((e) => console.error(e))
);
});
} else {
(() => {
const re = window.location.reload.bind(window.location);
const n = navigator;
if (n.serviceWorker && n.serviceWorker.controller) {
n.serviceWorker.controller.postMessage({ type: "coep_credentialless", value: coepCredentialless });
} else {
n.serviceWorker && n.serviceWorker.register(window.document.currentScript.src).then((registration) => {
registration.addEventListener("updatefound", () => re());
if (registration.active && !n.serviceWorker.controller) re();
});
}
})();
}