| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- // @ts-nocheck
- // This file is generated by Umi automatically
- // DO NOT CHANGE IT MANUALLY!
- import { getRoutes } from './route'
- import type { History } from '/Users/kuns/ayftech/web/crazycharge-admin/node_modules/@umijs/renderer-react'
- type Routes = Awaited<ReturnType<typeof getRoutes>>['routes']
- type AllRoute = Routes[keyof Routes]
- type IsRoot<T extends any> = 'parentId' extends keyof T ? false : true
- // show `/` in not `layout / wrapper` only
- type GetAllRouteWithoutLayout<Item extends AllRoute> = Item extends any
- ? 'isWrapper' extends keyof Item
- ? never
- : 'isLayout' extends keyof Item
- ? never
- : Item
- : never
- type AllRouteWithoutLayout = GetAllRouteWithoutLayout<AllRoute>
- type IndexRoutePathname = '/' extends AllRouteWithoutLayout['path']
- ? '/'
- : never
- type GetChildrens<T extends any> = T extends any
- ? IsRoot<T> extends true
- ? never
- : T
- : never
- type Childrens = GetChildrens<AllRoute>
- type Root = Exclude<AllRoute, Childrens>
- type AllIds = AllRoute['id']
- type GetChildrensByParentId<
- Id extends AllIds,
- Item = AllRoute
- > = Item extends any
- ? 'parentId' extends keyof Item
- ? Item['parentId'] extends Id
- ? Item
- : never
- : never
- : never
- type RouteObject<
- Id extends AllIds,
- Item = GetChildrensByParentId<Id>
- > = IsNever<Item> extends true
- ? ''
- : Item extends AllRoute
- ? {
- [Key in Item['path'] as TrimSlash<Key>]: UnionMerge<
- RouteObject<Item['id']>
- >
- }
- : never
- type GetRootRouteObject<Item extends Root> = Item extends Root
- ? {
- [K in Item['path'] as TrimSlash<K>]: UnionMerge<RouteObject<Item['id']>>
- }
- : never
- type MergedResult = UnionMerge<GetRootRouteObject<Root>>
- // --- patch history types ---
- type HistoryTo = Parameters<History['push']>['0']
- type HistoryPath = Exclude<HistoryTo, string>
- type UmiPathname = Path<MergedResult> | (string & {})
- interface UmiPath extends HistoryPath {
- pathname: UmiPathname
- }
- type UmiTo = UmiPathname | UmiPath
- type UmiPush = (to: UmiTo, state?: any) => void
- type UmiReplace = (to: UmiTo, state?: any) => void
- export interface UmiHistory extends History {
- push: UmiPush
- replace: UmiReplace
- }
- // --- type utils ---
- type TrimLeftSlash<T extends string> = T extends `/${infer R}`
- ? TrimLeftSlash<R>
- : T
- type TrimRightSlash<T extends string> = T extends `${infer R}/`
- ? TrimRightSlash<R>
- : T
- type TrimSlash<T extends string> = TrimLeftSlash<TrimRightSlash<T>>
- type IsNever<T> = [T] extends [never] ? true : false
- type IsEqual<A, B> = (<G>() => G extends A ? 1 : 2) extends <G>() => G extends B
- ? 1
- : 2
- ? true
- : false
- type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (
- k: infer I
- ) => void
- ? I
- : never
- type UnionMerge<U> = UnionToIntersection<U> extends infer O
- ? { [K in keyof O]: O[K] }
- : never
- type ExcludeEmptyKey<T> = IsEqual<T, ''> extends true ? never : T
- type PathConcat<
- TKey extends string,
- TValue,
- N = TrimSlash<TKey>
- > = TValue extends string
- ? ExcludeEmptyKey<N>
- :
- | ExcludeEmptyKey<N>
- | `${N & string}${IsNever<ExcludeEmptyKey<N>> extends true
- ? ''
- : '/'}${UnionPath<TValue>}`
- type UnionPath<T> = {
- [K in keyof T]-?: PathConcat<K & string, T[K]>
- }[keyof T]
- type MakeSureLeftSlash<T> = T extends any
- ? `/${TrimRightSlash<T & string>}`
- : never
- // exclude `/*`, because it always at the top of the IDE tip list
- type Path<T, K = UnionPath<T>> = Exclude<MakeSureLeftSlash<K>, '/*'> | IndexRoutePathname
|