Urara-Blog/node_modules/.pnpm-store/v3/files/22/025263ce96d292096d8ff95e1ca16d888cf09f5d2d7b0ce6ad22b062311ebdef99f2f9f6c2e6b16d964ea9e6b0cf9d56c2cbf1c5a47468d57c2993608d6f2f
2022-08-14 01:14:53 +08:00

56 lines
1.7 KiB
Text

// 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
};