import { ClientContextOf, SiteOf } from "./entryTypeExtractors.mjs"; import { JsonValue, SkuMiddleware, SkuOnListen } from "./types.mjs"; import { ClientInstrumentation, RouterContextProvider, ServerInstrumentation } from "react-router"; import { Request as Request$1 } from "express"; //#region src/services/vite/ssr/defineEntry.d.ts type ServerEntryBody = { /** Resolves the active site name for this request */ getSite?: (args: { req: Request$1; }) => Site; /** Resolves the language for Document vocab chunk registration. */ getLanguage?: (args: { req: Request$1; }) => Language; /** JSON seed serialised to the client and passed to React and Router context. */ getClientContext?: (args: { req: Request$1; }) => ClientContext | Promise; /** Server-specific values for React via `useReactContext` (e.g. API clients). */ getReactContext?: (args: { req: Request$1; site: NoInfer; clientContext: NoInfer> | undefined; }) => ReactContext | Promise; /** Server-specific values for Router Router context (loaders, actions and middleware) */ getRouterContext?: (args: { request: Request; req: Request$1; site: NoInfer; clientContext: NoInfer> | undefined; reactContext: NoInfer> | undefined; }) => RouterContextProvider | Promise; /** Express middleware run before SSR for each request. */ middleware?: SkuMiddleware; /** * Called once after middleware + HTML are mounted and `listen` succeeds * (start + production). Not re-fired on server-entry HMR. */ onListen?: SkuOnListen; /** * Optional React Router route-level instrumentations forwarded into `createStaticHandler` at module init. */ instrumentations?: Array>; }; /** * Zero-runtime identity helper — creates a TypeScript inference scope so * getter returns type later sibling args. */ declare function defineServerEntry(entry: ServerEntryBody): ServerEntryBody; type ClientEntryBody = { /** Side effects to run before client React hydrate. */ onHydrate?: (args: { clientContext: ClientContextOf | undefined; }) => void; /** Client-specific values for React via `useReactContext` (e.g. API clients). */ getReactContext?: (args: { site: SiteOf; clientContext: NoInfer> | undefined; }) => ReactContext | Promise; /** Client-specific values for Router Router context (loaders, actions and middleware) */ getRouterContext?: (args: { site: SiteOf; clientContext: NoInfer> | undefined; reactContext: NoInfer> | undefined; }) => RouterContextProvider | Promise; /** * Optional React Router instrumentations (`router` + `route`) forwarded into * `createBrowserRouter`. */ instrumentations?: ClientInstrumentation[]; }; /** Empty server-entry shape — `SiteOf` / `ClientContextOf` → `string` / `undefined`. */ declare const noServerEntryBrand: unique symbol; type NoServerEntry = { readonly [noServerEntryBrand]?: never; }; /** * Zero-runtime identity helper for the SSR client entry object. */ declare function defineClientEntry(): (entry: ClientEntryBody) => ClientEntryBody; declare function defineClientEntry(entry: ClientEntryBody): ClientEntryBody; //#endregion export { ServerEntryBody, defineClientEntry, defineServerEntry };