@lomray/react-route-manager
Version:
React route manager for react-router.
123 lines (122 loc) • 14 kB
TypeScript
import { TRouterConfig, IRouterServiceParams, IRouterUrlOptions, TRouteKeys, TRouteParams, IRouteUrlOptions } from "./interfaces-9174d665.js";
/**
* @example
* {
* user: {
* url: '/user',
* params: {
* id: '', // required
* obj: '' as 'aaa' | 'dddd', // required union
* enumField: DD, // required enum
* name: undefined, // optional
* next: undefined as 'aaa' | 'dddd' | undefined, // optional union
* enumOptional: undefined as DD | undefined // optional enum
* },
* children: {} // nested
* }
*/
/**
* Manage application routes
*/
declare class Manager<TRoutesConfig extends TRouterConfig> {
/**
* Application routes config
*/
protected readonly routes: TRoutesConfig;
/**
* Application domain
*/
protected readonly domain?: string;
/**
* Url prefix (e.g. language code)
*/
protected prefix?: string;
/**
* @constructor
*/
/**
* @constructor
*/
constructor({ routes, domain, prefix }: IRouterServiceParams<TRoutesConfig>);
/**
* Set url prefix
*/
/**
* Set url prefix
*/
setPrefix(prefix?: string): void;
/**
* Get route full url
*/
/**
* Get route full url
*/
protected getRouteUrl(key: string, { isFullPath, hasLeadingSlash }?: IRouteUrlOptions): string;
/**
* Return routes
*/
/**
* Return routes
*/
getRoutes<TKey extends TRouteKeys<TRoutesConfig>>(route?: TKey): TRoutesConfig;
/**
* Generate route url with params
*/
makeURL: <TKey extends keyof { [P in keyof TRoutesConfig as P extends string ? TRoutesConfig[P] extends {
children: TRouterConfig;
} ? {} extends infer T ? T extends {} ? T extends { [key in P]: any; } ? never : keyof { [PF in keyof TRoutesConfig[P]["children"] as P | (PF extends string ? `${P}.${TRoutesConfig[P]["children"][PF] extends {
children: TRouterConfig;
} ? { [key_1 in P | keyof T]: any; } extends infer T_1 ? T_1 extends { [key_1 in P | keyof T]: any; } ? T_1 extends { [key_2 in PF]: any; } ? never : keyof { [PF_1 in keyof TRoutesConfig[P]["children"][PF]["children"] as PF | (PF_1 extends string ? `${PF}.${TRoutesConfig[P]["children"][PF]["children"][PF_1] extends {
children: TRouterConfig;
} ? { [key_3 in PF | keyof T_1]: any; } extends infer T_2 ? T_2 extends { [key_3 in PF | keyof T_1]: any; } ? T_2 extends { [key_4 in PF_1]: any; } ? never : keyof { [PF_2 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"] as PF_1 | (PF_2 extends string ? `${PF_1}.${TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2] extends {
children: TRouterConfig;
} ? { [key_5 in PF_1 | keyof T_2]: any; } extends infer T_3 ? T_3 extends { [key_5 in PF_1 | keyof T_2]: any; } ? T_3 extends { [key_6 in PF_2]: any; } ? never : keyof { [PF_3 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"] as PF_2 | (PF_3 extends string ? `${PF_2}.${TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3] extends {
children: TRouterConfig;
} ? { [key_7 in PF_2 | keyof T_3]: any; } extends infer T_4 ? T_4 extends { [key_7 in PF_2 | keyof T_3]: any; } ? T_4 extends { [key_8 in PF_3]: any; } ? never : keyof { [PF_4 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"] as PF_3 | (PF_4 extends string ? `${PF_3}.${TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4] extends {
children: TRouterConfig;
} ? { [key_9 in PF_3 | keyof T_4]: any; } extends infer T_5 ? T_5 extends { [key_9 in PF_3 | keyof T_4]: any; } ? T_5 extends { [key_10 in PF_4]: any; } ? never : keyof { [PF_5 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"] as PF_4 | (PF_5 extends string ? `${PF_4}.${TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5] extends {
children: TRouterConfig;
} ? { [key_11 in PF_4 | keyof T_5]: any; } extends infer T_6 ? T_6 extends { [key_11 in PF_4 | keyof T_5]: any; } ? T_6 extends { [key_12 in PF_5]: any; } ? never : keyof { [PF_6 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"] as PF_5 | (PF_6 extends string ? `${PF_5}.${TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"][PF_6] extends {
children: TRouterConfig;
} ? { [key_13 in PF_5 | keyof T_6]: any; } extends infer T_7 ? T_7 extends { [key_13 in PF_5 | keyof T_6]: any; } ? T_7 extends { [key_14 in PF_6]: any; } ? never : keyof { [PF_7 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"][PF_6]["children"] as PF_6 | (PF_7 extends string ? `${PF_6}.${TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"][PF_6]["children"][PF_7] extends {
children: TRouterConfig;
} ? { [key_15 in PF_6 | keyof T_7]: any; } extends infer T_8 ? T_8 extends { [key_15 in PF_6 | keyof T_7]: any; } ? T_8 extends { [key_16 in PF_7]: any; } ? never : keyof { [PF_8 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"][PF_6]["children"][PF_7]["children"] as PF_7 | (PF_8 extends string ? `${PF_7}.${TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"][PF_6]["children"][PF_7]["children"][PF_8] extends {
children: TRouterConfig;
} ? { [key_17 in PF_7 | keyof T_8]: any; } extends infer T_9 ? T_9 extends { [key_17 in PF_7 | keyof T_8]: any; } ? T_9 extends { [key_18 in PF_8]: any; } ? never : keyof { [PF_9 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"][PF_6]["children"][PF_7]["children"][PF_8]["children"] as PF_8 | (PF_9 extends string ? `${PF_8}.${TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"][PF_6]["children"][PF_7]["children"][PF_8]["children"][PF_9] extends {
children: TRouterConfig;
} ? { [key_19 in PF_8 | keyof T_9]: any; } extends infer T_10 ? T_10 extends { [key_19 in PF_8 | keyof T_9]: any; } ? T_10 extends { [key_20 in PF_9]: any; } ? never : keyof { [PF_10 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"][PF_6]["children"][PF_7]["children"][PF_8]["children"][PF_9]["children"] as PF_9 | (PF_10 extends string ? `${PF_9}.${any}` : never)]: any; } : never : never : PF_9}` : never)]: any; } : never : never : PF_8}` : never)]: any; } : never : never : PF_7}` : never)]: any; } : never : never : PF_6}` : never)]: any; } : never : never : PF_5}` : never)]: any; } : never : never : PF_4}` : never)]: any; } : never : never : PF_3}` : never)]: any; } : never : never : PF_2}` : never)]: any; } : never : never : PF_1}` : never)]: any; } : never : never : PF}` : never)]: any; } : never : never : P : never]: any; }>(route: TKey, params?: TRouteParams<TRoutesConfig, TKey> | undefined, { hasDomain }?: IRouterUrlOptions) => string;
/**
* Get URL path for router
*/
path: <TKey extends keyof { [P in keyof TRoutesConfig as P extends string ? TRoutesConfig[P] extends {
children: TRouterConfig;
} ? {} extends infer T ? T extends {} ? T extends { [key in P]: any; } ? never : keyof { [PF in keyof TRoutesConfig[P]["children"] as P | (PF extends string ? `${P}.${TRoutesConfig[P]["children"][PF] extends {
children: TRouterConfig;
} ? { [key_1 in P | keyof T]: any; } extends infer T_1 ? T_1 extends { [key_1 in P | keyof T]: any; } ? T_1 extends { [key_2 in PF]: any; } ? never : keyof { [PF_1 in keyof TRoutesConfig[P]["children"][PF]["children"] as PF | (PF_1 extends string ? `${PF}.${TRoutesConfig[P]["children"][PF]["children"][PF_1] extends {
children: TRouterConfig;
} ? { [key_3 in PF | keyof T_1]: any; } extends infer T_2 ? T_2 extends { [key_3 in PF | keyof T_1]: any; } ? T_2 extends { [key_4 in PF_1]: any; } ? never : keyof { [PF_2 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"] as PF_1 | (PF_2 extends string ? `${PF_1}.${TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2] extends {
children: TRouterConfig;
} ? { [key_5 in PF_1 | keyof T_2]: any; } extends infer T_3 ? T_3 extends { [key_5 in PF_1 | keyof T_2]: any; } ? T_3 extends { [key_6 in PF_2]: any; } ? never : keyof { [PF_3 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"] as PF_2 | (PF_3 extends string ? `${PF_2}.${TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3] extends {
children: TRouterConfig;
} ? { [key_7 in PF_2 | keyof T_3]: any; } extends infer T_4 ? T_4 extends { [key_7 in PF_2 | keyof T_3]: any; } ? T_4 extends { [key_8 in PF_3]: any; } ? never : keyof { [PF_4 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"] as PF_3 | (PF_4 extends string ? `${PF_3}.${TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4] extends {
children: TRouterConfig;
} ? { [key_9 in PF_3 | keyof T_4]: any; } extends infer T_5 ? T_5 extends { [key_9 in PF_3 | keyof T_4]: any; } ? T_5 extends { [key_10 in PF_4]: any; } ? never : keyof { [PF_5 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"] as PF_4 | (PF_5 extends string ? `${PF_4}.${TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5] extends {
children: TRouterConfig;
} ? { [key_11 in PF_4 | keyof T_5]: any; } extends infer T_6 ? T_6 extends { [key_11 in PF_4 | keyof T_5]: any; } ? T_6 extends { [key_12 in PF_5]: any; } ? never : keyof { [PF_6 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"] as PF_5 | (PF_6 extends string ? `${PF_5}.${TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"][PF_6] extends {
children: TRouterConfig;
} ? { [key_13 in PF_5 | keyof T_6]: any; } extends infer T_7 ? T_7 extends { [key_13 in PF_5 | keyof T_6]: any; } ? T_7 extends { [key_14 in PF_6]: any; } ? never : keyof { [PF_7 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"][PF_6]["children"] as PF_6 | (PF_7 extends string ? `${PF_6}.${TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"][PF_6]["children"][PF_7] extends {
children: TRouterConfig;
} ? { [key_15 in PF_6 | keyof T_7]: any; } extends infer T_8 ? T_8 extends { [key_15 in PF_6 | keyof T_7]: any; } ? T_8 extends { [key_16 in PF_7]: any; } ? never : keyof { [PF_8 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"][PF_6]["children"][PF_7]["children"] as PF_7 | (PF_8 extends string ? `${PF_7}.${TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"][PF_6]["children"][PF_7]["children"][PF_8] extends {
children: TRouterConfig;
} ? { [key_17 in PF_7 | keyof T_8]: any; } extends infer T_9 ? T_9 extends { [key_17 in PF_7 | keyof T_8]: any; } ? T_9 extends { [key_18 in PF_8]: any; } ? never : keyof { [PF_9 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"][PF_6]["children"][PF_7]["children"][PF_8]["children"] as PF_8 | (PF_9 extends string ? `${PF_8}.${TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"][PF_6]["children"][PF_7]["children"][PF_8]["children"][PF_9] extends {
children: TRouterConfig;
} ? { [key_19 in PF_8 | keyof T_9]: any; } extends infer T_10 ? T_10 extends { [key_19 in PF_8 | keyof T_9]: any; } ? T_10 extends { [key_20 in PF_9]: any; } ? never : keyof { [PF_10 in keyof TRoutesConfig[P]["children"][PF]["children"][PF_1]["children"][PF_2]["children"][PF_3]["children"][PF_4]["children"][PF_5]["children"][PF_6]["children"][PF_7]["children"][PF_8]["children"][PF_9]["children"] as PF_9 | (PF_10 extends string ? `${PF_9}.${any}` : never)]: any; } : never : never : PF_9}` : never)]: any; } : never : never : PF_8}` : never)]: any; } : never : never : PF_7}` : never)]: any; } : never : never : PF_6}` : never)]: any; } : never : never : PF_5}` : never)]: any; } : never : never : PF_4}` : never)]: any; } : never : never : PF_3}` : never)]: any; } : never : never : PF_2}` : never)]: any; } : never : never : PF_1}` : never)]: any; } : never : never : PF}` : never)]: any; } : never : never : P : never]: any; }>(route: TKey, { isFullPath, hasLeadingSlash }?: IRouteUrlOptions) => string;
/**
* Get static app URLs (without params)
*/
/**
* Get static app URLs (without params)
*/
getAllStaticURLs<TKey extends TRouteKeys<TRoutesConfig>>(route?: TKey): string[];
}
export { Manager as default };