vue-admin-core
Version:
A Component Library for Vue 3
1 lines • 7.18 kB
Source Map (JSON)
{"version":3,"file":"useCachePlugin.mjs","sources":["../../../../../../../package/hooks/useRequest/src/plugins/useCachePlugin.ts"],"sourcesContent":["import type { Plugin } from \"../types\";\nimport { setCache, getCache } from \"../../__utils__/cache\";\nimport type { CachedData } from \"../../__utils__/cache\";\nimport { setCachePromise, getCachePromise } from \"../../__utils__/cachePromise\";\nimport { trigger, subscribe } from \"../../__utils__/cacheSubscribe\";\nimport { onUnmounted, toValue } from \"vue\";\n\nconst useCachePlugin: Plugin<any, any[]> = (\n fetchInstance,\n {\n cacheKey,\n cacheTime = 5 * 60 * 1000,\n staleTime = 0,\n setCache: customSetCache,\n getCache: customGetCache\n }\n) => {\n let unSubscribe: () => void;\n\n let currentPromise: Promise<any>;\n\n const _setCache = (key: string, cachedData: CachedData) => {\n if (customSetCache) {\n customSetCache(cachedData);\n } else {\n setCache(key, cacheTime, cachedData);\n }\n trigger(key, cachedData.data);\n };\n\n const _getCache = (key: string, params: any[] = []) => {\n if (customGetCache) {\n return customGetCache(params);\n }\n return getCache(key);\n };\n\n if (!cacheKey) {\n return {};\n }\n\n // get data from cache when init\n const cacheData = _getCache(cacheKey);\n if (cacheData && Object.hasOwnProperty.call(cacheData, \"data\")) {\n fetchInstance.data.value = toValue(cacheData.data);\n fetchInstance.params.value = toValue(cacheData.params);\n if (staleTime === -1 || new Date().getTime() - cacheData.time <= staleTime) {\n fetchInstance.loading.value = false;\n }\n }\n\n // subscribe same cachekey update, trigger update\n unSubscribe = subscribe(cacheKey, (data) => {\n fetchInstance.data.value = data;\n });\n\n onUnmounted(() => {\n unSubscribe?.();\n });\n\n return {\n onBefore: (params) => {\n const cacheData = _getCache(cacheKey, params);\n\n if (!cacheData || !Object.hasOwnProperty.call(cacheData, \"data\")) {\n return {};\n }\n\n // If the data is fresh, stop request\n if (staleTime === -1 || new Date().getTime() - cacheData.time <= staleTime) {\n return {\n loading: false,\n data: cacheData?.data,\n error: undefined,\n returnNow: true\n };\n } else {\n // If the data is stale, return data, and request continue\n return {\n data: cacheData?.data,\n error: undefined\n };\n }\n },\n onRequest: (service, args) => {\n let servicePromise = getCachePromise(cacheKey);\n\n // If has servicePromise, and is not trigger by self, then use it\n if (servicePromise && servicePromise !== currentPromise) {\n return { servicePromise };\n }\n\n servicePromise = service(...args);\n currentPromise = servicePromise;\n setCachePromise(cacheKey, servicePromise);\n return { servicePromise };\n },\n onSuccess: (data, params) => {\n if (cacheKey) {\n // cancel subscribe, avoid trgger self\n unSubscribe?.();\n _setCache(cacheKey, {\n data,\n params,\n time: new Date().getTime()\n });\n // resubscribe\n unSubscribe = subscribe(cacheKey, (d) => {\n fetchInstance.data.value = d;\n });\n }\n },\n onMutate: (data) => {\n if (cacheKey) {\n // cancel subscribe, avoid trigger self\n unSubscribe?.();\n _setCache(cacheKey, {\n data,\n params: fetchInstance.params,\n time: new Date().getTime()\n });\n // resubscribe\n unSubscribe = subscribe(cacheKey, (d) => {\n fetchInstance.data.value = d;\n });\n }\n }\n };\n};\n\nexport default useCachePlugin;\n"],"names":["cacheData"],"mappings":"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"}