{"version":3,"sources":["../src/manifest.ts","../src/logger.ts","../src/provider.tsx","../src/runtime.ts","../src/texts.ts","../src/ui.tsx"],"sourcesContent":["import type { HotUpdaterCheckParams, HotUpdaterUpdateInfo, OtaManifest } from './types';\n\nexport interface ResolveUpdateDecision {\n  update: HotUpdaterUpdateInfo | null;\n  reason:\n    | 'manifest-missing'\n    | 'release-missing'\n    | 'platform-mismatch'\n    | 'channel-mismatch'\n    | 'app-version-mismatch'\n    | 'min-native-version-not-satisfied'\n    | 'release-disabled'\n    | 'bundle-already-installed'\n    | 'update-available';\n  details: Record<string, unknown>;\n}\n\nfunction normalizeVersion(version: string) {\n  return version\n    .split('.')\n    .map(part => Number.parseInt(part, 10) || 0)\n    .slice(0, 3);\n}\n\nexport function compareVersion(left: string, right: string) {\n  const leftParts = normalizeVersion(left);\n  const rightParts = normalizeVersion(right);\n\n  for (let index = 0; index < 3; index += 1) {\n    if (leftParts[index] > rightParts[index]) return 1;\n    if (leftParts[index] < rightParts[index]) return -1;\n  }\n\n  return 0;\n}\n\nexport function resolveUpdateDecisionFromManifest(\n  manifest: OtaManifest | null,\n  params: HotUpdaterCheckParams\n): ResolveUpdateDecision {\n  if (!manifest) {\n    return {\n      update: null,\n      reason: 'manifest-missing',\n      details: {\n        platform: params.platform,\n        channel: params.channel,\n        appVersion: params.appVersion,\n        bundleId: params.bundleId,\n        minBundleId: params.minBundleId,\n      },\n    };\n  }\n\n  const release = manifest.release;\n  if (!release) {\n    return {\n      update: null,\n      reason: 'release-missing',\n      details: {\n        manifestPlatform: manifest.platform,\n        manifestChannel: manifest.channel,\n        updatedAt: manifest.updatedAt,\n      },\n    };\n  }\n\n  if (release.disabled === true) {\n    return {\n      update: null,\n      reason: 'release-disabled',\n      details: {\n        bundleId: release.bundleId,\n        appVersion: release.appVersion,\n        platform: manifest.platform,\n        channel: manifest.channel,\n      },\n    };\n  }\n\n  if (manifest.platform !== params.platform) {\n    return {\n      update: null,\n      reason: 'platform-mismatch',\n      details: {\n        expectedPlatform: params.platform,\n        actualPlatform: manifest.platform,\n      },\n    };\n  }\n\n  if (manifest.channel !== params.channel) {\n    return {\n      update: null,\n      reason: 'channel-mismatch',\n      details: {\n        expectedChannel: params.channel,\n        actualChannel: manifest.channel,\n      },\n    };\n  }\n\n  if (release.appVersion !== params.appVersion) {\n    return {\n      update: null,\n      reason: 'app-version-mismatch',\n      details: {\n        expectedAppVersion: params.appVersion,\n        actualAppVersion: release.appVersion,\n      },\n    };\n  }\n\n  if (compareVersion(params.appVersion, release.minNativeVersion) < 0) {\n    return {\n      update: null,\n      reason: 'min-native-version-not-satisfied',\n      details: {\n        currentAppVersion: params.appVersion,\n        minNativeVersion: release.minNativeVersion,\n      },\n    };\n  }\n\n  if (release.bundleId === params.bundleId) {\n    return {\n      update: null,\n      reason: 'bundle-already-installed',\n      details: {\n        bundleId: params.bundleId,\n      },\n    };\n  }\n\n  return {\n    update: {\n      id: release.bundleId,\n      shouldForceUpdate: release.force === true,\n      status: 'UPDATE',\n      fileUrl: release.url,\n      fileHash: release.sha256 ?? null,\n      message: release.notes ?? null,\n    },\n    reason: 'update-available',\n    details: {\n      bundleId: release.bundleId,\n      force: release.force === true,\n      url: release.url,\n      appVersion: release.appVersion,\n      minNativeVersion: release.minNativeVersion,\n    },\n  };\n}\n\nexport function resolveUpdateFromManifest(\n  manifest: OtaManifest | null,\n  params: HotUpdaterCheckParams\n): HotUpdaterUpdateInfo | null {\n  return resolveUpdateDecisionFromManifest(manifest, params).update;\n}\n\nexport async function fetchJsonManifest(url: string, requestHeaders?: Record<string, string>) {\n  const response = await fetch(url, {\n    headers: {\n      Accept: 'application/json',\n      ...(requestHeaders ?? {}),\n    },\n  });\n\n  if (!response.ok) {\n    throw new Error(`Manifest 请求失败: ${response.status}`);\n  }\n\n  return (await response.json()) as OtaManifest;\n}\n","import { getGlobalLogger } from '@gaozh1024/rn-kit';\n\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\ninterface PendingLogEntry {\n  level: LogLevel;\n  message: string;\n  payload?: unknown;\n}\n\nconst pendingLogs: PendingLogEntry[] = [];\n\nfunction writeLog(entry: PendingLogEntry) {\n  const logger = getGlobalLogger();\n  if (!logger) return false;\n\n  logger[entry.level](entry.message, entry.payload, 'hot-updater');\n  return true;\n}\n\nexport function hotUpdaterLogger(level: LogLevel, message: string, payload?: unknown) {\n  const entry: PendingLogEntry = {\n    level,\n    message,\n    payload,\n  };\n\n  if (writeLog(entry)) return;\n\n  pendingLogs.push(entry);\n}\n\nexport function flushPendingHotUpdaterLogs() {\n  while (pendingLogs.length > 0) {\n    const entry = pendingLogs[0];\n    if (!writeLog(entry)) return;\n    pendingLogs.shift();\n  }\n}\n","import React, {\n  createContext,\n  useCallback,\n  useContext,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\nimport { Alert, AppState } from 'react-native';\nimport { HotUpdater } from '@hot-updater/react-native';\nimport { hotUpdaterLogger } from './logger';\nimport type {\n  CreateHotUpdaterContextOptions,\n  HotUpdaterClient,\n  HotUpdaterContextValue,\n  ManualPromptContext,\n  OtaManifest,\n  OptionalUpdatePromptContext,\n} from './types';\n\ninterface HotUpdaterProviderProps {\n  children: React.ReactNode;\n  optionalUpdatePromptHandler?: CreateHotUpdaterContextOptions['optionalUpdatePromptHandler'];\n  manualPromptHandler?: CreateHotUpdaterContextOptions['manualPromptHandler'];\n}\n\nexport function createHotUpdaterContext(\n  hotUpdater: HotUpdaterClient,\n  options: CreateHotUpdaterContextOptions = {}\n) {\n  const HotUpdaterContext = createContext<HotUpdaterContextValue | undefined>(undefined);\n\n  function HotUpdaterProvider({\n    children,\n    optionalUpdatePromptHandler,\n    manualPromptHandler,\n  }: HotUpdaterProviderProps) {\n    const summary = useMemo(() => hotUpdater.getSummary(), []);\n    const [manifest, setManifest] = useState<OtaManifest | null>(null);\n    const [isRefreshingManifest, setIsRefreshingManifest] = useState(false);\n    const [launchUpdateState, setLaunchUpdateState] = useState<\n      HotUpdaterContextValue['launchUpdateState']\n    >({\n      phase: 'idle',\n      message: null,\n      progress: 0,\n    });\n    const hasStartedLaunchUpdateRef = useRef(false);\n    const hasForceUpdateRef = useRef(false);\n    const hasPendingDownloadedUpdateRef = useRef(false);\n    const appStateRef = useRef(AppState.currentState);\n    const texts = hotUpdater.getTexts();\n\n    const markPendingDownloadedUpdate = useCallback((message?: string) => {\n      hasPendingDownloadedUpdateRef.current = true;\n      hotUpdaterLogger('info', '[HotUpdater] 用户选择稍后更新，下次打开应用时自动生效', {\n        message: message ?? null,\n      });\n    }, []);\n\n    const promptOptionalUpdate = useCallback(\n      async (message: string) => {\n        const promptContext: OptionalUpdatePromptContext = {\n          message,\n          titles: {\n            downloadedTitle: texts.downloadedReadyTitle,\n            restartNowText: texts.restartNowText,\n            restartLaterText: texts.restartLaterText,\n          },\n          actions: {\n            reload: () => hotUpdater.reload(),\n            markPending: () => markPendingDownloadedUpdate(message),\n          },\n        };\n\n        const promptHandler = optionalUpdatePromptHandler ?? options.optionalUpdatePromptHandler;\n        if (promptHandler) {\n          hotUpdaterLogger('debug', '[HotUpdater] 使用自定义可选更新提示框', {\n            message,\n          });\n          await promptHandler(promptContext);\n          return;\n        }\n\n        hotUpdaterLogger('debug', '[HotUpdater] 使用默认 Alert 可选更新提示框', {\n          message,\n        });\n        Alert.alert(promptContext.titles.downloadedTitle, promptContext.message, [\n          {\n            text: promptContext.titles.restartLaterText,\n            style: 'cancel',\n            onPress: () => promptContext.actions.markPending(),\n          },\n          {\n            text: promptContext.titles.restartNowText,\n            onPress: () => {\n              hotUpdaterLogger('info', '[HotUpdater] 用户选择立即更新，开始重启应用', {\n                message,\n              });\n              void promptContext.actions.reload();\n            },\n          },\n        ]);\n      },\n      [\n        hotUpdater,\n        markPendingDownloadedUpdate,\n        optionalUpdatePromptHandler,\n        options.optionalUpdatePromptHandler,\n        texts.downloadedReadyTitle,\n        texts.restartLaterText,\n        texts.restartNowText,\n      ]\n    );\n\n    const promptManualUpdate = useCallback(\n      async (context: ManualPromptContext) => {\n        const handler = manualPromptHandler ?? options.manualPromptHandler;\n        if (handler) {\n          hotUpdaterLogger('debug', '[HotUpdater] 使用自定义手动检查提示框', {\n            status: context.result.status,\n            message: context.result.message,\n          });\n          await handler(context);\n          return;\n        }\n\n        if (context.result.status !== 'downloaded' || !context.result.shouldReload) {\n          return;\n        }\n\n        await promptOptionalUpdate(context.result.message);\n      },\n      [manualPromptHandler, options.manualPromptHandler, promptOptionalUpdate]\n    );\n\n    const refreshManifest = useCallback(async () => {\n      setIsRefreshingManifest(true);\n      try {\n        const nextManifest = await hotUpdater.previewManifest();\n        setManifest(nextManifest);\n        return nextManifest;\n      } finally {\n        setIsRefreshingManifest(false);\n      }\n    }, []);\n\n    const checkForUpdates = useCallback(async () => {\n      const handler = manualPromptHandler ?? options.manualPromptHandler;\n      if (handler) {\n        await hotUpdater.checkManuallyAndPrompt({\n          promptHandler: promptManualUpdate,\n        });\n      } else {\n        await hotUpdater.checkManuallyAndPrompt();\n      }\n      await refreshManifest();\n    }, [manualPromptHandler, options.manualPromptHandler, promptManualUpdate, refreshManifest]);\n\n    const startLaunchUpdateCheck = useCallback(async () => {\n      if (hasStartedLaunchUpdateRef.current) return;\n      hasStartedLaunchUpdateRef.current = true;\n\n      const unsubscribe = HotUpdater.addListener(\n        'onProgress',\n        ({ progress }: { progress: number }) => {\n          setLaunchUpdateState(previous => ({\n            ...previous,\n            progress,\n          }));\n        }\n      );\n\n      try {\n        const result = await hotUpdater.prepareLaunch({\n          downloadOptionalUpdateInBackground: true,\n          onStateChange: state => {\n            setLaunchUpdateState(previous => ({\n              phase: state.phase,\n              message: state.message,\n              progress: state.phase === 'updating-force' ? previous.progress : 0,\n            }));\n\n            if (state.phase === 'updating-force') {\n              hasForceUpdateRef.current = true;\n            }\n          },\n          onOptionalUpdateReady: ({ message, shouldReload }) => {\n            if (!shouldReload) return;\n\n            hotUpdaterLogger('info', '[HotUpdater] 后台更新已下载完成，提示用户是否立即更新', {\n              message,\n              shouldReload,\n              appState: appStateRef.current,\n            });\n\n            if (appStateRef.current !== 'active') {\n              hotUpdaterLogger(\n                'info',\n                '[HotUpdater] 下载完成时应用不在前台，跳过提示框，下次打开自动生效',\n                {\n                  message,\n                  appState: appStateRef.current,\n                }\n              );\n              markPendingDownloadedUpdate(message);\n              return;\n            }\n\n            void promptOptionalUpdate(message);\n          },\n        });\n\n        if (result.status === 'reloading') {\n          return;\n        }\n\n        if (result.status === 'error') {\n          hasStartedLaunchUpdateRef.current = false;\n          return;\n        }\n\n        if (result.shouldPromptReload) {\n          hotUpdaterLogger('info', '[HotUpdater] 冷启动检测到已有已下载更新，立即应用更新', {\n            message: result.message,\n          });\n          await hotUpdater.reload();\n          return;\n        }\n\n        setLaunchUpdateState({\n          phase: 'ready',\n          message: null,\n          progress: 0,\n        });\n      } catch (error) {\n        hasStartedLaunchUpdateRef.current = false;\n        throw error;\n      } finally {\n        unsubscribe();\n      }\n    }, [markPendingDownloadedUpdate, promptOptionalUpdate]);\n\n    useEffect(() => {\n      if (!options.autoRefreshManifestOnMount) return;\n      void refreshManifest();\n    }, [refreshManifest]);\n\n    useEffect(() => {\n      const subscription = AppState.addEventListener('change', nextAppState => {\n        const previousAppState = appStateRef.current;\n        appStateRef.current = nextAppState;\n\n        if (\n          previousAppState.match(/inactive|background/) &&\n          nextAppState === 'active' &&\n          hasPendingDownloadedUpdateRef.current &&\n          !hasForceUpdateRef.current\n        ) {\n          hotUpdaterLogger('info', '[HotUpdater] 应用重新回到前台，自动应用已下载更新', {\n            previousAppState,\n            nextAppState,\n          });\n          hasPendingDownloadedUpdateRef.current = false;\n          void hotUpdater.reload();\n          return;\n        }\n\n        hotUpdaterLogger('debug', '[HotUpdater] 应用状态切换', {\n          previousAppState,\n          nextAppState,\n          hasPendingDownloadedUpdate: hasPendingDownloadedUpdateRef.current,\n          hasForceUpdate: hasForceUpdateRef.current,\n        });\n      });\n\n      return () => {\n        subscription.remove();\n      };\n    }, []);\n\n    const value = useMemo<HotUpdaterContextValue>(\n      () => ({\n        summary,\n        manifest,\n        isRefreshingManifest,\n        refreshManifest,\n        checkForUpdates,\n        startLaunchUpdateCheck,\n        launchUpdateState,\n        reload: () => hotUpdater.reload(),\n      }),\n      [\n        summary,\n        manifest,\n        isRefreshingManifest,\n        refreshManifest,\n        checkForUpdates,\n        startLaunchUpdateCheck,\n        launchUpdateState,\n      ]\n    );\n\n    return <HotUpdaterContext.Provider value={value}>{children}</HotUpdaterContext.Provider>;\n  }\n\n  function useHotUpdaterContext() {\n    const context = useContext(HotUpdaterContext);\n    if (!context) {\n      throw new Error('useHotUpdaterContext must be used within a HotUpdaterProvider');\n    }\n\n    return context;\n  }\n\n  return {\n    HotUpdaterProvider,\n    useHotUpdaterContext,\n  };\n}\n","import React from 'react';\nimport { Alert, Platform } from 'react-native';\nimport { HotUpdater } from '@hot-updater/react-native';\nimport { hotUpdaterLogger } from './logger';\nimport { fetchJsonManifest, resolveUpdateDecisionFromManifest } from './manifest';\nimport { resolveHotUpdaterTexts } from './texts';\nimport { DefaultHotUpdaterFallback } from './ui';\nimport type {\n  CreateHotUpdaterOptions,\n  CreateOssHotUpdaterOptions,\n  HotUpdaterManualResult,\n  HotUpdaterLaunchState,\n  ManualPromptContext,\n  ManualPromptOptions,\n  PrepareHotUpdaterLaunchOptions,\n  PrepareHotUpdaterLaunchResult,\n  HotUpdaterPlatform,\n  HotUpdaterSummary,\n  ManifestProviderContext,\n  WrapAppOptions,\n} from './types';\n\nfunction getPlatform(): HotUpdaterPlatform {\n  return Platform.OS === 'ios' ? 'ios' : 'android';\n}\n\nfunction resolveAppVersion(appVersion?: string) {\n  if (appVersion) return appVersion;\n\n  const detectedVersion = HotUpdater.getAppVersion();\n  if (detectedVersion) return detectedVersion;\n\n  throw new Error(\n    'Failed to resolve appVersion. Pass appVersion explicitly or ensure the native app version is available.'\n  );\n}\n\nfunction promptWithDefaultAlert(context: ManualPromptContext) {\n  const { result, titles, actions } = context;\n\n  if (result.status === 'up-to-date') {\n    Alert.alert(titles.upToDateTitle, titles.upToDateMessage ?? result.message);\n    return Promise.resolve();\n  }\n\n  if (result.status === 'error') {\n    Alert.alert(titles.errorTitle, result.message);\n    return Promise.resolve();\n  }\n\n  if (!result.shouldReload) {\n    Alert.alert(titles.downloadedTitle, result.message);\n    return Promise.resolve();\n  }\n\n  return new Promise<void>(resolve => {\n    Alert.alert(titles.downloadedTitle, result.message, [\n      {\n        text: titles.restartLaterText,\n        style: 'cancel',\n        onPress: () => resolve(),\n      },\n      {\n        text: titles.restartNowText,\n        onPress: () => {\n          void actions.reload().finally(resolve);\n        },\n      },\n    ]);\n  });\n}\n\nfunction notifyLaunchState(\n  callback: PrepareHotUpdaterLaunchOptions['onStateChange'],\n  state: HotUpdaterLaunchState\n) {\n  callback?.(state);\n}\n\nfunction hotUpdaterLog(\n  level: 'debug' | 'info' | 'warn' | 'error',\n  message: string,\n  payload?: unknown\n) {\n  hotUpdaterLogger(level, `[HotUpdater] ${message}`, payload);\n}\n\nfunction getDefaultChannelSafely(fallback: string) {\n  try {\n    return HotUpdater.getDefaultChannel();\n  } catch {\n    return fallback;\n  }\n}\n\nfunction isChannelSwitchedSafely() {\n  try {\n    return HotUpdater.isChannelSwitched();\n  } catch {\n    return false;\n  }\n}\n\nfunction getBundleDiagnostics(defaultChannel: string) {\n  return {\n    platform: getPlatform(),\n    appVersion: HotUpdater.getAppVersion(),\n    bundleId: HotUpdater.getBundleId(),\n    minBundleId: HotUpdater.getMinBundleId(),\n    currentChannel: (() => {\n      try {\n        return HotUpdater.getChannel();\n      } catch {\n        return defaultChannel;\n      }\n    })(),\n    defaultChannel: getDefaultChannelSafely(defaultChannel),\n    isChannelSwitched: isChannelSwitchedSafely(),\n  };\n}\n\nexport function createHotUpdater(options: CreateHotUpdaterOptions) {\n  const defaultChannel = options.defaultChannel ?? 'production';\n  const resolvedAppVersion = resolveAppVersion(options.appVersion);\n  const texts = resolveHotUpdaterTexts(options.texts);\n\n  const getCurrentChannel = () => {\n    if (options.getChannel) return options.getChannel();\n\n    try {\n      return HotUpdater.getChannel();\n    } catch {\n      return defaultChannel;\n    }\n  };\n\n  const getManifestContext = (): ManifestProviderContext => ({\n    platform: getPlatform(),\n    appVersion: resolvedAppVersion,\n    channel: getCurrentChannel(),\n    bundleId: '',\n    minBundleId: '',\n  });\n\n  const resolver = {\n    checkUpdate: async (params: ManifestProviderContext) => {\n      const manifest = await options.getManifest(params);\n      const decision = resolveUpdateDecisionFromManifest(manifest, params);\n\n      hotUpdaterLog(\n        decision.update ? 'info' : 'debug',\n        decision.update ? '更新判定结果：需要更新' : '更新判定结果：不需要更新',\n        {\n          reason: decision.reason,\n          details: decision.details,\n          manifestSummary: manifest\n            ? {\n                platform: manifest.platform,\n                channel: manifest.channel,\n                updatedAt: manifest.updatedAt,\n                bundleId: manifest.release?.bundleId ?? null,\n                appVersion: manifest.release?.appVersion ?? null,\n                minNativeVersion: manifest.release?.minNativeVersion ?? null,\n                force: manifest.release?.force ?? null,\n              }\n            : null,\n        }\n      );\n\n      return decision.update;\n    },\n  };\n\n  const getSummary = (): HotUpdaterSummary => {\n    const platform = getPlatform();\n    const channel = getCurrentChannel();\n\n    return {\n      appVersion: resolvedAppVersion,\n      channel,\n      platform,\n      manifestSource: options.describeManifestSource?.({ platform, channel }) ?? 'custom-manifest',\n    };\n  };\n\n  const getTexts = () => texts;\n\n  const checkManually = async (): Promise<HotUpdaterManualResult> => {\n    try {\n      hotUpdaterLog('info', '手动检查开始', {\n        ...getBundleDiagnostics(defaultChannel),\n        manifestSource:\n          options.describeManifestSource?.({\n            platform: getPlatform(),\n            channel: getCurrentChannel(),\n          }) ?? 'custom-manifest',\n      });\n\n      if (__DEV__) {\n        hotUpdaterLog('debug', '手动检查跳过，当前为开发环境');\n        return {\n          status: 'up-to-date',\n          message: texts.releaseOnlyMessage,\n        };\n      }\n\n      if (HotUpdater.isUpdateDownloaded()) {\n        hotUpdaterLog('info', '手动检查发现更新包已下载');\n        return {\n          status: 'downloaded',\n          shouldReload: true,\n          message: texts.downloadedMessage,\n        };\n      }\n\n      const updateInfo = await HotUpdater.checkForUpdate({\n        updateStrategy: 'appVersion',\n      });\n\n      hotUpdaterLog('info', '手动检查结果', {\n        hasUpdate: !!updateInfo,\n        shouldForceUpdate: updateInfo?.shouldForceUpdate ?? false,\n        id: updateInfo?.id ?? null,\n        message: updateInfo?.message ?? null,\n        ...getBundleDiagnostics(defaultChannel),\n      });\n\n      if (!updateInfo) {\n        hotUpdaterLog('debug', '手动检查结果为已是最新版本');\n        return {\n          status: 'up-to-date',\n          message: texts.upToDateMessage,\n        };\n      }\n\n      hotUpdaterLog('info', '手动检查开始下载更新包', {\n        id: updateInfo.id,\n        shouldForceUpdate: updateInfo.shouldForceUpdate,\n      });\n      const updated = await updateInfo.updateBundle();\n      hotUpdaterLog('info', '手动检查下载完成', {\n        id: updateInfo.id,\n        updated,\n      });\n      if (!updated) {\n        return {\n          status: 'error',\n          message: texts.updateDownloadFailedMessage,\n        };\n      }\n\n      if (updateInfo.shouldForceUpdate) {\n        hotUpdaterLog('warn', '手动检查触发强制重启', {\n          id: updateInfo.id,\n        });\n        await HotUpdater.reload();\n        return {\n          status: 'downloaded',\n          shouldReload: false,\n          message: texts.forceUpdateCompletedMessage,\n        };\n      }\n\n      return {\n        status: 'downloaded',\n        shouldReload: true,\n        message: updateInfo.message ?? texts.downloadedMessage,\n      };\n    } catch (error) {\n      hotUpdaterLog('error', '手动检查失败', error);\n      return {\n        status: 'error',\n        message: error instanceof Error ? error.message : texts.checkFailedMessage,\n      };\n    }\n  };\n\n  const checkManuallyAndPrompt = async (\n    promptOptions: ManualPromptOptions = {}\n  ): Promise<HotUpdaterManualResult> => {\n    const result = await checkManually();\n    const defaultDownloadedTitle =\n      result.status === 'downloaded' && result.shouldReload\n        ? texts.downloadedReadyTitle\n        : texts.downloadedCompletedTitle;\n    const promptContext: ManualPromptContext = {\n      result,\n      titles: {\n        upToDateTitle: promptOptions.upToDateTitle ?? texts.upToDateTitle,\n        upToDateMessage: promptOptions.upToDateMessage ?? texts.upToDateMessage,\n        errorTitle: promptOptions.errorTitle ?? texts.checkFailedTitle,\n        downloadedTitle: promptOptions.downloadedTitle ?? defaultDownloadedTitle,\n        restartNowText: promptOptions.restartNowText ?? texts.restartNowText,\n        restartLaterText: promptOptions.restartLaterText ?? texts.restartLaterText,\n      },\n      actions: {\n        reload: () => HotUpdater.reload(),\n      },\n    };\n\n    if (promptOptions.promptHandler) {\n      await promptOptions.promptHandler(promptContext);\n      return result;\n    }\n\n    await promptWithDefaultAlert(promptContext);\n\n    return result;\n  };\n\n  const prepareLaunch = async (\n    launchOptions: PrepareHotUpdaterLaunchOptions = {}\n  ): Promise<PrepareHotUpdaterLaunchResult> => {\n    try {\n      const currentChannel = getCurrentChannel();\n      const platform = getPlatform();\n      hotUpdaterLog('info', '启动检查开始', {\n        ...getBundleDiagnostics(defaultChannel),\n        manifestSource:\n          options.describeManifestSource?.({ platform, channel: currentChannel }) ??\n          'custom-manifest',\n        downloadOptionalUpdateInBackground:\n          launchOptions.downloadOptionalUpdateInBackground ?? true,\n      });\n      notifyLaunchState(launchOptions.onStateChange, {\n        phase: 'checking',\n        message: texts.launchPreparingMessage,\n      });\n\n      if (__DEV__) {\n        hotUpdaterLog('debug', '启动检查跳过，当前为开发环境');\n        notifyLaunchState(launchOptions.onStateChange, {\n          phase: 'ready',\n          message: null,\n        });\n        return {\n          status: 'ready',\n          message: texts.releaseOnlyMessage,\n        };\n      }\n\n      if (HotUpdater.isUpdateDownloaded()) {\n        hotUpdaterLog('info', '启动检查发现更新包已下载');\n        notifyLaunchState(launchOptions.onStateChange, {\n          phase: 'ready',\n          message: null,\n        });\n        return {\n          status: 'ready',\n          message: texts.downloadedMessage,\n          shouldPromptReload: true,\n        };\n      }\n\n      const updateInfo = await HotUpdater.checkForUpdate({\n        updateStrategy: 'appVersion',\n      });\n      hotUpdaterLog('info', '启动检查结果', {\n        hasUpdate: !!updateInfo,\n        shouldForceUpdate: updateInfo?.shouldForceUpdate ?? false,\n        id: updateInfo?.id ?? null,\n        message: updateInfo?.message ?? null,\n        ...getBundleDiagnostics(defaultChannel),\n      });\n\n      if (!updateInfo) {\n        hotUpdaterLog('debug', '启动检查结果为无更新');\n        notifyLaunchState(launchOptions.onStateChange, {\n          phase: 'ready',\n          message: null,\n        });\n        return {\n          status: 'ready',\n          message: null,\n          shouldPromptReload: false,\n        };\n      }\n\n      if (updateInfo.shouldForceUpdate) {\n        hotUpdaterLog('warn', '启动阶段开始强制更新', {\n          id: updateInfo.id,\n        });\n        notifyLaunchState(launchOptions.onStateChange, {\n          phase: 'updating-force',\n          message: updateInfo.message ?? texts.launchForceUpdatingMessage,\n        });\n\n        const updated = await updateInfo.updateBundle();\n        hotUpdaterLog('warn', '启动阶段强制更新完成', {\n          id: updateInfo.id,\n          updated,\n        });\n        if (!updated) {\n          const error = new Error(texts.launchForceUpdateFailedMessage);\n          launchOptions.onError?.(error);\n          notifyLaunchState(launchOptions.onStateChange, {\n            phase: 'error',\n            message: error.message,\n          });\n          return {\n            status: 'error',\n            message: error.message,\n          };\n        }\n\n        hotUpdaterLog('warn', '启动阶段强制更新后重启应用', {\n          id: updateInfo.id,\n        });\n        await HotUpdater.reload();\n        return {\n          status: 'reloading',\n          message: texts.launchForceUpdateCompletedMessage,\n        };\n      }\n\n      notifyLaunchState(launchOptions.onStateChange, {\n        phase: 'ready',\n        message: null,\n      });\n\n      if (launchOptions.downloadOptionalUpdateInBackground ?? true) {\n        hotUpdaterLog('info', '后台下载更新开始', {\n          id: updateInfo.id,\n        });\n        void updateInfo\n          .updateBundle()\n          .then((updated: boolean) => {\n            hotUpdaterLog('info', '后台下载更新完成', {\n              id: updateInfo.id,\n              updated,\n            });\n            if (!updated) {\n              throw new Error(texts.launchBackgroundUpdateFailedMessage);\n            }\n\n            launchOptions.onOptionalUpdateReady?.({\n              message: updateInfo.message ?? texts.launchOptionalUpdateReadyMessage,\n              shouldReload: true,\n            });\n          })\n          .catch((error: unknown) => {\n            const normalizedError =\n              error instanceof Error ? error : new Error(texts.launchBackgroundUpdateFailedMessage);\n            hotUpdaterLog('error', '后台下载更新失败', normalizedError);\n            launchOptions.onError?.(normalizedError);\n          });\n      }\n\n      hotUpdaterLog('debug', '启动检查完成，允许进入应用');\n      return {\n        status: 'ready',\n        message: updateInfo.message ?? null,\n        shouldPromptReload: false,\n      };\n    } catch (error) {\n      const normalizedError =\n        error instanceof Error ? error : new Error(texts.launchCheckFailedMessage);\n      hotUpdaterLog('error', '启动检查失败', normalizedError);\n      launchOptions.onError?.(normalizedError);\n      notifyLaunchState(launchOptions.onStateChange, {\n        phase: 'error',\n        message: normalizedError.message,\n      });\n      return {\n        status: 'error',\n        message: normalizedError.message,\n        shouldPromptReload: false,\n      };\n    }\n  };\n\n  const wrapApp = <P extends React.JSX.IntrinsicAttributes = object>(\n    WrappedComponent: React.ComponentType<P>,\n    wrapOptions: WrapAppOptions = {}\n  ) => {\n    const fallbackComponent =\n      wrapOptions.fallbackComponent ??\n      ((props: { status: string; progress: number; message: string | null }) =>\n        React.createElement(DefaultHotUpdaterFallback, {\n          ...props,\n          ui: {\n            ...wrapOptions.defaultUI,\n            texts,\n          },\n        }));\n\n    return HotUpdater.wrap({\n      resolver,\n      updateStrategy: 'appVersion',\n      updateMode: wrapOptions.updateMode ?? 'manual',\n      reloadOnForceUpdate: wrapOptions.reloadOnForceUpdate ?? true,\n      fallbackComponent,\n      onUpdateProcessCompleted: wrapOptions.onUpdateProcessCompleted,\n      onError: wrapOptions.onError,\n    })(WrappedComponent as React.ComponentType<object>) as React.ComponentType<P>;\n  };\n\n  const previewManifest = async () => {\n    try {\n      const context = getManifestContext();\n      hotUpdaterLog('debug', '预览 manifest 开始', {\n        ...context,\n        ...getBundleDiagnostics(defaultChannel),\n        manifestSource:\n          options.describeManifestSource?.({\n            platform: context.platform,\n            channel: context.channel,\n          }) ?? 'custom-manifest',\n      });\n      const manifest = await options.getManifest(context);\n      hotUpdaterLog('debug', '预览 manifest 成功', manifest);\n      return manifest;\n    } catch (error) {\n      hotUpdaterLog('error', '预览 manifest 失败', error);\n      return null;\n    }\n  };\n\n  return {\n    resolver,\n    getCurrentChannel,\n    getSummary,\n    getTexts,\n    checkManually,\n    checkManuallyAndPrompt,\n    prepareLaunch,\n    previewManifest,\n    reload: () => HotUpdater.reload(),\n    wrapApp,\n  };\n}\n\nexport function createOssHotUpdater(options: CreateOssHotUpdaterOptions) {\n  const baseURL = options.manifestBaseURL.replace(/\\/+$/, '');\n\n  return createHotUpdater({\n    appVersion: options.appVersion,\n    defaultChannel: options.defaultChannel,\n    getChannel: options.getChannel,\n    texts: options.texts,\n    getManifest: async ({ platform, channel, requestHeaders }) => {\n      const manifestUrl = `${baseURL}/${platform}/${channel}.json?t=${Date.now()}`;\n      return fetchJsonManifest(manifestUrl, {\n        ...(options.requestHeaders ?? {}),\n        ...(requestHeaders ?? {}),\n      });\n    },\n    describeManifestSource: ({ platform, channel }) => `${baseURL}/${platform}/${channel}.json`,\n  });\n}\n\nexport function withOssHotUpdater<P extends React.JSX.IntrinsicAttributes = object>(\n  WrappedComponent: React.ComponentType<P>,\n  options: CreateOssHotUpdaterOptions,\n  wrapOptions: WrapAppOptions = {}\n) {\n  return createOssHotUpdater(options).wrapApp(WrappedComponent, wrapOptions);\n}\n","import type { HotUpdaterTexts } from './types';\n\nexport const defaultHotUpdaterTexts: HotUpdaterTexts = {\n  checkingTitle: '正在检查更新',\n  updatingTitle: '正在下载更新',\n  preparingTitle: '正在准备应用',\n  forceUpdatingTitle: '正在应用关键更新',\n  upToDateTitle: '已是最新版本',\n  upToDateMessage: '当前已经是最新版本。',\n  checkFailedTitle: '检查更新失败',\n  checkFailedMessage: '检查更新失败，请稍后重试。',\n  downloadedReadyTitle: '更新已就绪',\n  downloadedCompletedTitle: '更新完成',\n  downloadedMessage: '更新包已下载完成，重启应用后即可生效。',\n  forceUpdateCompletedMessage: '强制更新已完成，应用正在重启。',\n  updateDownloadFailedMessage: '更新包下载失败，请稍后重试。',\n  releaseOnlyMessage: '热更新仅在 Release 包中生效，请使用发布包验证。',\n  restartNowText: '立即重启',\n  restartLaterText: '稍后重启',\n  launchPreparingMessage: '正在准备应用配置…',\n  launchForceUpdatingMessage: '检测到关键更新，正在完成更新…',\n  launchForceUpdateFailedMessage: '强制更新下载失败，请稍后重试。',\n  launchForceUpdateCompletedMessage: '强制更新已完成，应用正在重启。',\n  launchOptionalUpdateReadyMessage: '新版本已准备完成，重启应用后即可生效。',\n  launchBackgroundUpdateFailedMessage: '后台更新失败，请稍后重试。',\n  launchCheckFailedMessage: '启动时检查更新失败，请稍后重试。',\n};\n\nexport function resolveHotUpdaterTexts(overrides?: Partial<HotUpdaterTexts>): HotUpdaterTexts {\n  return {\n    ...defaultHotUpdaterTexts,\n    ...(overrides ?? {}),\n  };\n}\n","import React from 'react';\nimport { ActivityIndicator, Text, View } from 'react-native';\nimport { resolveHotUpdaterTexts } from './texts';\nimport type { DefaultHotUpdaterLaunchUIOptions, DefaultHotUpdaterUIOptions } from './types';\n\nfunction BaseFallbackLayout({\n  children,\n  backgroundColor,\n}: {\n  children: React.ReactNode;\n  backgroundColor: string;\n}) {\n  return (\n    <View\n      style={{\n        flex: 1,\n        justifyContent: 'center',\n        alignItems: 'center',\n        paddingHorizontal: 32,\n        backgroundColor,\n      }}\n    >\n      {children}\n    </View>\n  );\n}\n\nexport function DefaultHotUpdaterFallback({\n  progress,\n  status,\n  message,\n  ui,\n}: {\n  progress: number;\n  status: string;\n  message?: string | null;\n  ui?: DefaultHotUpdaterUIOptions;\n}) {\n  const texts = resolveHotUpdaterTexts(ui?.texts);\n  const percentage = Math.round(progress * 100);\n  const title =\n    status === 'UPDATING'\n      ? (ui?.updatingTitle ?? texts.updatingTitle)\n      : (ui?.checkingTitle ?? texts.checkingTitle);\n\n  return (\n    <BaseFallbackLayout backgroundColor={ui?.backgroundColor ?? '#0f172a'}>\n      <ActivityIndicator size=\"large\" color={ui?.spinnerColor ?? '#ffffff'} />\n      <Text\n        style={{\n          marginTop: 20,\n          fontSize: 18,\n          fontWeight: '600',\n          color: ui?.titleColor ?? '#ffffff',\n        }}\n      >\n        {title}\n      </Text>\n      {!!message && (\n        <Text\n          style={{\n            marginTop: 10,\n            fontSize: 14,\n            lineHeight: 20,\n            textAlign: 'center',\n            color: ui?.messageColor ?? '#cbd5e1',\n          }}\n        >\n          {message}\n        </Text>\n      )}\n      {progress > 0 ? (\n        <Text\n          style={{\n            marginTop: 10,\n            fontSize: 14,\n            color: ui?.progressColor ?? '#93c5fd',\n          }}\n        >\n          {percentage}%\n        </Text>\n      ) : null}\n    </BaseFallbackLayout>\n  );\n}\n\nexport function DefaultHotUpdaterLaunchFallback({\n  status,\n  message,\n  progress,\n  ui,\n}: {\n  status: 'CHECKING' | 'UPDATING';\n  message?: string | null;\n  progress?: number;\n  ui?: DefaultHotUpdaterLaunchUIOptions;\n}) {\n  const texts = resolveHotUpdaterTexts(ui?.texts);\n  const title =\n    status === 'UPDATING'\n      ? (ui?.forceUpdatingTitle ?? texts.forceUpdatingTitle)\n      : (ui?.preparingTitle ?? texts.preparingTitle);\n\n  return (\n    <BaseFallbackLayout backgroundColor={ui?.backgroundColor ?? '#0f172a'}>\n      <ActivityIndicator size=\"large\" color={ui?.spinnerColor ?? '#ffffff'} />\n      <Text\n        style={{\n          marginTop: 20,\n          fontSize: 18,\n          fontWeight: '600',\n          color: ui?.titleColor ?? '#ffffff',\n        }}\n      >\n        {title}\n      </Text>\n      {!!message && (\n        <Text\n          style={{\n            marginTop: 10,\n            fontSize: 14,\n            lineHeight: 20,\n            textAlign: 'center',\n            color: ui?.messageColor ?? '#cbd5e1',\n          }}\n        >\n          {message}\n        </Text>\n      )}\n      {typeof progress === 'number' && progress > 0 ? (\n        <Text\n          style={{\n            marginTop: 10,\n            fontSize: 14,\n            color: ui?.messageColor ?? '#cbd5e1',\n          }}\n        >\n          {Math.round(progress * 100)}%\n        </Text>\n      ) : null}\n    </BaseFallbackLayout>\n  );\n}\n"],"mappings":"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","names":["React","Alert","HotUpdater","jsx","HotUpdater","Alert","React"]}