// src/client/build/register.ts import { Workbox, messageSW } from "workbox-window"; var autoUpdateMode = "__SW_AUTO_UPDATE__"; var selfDestroying = "__SW_SELF_DESTROYING__"; var auto = autoUpdateMode === "true"; var autoDestroy = selfDestroying === "true"; function registerSW(options = {}) { const { immediate = false, onNeedRefresh, onOfflineReady, onRegistered, onRegisterError } = options; let wb; let registration; const updateServiceWorker = async (reloadPage = true) => { if (!auto) { if (reloadPage) { wb == null ? void 0 : wb.addEventListener("controlling", (event) => { if (event.isUpdate) window.location.reload(); }); } if (registration && registration.waiting) { await messageSW(registration.waiting, { type: "SKIP_WAITING" }); } } }; if ("serviceWorker" in navigator) { wb = new Workbox("__SW__", { scope: "__SCOPE__", type: "__TYPE__" }); wb.addEventListener("activated", (event) => { if (event.isUpdate) auto && window.location.reload(); else if (!autoDestroy) onOfflineReady == null ? void 0 : onOfflineReady(); }); if (!auto) { const showSkipWaitingPrompt = () => { onNeedRefresh == null ? void 0 : onNeedRefresh(); }; wb.addEventListener("waiting", showSkipWaitingPrompt); wb.addEventListener("externalwaiting", showSkipWaitingPrompt); } wb.register({ immediate }).then((r) => { registration = r; onRegistered == null ? void 0 : onRegistered(r); }).catch((e) => { onRegisterError == null ? void 0 : onRegisterError(e); }); } return updateServiceWorker; } export { registerSW };