Urara-Blog/node_modules/.pnpm-store/v3/files/f9/b0aa9021694baf80c4472f9824aa8ef156af0c702a7cb831382e3d9b9c89431db833890dd0ded95742d0af6ffb1fe9b2124ca32abfbf4a3b3177e872da5186
2022-08-14 01:14:53 +08:00

90 lines
2.4 KiB
Text

// src/client/build/vue.ts
import { ref } from "vue";
// 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;
}
// src/client/build/vue.ts
function useRegisterSW(options = {}) {
const {
immediate = true,
onNeedRefresh,
onOfflineReady,
onRegistered,
onRegisterError
} = options;
const needRefresh = ref(false);
const offlineReady = ref(false);
const updateServiceWorker = registerSW({
immediate,
onNeedRefresh() {
needRefresh.value = true;
onNeedRefresh == null ? void 0 : onNeedRefresh();
},
onOfflineReady() {
offlineReady.value = true;
onOfflineReady == null ? void 0 : onOfflineReady();
},
onRegistered,
onRegisterError
});
return {
updateServiceWorker,
offlineReady,
needRefresh
};
}
export {
useRegisterSW
};