Skip to content
114 changes: 9 additions & 105 deletions packages/react-router/src/Matches.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,111 +11,30 @@ import type {
StructuralSharingOption,
ValidateSelected,
} from './structuralSharing'
import type { AnyRoute, ReactNode } from './route'
import type { ReactNode } from './route'
import type {
AllContext,
AllLoaderData,
AllParams,
ControlledPromise,
DeepPartial,
FullSearchSchema,
MakeOptionalPathParams,
MakeOptionalSearchParams,
MakeRouteMatchUnion,
MaskOptions,
NoInfer,
ParseRoute,
ResolveRelativePath,
ResolveRoute,
RouteById,
RouteByPath,
RouteIds,
StaticDataRouteOption,
ToSubOptionsProps,
} from '@tanstack/router-core'
import type { AnyRouter, RegisteredRouter, RouterState } from './router'

export type MakeRouteMatchFromRoute<TRoute extends AnyRoute> = RouteMatch<
TRoute['types']['id'],
TRoute['types']['fullPath'],
TRoute['types']['allParams'],
TRoute['types']['fullSearchSchema'],
TRoute['types']['loaderData'],
TRoute['types']['allContext'],
TRoute['types']['loaderDeps']
>

export interface RouteMatch<
out TRouteId,
out TFullPath,
out TAllParams,
out TFullSearchSchema,
out TLoaderData,
out TAllContext,
out TLoaderDeps,
> {
id: string
routeId: TRouteId
fullPath: TFullPath
index: number
pathname: string
params: TAllParams
_strictParams: TAllParams
status: 'pending' | 'success' | 'error' | 'redirected' | 'notFound'
isFetching: false | 'beforeLoad' | 'loader'
error: unknown
paramsError: unknown
searchError: unknown
updatedAt: number
loadPromise?: ControlledPromise<void>
beforeLoadPromise?: ControlledPromise<void>
loaderPromise?: ControlledPromise<void>
loaderData?: TLoaderData
__routeContext: Record<string, unknown>
__beforeLoadContext: Record<string, unknown>
context: TAllContext
search: TFullSearchSchema
_strictSearch: TFullSearchSchema
fetchCount: number
abortController: AbortController
cause: 'preload' | 'enter' | 'stay'
loaderDeps: TLoaderDeps
preload: boolean
invalid: boolean
meta?: Array<React.JSX.IntrinsicElements['meta'] | undefined>
links?: Array<React.JSX.IntrinsicElements['link'] | undefined>
scripts?: Array<React.JSX.IntrinsicElements['script'] | undefined>
headScripts?: Array<React.JSX.IntrinsicElements['script'] | undefined>
headers?: Record<string, string>
globalNotFound?: boolean
staticData: StaticDataRouteOption
minPendingPromise?: ControlledPromise<void>
pendingTimeout?: ReturnType<typeof setTimeout>
declare module '@tanstack/router-core' {
export interface RouteMatchExtensions {
meta?: Array<React.JSX.IntrinsicElements['meta'] | undefined>
links?: Array<React.JSX.IntrinsicElements['link'] | undefined>
scripts?: Array<React.JSX.IntrinsicElements['script'] | undefined>
headScripts?: Array<React.JSX.IntrinsicElements['script'] | undefined>
}
}

export type MakeRouteMatch<
TRouteTree extends AnyRoute = RegisteredRouter['routeTree'],
TRouteId = RouteIds<TRouteTree>,
TStrict extends boolean = true,
> = RouteMatch<
TRouteId,
RouteById<TRouteTree, TRouteId>['types']['fullPath'],
TStrict extends false
? AllParams<TRouteTree>
: RouteById<TRouteTree, TRouteId>['types']['allParams'],
TStrict extends false
? FullSearchSchema<TRouteTree>
: RouteById<TRouteTree, TRouteId>['types']['fullSearchSchema'],
TStrict extends false
? AllLoaderData<TRouteTree>
: RouteById<TRouteTree, TRouteId>['types']['loaderData'],
TStrict extends false
? AllContext<TRouteTree>
: RouteById<TRouteTree, TRouteId>['types']['allContext'],
RouteById<TRouteTree, TRouteId>['types']['loaderDeps']
>

export type AnyRouteMatch = RouteMatch<any, any, any, any, any, any, any>

export function Matches() {
const router = useRouter()

Expand Down Expand Up @@ -257,21 +176,6 @@ export function MatchRoute<
return params ? props.children : null
}

export type MakeRouteMatchUnion<
TRouter extends AnyRouter = RegisteredRouter,
TRoute extends AnyRoute = ParseRoute<TRouter['routeTree']>,
> = TRoute extends any
? RouteMatch<
TRoute['id'],
TRoute['fullPath'],
TRoute['types']['allParams'],
TRoute['types']['fullSearchSchema'],
TRoute['types']['loaderData'],
TRoute['types']['allContext'],
TRoute['types']['loaderDeps']
>
: never

export interface UseMatchesBaseOptions<
TRouter extends AnyRouter,
TSelected,
Expand Down
12 changes: 4 additions & 8 deletions packages/react-router/src/fileRoute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,7 @@ import type { UseParamsRoute } from './useParams'
import type { UseMatchRoute } from './useMatch'
import type { UseSearchRoute } from './useSearch'

import type {
AnyRoute,
FileBaseRouteOptions,
Route,
RouteConstraints,
RouteLoaderFn,
UpdatableRouteOptions,
} from './route'
import type { AnyRoute, Route, RouteConstraints } from './route'
import type { RegisteredRouter } from './router'
import type {
AnyContext,
Expand All @@ -28,10 +21,13 @@ import type {
AnyValidator,
Constrain,
ConstrainLiteral,
FileBaseRouteOptions,
FileRoutesByPath,
ResolveParams,
RouteById,
RouteIds,
RouteLoaderFn,
UpdatableRouteOptions,
} from '@tanstack/router-core'
import type { UseLoaderDepsRoute } from './useLoaderDeps'
import type { UseLoaderDataRoute } from './useLoaderData'
Expand Down
32 changes: 16 additions & 16 deletions packages/react-router/src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ export type {
ValidatorObj,
FileRoutesByPath,
RouteById,
RootRouteOptions,
} from '@tanstack/router-core'

export {
Expand Down Expand Up @@ -199,6 +200,21 @@ export type {
AnyRedirect,
Redirect,
ResolvedRedirect,
MakeRouteMatch,
MakeRouteMatchUnion,
RouteMatch,
AnyRouteMatch,
RouteContextFn,
RouteContextOptions,
BeforeLoadFn,
BeforeLoadContextOptions,
ContextOptions,
RouteOptions,
FileBaseRouteOptions,
BaseRouteOptions,
UpdatableRouteOptions,
RouteLoaderFn,
LoaderFnContext,
} from '@tanstack/router-core'
export type {
UseLinkPropsOptions,
Expand All @@ -219,13 +235,9 @@ export {
} from './Matches'

export type {
RouteMatch,
AnyRouteMatch,
MatchRouteOptions,
UseMatchRouteOptions,
MakeMatchRouteOptions,
MakeRouteMatch,
MakeRouteMatchUnion,
} from './Matches'

export { matchContext } from './matchContext'
Expand All @@ -250,12 +262,6 @@ export {
NotFoundRoute,
} from './route'
export type {
RouteOptions,
FileBaseRouteOptions,
BaseRouteOptions,
UpdatableRouteOptions,
RouteLoaderFn,
LoaderFnContext,
AnyRoute,
RouteConstraints,
AnyRootRoute,
Expand All @@ -266,12 +272,6 @@ export type {
RouteComponent,
ErrorRouteComponent,
NotFoundRouteComponent,
RootRouteOptions,
RouteContextFn,
RouteContextOptions,
BeforeLoadFn,
BeforeLoadContextOptions,
ContextOptions,
} from './route'

export {
Expand Down
Loading