Spaces:
Sleeping
Sleeping
| import type { ResponseCacheEntry, ResponseGenerator, ResponseCacheBase, IncrementalResponseCacheEntry, IncrementalResponseCache } from './types'; | |
| import type { RouteKind } from '../route-kind'; | |
| export * from './types'; | |
| export default class ResponseCache implements ResponseCacheBase { | |
| private readonly batcher; | |
| private readonly revalidateBatcher; | |
| /** | |
| * LRU cache for minimal mode using compound keys (pathname + invocationID). | |
| * This allows multiple invocations to cache the same pathname without | |
| * overwriting each other's entries. | |
| */ | |
| private readonly cache; | |
| /** | |
| * Set of invocation IDs that have had cache entries evicted. | |
| * Used to detect when the cache size may be too small. | |
| * Bounded to prevent memory growth. | |
| */ | |
| private readonly evictedInvocationIDs; | |
| /** | |
| * The configured max size, stored for logging. | |
| */ | |
| private readonly maxSize; | |
| /** | |
| * The configured TTL for cache entries in milliseconds. | |
| */ | |
| private readonly ttl; | |
| private minimal_mode?; | |
| constructor(minimal_mode: boolean, maxSize?: number, ttl?: number); | |
| get(key: string | null, responseGenerator: ResponseGenerator, context: { | |
| routeKind: RouteKind; | |
| isOnDemandRevalidate?: boolean; | |
| isPrefetch?: boolean; | |
| incrementalCache: IncrementalResponseCache; | |
| isRoutePPREnabled?: boolean; | |
| isFallback?: boolean; | |
| waitUntil?: (prom: Promise<any>) => void; | |
| /** | |
| * The invocation ID from the infrastructure. Used to scope the | |
| * in-memory cache to a single revalidation request in minimal mode. | |
| */ | |
| invocationID?: string; | |
| }): Promise<ResponseCacheEntry | null>; | |
| /** | |
| * Handles the get request for the response cache. | |
| * | |
| * @param key - The key to get the response cache entry for. | |
| * @param responseGenerator - The response generator to use to generate the response cache entry. | |
| * @param context - The context for the get request. | |
| * @param resolve - The resolve function to use to resolve the response cache entry. | |
| * @returns The response cache entry. | |
| */ | |
| private handleGet; | |
| /** | |
| * Revalidates the cache entry for the given key. | |
| * | |
| * @param key - The key to revalidate the cache entry for. | |
| * @param incrementalCache - The incremental cache to use to revalidate the cache entry. | |
| * @param isRoutePPREnabled - Whether the route is PPR enabled. | |
| * @param isFallback - Whether the route is a fallback. | |
| * @param responseGenerator - The response generator to use to generate the response cache entry. | |
| * @param previousIncrementalCacheEntry - The previous cache entry to use to revalidate the cache entry. | |
| * @param hasResolved - Whether the response has been resolved. | |
| * @param waitUntil - Optional function to register background work. | |
| * @param invocationID - The invocation ID for cache key scoping. | |
| * @returns The revalidated cache entry. | |
| */ | |
| revalidate(key: string, incrementalCache: IncrementalResponseCache, isRoutePPREnabled: boolean, isFallback: boolean, responseGenerator: ResponseGenerator, previousIncrementalCacheEntry: IncrementalResponseCacheEntry | null, hasResolved: boolean, waitUntil?: (prom: Promise<any>) => void, invocationID?: string): Promise<IncrementalResponseCacheEntry | null>; | |
| private handleRevalidate; | |
| } | |