/** * @jorvel/ssr — edge adapter * * Framework-agnostic request/response bridge for edge runtimes (Cloudflare * Workers, Vercel Edge, Deno Deploy, AWS Lambda@Edge). Feeds an `EdgeRequest` * through the router and returns an `EdgeResponse` you adapt to the platform's * native Response type. */ import { type CacheControlOptions } from './cache-headers.js'; import { type LoaderDescriptor } from './loaders.js'; import type { HtmlCache } from './html-cache.js'; import type { EdgeAdapterHandler, EdgeAdapterOptions, EdgeRequest } from './types.js'; /** Resolves the loaders that run for a matched route before render. */ export type LoadersResolver = LoaderDescriptor[] | ((ctx: { request: EdgeRequest; pathname: string; params: Record; route: string; }) => LoaderDescriptor[] | undefined); export interface EdgeAdapterExtraOptions { /** Default Cache-Control for successful responses. */ cache?: CacheControlOptions; /** Cache-Control for 404s. Defaults to `{ scope: 'public', sMaxAge: 60 }`. */ notFoundCache?: CacheControlOptions; /** Per-path override. Matched against route.path (literal). */ cacheOverrides?: Record; /** Emit weak ETag and handle If-None-Match. */ etag?: boolean; /** Extra headers merged into every response (case-insensitive). */ headers?: Record; /** * CSP header value. May be a static string or a per-request factory — use * the factory form whenever you generate a per-request nonce so each * response gets a fresh nonce. */ csp?: string | ((req: EdgeRequest) => string); /** * Optional `` injection per request. Use this slot to inject * `serializeState(...)` `