| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- // src/client/build/vue.ts
- import { ref } from "vue";
- // src/client/build/register.ts
- 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,
- onRegisteredSW,
- onRegisterError
- } = options;
- let wb;
- let registration;
- let registerPromise;
- let sendSkipWaitingMessage;
- const updateServiceWorker = async (_reloadPage = true) => {
- await registerPromise;
- if (!auto) {
- await (sendSkipWaitingMessage == null ? void 0 : sendSkipWaitingMessage());
- }
- };
- async function register() {
- if ("serviceWorker" in navigator) {
- const { Workbox } = await import("workbox-window");
- wb = new Workbox("__SW__", { scope: "__SCOPE__", type: "__TYPE__" });
- sendSkipWaitingMessage = async () => {
- if (registration && registration.waiting) {
- await (wb == null ? void 0 : wb.messageSkipWaiting());
- }
- };
- wb.addEventListener("activated", (event) => {
- if (!event.isUpdate && event.isExternal)
- window.location.reload();
- else if (event.isUpdate)
- auto && window.location.reload();
- else if (!autoDestroy)
- onOfflineReady == null ? void 0 : onOfflineReady();
- });
- if (!auto) {
- const showSkipWaitingPrompt = () => {
- wb == null ? void 0 : wb.addEventListener("controlling", (event) => {
- if (event.isUpdate)
- window.location.reload();
- });
- onNeedRefresh == null ? void 0 : onNeedRefresh();
- };
- wb.addEventListener("waiting", showSkipWaitingPrompt);
- wb.addEventListener("externalwaiting", showSkipWaitingPrompt);
- }
- wb.register({ immediate }).then((r) => {
- registration = r;
- if (onRegisteredSW)
- onRegisteredSW("__SW__", r);
- else
- onRegistered == null ? void 0 : onRegistered(r);
- }).catch((e) => {
- onRegisterError == null ? void 0 : onRegisterError(e);
- });
- }
- }
- registerPromise = register();
- return updateServiceWorker;
- }
- // src/client/build/vue.ts
- function useRegisterSW(options = {}) {
- const {
- immediate = true,
- onNeedRefresh,
- onOfflineReady,
- onRegistered,
- onRegisteredSW,
- 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,
- onRegisteredSW,
- onRegisterError
- });
- return {
- updateServiceWorker,
- offlineReady,
- needRefresh
- };
- }
- export {
- useRegisterSW
- };
|