| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // 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;
- }
- export {
- registerSW
- };
|