@redwoodjs/sdk
Version:
Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime
34 lines (33 loc) • 1.66 kB
TypeScript
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 {};