UNPKG

@redwoodjs/sdk

Version:

Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime

34 lines (33 loc) 1.66 kB
import { RequestInfo } from "../requestInfo/types"; export type DocumentProps = RequestInfo & { children: React.ReactNode; }; export type RwContext = { nonce: string; Document: React.FC<DocumentProps>; }; export type RouteMiddleware = (requestInfo: RequestInfo) => Response | Promise<Response> | void | Promise<void> | Promise<Response | void>; type RouteFunction = (requestInfo: RequestInfo) => Response | Promise<Response>; type RouteComponent = (requestInfo: RequestInfo) => JSX.Element | Promise<JSX.Element>; type RouteHandler = RouteFunction | RouteComponent | [...RouteMiddleware[], RouteFunction | RouteComponent]; export type Route = RouteMiddleware | RouteDefinition | Array<Route>; export type RouteDefinition = { path: string; handler: RouteHandler; }; export declare function defineRoutes(routes: Route[]): { routes: Route[]; handle: ({ request, renderPage, getRequestInfo, runWithRequestInfoOverrides, }: { request: Request; renderPage: (requestInfo: RequestInfo, Page: React.FC) => Promise<Response>; getRequestInfo: () => RequestInfo; runWithRequestInfoOverrides: <Result>(overrides: Partial<RequestInfo>, fn: () => Promise<Result>) => Promise<Result>; }) => Response | Promise<Response>; }; export declare function route(path: string, handler: RouteHandler): RouteDefinition; export declare function index(handler: RouteHandler): RouteDefinition; export declare function prefix(prefix: string, routes: ReturnType<typeof route>[]): RouteDefinition[]; export declare function render(Document: React.FC<{ children: React.ReactNode; }>, routes: Route[]): Route[]; export {};