{"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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"}