UNPKG

@bgscore/react-router

Version:

Automatic React Router generator for Vite with TypeScript support

34 lines (33 loc) 1.48 kB
export type AutoRouteOptions = { sourceDir?: string; outputDir?: string; authGuardDir?: string; notFoundDir?: string; errorBoundaryDir?: string; outputName?: string; baseUrl?: string; layoutName?: string; minify?: boolean; logging?: boolean; }; export interface RouteNode { path: string; element?: string; children: RouteNode[]; isIndex?: boolean; hasErrorBoundary?: boolean; hasMetadata?: boolean; hasLoader?: boolean; imports: Array<{ name: string; path: string; type: "layout" | "component"; hasMetadata?: boolean; }>; isIndependent?: boolean; metadata?: Record<string, any>; } export type NestedKeyOf<T> = T extends object ? T extends Array<infer U> ? `${number}` | `${number}.${NestedKeyOf<U>}` : { [K in keyof T]: T[K] extends Array<infer U> ? `${K & string}` | `${K & string}[${number}]` | `${K & string}[${number}].${NestedKeyOf<U>}` : T[K] extends object ? `${K & string}` | `${K & string}.${NestedKeyOf<T[K]>}` : `${K & string}`; }[keyof T] : string; export type PathValue<T, P extends string> = P extends `${infer K}[${infer I}].${infer R}` ? K extends keyof T ? T[K] extends Array<infer U> ? PathValue<U, R> : never : never : P extends `${infer K}[${infer I}]` ? K extends keyof T ? T[K] extends Array<infer U> ? U : never : never : P extends `${infer K}.${infer R}` ? K extends keyof T ? PathValue<T[K], R> : never : P extends keyof T ? T[P] : never;