UNPKG

4.71 kBTypeScriptView Raw
1import { av as LinkDescriptor, as as MetaDescriptor, aJ as ServerDataFrom, aK as ClientDataFrom, aL as Func, aM as Equal, aN as Pretty } from '../../route-data-aSUFWnQ6.js';
2import { A as AppLoadContext } from '../../data-CQbyyGzl.js';
3import 'react';
4
5type IsDefined<T> = Equal<T, undefined> extends true ? false : true;
6type RouteModule = {
7 meta?: Func;
8 links?: Func;
9 headers?: Func;
10 loader?: Func;
11 clientLoader?: Func;
12 action?: Func;
13 clientAction?: Func;
14 HydrateFallback?: unknown;
15 default?: unknown;
16 ErrorBoundary?: unknown;
17 [key: string]: unknown;
18};
19type LinkDescriptors = LinkDescriptor[];
20type RouteInfo = {
21 parents: RouteInfo[];
22 module: RouteModule;
23 id: unknown;
24 file: string;
25 path: string;
26 params: unknown;
27 loaderData: unknown;
28 actionData: unknown;
29};
30type MetaMatch<T extends RouteInfo> = Pretty<Pick<T, "id" | "params"> & {
31 pathname: string;
32 meta: MetaDescriptor[];
33 data: T["loaderData"];
34 handle?: unknown;
35 error?: unknown;
36}>;
37type MetaMatches<T extends RouteInfo[]> = T extends [infer F extends RouteInfo, ...infer R extends RouteInfo[]] ? [MetaMatch<F>, ...MetaMatches<R>] : Array<MetaMatch<RouteInfo> | undefined>;
38type CreateMetaArgs<T extends RouteInfo> = {
39 location: Location;
40 params: T["params"];
41 data: T["loaderData"];
42 error?: unknown;
43 matches: MetaMatches<[...T["parents"], T]>;
44};
45type MetaDescriptors = MetaDescriptor[];
46type HeadersArgs = {
47 loaderHeaders: Headers;
48 parentHeaders: Headers;
49 actionHeaders: Headers;
50 errorHeaders: Headers | undefined;
51};
52type IsHydrate<ClientLoader> = ClientLoader extends {
53 hydrate: true;
54} ? true : ClientLoader extends {
55 hydrate: false;
56} ? false : false;
57type CreateLoaderData<T extends RouteModule> = _CreateLoaderData<ServerDataFrom<T["loader"]>, ClientDataFrom<T["clientLoader"]>, IsHydrate<T["clientLoader"]>, T extends {
58 HydrateFallback: Func;
59} ? true : false>;
60type _CreateLoaderData<ServerLoaderData, ClientLoaderData, ClientLoaderHydrate extends boolean, HasHydrateFallback> = [
61 HasHydrateFallback,
62 ClientLoaderHydrate
63] extends [true, true] ? IsDefined<ClientLoaderData> extends true ? ClientLoaderData : undefined : [
64 IsDefined<ClientLoaderData>,
65 IsDefined<ServerLoaderData>
66] extends [true, true] ? ServerLoaderData | ClientLoaderData : IsDefined<ClientLoaderData> extends true ? ClientLoaderData : IsDefined<ServerLoaderData> extends true ? ServerLoaderData : undefined;
67type CreateActionData<T extends RouteModule> = _CreateActionData<ServerDataFrom<T["action"]>, ClientDataFrom<T["clientAction"]>>;
68type _CreateActionData<ServerActionData, ClientActionData> = Awaited<[
69 IsDefined<ServerActionData>,
70 IsDefined<ClientActionData>
71] extends [true, true] ? ServerActionData | ClientActionData : IsDefined<ClientActionData> extends true ? ClientActionData : IsDefined<ServerActionData> extends true ? ServerActionData : undefined>;
72type ClientDataFunctionArgs<T extends RouteInfo> = {
73 request: Request;
74 params: T["params"];
75};
76type ServerDataFunctionArgs<T extends RouteInfo> = ClientDataFunctionArgs<T> & {
77 context: AppLoadContext;
78};
79type CreateServerLoaderArgs<T extends RouteInfo> = ServerDataFunctionArgs<T>;
80type CreateClientLoaderArgs<T extends RouteInfo> = ClientDataFunctionArgs<T> & {
81 serverLoader: () => Promise<ServerDataFrom<T["module"]["loader"]>>;
82};
83type CreateServerActionArgs<T extends RouteInfo> = ServerDataFunctionArgs<T>;
84type CreateClientActionArgs<T extends RouteInfo> = ClientDataFunctionArgs<T> & {
85 serverAction: () => Promise<ServerDataFrom<T["module"]["action"]>>;
86};
87type CreateHydrateFallbackProps<T extends RouteInfo> = {
88 params: T["params"];
89};
90type Match<T extends RouteInfo> = Pretty<Pick<T, "id" | "params"> & {
91 pathname: string;
92 data: T["loaderData"];
93 handle: unknown;
94}>;
95type Matches<T extends RouteInfo[]> = T extends [infer F extends RouteInfo, ...infer R extends RouteInfo[]] ? [Match<F>, ...Matches<R>] : Array<Match<RouteInfo> | undefined>;
96type CreateComponentProps<T extends RouteInfo> = {
97 params: T["params"];
98 loaderData: T["loaderData"];
99 actionData?: T["actionData"];
100 matches: Matches<[...T["parents"], T]>;
101};
102type CreateErrorBoundaryProps<T extends RouteInfo> = {
103 params: T["params"];
104 error: unknown;
105 loaderData?: T["loaderData"];
106 actionData?: T["actionData"];
107};
108
109export type { CreateActionData, CreateClientActionArgs, CreateClientLoaderArgs, CreateComponentProps, CreateErrorBoundaryProps, CreateHydrateFallbackProps, CreateLoaderData, CreateMetaArgs, CreateServerActionArgs, CreateServerLoaderArgs, HeadersArgs, LinkDescriptors, MetaDescriptors };