{"version":3,"file":"sw-entry.mjs","names":["Serwist","isCurrentPageOutOfScope","SerwistNextOptions","MessageType","global","Window","serwist","self","globalThis","__SERWIST_SW_ENTRY","window","navigator","caches","scope","swEntryWorker","Worker","location","origin","sw","register","cacheOnNavigation","url","URL","onLine","postMessage","type","pushState","history","args","apply","replaceState","addEventListener","pathname","reloadOnOnline","reload"],"sources":["../src/sw-entry.ts"],"sourcesContent":["import { Serwist } from \"@serwist/window\";\nimport { isCurrentPageOutOfScope } from \"@serwist/window/internal\";\n\nimport type { SerwistNextOptions } from \"./internal-types.js\";\nimport type { MessageType } from \"./sw-entry-worker.js\";\n\ndeclare global {\n  interface Window {\n    serwist: Serwist;\n  }\n}\ndeclare const self: Window &\n  typeof globalThis & {\n    // Do not dereference this, use its attributes directly or assign them to other variables.\n    // You should do the latter if you use an attribute multiple times.\n    __SERWIST_SW_ENTRY: SerwistNextOptions;\n  };\n\nif (typeof window !== \"undefined\" && \"serviceWorker\" in navigator && typeof caches !== \"undefined\") {\n  const scope = self.__SERWIST_SW_ENTRY.scope;\n\n  let swEntryWorker: Worker | undefined;\n\n  if (self.__SERWIST_SW_ENTRY.swEntryWorker) {\n    swEntryWorker = new Worker(self.__SERWIST_SW_ENTRY.swEntryWorker);\n  }\n\n  window.serwist = new Serwist(window.location.origin + self.__SERWIST_SW_ENTRY.sw, { scope });\n\n  if (self.__SERWIST_SW_ENTRY.register && !isCurrentPageOutOfScope(scope)) {\n    window.serwist.register();\n  }\n\n  if (self.__SERWIST_SW_ENTRY.cacheOnNavigation) {\n    const cacheOnNavigation = async (url?: string | URL | null | undefined) => {\n      if (!window.navigator.onLine || !url) {\n        return;\n      }\n      swEntryWorker?.postMessage({\n        type: \"__FRONTEND_NAV_CACHE__\",\n        url,\n      } satisfies MessageType);\n    };\n\n    const pushState = history.pushState;\n    history.pushState = (...args) => {\n      pushState.apply(history, args);\n      cacheOnNavigation(args[2]);\n    };\n\n    const replaceState = history.replaceState;\n    history.replaceState = (...args) => {\n      replaceState.apply(history, args);\n      cacheOnNavigation(args[2]);\n    };\n\n    window.addEventListener(\"online\", () => {\n      cacheOnNavigation(window.location.pathname);\n    });\n  }\n\n  if (self.__SERWIST_SW_ENTRY.reloadOnOnline) {\n    window.addEventListener(\"online\", () => location.reload());\n  }\n}\n"],"mappings":";;;AAkBA,IAAI,OAAOU,WAAW,eAAe,mBAAmBC,aAAa,OAAOC,WAAW,aAAa;CAClG,MAAMC,QAAQN,KAAKE,mBAAmBI;CAEtC,IAAIC;AAEJ,KAAIP,KAAKE,mBAAmBK,cAC1BA,iBAAgB,IAAIC,OAAOR,KAAKE,mBAAmBK,cAAc;AAGnEJ,QAAOJ,UAAU,IAAIN,QAAQU,OAAOM,SAASC,SAASV,KAAKE,mBAAmBS,IAAI,EAAEL,OAAO,CAAC;AAE5F,KAAIN,KAAKE,mBAAmBU,YAAY,CAAClB,wBAAwBY,MAAM,CACrEH,QAAOJ,QAAQa,UAAU;AAG3B,KAAIZ,KAAKE,mBAAmBW,mBAAmB;EAC7C,MAAMA,oBAAoB,OAAOC,QAA0C;AACzE,OAAI,CAACX,OAAOC,UAAUY,UAAU,CAACF,IAC/B;AAEFP,kBAAeU,YAAY;IACzBC,MAAM;IACNJ;IACD,CAAuB;;EAG1B,MAAMK,YAAYC,QAAQD;AAC1BC,UAAQD,aAAa,GAAGE,SAAS;AAC/BF,aAAUG,MAAMF,SAASC,KAAK;AAC9BR,qBAAkBQ,KAAK,GAAG;;EAG5B,MAAME,eAAeH,QAAQG;AAC7BH,UAAQG,gBAAgB,GAAGF,SAAS;AAClCE,gBAAaD,MAAMF,SAASC,KAAK;AACjCR,qBAAkBQ,KAAK,GAAG;;AAG5BlB,SAAOqB,iBAAiB,gBAAgB;AACtCX,qBAAkBV,OAAOM,SAASgB,SAAS;IAC3C;;AAGJ,KAAIzB,KAAKE,mBAAmBwB,eAC1BvB,QAAOqB,iBAAiB,gBAAgBf,SAASkB,QAAQ,CAAC"}