astro
Version:
Astro is a modern site builder with web best practices, performance, and DX front-of-mind.
38 lines (37 loc) • 1.69 kB
TypeScript
import type { PrerenderResult } from '../../types/public/integrations.js';
import type { RouteData } from '../../types/public/internal.js';
import type { AstroLogger } from '../logger/core.js';
import type { SSRManifest } from './types.js';
export interface PrerenderableApp {
logger: AstroLogger;
/**
* The app's manifest. When present, render errors use build semantics (they
* throw instead of rendering a 500 page) for this manifest.
*/
manifest?: SSRManifest;
render(request: Request, opts: {
routeData?: RouteData;
}): Promise<Response>;
}
export interface PrerenderRenderOptions {
routeData?: RouteData;
/** @deprecated Metadata is always collected. */
collectMetadata?: boolean;
/** See {@link CollectPrerenderMetadataOptions.staticImages}. Default `true`. */
staticImages?: boolean;
}
/**
* Renders a single prerendered path through `app.render`, collecting the
* per-render metadata (content entries rendered, image transforms resolved)
* and returning it by value on the result.
*
* The response body is fully buffered *inside* the render scope so
* lazily-driven rendering work records before the metadata snapshot; the
* returned response is a reconstruction carrying the buffered body with
* status/statusText/headers and body-nullness preserved.
*
* This function performs no scope installation; installing a render scope for
* the rendering runtime is the caller's responsibility. When no scope is
* installed, `metadata` is `undefined` ("not tracked").
*/
export declare function renderForPrerender(app: PrerenderableApp, request: Request, options?: PrerenderRenderOptions): Promise<PrerenderResult>;