{"version":3,"file":"index.cjs","sources":["../src/header/headers.ts","../src/header/interpreter.ts","../src/util/cache-predicate.ts","../src/interceptors/util.ts","../src/interceptors/request.ts","../src/util/update-cache.ts","../src/interceptors/response.ts","../src/storage/build.ts","../src/storage/memory.ts","../src/util/key-generator.ts","../src/cache/create.ts","../src/storage/web-api.ts","../src/index.ts"],"sourcesContent":["export const Header = {\n  /**\n   * ```txt\n   * If-Modified-Since: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT\n   * ```\n   *\n   * @link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Modified-Since\n   */\n  IfModifiedSince: 'if-modified-since',\n\n  /**\n   * ```txt\n   * Last-Modified: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT\n   * ```\n   *\n   * @link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Last-Modified\n   */\n  LastModified: 'last-modified',\n\n  /**\n   * ```txt\n   * If-None-Match: \"<etag_value>\"\n   * If-None-Match: \"<etag_value>\", \"<etag_value>\", …\n   * If-None-Match: *\n   * ```\n   *\n   * @link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match\n   */\n  IfNoneMatch: 'if-none-match',\n\n  /**\n   * ```txt\n   * Cache-Control: max-age=604800\n   * ```\n   *\n   * @link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control\n   */\n  CacheControl: 'cache-control',\n\n  /**\n   * ```txt\n   * Pragma: no - cache;\n   * ```\n   *\n   * @link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Pragma\n   */\n  Pragma: 'pragma',\n\n  /**\n   * ```txt\n   * ETag: W / '<etag_value>';\n   * ETag: '<etag_value>';\n   * ```\n   *\n   * @link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag\n   */\n  ETag: 'etag',\n\n  /**\n   * ```txt\n   * Expires: <http-date>\n   * ```\n   *\n   * @link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Expires\n   */\n  Expires: 'expires',\n\n  /**\n   * ```txt\n   * Age: <delta-seconds>\n   * ```\n   *\n   * @link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Age\n   */\n  Age: 'age',\n\n  /**\n   * Used internally as metadata to mark the cache item as revalidatable and enabling\n   * stale cache state Contains a string of ASCII characters that can be used as ETag for\n   * `If-Match` header Provided by user using `cache.etag` value.\n   *\n   * ```txt\n   * X-Axios-Cache-Etag: \"<etag_value>\"\n   * ```\n   */\n  XAxiosCacheEtag: 'x-axios-cache-etag',\n\n  /**\n   * Used internally as metadata to mark the cache item as revalidatable and enabling\n   * stale cache state may contain `'use-cache-timestamp'` if `cache.modifiedSince` is\n   * `true`, otherwise will contain a date from `cache.modifiedSince`. If a date is\n   * provided, it can be used for `If-Modified-Since` header, otherwise the cache\n   * timestamp can be used for `If-Modified-Since` header.\n   *\n   * ```txt\n   * X-Axios-Cache-Last-Modified: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT\n   * X-Axios-Cache-Last-Modified: use-cache-timestamp\n   * ```\n   */\n  XAxiosCacheLastModified: 'x-axios-cache-last-modified',\n\n  /**\n   * Used internally as metadata to mark the cache item able to be used if the server\n   * returns an error. The stale-if-error response directive indicates that the cache can\n   * reuse a stale response when any error occurs.\n   *\n   * ```txt\n   * XAxiosCacheStaleIfError: <seconds>\n   * ```\n   */\n  XAxiosCacheStaleIfError: 'x-axios-cache-stale-if-error'\n} as const;\n","import { parse } from 'cache-parser';\nimport { Header } from './headers.js';\nimport type { HeaderInterpreter } from './types.js';\n\nexport const defaultHeaderInterpreter: HeaderInterpreter = (headers, location) => {\n  if (!headers) return 'not enough headers';\n\n  const cacheControl: unknown = headers[Header.CacheControl];\n\n  if (cacheControl) {\n    const cc = parse(String(cacheControl));\n\n    if (\n      // Header told that this response should not be cached.\n      cc.noCache ||\n      cc.noStore ||\n      // Server side handling private data\n      (location === 'server' && cc.private)\n    ) {\n      return 'dont cache';\n    }\n\n    if (cc.immutable) {\n      // 1 year is sufficient, as Infinity may cause problems with certain storages.\n      // It might not be the best way, but a year is better than none. Facebook shows\n      // that a browser session stays at the most 1 month.\n      return {\n        cache: 1000 * 60 * 60 * 24 * 365\n      };\n    }\n\n    if (cc.maxAge !== undefined) {\n      const age: unknown = headers[Header.Age];\n\n      return {\n        cache: age\n          ? // If age is present, we must subtract it from maxAge\n            (cc.maxAge - Number(age)) * 1000\n          : cc.maxAge * 1000,\n        // Already out of date, must be requested again\n        stale:\n          // I couldn't find any documentation about who should be used, as they\n          // are not meant to overlap each other. But, as we cannot request in the\n          // background, as the stale-while-revalidate says, and we just increase\n          // its staleTtl when its present, max-stale is being preferred over\n          // stale-while-revalidate.\n          cc.maxStale !== undefined\n            ? cc.maxStale * 1000\n            : cc.staleWhileRevalidate !== undefined\n              ? cc.staleWhileRevalidate * 1000\n              : undefined\n      };\n    }\n  }\n\n  const expires: unknown = headers[Header.Expires];\n\n  if (expires) {\n    const milliseconds = Date.parse(String(expires)) - Date.now();\n    return milliseconds >= 0 ? { cache: milliseconds } : 'dont cache';\n  }\n\n  return 'not enough headers';\n};\n","import type { CacheAxiosResponse } from '../cache/axios.js';\n\nimport type { CachePredicate, CachePredicateObject } from './types.js';\n\n/** Tests an response against a {@link CachePredicateObject}. */\nexport async function testCachePredicate<R = unknown, D = unknown>(\n  response: CacheAxiosResponse<R, D>,\n  predicate: CachePredicate<R, D>\n): Promise<boolean> {\n  if (typeof predicate === 'function') {\n    return predicate(response);\n  }\n\n  const { statusCheck, responseMatch, containsHeaders } = predicate;\n\n  if (\n    (statusCheck && !(await statusCheck(response.status))) ||\n    (responseMatch && !(await responseMatch(response)))\n  ) {\n    return false;\n  }\n\n  if (containsHeaders) {\n    for (const [header, predicate] of Object.entries(containsHeaders)) {\n      if (\n        !(await predicate(\n          // Avoid bugs in case the header is not in lower case\n          response.headers[header.toLowerCase()] ?? response.headers[header]\n        ))\n      ) {\n        return false;\n      }\n    }\n  }\n\n  return true;\n}\n\n/**\n * Determines whether a given URL matches a specified pattern, which can be either a\n * string or a regular expression.\n *\n * @param matchPattern - The pattern to match against\n *\n *   - If it's a regular expression, it will be reset to ensure consistent behavior for\n *       stateful regular expressions.\n *   - If it's a string, the function checks if the URL contains the string.\n *\n * @param configUrl - The URL to test against the provided pattern; normally `config.url`.\n * @returns `true` if the `configUrl` matches the `matchPattern`\n */\nexport function regexOrStringMatch(matchPattern: string | RegExp, configUrl: string) {\n  if (matchPattern instanceof RegExp) {\n    matchPattern.lastIndex = 0; // Reset the regex to ensure consistent matching\n    return matchPattern.test(configUrl);\n  }\n\n  return configUrl.includes(matchPattern);\n}\n","import type { Method } from 'axios';\nimport type { CacheAxiosResponse, CacheRequestConfig } from '../cache/axios.js';\nimport type { CacheProperties } from '../cache/cache.js';\nimport { Header } from '../header/headers.js';\nimport type {\n  CachedResponse,\n  MustRevalidateStorageValue,\n  StaleStorageValue\n} from '../storage/types.js';\n\n/**\n * Creates a new validateStatus function that will use the one already used and also\n * accept status code 304.\n */\nexport function createValidateStatus(\n  oldValidate?: CacheRequestConfig['validateStatus']\n): (status: number) => boolean {\n  return oldValidate\n    ? (status) => oldValidate(status) || status === 304\n    : (status) => (status >= 200 && status < 300) || status === 304;\n}\n\n/** Checks if the given method is in the methods array */\nexport function isMethodIn(\n  requestMethod: Method | string = 'get',\n  methodList: Method[] = []\n): boolean {\n  requestMethod = requestMethod.toLowerCase() as Lowercase<Method>;\n  return methodList.some((method) => method === requestMethod);\n}\n\nexport interface ConfigWithCache<D> extends CacheRequestConfig<unknown, D> {\n  cache: Partial<CacheProperties<unknown, D>>;\n}\n\n/**\n * This function updates the cache when the request is stale. So, the next request to the\n * server will be made with proper header / settings.\n */\nexport function updateStaleRequest<D>(\n  cache: StaleStorageValue | MustRevalidateStorageValue,\n  config: ConfigWithCache<D>\n): void {\n  config.headers ||= {};\n\n  const { etag, modifiedSince } = config.cache;\n\n  if (etag) {\n    const etagValue = etag === true ? (cache.data?.headers[Header.ETag] as unknown) : etag;\n\n    if (etagValue) {\n      config.headers[Header.IfNoneMatch] = etagValue;\n    }\n  }\n\n  if (modifiedSince) {\n    config.headers[Header.IfModifiedSince] =\n      modifiedSince === true\n        ? // If last-modified is not present, use the createdAt timestamp\n          (cache.data.headers[Header.LastModified] as unknown) ||\n          new Date(cache.createdAt).toUTCString()\n        : modifiedSince.toUTCString();\n  }\n}\n\n/**\n * Creates the new date to the cache by the provided response. Also handles possible 304\n * Not Modified by updating response properties.\n */\nexport function createCacheResponse<R, D>(\n  response: CacheAxiosResponse<R, D>,\n  previousCache?: CachedResponse\n): CachedResponse {\n  if (response.status === 304 && previousCache) {\n    // Set the cache information into the response object\n    response.cached = true;\n    response.data = previousCache.data as R;\n    response.status = previousCache.status;\n    response.statusText = previousCache.statusText;\n\n    // Update possible new headers\n    response.headers = {\n      ...previousCache.headers,\n      ...response.headers\n    };\n\n    // return the old cache\n    return previousCache;\n  }\n\n  // New Response\n  return {\n    data: response.data,\n    status: response.status,\n    statusText: response.statusText,\n    headers: response.headers\n  };\n}\n","import { deferred } from 'fast-defer';\nimport type { AxiosCacheInstance, CacheAxiosResponse } from '../cache/axios.js';\nimport { Header } from '../header/headers.js';\nimport type { CachedResponse, CachedStorageValue, LoadingStorageValue } from '../storage/types.js';\nimport { regexOrStringMatch } from '../util/cache-predicate.js';\nimport type { RequestInterceptor } from './build.js';\nimport {\n  type ConfigWithCache,\n  createValidateStatus,\n  isMethodIn,\n  updateStaleRequest\n} from './util.js';\n\nexport function defaultRequestInterceptor(axios: AxiosCacheInstance): RequestInterceptor {\n  const onFulfilled: RequestInterceptor['onFulfilled'] = async (config) => {\n    config.id = axios.generateKey(config);\n\n    if (config.cache === false) {\n      if (__ACI_DEV__) {\n        axios.debug({\n          id: config.id,\n          msg: 'Ignoring cache because config.cache === false',\n          data: config\n        });\n      }\n\n      return config;\n    }\n\n    // merge defaults with per request configuration\n    config.cache = { ...axios.defaults.cache, ...config.cache };\n\n    // ignoreUrls (blacklist)\n    if (\n      typeof config.cache.cachePredicate === 'object' &&\n      config.cache.cachePredicate.ignoreUrls &&\n      config.url\n    ) {\n      for (const url of config.cache.cachePredicate.ignoreUrls) {\n        if (regexOrStringMatch(url, config.url)) {\n          if (__ACI_DEV__) {\n            axios.debug({\n              id: config.id,\n              msg: `Ignored because url (${config.url}) matches ignoreUrls (${config.cache.cachePredicate.ignoreUrls})`,\n              data: {\n                url: config.url,\n                cachePredicate: config.cache.cachePredicate\n              }\n            });\n          }\n\n          return config;\n        }\n      }\n    }\n\n    // allowUrls\n    if (\n      typeof config.cache.cachePredicate === 'object' &&\n      config.cache.cachePredicate.allowUrls &&\n      config.url\n    ) {\n      let matched = false;\n\n      for (const url of config.cache.cachePredicate.allowUrls) {\n        if (regexOrStringMatch(url, config.url)) {\n          matched = true;\n\n          if (__ACI_DEV__) {\n            axios.debug({\n              id: config.id,\n              msg: `Cached because url (${config.url}) matches allowUrls (${config.cache.cachePredicate.allowUrls})`,\n              data: {\n                url: config.url,\n                cachePredicate: config.cache.cachePredicate\n              }\n            });\n          }\n          break;\n        }\n      }\n\n      if (!matched) {\n        if (__ACI_DEV__) {\n          axios.debug({\n            id: config.id,\n            msg: `Ignored because url (${config.url}) does not match any allowUrls (${config.cache.cachePredicate.allowUrls})`,\n            data: {\n              url: config.url,\n              cachePredicate: config.cache.cachePredicate\n            }\n          });\n        }\n        return config;\n      }\n    }\n\n    // Applies sufficient headers to prevent other cache systems to work along with this one\n    //\n    // Its currently used before isMethodIn because if the isMethodIn returns false, the request\n    // shouldn't be cached an therefore neither in the browser.\n    // https://stackoverflow.com/a/2068407\n    if (config.cache.cacheTakeover) {\n      config.headers[Header.CacheControl] ??= 'no-cache, no-store, must-revalidate';\n      config.headers[Header.Pragma] ??= 'no-cache';\n      config.headers[Header.Expires] ??= '0';\n    }\n\n    if (!isMethodIn(config.method, config.cache.methods)) {\n      if (__ACI_DEV__) {\n        axios.debug({\n          id: config.id,\n          msg: `Ignored because method (${config.method}) is not in cache.methods (${config.cache.methods})`\n        });\n      }\n\n      return config;\n    }\n\n    // Assumes that the storage handled staled responses\n    let cache = await axios.storage.get(config.id, config);\n    const overrideCache = config.cache.override;\n\n    // Not cached, continue the request, and mark it as fetching\n    // biome-ignore lint/suspicious/noConfusingLabels: required to break condition in simultaneous accesses\n    ignoreAndRequest: if (\n      cache.state === 'empty' ||\n      cache.state === 'stale' ||\n      cache.state === 'must-revalidate' ||\n      overrideCache\n    ) {\n      // This checks for simultaneous access to a new key. The js event loop jumps on the\n      // first await statement, so the second (asynchronous call) request may have already\n      // started executing.\n      if (axios.waiting.has(config.id) && !overrideCache) {\n        cache = (await axios.storage.get(config.id, config)) as\n          | CachedStorageValue\n          | LoadingStorageValue;\n\n        // @ts-expect-error This check is required when a request has it own cache deleted manually, lets\n        // say by a `axios.storage.delete(key)` and has a concurrent loading request.\n        // Because in this case, the cache will be empty and may still has a pending key\n        // on waiting map.\n        if (cache.state !== 'empty' && cache.state !== 'must-revalidate') {\n          if (__ACI_DEV__) {\n            axios.debug({\n              id: config.id,\n              msg: 'Waiting list had an deferred for this key, waiting for it to finish'\n            });\n          }\n\n          break ignoreAndRequest;\n        }\n      }\n\n      // Create a deferred to resolve other requests for the same key when it's completed\n      const def = deferred<void>();\n      axios.waiting.set(config.id, def);\n\n      // Adds a default reject handler to catch when the request gets aborted without\n      // others waiting for it.\n      def.catch(() => undefined);\n\n      await axios.storage.set(\n        config.id,\n        {\n          state: 'loading',\n          previous: overrideCache\n            ? // Simply determine if the request is stale or not\n              // based if it had previous data or not\n              cache.data\n              ? 'stale'\n              : 'empty'\n            : // Typescript doesn't know that cache.state here can only be 'empty' or 'stale'\n              (cache.state as 'stale' | 'must-revalidate'),\n\n          data: cache.data as any,\n\n          // If the cache is empty and asked to override it, use the current timestamp\n          createdAt: overrideCache && !cache.createdAt ? Date.now() : (cache.createdAt as any)\n        },\n        config\n      );\n\n      if (cache.state === 'stale' || cache.state === 'must-revalidate') {\n        updateStaleRequest(cache, config as ConfigWithCache<unknown>);\n\n        if (__ACI_DEV__) {\n          axios.debug({\n            id: config.id,\n            msg: 'Updated stale request'\n          });\n        }\n      }\n\n      config.validateStatus = createValidateStatus(config.validateStatus);\n\n      if (__ACI_DEV__) {\n        axios.debug({\n          id: config.id,\n          msg: 'Sending request, waiting for response',\n          data: {\n            overrideCache,\n            state: cache.state\n          }\n        });\n      }\n\n      // Hydrates any UI temporarily, if cache is available\n      if (cache.state === 'stale' || (cache.data && cache.state !== 'must-revalidate')) {\n        await config.cache.hydrate?.(cache);\n      }\n\n      return config;\n    }\n\n    let cachedResponse: CachedResponse;\n\n    if (cache.state === 'loading') {\n      const deferred = axios.waiting.get(config.id);\n\n      // The deferred may not exists when the process is using a persistent\n      // storage and cancelled  in the middle of a request, this would result in\n      // a pending loading state in the storage but no current promises to resolve\n      if (!deferred) {\n        // Hydrates any UI temporarily, if cache is available\n        if (cache.data) {\n          await config.cache.hydrate?.(cache);\n        }\n\n        return config;\n      }\n\n      if (__ACI_DEV__) {\n        axios.debug({\n          id: config.id,\n          msg: 'Detected concurrent request, waiting for it to finish'\n        });\n      }\n\n      try {\n        // Deferred can't reuse the value because the user's storage might clone\n        // or mutate the value, so we need to ask it again.\n        // For example with memoryStorage + cloneData\n        await deferred;\n        const state = await axios.storage.get(config.id, config);\n\n        // This is a cache mismatch and should never happen, but in case it does,\n        // we need to redo the request all over again.\n        /* c8 ignore start */\n        if (!state.data) {\n          if (__ACI_DEV__) {\n            axios.debug({\n              id: config.id,\n              msg: 'Deferred resolved, but no data was found, requesting again'\n            });\n          }\n\n          return onFulfilled!(config);\n        }\n        /* c8 ignore end */\n\n        cachedResponse = state.data;\n      } catch (err) {\n        if (__ACI_DEV__) {\n          axios.debug({\n            id: config.id,\n            msg: 'Deferred rejected, requesting again',\n            data: err\n          });\n        }\n\n        // Hydrates any UI temporarily, if cache is available\n        /* c8 ignore start */\n        if (cache.data) {\n          await config.cache.hydrate?.(cache);\n        }\n        /* c8 ignore end */\n\n        // The deferred is rejected when the request that we are waiting rejects its cache.\n        // In this case, we need to redo the request all over again.\n        return onFulfilled!(config);\n      }\n    } else {\n      cachedResponse = cache.data;\n    }\n\n    // The cached data is already transformed after receiving the response from the server.\n    // Reapplying the transformation on the transformed data will have an unintended effect.\n    // Since the cached data is already in the desired format, there is no need to apply the transformation function again.\n    config.transformResponse = undefined;\n\n    // Even though the response interceptor receives this one from here,\n    // it has been configured to ignore cached responses = true\n    config.adapter = function cachedAdapter(): Promise<CacheAxiosResponse> {\n      return Promise.resolve({\n        config,\n        data: cachedResponse.data,\n        headers: cachedResponse.headers,\n        status: cachedResponse.status,\n        statusText: cachedResponse.statusText,\n        cached: true,\n        stale: (cache as LoadingStorageValue).previous === 'stale',\n        id: config.id!\n      });\n    };\n\n    if (__ACI_DEV__) {\n      axios.debug({\n        id: config.id,\n        msg: 'Returning cached response'\n      });\n    }\n\n    return config;\n  };\n\n  return {\n    onFulfilled\n  };\n}\n","import type { CacheAxiosResponse } from '../cache/axios.js';\nimport type { AxiosStorage } from '../storage/types.js';\nimport type { CacheUpdater } from './types.js';\n\n/** Function to update all caches, from CacheProperties.update, with the new data. */\nexport async function updateCache<R, D>(\n  storage: AxiosStorage,\n  data: CacheAxiosResponse<R, D>,\n  cacheUpdater: CacheUpdater<R, D>\n): Promise<void> {\n  // Global cache update function.\n  if (typeof cacheUpdater === 'function') {\n    return cacheUpdater(data);\n  }\n\n  for (const [cacheKey, updater] of Object.entries(cacheUpdater)) {\n    if (updater === 'delete') {\n      await storage.remove(cacheKey, data.config);\n      continue;\n    }\n\n    const value = await storage.get(cacheKey, data.config);\n\n    if (value.state === 'loading') {\n      continue;\n    }\n\n    const newValue = await updater(value, data);\n\n    if (newValue === 'delete') {\n      await storage.remove(cacheKey, data.config);\n      continue;\n    }\n\n    if (newValue !== 'ignore') {\n      await storage.set(cacheKey, newValue, data.config);\n    }\n  }\n}\n","import type { AxiosResponseHeaders } from 'axios';\nimport { parse } from 'cache-parser';\nimport type { AxiosCacheInstance, CacheAxiosResponse, CacheRequestConfig } from '../cache/axios.js';\nimport type { CacheProperties } from '../cache/cache.js';\nimport { Header } from '../header/headers.js';\nimport type { CachedStorageValue } from '../storage/types.js';\nimport { testCachePredicate } from '../util/cache-predicate.js';\nimport { updateCache } from '../util/update-cache.js';\nimport type { ResponseInterceptor } from './build.js';\nimport { createCacheResponse, isMethodIn } from './util.js';\n\nexport function defaultResponseInterceptor(axios: AxiosCacheInstance): ResponseInterceptor {\n  /**\n   * Rejects cache for an response response.\n   *\n   * Also update the waiting list for this key by rejecting it.\n   */\n  const rejectResponse = async (\n    responseId: string,\n    config: CacheRequestConfig,\n    clearCache: boolean\n  ) => {\n    // Updates the cache to empty to prevent infinite loading state\n    if (clearCache) {\n      await axios.storage.remove(responseId, config);\n    }\n\n    // Rejects the deferred, if present\n    const deferred = axios.waiting.get(responseId);\n\n    if (deferred) {\n      deferred.reject();\n      axios.waiting.delete(responseId);\n    }\n  };\n\n  const onFulfilled: ResponseInterceptor['onFulfilled'] = async (response) => {\n    // When response.config is not present, the response is indeed a error.\n    if (!response?.config) {\n      if (__ACI_DEV__) {\n        axios.debug({\n          msg: 'Response interceptor received an unknown response.',\n          data: response\n        });\n      }\n\n      // Re-throws the error\n      throw response;\n    }\n\n    response.id = response.config.id!;\n    response.cached ??= false;\n\n    const config = response.config;\n    // Request interceptor merges defaults with per request configuration\n    const cacheConfig = config.cache as CacheProperties;\n\n    // Response is already cached\n    if (response.cached) {\n      if (__ACI_DEV__) {\n        axios.debug({\n          id: response.id,\n          msg: 'Returned cached response'\n        });\n      }\n\n      return response;\n    }\n\n    // Skip cache: either false or weird behavior\n    // config.cache should always exists, at least from global config merge.\n    if (!cacheConfig) {\n      if (__ACI_DEV__) {\n        axios.debug({\n          id: response.id,\n          msg: 'Response with config.cache falsy',\n          data: response\n        });\n      }\n\n      response.cached = false;\n      return response;\n    }\n\n    // Update other entries before updating himself\n    if (cacheConfig.update) {\n      await updateCache(axios.storage, response, cacheConfig.update);\n    }\n\n    if (!isMethodIn(config.method, cacheConfig.methods)) {\n      if (__ACI_DEV__) {\n        axios.debug({\n          id: response.id,\n          msg: `Ignored because method (${config.method}) is not in cache.methods (${cacheConfig.methods})`,\n          data: { config, cacheConfig }\n        });\n      }\n\n      return response;\n    }\n\n    const cache = await axios.storage.get(response.id, config);\n\n    if (\n      // If the request interceptor had a problem or it wasn't cached\n      cache.state !== 'loading'\n    ) {\n      if (__ACI_DEV__) {\n        axios.debug({\n          id: response.id,\n          msg: \"Response not cached and storage isn't loading\",\n          data: { cache, response }\n        });\n      }\n\n      return response;\n    }\n\n    // Config told that this response should be cached.\n    if (\n      // For 'loading' values (previous: stale), this check already ran in the past.\n      !cache.data &&\n      !(await testCachePredicate(response, cacheConfig.cachePredicate))\n    ) {\n      await rejectResponse(response.id, config, true);\n\n      if (__ACI_DEV__) {\n        axios.debug({\n          id: response.id,\n          msg: 'Cache predicate rejected this response'\n        });\n      }\n\n      return response;\n    }\n\n    // Avoid remnant headers from remote server to break implementation\n    for (const header of Object.keys(response.headers)) {\n      if (header.startsWith('x-axios-cache')) {\n        delete response.headers[header];\n      }\n    }\n\n    if (cacheConfig.etag && cacheConfig.etag !== true) {\n      response.headers[Header.XAxiosCacheEtag] = cacheConfig.etag;\n    }\n\n    if (cacheConfig.modifiedSince) {\n      response.headers[Header.XAxiosCacheLastModified] =\n        cacheConfig.modifiedSince === true\n          ? 'use-cache-timestamp'\n          : cacheConfig.modifiedSince.toUTCString();\n    }\n\n    let ttl = cacheConfig.ttl || -1; // always set from global config\n    let staleTtl: number | undefined;\n\n    if (cacheConfig.interpretHeader) {\n      const expirationTime = axios.headerInterpreter(response.headers, axios.location);\n\n      // Cache should not be used\n      if (expirationTime === 'dont cache') {\n        await rejectResponse(response.id, config, true);\n\n        if (__ACI_DEV__) {\n          axios.debug({\n            id: response.id,\n            msg: `Cache header interpreted as 'dont cache'`,\n            data: { cache, response, expirationTime }\n          });\n        }\n\n        return response;\n      }\n\n      if (expirationTime !== 'not enough headers') {\n        if (typeof expirationTime === 'number') {\n          ttl = expirationTime;\n        } else {\n          ttl = expirationTime.cache;\n          staleTtl = expirationTime.stale;\n        }\n      }\n    }\n\n    const data = createCacheResponse(response, cache.data);\n\n    if (typeof ttl === 'function') {\n      ttl = await ttl(response);\n    }\n\n    if (cacheConfig.staleIfError) {\n      response.headers[Header.XAxiosCacheStaleIfError] = String(ttl);\n    }\n\n    if (__ACI_DEV__) {\n      axios.debug({\n        id: response.id,\n        msg: 'Useful response configuration found',\n        data: { cacheConfig, cacheResponse: data }\n      });\n    }\n\n    const newCache: CachedStorageValue = {\n      state: 'cached',\n      ttl,\n      staleTtl,\n      createdAt: Date.now(),\n      data\n    };\n\n    // Define this key as cache on the storage\n    await axios.storage.set(response.id, newCache, config);\n\n    // Resolve all other requests waiting for this response\n    const waiting = axios.waiting.get(response.id);\n\n    if (waiting) {\n      waiting.resolve();\n      axios.waiting.delete(response.id);\n\n      if (__ACI_DEV__) {\n        axios.debug({\n          id: response.id,\n          msg: 'Found waiting deferred(s) and resolved them'\n        });\n      }\n    }\n\n    if (__ACI_DEV__) {\n      axios.debug({\n        id: response.id,\n        msg: 'Response cached',\n        data: { cache: newCache, response }\n      });\n    }\n\n    // Return the response with cached as false, because it was not cached at all\n    return response;\n  };\n\n  const onRejected: ResponseInterceptor['onRejected'] = async (error) => {\n    // When response.config is not present, the response is indeed a error.\n    if (!error.isAxiosError || !error.config) {\n      if (__ACI_DEV__) {\n        axios.debug({\n          msg: 'FATAL: Received an non axios error in the rejected response interceptor, ignoring.',\n          data: error\n        });\n      }\n\n      // We should probably re-request the response to avoid an infinite loading state here\n      // but, since this is an unknown error, we cannot figure out what request ID to use.\n      // And the only solution is to let the storage actively reject the current loading state.\n      throw error;\n    }\n\n    const config = error.config as CacheRequestConfig & { headers: AxiosResponseHeaders };\n    const id = config.id;\n    const cacheConfig = config.cache as CacheProperties;\n    const response = error.response as CacheAxiosResponse | undefined;\n\n    // config.cache should always exist, at least from global config merge.\n    if (!cacheConfig || !id) {\n      if (__ACI_DEV__) {\n        axios.debug({\n          msg: 'Web request returned an error but cache handling is not enabled',\n          data: { error }\n        });\n      }\n\n      throw error;\n    }\n\n    if (!isMethodIn(config.method, cacheConfig.methods)) {\n      if (__ACI_DEV__) {\n        axios.debug({\n          id,\n          msg: `Ignored because method (${config.method}) is not in cache.methods (${cacheConfig.methods})`,\n          data: { config, cacheConfig }\n        });\n      }\n\n      // Rejects all other requests waiting for this response\n      await rejectResponse(id, config, true);\n\n      throw error;\n    }\n\n    const cache = await axios.storage.get(id, config);\n\n    if (\n      // This will only not be loading if the interceptor broke\n      cache.state !== 'loading' ||\n      cache.previous !== 'stale'\n    ) {\n      if (__ACI_DEV__) {\n        axios.debug({\n          id,\n          msg: 'Caught an error in the request interceptor',\n          data: { cache, error, config }\n        });\n      }\n\n      // Rejects all other requests waiting for this response\n      await rejectResponse(\n        id,\n        config,\n        // Do not clear cache if this request is cached, but the request was cancelled before returning the cached response\n        error.code !== 'ERR_CANCELED' || (error.code === 'ERR_CANCELED' && cache.state !== 'cached')\n      );\n\n      throw error;\n    }\n\n    if (cacheConfig.staleIfError) {\n      const cacheControl = String(response?.headers[Header.CacheControl]);\n      const staleHeader = cacheControl && parse(cacheControl).staleIfError;\n\n      const staleIfError =\n        typeof cacheConfig.staleIfError === 'function'\n          ? await cacheConfig.staleIfError(response, cache, error)\n          : cacheConfig.staleIfError === true && staleHeader\n            ? staleHeader * 1000 //staleIfError is in seconds\n            : cacheConfig.staleIfError;\n\n      if (__ACI_DEV__) {\n        axios.debug({\n          id,\n          msg: 'Found cache if stale config for rejected response',\n          data: { error, config, staleIfError }\n        });\n      }\n\n      if (\n        staleIfError === true ||\n        // staleIfError is the number of seconds that stale is allowed to be used\n        (typeof staleIfError === 'number' && cache.createdAt + staleIfError > Date.now())\n      ) {\n        // re-mark the cache as stale\n        await axios.storage.set(\n          id,\n          {\n            state: 'stale',\n            createdAt: Date.now(),\n            data: cache.data\n          },\n          config\n        );\n        // Resolve all other requests waiting for this response\n        const waiting = axios.waiting.get(id);\n\n        if (waiting) {\n          waiting.resolve();\n          axios.waiting.delete(id);\n\n          if (__ACI_DEV__) {\n            axios.debug({\n              id,\n              msg: 'Found waiting deferred(s) and resolved them'\n            });\n          }\n        }\n\n        if (__ACI_DEV__) {\n          axios.debug({\n            id,\n            msg: 'staleIfError resolved this response with cached data',\n            data: { error, config, cache }\n          });\n        }\n\n        return {\n          cached: true,\n          stale: true,\n          config,\n          id,\n          data: cache.data.data,\n          headers: cache.data.headers,\n          status: cache.data.status,\n          statusText: cache.data.statusText\n        };\n      }\n    }\n\n    if (__ACI_DEV__) {\n      axios.debug({\n        id,\n        msg: 'Received an unknown error that could not be handled',\n        data: { error, config }\n      });\n    }\n\n    // Rejects all other requests waiting for this response\n    await rejectResponse(id, config, true);\n\n    throw error;\n  };\n\n  return {\n    onFulfilled,\n    onRejected\n  };\n}\n","import type { CacheRequestConfig } from '../cache/axios.js';\nimport { Header } from '../header/headers.js';\nimport type { MaybePromise } from '../util/types.js';\nimport type { AxiosStorage, CachedStorageValue, StaleStorageValue, StorageValue } from './types.js';\n\n/** Returns true if the provided object was created from {@link buildStorage} function. */\nexport const isStorage = (obj: unknown): obj is AxiosStorage =>\n  !!obj && !!(obj as Record<string, boolean>)['is-storage'];\n\nfunction hasUniqueIdentifierHeader(value: CachedStorageValue | StaleStorageValue): boolean {\n  const headers = value.data.headers;\n\n  return (\n    Header.ETag in headers ||\n    Header.LastModified in headers ||\n    Header.XAxiosCacheEtag in headers ||\n    Header.XAxiosCacheLastModified in headers\n  );\n}\n\n/** Returns true if value must be revalidated */\nexport function mustRevalidate(value: CachedStorageValue | StaleStorageValue): boolean {\n  // Must revalidate is a special case and should not serve stale values\n  // We could use cache-control's parse function, but this is way faster and simpler\n  return String(value.data.headers[Header.CacheControl]).includes('must-revalidate');\n}\n\n/** Returns true if this has sufficient properties to stale instead of expire. */\nexport function canStale(value: CachedStorageValue): boolean {\n  if (hasUniqueIdentifierHeader(value)) {\n    return true;\n  }\n\n  return (\n    value.state === 'cached' &&\n    value.staleTtl !== undefined &&\n    // Only allow stale values after the ttl is already in the past and the staleTtl is in the future.\n    // In cases that just createdAt + ttl > Date.now(), isn't enough because the staleTtl could be <= 0.\n    // This logic only returns true when Date.now() is between the (createdAt + ttl) and (createdAt + ttl + staleTtl).\n    // Following the example below:\n    // |--createdAt--:--ttl--:---staleTtl--->\n    // [        past        ][now is in here]\n    Math.abs(Date.now() - (value.createdAt + value.ttl)) <= value.staleTtl\n  );\n}\n\n/**\n * Checks if the provided cache is expired. You should also check if the cache\n * {@link canStale} and {@link mayUseStale}\n */\nexport function isExpired(value: CachedStorageValue | StaleStorageValue): boolean {\n  return value.ttl !== undefined && value.createdAt + value.ttl <= Date.now();\n}\n\nexport interface BuildStorage extends Omit<AxiosStorage, 'get'> {\n  /**\n   * Returns the value for the given key. This method does not have to make checks for\n   * cache invalidation or anything. It just returns what was previous saved, if present.\n   *\n   * @param key The key to look for\n   * @param currentRequest The current {@link CacheRequestConfig}, if any\n   * @see https://axios-cache-interceptor.js.org/guide/storages#buildstorage\n   */\n  find: (\n    key: string,\n    currentRequest?: CacheRequestConfig\n  ) => MaybePromise<StorageValue | undefined>;\n}\n\n/**\n * All integrated storages are wrappers around the `buildStorage` function. External\n * libraries use it and if you want to build your own, `buildStorage` is the way to go!\n *\n * The exported `buildStorage` function abstracts the storage interface and requires a\n * super simple object to build the storage.\n *\n * **Note**: You can only create an custom storage with this function.\n *\n * @example\n *\n * ```js\n * const myStorage = buildStorage({\n *   find: () => {...},\n *   set: () => {...},\n *   remove: () => {...},\n *   clear: () => {...}\n * });\n *\n * const axios = setupCache(axios, { storage: myStorage });\n * ```\n *\n * @see https://axios-cache-interceptor.js.org/guide/storages#buildstorage\n */\nexport function buildStorage({ set, find, remove, clear }: BuildStorage): AxiosStorage {\n  return {\n    //@ts-expect-error - we don't want to expose this\n    'is-storage': 1,\n    set,\n    remove,\n    clear,\n    get: async (key, config) => {\n      let value = await find(key, config);\n\n      if (!value) {\n        return { state: 'empty' };\n      }\n\n      if (\n        value.state === 'empty' ||\n        value.state === 'loading' ||\n        value.state === 'must-revalidate'\n      ) {\n        return value;\n      }\n\n      // Handle cached values\n      if (value.state === 'cached') {\n        if (!isExpired(value)) {\n          return value;\n        }\n\n        // Tries to stale expired value\n        if (!canStale(value)) {\n          await remove(key, config);\n          return { state: 'empty' };\n        }\n\n        value = {\n          state: 'stale',\n          createdAt: value.createdAt,\n          data: value.data,\n          ttl: value.staleTtl !== undefined ? value.staleTtl + value.ttl : undefined\n        };\n\n        await set(key, value, config);\n\n        // Must revalidate is a special case and should not serve stale values\n        if (mustRevalidate(value)) {\n          return { ...value, state: 'must-revalidate' };\n        }\n      }\n\n      // A second check in case the new stale value was created already expired.\n      if (!isExpired(value)) {\n        return value;\n      }\n\n      if (hasUniqueIdentifierHeader(value)) {\n        return value;\n      }\n\n      await remove(key, config);\n      return { state: 'empty' };\n    }\n  };\n}\n","import { buildStorage, canStale, isExpired } from './build.js';\nimport type { AxiosStorage, StorageValue } from './types.js';\n\n/* c8 ignore start */\n/**\n * Clones an object using the structured clone algorithm if available, otherwise it uses\n * JSON.parse(JSON.stringify(value)).\n */\nconst clone: <T>(value: T) => T =\n  // https://caniuse.com/mdn-api_structuredclone (10/18/2023 92.51%)\n  typeof structuredClone === 'function'\n    ? structuredClone\n    : (value) => JSON.parse(JSON.stringify(value));\n/* c8 ignore stop */\n\n/**\n * Creates a simple in-memory storage. This means that if you need to persist data between\n * page or server reloads, this will not help.\n *\n * This is the storage used by default.\n *\n * If you need to modify it's data, you can do by the `data` property.\n *\n * @example\n *\n * ```js\n * const memoryStorage = buildMemoryStorage();\n *\n * setupCache(axios, { storage: memoryStorage });\n *\n * // Simple example to force delete the request cache\n *\n * const { id } = axios.get('url');\n *\n * delete memoryStorage.data[id];\n * ```\n *\n * @param {boolean | 'double'} cloneData Use `true` if the data returned by `find()`\n *   should be cloned to avoid mutating the original data outside the `set()` method. Use\n *   `'double'` to also clone before saving value in storage using `set()`. Disabled is\n *   default\n * @param {number | false} cleanupInterval The interval in milliseconds to run a\n *   setInterval job of cleaning old entries. If false, the job will not be created.\n *   Disabled is default\n * @param {number | false} maxEntries The maximum number of entries to keep in the\n *   storage. Its hard to determine the size of the entries, so a smart FIFO order is used\n *   to determine eviction. If false, no check will be done and you may grow up memory\n *   usage. Disabled is default\n */\nexport function buildMemoryStorage(\n  cloneData: boolean | 'double' = false,\n  cleanupInterval: number | false = false,\n  maxEntries: number | false = false\n) {\n  const storage = buildStorage({\n    set: (key, value) => {\n      if (maxEntries) {\n        let keys = Object.keys(storage.data);\n\n        // Tries to cleanup first\n        if (keys.length >= maxEntries) {\n          storage.cleanup();\n\n          // Recalculates the keys\n          keys = Object.keys(storage.data);\n\n          // Keeps deleting until there's space\n          while (keys.length >= maxEntries) {\n            // There's always at least one key here, otherwise it would not be\n            // in the loop.\n\n            delete storage.data[keys.shift()!];\n          }\n        }\n      }\n\n      // Clone the value before storing to prevent future mutations\n      // from affecting cached data.\n      storage.data[key] = cloneData === 'double' ? clone(value) : value;\n    },\n\n    remove: (key) => {\n      delete storage.data[key];\n    },\n\n    find: (key) => {\n      const value = storage.data[key];\n\n      return cloneData && value !== undefined ? clone(value) : value;\n    },\n\n    clear: () => {\n      storage.data = Object.create(null);\n    }\n  }) as MemoryStorage;\n\n  storage.data = Object.create(null) as Record<string, StorageValue>;\n\n  // When this program gets running for more than the specified interval, there's a good\n  // chance of it being a long-running process or at least have a lot of entries. Therefore,\n  // \"faster\" loop is more important than code readability.\n  storage.cleanup = () => {\n    const keys = Object.keys(storage.data);\n\n    let i = -1;\n    let value: StorageValue;\n    let key: string;\n\n    // Looping forward, as older entries are more likely to be expired\n    // than newer ones.\n    while (++i < keys.length) {\n      key = keys[i]!;\n      value = storage.data[key]!;\n\n      if (value.state === 'empty') {\n        storage.remove(key);\n        continue;\n      }\n\n      // If the value is expired and can't be stale, remove it\n      if (value.state === 'cached' && isExpired(value) && !canStale(value)) {\n        // this storage returns void.\n\n        storage.remove(key);\n      }\n    }\n  };\n\n  if (cleanupInterval) {\n    storage.cleaner = setInterval(storage.cleanup, cleanupInterval);\n  }\n\n  return storage;\n}\n\nexport interface MemoryStorage extends AxiosStorage {\n  data: Record<string, StorageValue>;\n  /** The job responsible to cleaning old entries */\n  cleaner: ReturnType<typeof setInterval>;\n  /** Tries to remove any invalid entry from the memory */\n  cleanup: () => void;\n}\n","import type { Method } from 'axios';\nimport { hash } from 'object-code';\nimport type { CacheRequestConfig } from '../cache/axios.js';\nimport type { KeyGenerator } from './types.js';\n\n// Remove first and last '/' char, if present\nconst SLASHES_REGEX = /^\\/|\\/$/g;\n\n/**\n * Builds an generator that receives a {@link CacheRequestConfig} and returns a value\n * hashed by {@link hash}.\n *\n * The value is hashed into a signed integer when the returned value from the provided\n * generator is not a `string` or a `number`.\n *\n * You can return any type of data structure.\n *\n * @example\n *\n * ```js\n * // This generator will return a hash code.\n * // The code will only be the same if url, method and data are the same.\n * const generator = buildKeyGenerator(({ url, method, data }) => ({\n *   url,\n *   method,\n *   data\n * }));\n * ```\n */\nexport function buildKeyGenerator<R = unknown, D = unknown>(\n  generator: (request: CacheRequestConfig<R, D>) => unknown\n): KeyGenerator<R, D> {\n  return (request) => {\n    if (request.id) {\n      return request.id;\n    }\n\n    const key = generator(request);\n\n    if (typeof key === 'string' || typeof key === 'number') {\n      return `${key}`;\n    }\n\n    return `${hash(key)}`;\n  };\n}\n\nexport const defaultKeyGenerator = buildKeyGenerator(({ baseURL, url, method, params, data }) => {\n  // Remove trailing slashes to avoid generating different keys for the \"same\" final url.\n  if (baseURL !== undefined) {\n    baseURL = baseURL.replace(SLASHES_REGEX, '');\n  } else {\n    // just to have a consistent hash\n    baseURL = '';\n  }\n\n  if (url !== undefined) {\n    url = url.replace(SLASHES_REGEX, '');\n  } else {\n    // just to have a consistent hash\n    url = '';\n  }\n\n  if (method !== undefined) {\n    method = method.toLowerCase() as Method;\n  } else {\n    // just to have a consistent hash\n    method = 'get';\n  }\n\n  return {\n    url: baseURL + (baseURL && url ? '/' : '') + url,\n    params: params,\n    method: method,\n    data: data\n  };\n});\n","import type { AxiosInstance } from 'axios';\nimport { defaultHeaderInterpreter } from '../header/interpreter.js';\nimport { defaultRequestInterceptor } from '../interceptors/request.js';\nimport { defaultResponseInterceptor } from '../interceptors/response.js';\nimport { isStorage } from '../storage/build.js';\nimport { buildMemoryStorage } from '../storage/memory.js';\nimport { defaultKeyGenerator } from '../util/key-generator.js';\nimport type { AxiosCacheInstance } from './axios.js';\nimport type { CacheInstance, CacheProperties } from './cache.js';\n\nexport interface CacheOptions extends Partial<CacheInstance>, Partial<CacheProperties> {}\n\n/**\n * Apply the caching interceptors for a already created axios instance.\n *\n * ```ts\n * const axios = setupCache(axios, OPTIONS);\n * ```\n *\n * The `setupCache` function receives global options and all [request\n * specifics](https://axios-cache-interceptor.js.org/config/request-specifics) ones too.\n * This way, you can customize the defaults for all requests.\n *\n * @param axios The already created axios instance\n * @param config The config for the caching interceptors\n * @returns The same instance with extended typescript types.\n * @see https://axios-cache-interceptor.js.org/config\n */\nexport function setupCache(axios: AxiosInstance, options: CacheOptions = {}): AxiosCacheInstance {\n  const axiosCache = axios as AxiosCacheInstance;\n\n  if (axiosCache.defaults.cache) {\n    throw new Error('setupCache() should be called only once');\n  }\n\n  axiosCache.location = typeof window === 'undefined' ? 'server' : 'client';\n\n  axiosCache.storage = options.storage || buildMemoryStorage();\n\n  if (!isStorage(axiosCache.storage)) {\n    throw new Error('Use buildStorage() function');\n  }\n\n  axiosCache.waiting = options.waiting || new Map();\n\n  axiosCache.generateKey = options.generateKey || defaultKeyGenerator;\n\n  axiosCache.headerInterpreter = options.headerInterpreter || defaultHeaderInterpreter;\n\n  axiosCache.requestInterceptor =\n    options.requestInterceptor || defaultRequestInterceptor(axiosCache);\n\n  axiosCache.responseInterceptor =\n    options.responseInterceptor || defaultResponseInterceptor(axiosCache);\n\n  axiosCache.debug = options.debug || function noop() {};\n\n  // CacheRequestConfig values\n  axiosCache.defaults.cache = {\n    update: options.update || {},\n\n    ttl: options.ttl ?? 1000 * 60 * 5,\n\n    // Although RFC 7231 also marks POST as cacheable, most users don't know that\n    // and may have problems about why their \"create X\" route not working.\n    methods: options.methods || ['get', 'head'],\n\n    cachePredicate: options.cachePredicate || {\n      // All cacheable status codes defined in RFC 7231\n      statusCheck: (status) => [200, 203, 300, 301, 302, 404, 405, 410, 414, 501].includes(status)\n    },\n\n    etag: options.etag ?? true,\n\n    // This option is going to be ignored by servers when ETag is enabled\n    // Checks strict equality to false to avoid undefined-ish values\n    modifiedSince: options.modifiedSince ?? options.etag === false,\n\n    interpretHeader: options.interpretHeader ?? true,\n\n    cacheTakeover: options.cacheTakeover ?? true,\n\n    staleIfError: options.staleIfError ?? true,\n\n    override: options.override ?? false,\n\n    hydrate: options.hydrate ?? undefined\n  };\n\n  // Apply interceptors\n  axiosCache.interceptors.request.use(\n    axiosCache.requestInterceptor.onFulfilled,\n    axiosCache.requestInterceptor.onRejected\n  );\n  axiosCache.interceptors.response.use(\n    axiosCache.responseInterceptor.onFulfilled,\n    axiosCache.responseInterceptor.onRejected\n  );\n\n  return axiosCache;\n}\n","import { buildStorage, canStale, isExpired } from './build.js';\nimport type { StorageValue } from './types.js';\n\n/**\n * Creates a simple storage. You can persist his data by using `sessionStorage` or\n * `localStorage` with it.\n *\n * **ImplNote**: Without polyfill, this storage only works on browser environments.\n *\n * @example\n *\n * ```js\n * const fromLocalStorage = buildWebStorage(localStorage);\n * const fromSessionStorage = buildWebStorage(sessionStorage);\n *\n * const myStorage = new Storage();\n * const fromMyStorage = buildWebStorage(myStorage);\n * ```\n *\n * @param storage The type of web storage to use. localStorage or sessionStorage.\n * @param prefix The prefix to index the storage. Useful to prevent collision between\n *   multiple places using the same storage.\n */\nexport function buildWebStorage(storage: Storage, prefix = 'axios-cache-') {\n  return buildStorage({\n    clear: () => {\n      for (const key in storage) {\n        if (key.startsWith(prefix)) {\n          storage.removeItem(key);\n        }\n      }\n    },\n\n    find: (key) => {\n      const json = storage.getItem(prefix + key);\n      return json ? (JSON.parse(json) as StorageValue) : undefined;\n    },\n\n    remove: (key) => {\n      storage.removeItem(prefix + key);\n    },\n\n    set: (key, value) => {\n      const save = () => storage.setItem(prefix + key, JSON.stringify(value));\n\n      try {\n        return save();\n      } catch {\n        const allValues: [string, StorageValue][] = Object.entries(\n          storage as Record<string, string>\n        )\n          .filter((item) => item[0].startsWith(prefix))\n          .map((item) => [item[0], JSON.parse(item[1]) as StorageValue]);\n\n        // Remove all expired values\n        for (const value of allValues) {\n          if (value[1].state === 'cached' && isExpired(value[1]) && !canStale(value[1])) {\n            storage.removeItem(value[0]);\n          }\n        }\n\n        // Try save again after removing expired values\n        try {\n          return save();\n        } catch {\n          // Storage still full, try removing the oldest value until it can be saved\n\n          // Descending sort by createdAt\n          const sortedItems = allValues.sort(\n            (a, b) => (a[1].createdAt || 0) - (b[1].createdAt || 0)\n          );\n\n          for (const item of sortedItems) {\n            storage.removeItem(item[0]);\n\n            try {\n              return save();\n            } catch {\n              // This key didn't free all the required space\n            }\n          }\n        }\n\n        // Clear the cache for the specified key\n        storage.removeItem(prefix + key);\n      }\n    }\n  });\n}\n","export * from './cache/axios.js';\nexport * from './cache/cache.js';\nexport * from './cache/create.js';\nexport * from './header/headers.js';\nexport * from './header/interpreter.js';\nexport * from './header/types.js';\nexport * from './interceptors/build.js';\nexport * from './interceptors/request.js';\nexport * from './interceptors/response.js';\nexport * from './interceptors/util.js';\nexport * from './storage/build.js';\nexport * from './storage/memory.js';\nexport * from './storage/types.js';\nexport * from './storage/web-api.js';\nexport * from './util/cache-predicate.js';\nexport * from './util/key-generator.js';\nexport * from './util/types.js';\nexport * from './util/update-cache.js';\n\n/** @internal */\ndeclare global {\n  /**\n   * **This declaration is erased at compile time.**\n   *\n   * Use to write code that will only be executed at development time.\n   *\n   * @internal\n   */\n  const __ACI_DEV__: boolean;\n}\n\nif (__ACI_DEV__) {\n  console.error(\n    'You are using a development build. Make sure to use the correct build in production\\nhttps://axios-cache-interceptor.js.org/guide/getting-started\\n\\n'\n  );\n}\n"],"names":["Header","IfModifiedSince","LastModified","IfNoneMatch","CacheControl","Pragma","ETag","Expires","Age","XAxiosCacheEtag","XAxiosCacheLastModified","XAxiosCacheStaleIfError","defaultHeaderInterpreter","headers","location","cacheControl","cc","parse","String","noCache","noStore","private","immutable","cache","maxAge","undefined","age","Number","stale","maxStale","staleWhileRevalidate","expires","milliseconds","Date","now","testCachePredicate","response","predicate","statusCheck","responseMatch","containsHeaders","status","header","Object","entries","_response$headers$hea","toLowerCase","regexOrStringMatch","matchPattern","configUrl","RegExp","lastIndex","test","includes","createValidateStatus","oldValidate","isMethodIn","requestMethod","methodList","some","method","updateStaleRequest","config","etag","modifiedSince","_cache$data","etagValue","data","createdAt","toUTCString","createCacheResponse","previousCache","cached","statusText","defaultRequestInterceptor","axios","onFulfilled","id","generateKey","debug","msg","defaults","cachePredicate","ignoreUrls","url","allowUrls","matched","cacheTakeover","_config$headers","_Header$CacheControl","_config$headers$_Head","_config$headers2","_Header$Pragma","_config$headers2$_Hea","_config$headers3","_Header$Expires","_config$headers3$_Hea","methods","storage","get","overrideCache","override","ignoreAndRequest","state","waiting","has","def","deferred","set","catch","previous","validateStatus","hydrate","cachedResponse","err","transformResponse","adapter","cachedAdapter","Promise","resolve","updateCache","cacheUpdater","cacheKey","updater","remove","value","newValue","defaultResponseInterceptor","rejectResponse","responseId","clearCache","reject","delete","_response$cached","cacheConfig","update","keys","startsWith","ttl","staleTtl","interpretHeader","expirationTime","headerInterpreter","staleIfError","cacheResponse","newCache","onRejected","error","isAxiosError","code","staleHeader","isStorage","obj","hasUniqueIdentifierHeader","mustRevalidate","canStale","Math","abs","isExpired","buildStorage","find","clear","key","clone","structuredClone","JSON","stringify","buildMemoryStorage","cloneData","cleanupInterval","maxEntries","length","cleanup","shift","create","i","cleaner","setInterval","SLASHES_REGEX","buildKeyGenerator","generator","request","hash","defaultKeyGenerator","baseURL","params","replace","setupCache","options","_options$ttl","_options$etag","_options$modifiedSinc","_options$interpretHea","_options$cacheTakeove","_options$staleIfError","_options$override","_options$hydrate","axiosCache","Error","window","Map","requestInterceptor","responseInterceptor","noop","interceptors","use","buildWebStorage","prefix","removeItem","json","getItem","save","setItem","allValues","filter","item","map","sortedItems","sort","a","b","console"],"mappings":"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"}