///
import type RenderResult from '../render-result';
export interface ResponseCacheBase {
get(key: string | null, responseGenerator: ResponseGenerator, context: {
isManualRevalidate?: boolean;
isPrefetch?: boolean;
incrementalCache: IncrementalCache;
}): Promise;
}
export interface CachedFetchValue {
kind: 'FETCH';
data: {
headers: {
[k: string]: string;
};
body: string;
status?: number;
};
revalidate: number;
}
export interface CachedRedirectValue {
kind: 'REDIRECT';
props: Object;
}
interface CachedPageValue {
kind: 'PAGE';
html: RenderResult;
pageData: Object;
}
export interface CachedRouteValue {
kind: 'ROUTE';
body: Buffer;
status: number;
headers: Record;
}
export interface CachedImageValue {
kind: 'IMAGE';
etag: string;
buffer: Buffer;
extension: string;
isMiss?: boolean;
isStale?: boolean;
}
interface IncrementalCachedPageValue {
kind: 'PAGE';
html: string;
pageData: Object;
}
export declare type IncrementalCacheEntry = {
curRevalidate?: number | false;
revalidateAfter: number | false;
isStale?: boolean;
value: IncrementalCacheValue | null;
};
export declare type IncrementalCacheValue = CachedRedirectValue | IncrementalCachedPageValue | CachedImageValue | CachedFetchValue | CachedRouteValue;
export declare type ResponseCacheValue = CachedRedirectValue | CachedPageValue | CachedImageValue | CachedRouteValue;
export declare type ResponseCacheEntry = {
revalidate?: number | false;
value: ResponseCacheValue | null;
isStale?: boolean;
isMiss?: boolean;
};
export declare type ResponseGenerator = (hasResolved: boolean, hadCache: boolean) => Promise;
export declare type IncrementalCacheItem = {
revalidateAfter?: number | false;
curRevalidate?: number | false;
revalidate?: number | false;
value: IncrementalCacheValue | null;
isStale?: boolean;
isMiss?: boolean;
} | null;
export interface IncrementalCache {
get: (key: string) => Promise;
set: (key: string, data: IncrementalCacheValue | null, revalidate?: number | false) => Promise;
}
export {};