diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index c9e89555..990998b3 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -32,5 +32,6 @@ module.exports = {
tsx: 'never',
},
],
+ 'import/no-unresolved': ['error', { ignore: ['^virtual:'] }],
},
};
diff --git a/env.d.ts b/env.d.ts
index 18bdc8fe..23280061 100644
--- a/env.d.ts
+++ b/env.d.ts
@@ -1,5 +1,38 @@
///
///
+///
+
+declare module 'virtual:pwa-register/vue' {
+ // @ts-expect-error ignore when vue is not installed
+ import type { Ref } from 'vue';
+
+ export interface RegisterSWOptions {
+ immediate?: boolean;
+ onNeedRefresh?: () => void;
+ onOfflineReady?: () => void;
+ /**
+ * Called only if `onRegisteredSW` is not provided.
+ *
+ * @deprecated Use `onRegisteredSW` instead.
+ * @param registration The service worker registration if available.
+ */
+ onRegistered?: (registration: ServiceWorkerRegistration | undefined) => void;
+ /**
+ * Called once the service worker is registered (requires version `0.12.8+`).
+ *
+ * @param swScriptUrl The service worker script url.
+ * @param registration The service worker registration if available.
+ */
+ onRegisteredSW?: (swScriptUrl: string, registration: ServiceWorkerRegistration | undefined) => void;
+ onRegisterError?: (error: any) => void;
+ }
+
+ export function useRegisterSW(options?: RegisterSWOptions): {
+ needRefresh: Ref;
+ offlineReady: Ref;
+ updateServiceWorker: (reloadPage?: boolean) => Promise;
+ };
+}
interface ImportMetaEnv {
VITE_PLAUSIBLE_API_HOST: string;
diff --git a/src/App.vue b/src/App.vue
index 4c83a13f..10a6d0ce 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,10 +1,11 @@