75 lines
1.3 KiB
JavaScript
75 lines
1.3 KiB
JavaScript
// 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 }
|