{"version":3,"sources":["../src/index.ts","../src/core/define-offline-config.ts","../src/core/logger.ts","../src/core/constants.ts","../src/utils/dedupe.ts","../src/utils/normalize-config.ts","../src/utils/serialize-config.ts","../src/core/supports.ts","../src/core/register-service-worker.ts","../src/core/controller.ts","../src/core/offline-status.ts","../src/core/pwa-install.ts","../src/core/setup-offline.ts","../src/react/GoOfflineProvider.tsx","../src/react/context.ts","../src/react/useGoOffline.ts","../src/react/useOfflineStatus.ts","../src/react/usePWAInstall.ts"],"sourcesContent":["export type {\n  CacheStrategy,\n  GoOfflineConfig,\n  GoOfflineController,\n  GoOfflineContextValue,\n  OfflineCallbacks,\n  OfflineStatusSnapshot,\n  PWAIcon,\n  PWAInstallState,\n  PWAMetadata,\n  ResolvedGoOfflineConfig,\n  RuntimeCachingConfig\n} from \"./types\";\n\nexport { defineOfflineConfig } from \"./core/define-offline-config\";\nexport { registerServiceWorker } from \"./core/register-service-worker\";\nexport { setupOffline } from \"./core/setup-offline\";\n\nexport { GoOfflineProvider } from \"./react/GoOfflineProvider\";\nexport { useGoOffline } from \"./react/useGoOffline\";\nexport { useOfflineStatus } from \"./react/useOfflineStatus\";\nexport { usePWAInstall } from \"./react/usePWAInstall\";\n","import type { GoOfflineConfig } from \"../types\";\n\nexport function defineOfflineConfig(config: GoOfflineConfig): GoOfflineConfig {\n  return config;\n}\n","export interface Logger {\n  debug: (...args: unknown[]) => void;\n  info: (...args: unknown[]) => void;\n  warn: (...args: unknown[]) => void;\n  error: (...args: unknown[]) => void;\n}\n\nexport function createLogger(enabled: boolean): Logger {\n  const noop = () => undefined;\n\n  return {\n    debug: enabled ? (...args) => console.debug(\"[go-offline]\", ...args) : noop,\n    info: (...args) => console.info(\"[go-offline]\", ...args),\n    warn: (...args) => console.warn(\"[go-offline]\", ...args),\n    error: (...args) => console.error(\"[go-offline]\", ...args)\n  };\n}\n","import type { ResolvedGoOfflineConfig } from \"../types\";\n\nexport const DEFAULT_CONFIG: ResolvedGoOfflineConfig = {\n  enabled: true,\n  debug: false,\n  swPath: \"/sw.js\",\n  scope: \"/\",\n  version: \"v1\",\n  offlinePage: \"/offline.html\",\n  offlineImage: null,\n  precache: [\"/\", \"/offline.html\"],\n  pwa: false,\n  runtimeCaching: {\n    pages: \"network-first\",\n    images: \"cache-first\",\n    api: \"network-first\",\n    assets: \"stale-while-revalidate\"\n  },\n  callbacks: {}\n};\n\nexport const INSTALL_PROMPT_EVENT = \"beforeinstallprompt\";\n","export function dedupeStrings(values: string[]): string[] {\n  return Array.from(new Set(values.filter(Boolean)));\n}\n","import { DEFAULT_CONFIG } from \"../core/constants\";\nimport type { GoOfflineConfig, PWAMetadata, ResolvedGoOfflineConfig } from \"../types\";\nimport { dedupeStrings } from \"./dedupe\";\nimport { mergeDefined } from \"./merge-config\";\n\nfunction normalizePWA(pwa: GoOfflineConfig[\"pwa\"]): false | PWAMetadata {\n  if (!pwa) {\n    return false;\n  }\n\n  if (pwa === true) {\n    return {};\n  }\n\n  return pwa;\n}\n\nexport function normalizeConfig(config: GoOfflineConfig = {}): ResolvedGoOfflineConfig {\n  const runtimeCaching = {\r\n    ...DEFAULT_CONFIG.runtimeCaching,\r\n    ...(config.runtimeCaching ?? {})\r\n  };\n  const callbacks = {\r\n    ...DEFAULT_CONFIG.callbacks,\r\n    ...(config.callbacks ?? {})\r\n  };\n\n  return {\n    enabled: config.enabled ?? DEFAULT_CONFIG.enabled,\n    debug: config.debug ?? DEFAULT_CONFIG.debug,\n    swPath: config.swPath ?? DEFAULT_CONFIG.swPath,\n    scope: config.scope ?? DEFAULT_CONFIG.scope,\n    version: config.version ?? DEFAULT_CONFIG.version,\n    offlinePage: config.offlinePage ?? DEFAULT_CONFIG.offlinePage,\n    offlineImage: config.offlineImage ?? DEFAULT_CONFIG.offlineImage,\n    precache: dedupeStrings([\n      ...DEFAULT_CONFIG.precache,\n      ...(config.precache ?? []),\n      config.offlinePage ?? DEFAULT_CONFIG.offlinePage\n    ]),\n    pwa: normalizePWA(config.pwa),\n    runtimeCaching,\n    callbacks\n  };\n}\n\r\n","import type { ResolvedGoOfflineConfig, RuntimeMessagePayload } from \"../types\";\n\nexport function serializeRuntimeConfig(config: ResolvedGoOfflineConfig): RuntimeMessagePayload {\n  return {\n    type: \"GO_OFFLINE_CONFIG\",\n    config: {\n      version: config.version,\n      offlinePage: config.offlinePage,\n      offlineImage: config.offlineImage,\n      precache: config.precache,\n      runtimeCaching: config.runtimeCaching,\n      debug: config.debug\n    }\n  };\n}\n","export function isBrowser(): boolean {\n  return typeof window !== \"undefined\" && typeof document !== \"undefined\";\n}\n\nexport function supportsServiceWorkers(): boolean {\n  return isBrowser() && \"serviceWorker\" in navigator;\n}\n","import type { GoOfflineConfig, ResolvedGoOfflineConfig } from \"../types\";\nimport { createLogger } from \"./logger\";\nimport { normalizeConfig } from \"../utils/normalize-config\";\nimport { serializeRuntimeConfig } from \"../utils/serialize-config\";\nimport { supportsServiceWorkers } from \"./supports\";\n\nexport interface ServiceWorkerRegistrationResult {\n  registration: ServiceWorkerRegistration | null;\n  config: ResolvedGoOfflineConfig;\n}\n\nfunction postConfig(registration: ServiceWorkerRegistration, config: ResolvedGoOfflineConfig): void {\n  const payload = serializeRuntimeConfig(config);\n\n  registration.active?.postMessage(payload);\n  registration.waiting?.postMessage(payload);\n  registration.installing?.postMessage(payload);\n}\n\nexport async function registerServiceWorker(\n  configInput: GoOfflineConfig | ResolvedGoOfflineConfig = {}\n): Promise<ServiceWorkerRegistrationResult> {\n  const config = normalizeConfig(configInput as GoOfflineConfig);\n  const logger = createLogger(config.debug);\n\n  if (!config.enabled) {\n    logger.debug(\"Offline support disabled.\");\n    return { registration: null, config };\n  }\n\n  if (!supportsServiceWorkers()) {\n    logger.warn(\"Service workers are not supported in this browser.\");\n    return { registration: null, config };\n  }\n\n  try {\n    const registration = await navigator.serviceWorker.register(config.swPath, {\n      scope: config.scope\n    });\n\n    logger.debug(\"Service worker registered.\", registration);\n    config.callbacks.onReady?.(registration);\n\n    registration.addEventListener(\"updatefound\", () => {\n      const installingWorker = registration.installing;\n      if (!installingWorker) {\n        return;\n      }\n\n      installingWorker.addEventListener(\"statechange\", () => {\n        if (installingWorker.state === \"installed\") {\n          if (navigator.serviceWorker.controller) {\n            config.callbacks.onUpdateAvailable?.(registration);\n          } else {\n            config.callbacks.onInstalled?.(registration);\n          }\n        }\n      });\n    });\n\n    if (navigator.serviceWorker.controller) {\n      postConfig(registration, config);\n    } else {\n      navigator.serviceWorker.ready.then((readyRegistration) => postConfig(readyRegistration, config)).catch(() => {\n        logger.debug(\"Unable to post runtime config to service worker.\");\n      });\n    }\n\n    return { registration, config };\n  } catch (error) {\n    logger.error(\"Service worker registration failed.\", error);\n    config.callbacks.onError?.(error);\n    return { registration: null, config };\n  }\n}\n\r\n","import type { GoOfflineController } from \"../types\";\n\nexport function createController(\n  registration: ServiceWorkerRegistration | null,\n  cleanup: () => void\n): GoOfflineController {\n  return {\n    isOnline() {\n      return typeof navigator === \"undefined\" ? true : navigator.onLine;\n    },\n    getRegistration() {\n      return registration;\n    },\n    async update() {\n      await registration?.update();\n    },\n    async unregister() {\n      if (!registration) {\n        return false;\n      }\n\n      return registration.unregister();\n    },\n    destroy() {\n      cleanup();\n    }\n  };\n}\n","import type { OfflineStatusSnapshot } from \"../types\";\nimport { isBrowser } from \"./supports\";\n\nexport type OfflineStatusListener = (snapshot: OfflineStatusSnapshot) => void;\n\nfunction createSnapshot(): OfflineStatusSnapshot {\n  const isOnline = isBrowser() ? navigator.onLine : true;\n\n  return {\n    isOnline,\n    isOffline: !isOnline\n  };\n}\n\nexport function getOfflineSnapshot(): OfflineStatusSnapshot {\n  return createSnapshot();\n}\n\nexport function subscribeToOfflineStatus(listener: OfflineStatusListener): () => void {\n  if (!isBrowser()) {\n    return () => undefined;\n  }\n\n  const handleOnline = () => listener(createSnapshot());\n  const handleOffline = () => listener(createSnapshot());\n\n  window.addEventListener(\"online\", handleOnline);\n  window.addEventListener(\"offline\", handleOffline);\n\n  return () => {\n    window.removeEventListener(\"online\", handleOnline);\n    window.removeEventListener(\"offline\", handleOffline);\n  };\n}\n","import { INSTALL_PROMPT_EVENT } from \"./constants\";\nimport { isBrowser } from \"./supports\";\n\nexport interface BeforeInstallPromptEvent extends Event {\n  prompt(): Promise<void>;\n  userChoice: Promise<{ outcome: \"accepted\" | \"dismissed\"; platform: string }>;\n}\n\nlet deferredPrompt: BeforeInstallPromptEvent | null = null;\nconst listeners = new Set<(installable: boolean) => void>();\nlet isBound = false;\n\nfunction emit(installable: boolean): void {\n  for (const listener of listeners) {\n    listener(installable);\n  }\n}\n\nfunction bindInstallPrompt(): void {\n  if (!isBrowser() || isBound) {\n    return;\n  }\n\n  window.addEventListener(INSTALL_PROMPT_EVENT, (event) => {\n    event.preventDefault();\n    deferredPrompt = event as BeforeInstallPromptEvent;\n    emit(true);\n  });\n\n  window.addEventListener(\"appinstalled\", () => {\n    deferredPrompt = null;\n    emit(false);\n  });\n\n  isBound = true;\n}\n\nexport function initPWAInstallTracking(): void {\n  bindInstallPrompt();\n}\n\nexport function subscribeToInstallPrompt(listener: (installable: boolean) => void): () => void {\n  bindInstallPrompt();\n  listeners.add(listener);\n  listener(Boolean(deferredPrompt));\n\n  return () => {\n    listeners.delete(listener);\n  };\n}\n\nexport async function promptForInstall(): Promise<boolean> {\n  if (!deferredPrompt) {\n    return false;\n  }\n\n  await deferredPrompt.prompt();\n  const choice = await deferredPrompt.userChoice;\n  const accepted = choice.outcome === \"accepted\";\n\n  if (accepted) {\n    deferredPrompt = null;\n    emit(false);\n  }\n\n  return accepted;\n}\n","import type { GoOfflineConfig, GoOfflineController, OfflineStatusSnapshot } from \"../types\";\nimport { createController } from \"./controller\";\nimport { createLogger } from \"./logger\";\nimport { getOfflineSnapshot, subscribeToOfflineStatus } from \"./offline-status\";\nimport { initPWAInstallTracking } from \"./pwa-install\";\nimport { registerServiceWorker } from \"./register-service-worker\";\nimport { normalizeConfig } from \"../utils/normalize-config\";\n\nexport async function setupOffline(configInput: GoOfflineConfig = {}): Promise<GoOfflineController> {\n  const config = normalizeConfig(configInput);\n  const logger = createLogger(config.debug);\n\n  let currentSnapshot: OfflineStatusSnapshot = getOfflineSnapshot();\n\n  const unsubscribe = subscribeToOfflineStatus((snapshot) => {\n    const wasOnline = currentSnapshot.isOnline;\n    currentSnapshot = snapshot;\n\n    if (wasOnline !== snapshot.isOnline) {\n      if (snapshot.isOnline) {\n        config.callbacks.onOnline?.();\n      } else {\n        config.callbacks.onOffline?.();\n      }\n\n      logger.debug(\"Connectivity changed.\", snapshot);\n    }\n  });\n\n  if (config.pwa) {\n    initPWAInstallTracking();\n  }\n\n  const { registration } = await registerServiceWorker(config);\n\n  return createController(registration, unsubscribe);\n}\n","import {\n  type PropsWithChildren,\n  useEffect,\n  useRef,\n  useState\n} from \"react\";\nimport type { GoOfflineConfig, GoOfflineController } from \"../types\";\nimport { GoOfflineContext } from \"./context\";\nimport { getOfflineSnapshot, subscribeToOfflineStatus } from \"../core/offline-status\";\nimport { promptForInstall, subscribeToInstallPrompt } from \"../core/pwa-install\";\nimport { setupOffline } from \"../core/setup-offline\";\n\nexport interface GoOfflineProviderProps extends PropsWithChildren {\n  config?: GoOfflineConfig;\n}\n\nexport function GoOfflineProvider({ children, config }: GoOfflineProviderProps) {\n  const [isOnline, setIsOnline] = useState(getOfflineSnapshot().isOnline);\n  const [isInstallable, setIsInstallable] = useState(false);\n  const [controller, setController] = useState<GoOfflineController | null>(null);\n  const controllerRef = useRef<GoOfflineController | null>(null);\n  const configKey = JSON.stringify(config ?? {});\n\n  useEffect(() => {\n    let disposed = false;\n\n    setupOffline(config)\n      .then((nextController) => {\n        if (disposed) {\n          nextController.destroy();\n          return;\n        }\n\n        controllerRef.current = nextController;\n        setController(nextController);\n      })\n      .catch((error) => {\n        config?.callbacks?.onError?.(error);\n      });\n\n    return () => {\n      disposed = true;\n      controllerRef.current?.destroy();\n      controllerRef.current = null;\n    };\n  }, [config, configKey]);\n\n  useEffect(() => subscribeToOfflineStatus((snapshot) => setIsOnline(snapshot.isOnline)), []);\n  useEffect(() => subscribeToInstallPrompt(setIsInstallable), []);\n\n  const value = {\n    isOnline,\n    isOffline: !isOnline,\n    isInstallable,\n    controller,\n    promptInstall: promptForInstall,\n    update: () => controller?.update() ?? Promise.resolve()\n  };\n\n  return <GoOfflineContext.Provider value={value}>{children}</GoOfflineContext.Provider>;\n}\r\n","import { createContext } from \"react\";\nimport type { GoOfflineContextValue } from \"../types\";\n\nexport const GoOfflineContext = createContext<GoOfflineContextValue | null>(null);\n","import { useContext } from \"react\";\nimport { GoOfflineContext } from \"./context\";\n\nexport function useGoOffline() {\n  const value = useContext(GoOfflineContext);\n\n  if (!value) {\n    throw new Error(\"useGoOffline must be used inside GoOfflineProvider.\");\n  }\n\n  return value;\n}\n","import { useEffect, useState } from \"react\";\nimport { getOfflineSnapshot, subscribeToOfflineStatus } from \"../core/offline-status\";\n\nexport function useOfflineStatus() {\n  const [snapshot, setSnapshot] = useState(getOfflineSnapshot());\n\n  useEffect(() => subscribeToOfflineStatus(setSnapshot), []);\n\n  return snapshot;\n}\n","import { useEffect, useState } from \"react\";\nimport { promptForInstall, subscribeToInstallPrompt } from \"../core/pwa-install\";\n\nexport function usePWAInstall() {\n  const [isInstallable, setIsInstallable] = useState(false);\n\n  useEffect(() => subscribeToInstallPrompt(setIsInstallable), []);\n\n  return {\n    isInstallable,\n    promptInstall: promptForInstall\n  };\n}\n"],"mappings":"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","names":["import_react","import_react","import_react","import_react"]}