@redwoodjs/sdk
Version:
Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime
15 lines (14 loc) • 664 B
TypeScript
type ParseRoute<T extends string> = T extends `${infer Start}:${infer Param}/${infer Rest}` ? {
[K in Param]: string;
} & ParseRoute<Rest> : T extends `${infer Start}:${infer Param}` ? {
[K in Param]: string;
} : T extends `${infer Start}*${infer Rest}` ? {
$0: string;
} & ParseRoute<Rest> : T extends `${infer Start}*` ? {
$0: string;
} : {};
type LinkFunction<T extends readonly string[]> = {
<Path extends T[number]>(path: Path, params?: ParseRoute<Path> extends Record<string, never> ? undefined : ParseRoute<Path>): string;
};
export declare function defineLinks<const T extends readonly string[]>(routes: T): LinkFunction<T>;
export {};