urbi-exhibitions
Version:
50 lines (49 loc) • 1.84 kB
JavaScript
const t = (c) => `/${c}`;
function i(c) {
if (!("serviceWorker" in navigator)) {
console.warn("Service Worker не поддерживается данным браузером.");
return;
}
const { swPath: o = t("sw.js"), onRegistered: s, onError: r } = c || {}, l = () => new URL(window.location.href).searchParams.get("cache") === "clear", a = async () => caches.keys().then((e) => {
Promise.all(e.map((n) => caches.delete(n)));
}).then(() => {
console.log("Все кэши очищены.");
}).catch((e) => {
console.error("Ошибка при очистке кэша:", e);
});
window.addEventListener("load", () => {
l() ? navigator.serviceWorker.getRegistration().then((e) => {
e ? e.unregister().then((n) => {
console.log(
n ? "Service Worker успешно отозван." : "Не удалось отозвать Service Worker."
), a();
}) : (console.log("Нет зарегистрированного Service Worker."), a());
}).catch((e) => {
console.error(
"Ошибка при получении регистрации Service Worker:",
e
), r == null || r(e);
}) : navigator.serviceWorker.register(o).then((e) => {
e.update(), console.log(
"Service Worker зарегистрирован. Scope:",
e.scope
), s == null || s(e);
}).catch((e) => {
console.error("Не удалось зарегистрировать Service Worker:", e), r == null || r(e);
});
});
}
async function h() {
return caches.keys().then(
(c) => Promise.all(c.map((o) => caches.delete(o)))
).then(() => {
console.log("Все кэши очищены.");
}).catch((c) => {
console.error("Ошибка при очистке кэша:", c);
});
}
export {
h as c,
t as g,
i
};