UNPKG

1.06 kBTypeScriptView Raw
1
2import { Normalize } from "./utils.js";
3import { RouteModule } from "./route-module.js";
4import { GetActionData, GetLoaderData } from "./route-data.js";
5import { GetAnnotations } from "./route-module-annotations.js";
6import { Register } from "react-router";
7
8//#region lib/types/internal.d.ts
9type AnyParams = Record<string, string | undefined>;
10type AnyPages = Record<string, {
11 params: AnyParams;
12}>;
13type Pages = Register extends {
14 pages: infer Registered extends AnyPages;
15} ? Registered : AnyPages;
16type AnyRouteFiles = Record<string, {
17 id: string;
18 page: string;
19}>;
20type RouteFiles = Register extends {
21 routeFiles: infer Registered extends AnyRouteFiles;
22} ? Registered : AnyRouteFiles;
23type Params<RouteFile extends keyof RouteFiles> = Normalize<Pages[RouteFiles[RouteFile]["page"]]["params"]>;
24type 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//#endregion
33export { type GetAnnotations, GetInfo };
\No newline at end of file