import { BaseRouteBuilder } from './Builder'; import { CleanIntellisense, UnionToIntersection } from './typescript'; export type RouteConfig = { [routeName: string]: BaseRouteBuilder; }; export type RecursiveRouteConfig = { [routeNameOrPrefix: string]: BaseRouteBuilder | RecursiveRouteConfig | undefined; ''?: BaseRouteBuilder; }; export type FlattenRouteConfig = CleanIntellisense<_FlattenRouteConfig>; type _FlattenRouteConfig> = { [N in keyof F]: AssertIsBaseRouteBuilder; }; type AssertIsBaseRouteBuilder = T extends BaseRouteBuilder ? T : any; type MakeRouteName = (TGroupPrefix extends '' ? K : K extends '' ? TGroupPrefix : `${TGroupPrefix}.${K}`); type MakeEntry> = (MakeRouteName extends infer TRouteName extends string ? TRouteName extends '' ? never : Record : never); type MakeFlattenedRouteConfig = (UnionToIntersection<_MakeFlattenedRouteConfig>); type _MakeFlattenedRouteConfig = (K extends keyof RR ? RR[K] extends BaseRouteBuilder ? MakeEntry : RR[K] extends RecursiveRouteConfig ? _MakeFlattenedRouteConfig> : never : never); export {};