From 85acbaac1b1636add3d3d41fda168e44e1018ab9 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Fri, 15 Dec 2023 16:53:15 -0700 Subject: [PATCH] fix: typesafe buildLocation --- packages/react-router/src/RouterProvider.tsx | 2 +- packages/react-router/src/route.ts | 2 +- packages/react-router/src/router.ts | 7 ++++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/react-router/src/RouterProvider.tsx b/packages/react-router/src/RouterProvider.tsx index 19b5739434..53d6355964 100644 --- a/packages/react-router/src/RouterProvider.tsx +++ b/packages/react-router/src/RouterProvider.tsx @@ -49,7 +49,7 @@ export type MatchRouteFn = < ) => false | RouteById['types']['allParams'] export type BuildLocationFn = ( - opts: BuildNextOptions, + opts: ToOptions, ) => ParsedLocation export type InjectedHtmlEntry = string | (() => Promise | string) diff --git a/packages/react-router/src/route.ts b/packages/react-router/src/route.ts index 0a847369cf..e8da615daf 100644 --- a/packages/react-router/src/route.ts +++ b/packages/react-router/src/route.ts @@ -169,7 +169,7 @@ type BeforeLoadFn< context: TParentRoute['types']['allContext'] location: ParsedLocation navigate: NavigateFn - buildLocation: BuildLocationFn + buildLocation: BuildLocationFn cause: 'preload' | 'enter' | 'stay' }) => Promise | TRouteContext | void diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts index 6a63073841..a74886464c 100644 --- a/packages/react-router/src/router.ts +++ b/packages/react-router/src/router.ts @@ -59,6 +59,7 @@ import { } from './path' import invariant from 'tiny-invariant' import { isRedirect } from './redirects' +import { ToOptions } from './link' // import warning from 'tiny-warning' // @@ -937,7 +938,7 @@ export class Router< startTransition, ...rest }: BuildNextOptions & CommitLocationOptions = {}) => { - const location = this.buildLocation(rest) + const location = this.buildLocation(rest as any) return this.commitLocation({ ...location, startTransition, @@ -1461,9 +1462,9 @@ export class Router< } preloadRoute = async ( - navigateOpts: BuildNextOptions = this.state.location, + navigateOpts: ToOptions = this.state.location as any, ) => { - let next = this.buildLocation(navigateOpts) + let next = this.buildLocation(navigateOpts as any) let matches = this.matchRoutes(next.pathname, next.search, { throwOnError: true,