UNPKG

next

Version:

The React Framework

72 lines (71 loc) 3.1 kB
import type { DynamicParamTypesShort, PrefetchHints } from '../../shared/lib/app-router-types'; import type { ManifestNode } from '../../build/webpack/plugins/flight-manifest-plugin'; import { type SegmentRequestKey } from '../../shared/lib/segment-cache/segment-value-encoding'; export type RootTreePrefetch = { buildId?: string; tree: TreePrefetch; staleTime: number; }; export type TreePrefetchParam = { type: DynamicParamTypesShort; key: string | null; siblings: readonly string[] | null; }; export type TreePrefetch = { name: string; param: TreePrefetchParam | null; slots: null | { [parallelRouteKey: string]: TreePrefetch; }; /** Bitmask of PrefetchHint flags for this segment and its subtree */ prefetchHints: number; }; export type SegmentPrefetch = { buildId?: string; rsc: React.ReactNode | null; isPartial: boolean; staleTime: number; /** * The set of params that this segment's output depends on. Used by the client * cache to determine which entries can be reused across different param * values. * - `null` means vary params were not tracked (conservative: assume all * params matter) * - Empty set means no params were accessed (segment is reusable for any * param values) */ varyParams: Set<string> | null; }; /** * A node in the inlined prefetch tree. Wraps a SegmentPrefetch with child * slots so all segments for a route can be bundled into a single response. * * This is a separate type from SegmentPrefetch because the inlined flow is * still gated behind a feature flag. Eventually inlining will always be * enabled, and the per-segment and inlined paths will merge. */ export type InlinedSegmentPrefetch = { segment: SegmentPrefetch; slots: null | { [parallelRouteKey: string]: InlinedSegmentPrefetch; }; }; /** * The response shape for the /_inlined prefetch endpoint. Contains all segment * data for a route bundled into a single tree structure, plus the head segment. */ export type InlinedPrefetchResponse = { tree: InlinedSegmentPrefetch; head: SegmentPrefetch; }; export declare function collectSegmentData(isCacheComponentsEnabled: boolean, fullPageDataBuffer: Buffer, staleTime: number, clientModules: ManifestNode, serverConsumerManifest: any, prefetchInlining: boolean, hints: PrefetchHints | null): Promise<Map<SegmentRequestKey, Buffer>>; /** * Compute prefetch hints for a route by measuring segment sizes and deciding * which segments should be inlined. Only runs at build time. The results are * written to prefetch-hints.json and loaded at server startup. * * This is a separate pass from collectSegmentData so that the inlining * decisions can be fed back into collectSegmentData to control which segments * are output as separate entries vs. inlined into their parent. */ export declare function collectPrefetchHints(fullPageDataBuffer: Buffer, staleTime: number, clientModules: ManifestNode, serverConsumerManifest: any, maxSize: number, maxBundleSize: number): Promise<PrefetchHints>;