Skip to content

Commit

Permalink
clientLoader.hydrate types
Browse files Browse the repository at this point in the history
requires `as const` like: `clientLoader.hydrate = true as const`
  • Loading branch information
pcattori committed Sep 28, 2024
1 parent 07f9b5e commit 197c225
Showing 1 changed file with 43 additions and 3 deletions.
46 changes: 43 additions & 3 deletions packages/react-router/lib/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,17 @@ type DataFrom<T> =
type ServerDataFrom<T> = Serialize<DataFrom<T>>;
type ClientDataFrom<T> = DataFrom<T>;

// prettier-ignore
type IsHydrate<ClientLoader> =
ClientLoader extends { hydrate: true } ? true :
ClientLoader extends { hydrate: false } ? false :
false

export type CreateLoaderData<T extends RouteModule> = _CreateLoaderData<
ServerDataFrom<T["loader"]>,
ClientDataFrom<T["clientLoader"]>,
false, // TODO
IsAny<T["HydrateFallback"]> extends true ? false : true
IsHydrate<T["clientLoader"]>,
T extends { HydrateFallback: () => unknown } ? true : false
>;

// prettier-ignore
Expand Down Expand Up @@ -187,7 +193,41 @@ type __tests = [
| { d: string; e: Date; f: () => boolean }
>
>,
// TODO: tests w/ ClientLoaderHydrate
Expect<
Equal<
CreateLoaderData<{
loader: () => { a: string; b: Date; c: () => boolean };
clientLoader: () => { d: string; e: Date; f: () => boolean };
HydrateFallback: () => unknown;
}>,
| { a: string; b: Date; c: undefined }
| { d: string; e: Date; f: () => boolean }
>
>,
Expect<
Equal<
CreateLoaderData<{
loader: () => { a: string; b: Date; c: () => boolean };
clientLoader: (() => { d: string; e: Date; f: () => boolean }) & {
hydrate: true;
};
}>,
| { a: string; b: Date; c: undefined }
| { d: string; e: Date; f: () => boolean }
>
>,
Expect<
Equal<
CreateLoaderData<{
loader: () => { a: string; b: Date; c: () => boolean };
clientLoader: (() => { d: string; e: Date; f: () => boolean }) & {
hydrate: true;
};
HydrateFallback: () => unknown;
}>,
{ d: string; e: Date; f: () => boolean }
>
>,

// ActionData
Expect<Equal<CreateActionData<{}>, undefined>>,
Expand Down

0 comments on commit 197c225

Please sign in to comment.