{"version":3,"file":"index.mjs","sources":["../src/header/headers.ts","../src/header/interpreter.ts","../src/interceptors/util.ts","../src/interceptors/request.ts","../src/util/cache-predicate.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 = Object.freeze({\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});\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 { 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 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    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 (\n          url instanceof RegExp\n            ? // Handles stateful regexes\n              // biome-ignore lint: reduces the number of checks\n              ((url.lastIndex = 0), url.test(config.url))\n            : config.url.includes(url)\n        ) {\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    // 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    if (config.cache.cacheTakeover) {\n      config.headers[Header.CacheControl] ??= 'no-cache';\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\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';\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","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\n * it uses 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 (error) {\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","Object","freeze","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","createValidateStatus","oldValidate","status","isMethodIn","requestMethod","methodList","toLowerCase","some","method","updateStaleRequest","config","etag","modifiedSince","_cache$data","etagValue","data","createdAt","toUTCString","createCacheResponse","response","previousCache","cached","statusText","defaultRequestInterceptor","axios","onFulfilled","id","generateKey","debug","msg","defaults","cachePredicate","ignoreUrls","url","RegExp","lastIndex","test","includes","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","testCachePredicate","predicate","statusCheck","responseMatch","containsHeaders","header","entries","_response$headers$hea","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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"}