// frontend/utils/preloadApi/index.js // 统一导出 preloadApi(命令式 API) import { loadConfig } from './config' import { setConfig, setUserIdGetter } from './core' import { get, run, refresh, abortRequest, invalidate, invalidatePrefix, invalidateAll, clearForUser, clearUser, prefetchFor, getStats, dumpMemory } from './core' import { warmStartup, warmIdle } from './scheduler' import { navigateTo, switchTab, reLaunch } from './navigate' /** * 初始化 preloadApi * @param {object} userConfig - preload.config.js 导出的配置 * @returns {object} preloadApi 实例 */ export function initPreloadApi(userConfig) { const { config, fetchers } = loadConfig(userConfig) setConfig(config, fetchers) return { // 核心 API get, run, refresh, abortRequest, invalidate, invalidatePrefix, invalidateAll, clearForUser, clearUser, prefetchFor, // 调度 warmStartup: () => warmStartup(config.startup), warmIdle: () => warmIdle(config.idle), // 路由 navigateTo, switchTab, reLaunch, // 调试 getStats, dumpMemory, // 配置引用 config } } // 默认单例(由 App.vue 初始化) let _instance = null export function getPreloadApi() { return _instance } export function setPreloadApi(api) { _instance = api } export { setUserIdGetter }