| 1 |
|
| 2 | import { Normalize } from "./utils.js";
|
| 3 | import { RouteModule } from "./route-module.js";
|
| 4 | import { GetActionData, GetLoaderData } from "./route-data.js";
|
| 5 | import { GetAnnotations } from "./route-module-annotations.js";
|
| 6 | import { Register } from "react-router";
|
| 7 |
|
| 8 |
|
| 9 | type AnyParams = Record<string, string | undefined>;
|
| 10 | type AnyPages = Record<string, {
|
| 11 | params: AnyParams;
|
| 12 | }>;
|
| 13 | type Pages = Register extends {
|
| 14 | pages: infer Registered extends AnyPages;
|
| 15 | } ? Registered : AnyPages;
|
| 16 | type AnyRouteFiles = Record<string, {
|
| 17 | id: string;
|
| 18 | page: string;
|
| 19 | }>;
|
| 20 | type RouteFiles = Register extends {
|
| 21 | routeFiles: infer Registered extends AnyRouteFiles;
|
| 22 | } ? Registered : AnyRouteFiles;
|
| 23 | type Params<RouteFile extends keyof RouteFiles> = Normalize<Pages[RouteFiles[RouteFile]["page"]]["params"]>;
|
| 24 | type GetInfo<T extends {
|
| 25 | file: keyof RouteFiles;
|
| 26 | module: RouteModule;
|
| 27 | }> = {
|
| 28 | params: Params<T["file"]>;
|
| 29 | loaderData: GetLoaderData<T["module"]>;
|
| 30 | actionData: GetActionData<T["module"]>;
|
| 31 | };
|
| 32 |
|
| 33 | export { type GetAnnotations, GetInfo }; |
| \ | No newline at end of file |