whale-plus
Version:
A Component Library for Vue 3
1 lines • 4.44 kB
Source Map (JSON)
{"version":3,"file":"cacheManager.mjs","sources":["../../../../../packages/request/request-cache/cacheManager.ts"],"sourcesContent":["import { useLocationStorageCache } from './imp/useLocalStorageCache';\nimport { useSessionStorageCache } from './imp/useSessionStorageCache';\nimport type { CacheItem } from './cacheItem';\nimport type { AsyncCacheStore } from './asyncCacheStore';\n\nexport class CacheManager {\n private store: AsyncCacheStore;\n\n constructor(store: AsyncCacheStore) {\n this.store = store;\n }\n\n static create(store: AsyncCacheStore): CacheManager {\n return new CacheManager(store);\n }\n\n async get<T>(key: string): Promise<T | undefined> {\n const item = await this.store.get<CacheItem<T>>(key);\n if (item?.noExpire) {\n return item.value;\n } else {\n if (item && item.expiration > Date.now()) {\n return item.value;\n } else {\n if (item) {\n await this.store.delete(key); // 删除过期的缓存项\n }\n return undefined;\n }\n }\n }\n\n async getNormal<T>(key: string): Promise<T | undefined> {\n const item = await this.store.get<CacheItem<T>>(key);\n return item?.value;\n }\n\n async set<T>(key: string, value: T, ttl?: number): Promise<void> {\n let expiration = 0;\n let noExpire = false;\n if (!ttl) {\n noExpire = true;\n } else {\n expiration = Date.now() + ttl;\n }\n\n await this.store.set(key, { value, expiration, noExpire });\n }\n\n async delete(key: string): Promise<void> {\n await this.store.delete(key);\n }\n\n async has(key: string): Promise<boolean> {\n return this.store.has(key);\n }\n}\n\nexport const requestCache = {\n memoryCache: {} as AsyncCacheStore,\n persistCache: {} as AsyncCacheStore,\n};\n\nexport function injectCache(\n memoryCache: AsyncCacheStore,\n persistCache: AsyncCacheStore\n) {\n requestCache.memoryCache = memoryCache;\n requestCache.persistCache = persistCache;\n}\n\nexport function useCache(isPersist: boolean) {\n if (!requestCache.memoryCache) {\n requestCache.memoryCache = useSessionStorageCache();\n }\n if (!requestCache.persistCache) {\n requestCache.persistCache = useLocationStorageCache();\n }\n return CacheManager.create(\n isPersist ? requestCache.persistCache : requestCache.memoryCache\n );\n}\n"],"names":[],"mappings":"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"}