@tanstack/router-core 0.0.1-beta.147 → 0.0.1-beta.148
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/router.js +25 -16
- package/build/cjs/router.js.map +1 -1
- package/build/esm/index.js +25 -16
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +116 -116
- package/build/umd/index.development.js +25 -16
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +2 -2
- package/build/umd/index.production.js.map +1 -1
- package/package.json +2 -2
- package/src/router.ts +63 -55
package/build/cjs/router.js
CHANGED
|
@@ -428,26 +428,28 @@ class Router {
|
|
|
428
428
|
};
|
|
429
429
|
loadMatches = async (resolvedMatches, opts) => {
|
|
430
430
|
this.cleanMatches();
|
|
431
|
+
if (!opts?.preload) {
|
|
432
|
+
resolvedMatches.forEach(match => {
|
|
433
|
+
// Update each match with its latest url data
|
|
434
|
+
this.setRouteMatch(match.id, s => ({
|
|
435
|
+
...s,
|
|
436
|
+
routeSearch: match.routeSearch,
|
|
437
|
+
search: match.search,
|
|
438
|
+
routeContext: match.routeContext,
|
|
439
|
+
context: match.context,
|
|
440
|
+
error: match.error,
|
|
441
|
+
paramsError: match.paramsError,
|
|
442
|
+
searchError: match.searchError,
|
|
443
|
+
params: match.params
|
|
444
|
+
}));
|
|
445
|
+
});
|
|
446
|
+
}
|
|
431
447
|
let firstBadMatchIndex;
|
|
432
448
|
|
|
433
449
|
// Check each match middleware to see if the route can be accessed
|
|
434
450
|
try {
|
|
435
|
-
|
|
451
|
+
for (const [index, match] of resolvedMatches.entries()) {
|
|
436
452
|
const route = this.getRoute(match.routeId);
|
|
437
|
-
if (!opts?.preload) {
|
|
438
|
-
// Update each match with its latest url data
|
|
439
|
-
this.setRouteMatch(match.id, s => ({
|
|
440
|
-
...s,
|
|
441
|
-
routeSearch: match.routeSearch,
|
|
442
|
-
search: match.search,
|
|
443
|
-
routeContext: match.routeContext,
|
|
444
|
-
context: match.context,
|
|
445
|
-
error: match.error,
|
|
446
|
-
paramsError: match.paramsError,
|
|
447
|
-
searchError: match.searchError,
|
|
448
|
-
params: match.params
|
|
449
|
-
}));
|
|
450
|
-
}
|
|
451
453
|
const handleError = (err, handler) => {
|
|
452
454
|
firstBadMatchIndex = firstBadMatchIndex ?? index;
|
|
453
455
|
handler = handler || route.options.onError;
|
|
@@ -475,6 +477,7 @@ class Router {
|
|
|
475
477
|
if (match.searchError) {
|
|
476
478
|
handleError(match.searchError, route.options.onValidateSearchError);
|
|
477
479
|
}
|
|
480
|
+
let didError = false;
|
|
478
481
|
try {
|
|
479
482
|
await route.options.beforeLoad?.({
|
|
480
483
|
...match,
|
|
@@ -482,8 +485,14 @@ class Router {
|
|
|
482
485
|
});
|
|
483
486
|
} catch (err) {
|
|
484
487
|
handleError(err, route.options.onBeforeLoadError);
|
|
488
|
+
didError = true;
|
|
485
489
|
}
|
|
486
|
-
|
|
490
|
+
|
|
491
|
+
// If we errored, do not run the next matches' middleware
|
|
492
|
+
if (didError) {
|
|
493
|
+
break;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
487
496
|
} catch (err) {
|
|
488
497
|
if (!opts?.preload) {
|
|
489
498
|
this.navigate(err);
|
package/build/cjs/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sources":["../../src/router.ts"],"sourcesContent":["import { Store } from '@tanstack/react-store'\nimport invariant from 'tiny-invariant'\n\n//\n\nimport {\n LinkInfo,\n LinkOptions,\n NavigateOptions,\n ToOptions,\n ResolveRelativePath,\n} from './link'\nimport {\n cleanPath,\n interpolatePath,\n joinPaths,\n matchPathname,\n parsePathname,\n resolvePath,\n trimPath,\n trimPathRight,\n} from './path'\nimport {\n Route,\n AnySearchSchema,\n AnyRoute,\n RootRoute,\n AnyContext,\n AnyPathParams,\n RouteProps,\n RegisteredRouteComponent,\n RegisteredRouteErrorComponent,\n} from './route'\nimport {\n RoutesInfo,\n AnyRoutesInfo,\n RoutesById,\n RoutesByPath,\n DefaultRoutesInfo,\n} from './routeInfo'\nimport { defaultParseSearch, defaultStringifySearch } from './searchParams'\nimport {\n functionalUpdate,\n last,\n NoInfer,\n pick,\n PickAsRequired,\n Timeout,\n Updater,\n replaceEqualDeep,\n partialDeepEqual,\n} from './utils'\nimport {\n createBrowserHistory,\n createMemoryHistory,\n RouterHistory,\n} from './history'\n\n//\n\ndeclare global {\n interface Window {\n __TSR_DEHYDRATED__?: HydrationCtx\n }\n}\n\nexport interface Register {\n // router: Router\n}\n\nexport type AnyRouter = Router<any, any, any>\n\nexport type RegisteredRouterPair = Register extends {\n router: infer TRouter extends AnyRouter\n}\n ? [TRouter, TRouter['types']['RoutesInfo']]\n : [Router, AnyRoutesInfo]\n\nexport type RegisteredRouter = RegisteredRouterPair[0]\nexport type RegisteredRoutesInfo = RegisteredRouterPair[1]\n\nexport interface LocationState {}\n\nexport interface ParsedLocation<\n TSearchObj extends AnySearchSchema = {},\n TState extends LocationState = LocationState,\n> {\n href: string\n pathname: string\n search: TSearchObj\n searchStr: string\n state: TState\n hash: string\n key?: string\n}\n\nexport interface FromLocation {\n pathname: string\n search?: unknown\n key?: string\n hash?: string\n}\n\nexport type SearchSerializer = (searchObj: Record<string, any>) => string\nexport type SearchParser = (searchStr: string) => Record<string, any>\n\nexport type HydrationCtx = {\n router: DehydratedRouter\n payload: Record<string, any>\n}\n\nexport interface RouteMatch<\n TRoutesInfo extends AnyRoutesInfo = DefaultRoutesInfo,\n TRoute extends AnyRoute = Route,\n> {\n id: string\n key?: string\n routeId: string\n pathname: string\n params: TRoute['__types']['allParams']\n status: 'idle' | 'pending' | 'success' | 'error'\n isFetching: boolean\n invalid: boolean\n error: unknown\n paramsError: unknown\n searchError: unknown\n updatedAt: number\n invalidAt: number\n preloadInvalidAt: number\n loaderData: TRoute['__types']['loader']\n loadPromise?: Promise<void>\n __resolveLoadPromise?: () => void\n routeContext: TRoute['__types']['routeContext']\n context: TRoute['__types']['context']\n routeSearch: TRoute['__types']['searchSchema']\n search: TRoutesInfo['fullSearchSchema'] &\n TRoute['__types']['fullSearchSchema']\n fetchedAt: number\n abortController: AbortController\n}\n\nexport type AnyRouteMatch = RouteMatch<AnyRoutesInfo, AnyRoute>\n\nexport type RouterContextOptions<TRouteTree extends AnyRoute> =\n AnyContext extends TRouteTree['__types']['routerContext']\n ? {\n context?: TRouteTree['__types']['routerContext']\n }\n : {\n context: TRouteTree['__types']['routerContext']\n }\n\nexport interface RouterOptions<\n TRouteTree extends AnyRoute,\n TDehydrated extends Record<string, any>,\n> {\n history?: RouterHistory\n stringifySearch?: SearchSerializer\n parseSearch?: SearchParser\n defaultPreload?: false | 'intent'\n defaultPreloadDelay?: number\n defaultComponent?: RegisteredRouteComponent<\n RouteProps<unknown, AnySearchSchema, AnyPathParams, AnyContext, AnyContext>\n >\n defaultErrorComponent?: RegisteredRouteErrorComponent<\n RouteProps<unknown, AnySearchSchema, AnyPathParams, AnyContext, AnyContext>\n >\n defaultPendingComponent?: RegisteredRouteComponent<\n RouteProps<unknown, AnySearchSchema, AnyPathParams, AnyContext, AnyContext>\n >\n defaultMaxAge?: number\n defaultGcMaxAge?: number\n defaultPreloadMaxAge?: number\n caseSensitive?: boolean\n routeTree?: TRouteTree\n basepath?: string\n createRoute?: (opts: { route: AnyRoute; router: AnyRouter }) => void\n onRouteChange?: () => void\n context?: TRouteTree['__types']['routerContext']\n Wrap?: React.ComponentType<{\n children: React.ReactNode\n dehydratedState?: TDehydrated\n }>\n dehydrate?: () => TDehydrated\n hydrate?: (dehydrated: TDehydrated) => void\n}\n\nexport interface RouterState<\n TRoutesInfo extends AnyRoutesInfo = AnyRoutesInfo,\n TState extends LocationState = LocationState,\n> {\n status: 'idle' | 'pending'\n isFetching: boolean\n matchesById: Record<\n string,\n RouteMatch<TRoutesInfo, TRoutesInfo['routeIntersection']>\n >\n matchIds: string[]\n pendingMatchIds: string[]\n matches: RouteMatch<TRoutesInfo, TRoutesInfo['routeIntersection']>[]\n pendingMatches: RouteMatch<TRoutesInfo, TRoutesInfo['routeIntersection']>[]\n location: ParsedLocation<TRoutesInfo['fullSearchSchema'], TState>\n resolvedLocation: ParsedLocation<TRoutesInfo['fullSearchSchema'], TState>\n lastUpdated: number\n}\n\nexport type ListenerFn = () => void\n\nexport interface BuildNextOptions {\n to?: string | number | null\n params?: true | Updater<unknown>\n search?: true | Updater<unknown>\n hash?: true | Updater<string>\n state?: LocationState\n key?: string\n from?: string\n fromCurrent?: boolean\n __matches?: AnyRouteMatch[]\n}\n\nexport interface MatchLocation {\n to?: string | number | null\n fuzzy?: boolean\n caseSensitive?: boolean\n from?: string\n fromCurrent?: boolean\n}\n\nexport interface MatchRouteOptions {\n pending?: boolean\n caseSensitive?: boolean\n includeSearch?: boolean\n fuzzy?: boolean\n}\n\ntype LinkCurrentTargetElement = {\n preloadTimeout?: null | ReturnType<typeof setTimeout>\n}\n\nexport interface DehydratedRouterState\n extends Pick<RouterState, 'status' | 'location' | 'lastUpdated'> {}\n\nexport interface DehydratedRouter {\n state: DehydratedRouterState\n}\n\nexport type RouterConstructorOptions<\n TRouteTree extends AnyRoute,\n TDehydrated extends Record<string, any>,\n> = Omit<RouterOptions<TRouteTree, TDehydrated>, 'context'> &\n RouterContextOptions<TRouteTree>\n\nexport const componentTypes = [\n 'component',\n 'errorComponent',\n 'pendingComponent',\n] as const\n\nexport class Router<\n TRouteTree extends AnyRoute = AnyRoute,\n TRoutesInfo extends AnyRoutesInfo = RoutesInfo<TRouteTree>,\n TDehydrated extends Record<string, any> = Record<string, any>,\n> {\n types!: {\n RootRoute: TRouteTree\n RoutesInfo: TRoutesInfo\n }\n\n options: PickAsRequired<\n RouterOptions<TRouteTree, TDehydrated>,\n 'stringifySearch' | 'parseSearch' | 'context'\n >\n history!: RouterHistory\n #unsubHistory?: () => void\n basepath!: string\n routeTree!: RootRoute\n routesById!: RoutesById<TRoutesInfo>\n routesByPath!: RoutesByPath<TRoutesInfo>\n flatRoutes!: TRoutesInfo['routesByFullPath'][keyof TRoutesInfo['routesByFullPath']][]\n navigateTimeout: undefined | Timeout\n nextAction: undefined | 'push' | 'replace'\n navigationPromise: undefined | Promise<void>\n\n __store: Store<RouterState<TRoutesInfo>>\n state: RouterState<TRoutesInfo>\n dehydratedData?: TDehydrated\n\n constructor(options: RouterConstructorOptions<TRouteTree, TDehydrated>) {\n this.options = {\n defaultPreloadDelay: 50,\n context: undefined!,\n ...options,\n stringifySearch: options?.stringifySearch ?? defaultStringifySearch,\n parseSearch: options?.parseSearch ?? defaultParseSearch,\n // fetchServerDataFn: options?.fetchServerDataFn ?? defaultFetchServerDataFn,\n }\n\n this.__store = new Store<RouterState<TRoutesInfo>>(\n getInitialRouterState(),\n {\n onUpdate: () => {\n const prev = this.state\n\n this.state = this.__store.state\n\n const matchesByIdChanged = prev.matchesById !== this.state.matchesById\n let matchesChanged\n let pendingMatchesChanged\n\n if (!matchesByIdChanged) {\n matchesChanged =\n prev.matchIds.length !== this.state.matchIds.length ||\n prev.matchIds.some((d, i) => d !== this.state.matchIds[i])\n\n pendingMatchesChanged =\n prev.pendingMatchIds.length !==\n this.state.pendingMatchIds.length ||\n prev.pendingMatchIds.some(\n (d, i) => d !== this.state.pendingMatchIds[i],\n )\n }\n\n if (matchesByIdChanged || matchesChanged) {\n this.state.matches = this.state.matchIds.map((id) => {\n return this.state.matchesById[id] as any\n })\n }\n\n if (matchesByIdChanged || pendingMatchesChanged) {\n this.state.pendingMatches = this.state.pendingMatchIds.map((id) => {\n return this.state.matchesById[id] as any\n })\n }\n\n this.state.isFetching = [\n ...this.state.matches,\n ...this.state.pendingMatches,\n ].some((d) => d.isFetching)\n },\n defaultPriority: 'low',\n },\n )\n\n this.state = this.__store.state\n\n this.update(options)\n\n const next = this.buildNext({\n hash: true,\n fromCurrent: true,\n search: true,\n state: true,\n })\n\n if (this.state.location.href !== next.href) {\n this.#commitLocation({ ...next, replace: true })\n }\n }\n\n reset = () => {\n this.__store.setState((s) => Object.assign(s, getInitialRouterState()))\n }\n\n mount = () => {\n // If the router matches are empty, start loading the matches\n // if (!this.state.matches.length) {\n this.safeLoad()\n // }\n }\n\n update = (opts?: RouterOptions<any, any>): this => {\n this.options = {\n ...this.options,\n ...opts,\n context: {\n ...this.options.context,\n ...opts?.context,\n },\n }\n\n if (\n !this.history ||\n (this.options.history && this.options.history !== this.history)\n ) {\n if (this.#unsubHistory) {\n this.#unsubHistory()\n }\n\n this.history =\n this.options.history ??\n (isServer ? createMemoryHistory() : createBrowserHistory()!)\n\n const parsedLocation = this.#parseLocation()\n\n this.__store.setState((s) => ({\n ...s,\n resolvedLocation: parsedLocation,\n location: parsedLocation,\n }))\n\n this.#unsubHistory = this.history.listen(() => {\n this.safeLoad({\n next: this.#parseLocation(this.state.location),\n })\n })\n }\n\n const { basepath, routeTree } = this.options\n\n this.basepath = `/${trimPath(basepath ?? '') ?? ''}`\n\n if (routeTree && routeTree !== this.routeTree) {\n this.#buildRouteTree(routeTree)\n }\n\n return this\n }\n\n buildNext = (opts: BuildNextOptions): ParsedLocation => {\n const next = this.#buildLocation(opts)\n\n const __matches = this.matchRoutes(next.pathname, next.search)\n\n return this.#buildLocation({\n ...opts,\n __matches,\n })\n }\n\n cancelMatches = () => {\n this.state.matches.forEach((match) => {\n this.cancelMatch(match.id)\n })\n }\n\n cancelMatch = (id: string) => {\n this.getRouteMatch(id)?.abortController?.abort()\n }\n\n safeLoad = (opts?: { next?: ParsedLocation }) => {\n return this.load(opts).catch((err) => {\n // console.warn(err)\n // invariant(false, 'Encountered an error during router.load()! ☝️.')\n })\n }\n\n latestLoadPromise: Promise<void> = Promise.resolve()\n\n load = async (opts?: { next?: ParsedLocation; throwOnError?: boolean }) => {\n const promise = new Promise<void>(async (resolve, reject) => {\n let latestPromise: Promise<void> | undefined | null\n\n const checkLatest = (): undefined | Promise<void> | null => {\n return this.latestLoadPromise !== promise\n ? this.latestLoadPromise\n : undefined\n }\n\n // Cancel any pending matches\n // this.cancelMatches()\n\n let pendingMatches!: RouteMatch<any, any>[]\n\n this.__store.batch(() => {\n if (opts?.next) {\n // Ingest the new location\n this.__store.setState((s) => ({\n ...s,\n location: opts.next!,\n }))\n }\n\n // Match the routes\n pendingMatches = this.matchRoutes(\n this.state.location.pathname,\n this.state.location.search,\n {\n throwOnError: opts?.throwOnError,\n debug: true,\n },\n )\n\n this.__store.setState((s) => ({\n ...s,\n status: 'pending',\n pendingMatchIds: pendingMatches.map((d) => d.id),\n matchesById: this.#mergeMatches(s.matchesById, pendingMatches),\n }))\n })\n\n try {\n // Load the matches\n await this.loadMatches(pendingMatches)\n\n // Only apply the latest transition\n if ((latestPromise = checkLatest())) {\n return await latestPromise\n }\n\n const prevLocation = this.state.resolvedLocation\n\n this.__store.setState((s) => ({\n ...s,\n status: 'idle',\n resolvedLocation: s.location,\n matchIds: s.pendingMatchIds,\n pendingMatchIds: [],\n }))\n\n if (prevLocation!.href !== this.state.location.href) {\n this.options.onRouteChange?.()\n }\n\n resolve()\n } catch (err) {\n // Only apply the latest transition\n if ((latestPromise = checkLatest())) {\n return await latestPromise\n }\n\n reject(err)\n }\n })\n\n this.latestLoadPromise = promise\n\n return this.latestLoadPromise\n }\n\n #mergeMatches = (\n prevMatchesById: Record<\n string,\n RouteMatch<TRoutesInfo, TRoutesInfo['routeIntersection']>\n >,\n nextMatches: RouteMatch[],\n ): Record<\n string,\n RouteMatch<TRoutesInfo, TRoutesInfo['routeIntersection']>\n > => {\n const nextMatchesById: any = {\n ...prevMatchesById,\n }\n\n let hadNew = false\n\n nextMatches.forEach((match) => {\n if (!nextMatchesById[match.id]) {\n hadNew = true\n nextMatchesById[match.id] = match\n }\n })\n\n if (!hadNew) {\n return prevMatchesById\n }\n\n return nextMatchesById\n }\n\n getRoute = <TId extends keyof TRoutesInfo['routesById']>(\n id: TId,\n ): TRoutesInfo['routesById'][TId] => {\n const route = this.routesById[id]\n\n invariant(route, `Route with id \"${id as string}\" not found`)\n\n return route\n }\n\n preloadRoute = async (\n navigateOpts: BuildNextOptions & {\n maxAge?: number\n } = this.state.location,\n ) => {\n const next = this.buildNext(navigateOpts)\n const matches = this.matchRoutes(next.pathname, next.search, {\n throwOnError: true,\n })\n\n this.__store.setState((s) => {\n return {\n ...s,\n matchesById: this.#mergeMatches(s.matchesById, matches),\n }\n })\n\n await this.loadMatches(matches, {\n preload: true,\n maxAge: navigateOpts.maxAge,\n })\n\n return matches\n }\n\n cleanMatches = () => {\n const now = Date.now()\n\n const outdatedMatchIds = Object.values(this.state.matchesById)\n .filter((match) => {\n const route = this.getRoute(match.routeId)\n return (\n !this.state.matchIds.includes(match.id) &&\n !this.state.pendingMatchIds.includes(match.id) &&\n match.preloadInvalidAt < now &&\n (route.options.gcMaxAge\n ? match.updatedAt + route.options.gcMaxAge < now\n : true)\n )\n })\n .map((d) => d.id)\n\n if (outdatedMatchIds.length) {\n this.__store.setState((s) => {\n const matchesById = { ...s.matchesById }\n outdatedMatchIds.forEach((id) => {\n delete matchesById[id]\n })\n return {\n ...s,\n matchesById,\n }\n })\n }\n }\n\n matchRoutes = (\n pathname: string,\n locationSearch: AnySearchSchema,\n opts?: { throwOnError?: boolean; debug?: boolean },\n ): RouteMatch<TRoutesInfo, TRoutesInfo['routeIntersection']>[] => {\n let routeParams: AnyPathParams = {}\n\n let foundRoute = this.flatRoutes.find((route) => {\n const matchedParams = matchPathname(this.basepath, pathname, {\n to: route.fullPath,\n caseSensitive:\n route.options.caseSensitive ?? this.options.caseSensitive,\n })\n\n if (matchedParams) {\n routeParams = matchedParams\n return true\n }\n\n return false\n })\n\n let routeCursor = foundRoute || (this.routesById['__root__'] as any)\n\n let matchedRoutes: AnyRoute[] = [routeCursor]\n\n while (routeCursor?.parentRoute) {\n routeCursor = routeCursor.parentRoute\n if (routeCursor) matchedRoutes.unshift(routeCursor)\n }\n\n // Alright, by now we should have all of our\n // matching routes and their param pairs, let's\n // Turn them into actual `Match` objects and\n // accumulate the params into a single params bag\n let allParams = {}\n\n // Existing matches are matches that are already loaded along with\n // pending matches that are still loading\n\n const matches = matchedRoutes.map((route) => {\n let parsedParams\n let parsedParamsError\n\n try {\n parsedParams =\n (route.options.parseParams as any)?.(routeParams!) ?? routeParams\n // (typeof route.options.parseParams === 'object' &&\n // route.options.parseParams.parse\n // ? route.options.parseParams.parse(routeParams)\n // : (route.options.parseParams as any)?.(routeParams!)) ?? routeParams\n } catch (err: any) {\n parsedParamsError = new PathParamError(err.message, {\n cause: err,\n })\n\n if (opts?.throwOnError) {\n throw parsedParamsError\n }\n }\n\n // Add the parsed params to the accumulated params bag\n Object.assign(allParams, parsedParams)\n\n const interpolatedPath = interpolatePath(route.path, allParams)\n const key = route.options.key\n ? route.options.key({\n params: allParams,\n search: locationSearch,\n }) ?? ''\n : ''\n\n const stringifiedKey = key ? JSON.stringify(key) : ''\n\n const matchId =\n interpolatePath(route.id, allParams, true) + stringifiedKey\n\n // Waste not, want not. If we already have a match for this route,\n // reuse it. This is important for layout routes, which might stick\n // around between navigation actions that only change leaf routes.\n const existingMatch = this.getRouteMatch(matchId)\n\n if (existingMatch) {\n return { ...existingMatch }\n }\n\n // Create a fresh route match\n const hasLoaders = !!(\n route.options.loader ||\n componentTypes.some((d) => (route.options[d] as any)?.preload)\n )\n\n const routeMatch: RouteMatch = {\n id: matchId,\n key: stringifiedKey,\n routeId: route.id,\n params: allParams,\n pathname: joinPaths([this.basepath, interpolatedPath]),\n updatedAt: Date.now(),\n invalidAt: Infinity,\n preloadInvalidAt: Infinity,\n routeSearch: {},\n search: {} as any,\n status: hasLoaders ? 'idle' : 'success',\n isFetching: false,\n invalid: false,\n error: undefined,\n paramsError: parsedParamsError,\n searchError: undefined,\n loaderData: undefined,\n loadPromise: Promise.resolve(),\n routeContext: undefined!,\n context: undefined!,\n abortController: new AbortController(),\n fetchedAt: 0,\n }\n\n return routeMatch\n })\n\n // Take each match and resolve its search params and context\n // This has to happen after the matches are created or found\n // so that we can use the parent match's search params and context\n matches.forEach((match, i): any => {\n const parentMatch = matches[i - 1]\n const route = this.getRoute(match.routeId)\n\n const searchInfo = (() => {\n // Validate the search params and stabilize them\n const parentSearchInfo = {\n search: parentMatch?.search ?? locationSearch,\n routeSearch: parentMatch?.routeSearch ?? locationSearch,\n }\n\n try {\n const validator =\n typeof route.options.validateSearch === 'object'\n ? route.options.validateSearch.parse\n : route.options.validateSearch\n\n const routeSearch = validator?.(parentSearchInfo.search) ?? {}\n\n const search = {\n ...parentSearchInfo.search,\n ...routeSearch,\n }\n\n return {\n routeSearch: replaceEqualDeep(match.routeSearch, routeSearch),\n search: replaceEqualDeep(match.search, search),\n }\n } catch (err: any) {\n match.searchError = new SearchParamError(err.message, {\n cause: err,\n })\n\n if (opts?.throwOnError) {\n throw match.searchError\n }\n\n return parentSearchInfo\n }\n })()\n\n const contextInfo = (() => {\n try {\n const routeContext =\n route.options.getContext?.({\n parentContext: parentMatch?.routeContext ?? {},\n context: parentMatch?.context ?? this?.options.context ?? {},\n params: match.params,\n search: match.search,\n }) || ({} as any)\n\n const context = {\n ...(parentMatch?.context ?? this?.options.context),\n ...routeContext,\n } as any\n\n return {\n context,\n routeContext,\n }\n } catch (err) {\n route.options.onError?.(err)\n throw err\n }\n })()\n\n Object.assign(match, {\n ...searchInfo,\n ...contextInfo,\n })\n })\n\n return matches as any\n }\n\n loadMatches = async (\n resolvedMatches: AnyRouteMatch[],\n opts?: {\n preload?: boolean\n maxAge?: number\n },\n ) => {\n this.cleanMatches()\n\n let firstBadMatchIndex: number | undefined\n\n // Check each match middleware to see if the route can be accessed\n try {\n await Promise.all(\n resolvedMatches.map(async (match, index) => {\n const route = this.getRoute(match.routeId)\n\n if (!opts?.preload) {\n // Update each match with its latest url data\n this.setRouteMatch(match.id, (s) => ({\n ...s,\n routeSearch: match.routeSearch,\n search: match.search,\n routeContext: match.routeContext,\n context: match.context,\n error: match.error,\n paramsError: match.paramsError,\n searchError: match.searchError,\n params: match.params,\n }))\n }\n\n const handleError = (\n err: any,\n handler: undefined | ((err: any) => void),\n ) => {\n firstBadMatchIndex = firstBadMatchIndex ?? index\n handler = handler || route.options.onError\n\n if (isRedirect(err)) {\n throw err\n }\n\n try {\n handler?.(err)\n } catch (errorHandlerErr) {\n err = errorHandlerErr\n\n if (isRedirect(errorHandlerErr)) {\n throw errorHandlerErr\n }\n }\n\n this.setRouteMatch(match.id, (s) => ({\n ...s,\n error: err,\n status: 'error',\n updatedAt: Date.now(),\n }))\n }\n\n if (match.paramsError) {\n handleError(match.paramsError, route.options.onParseParamsError)\n }\n\n if (match.searchError) {\n handleError(match.searchError, route.options.onValidateSearchError)\n }\n\n try {\n await route.options.beforeLoad?.({\n ...match,\n preload: !!opts?.preload,\n })\n } catch (err) {\n handleError(err, route.options.onBeforeLoadError)\n }\n }),\n )\n } catch (err) {\n if (!opts?.preload) {\n this.navigate(err as any)\n }\n\n throw err\n }\n\n const validResolvedMatches = resolvedMatches.slice(0, firstBadMatchIndex)\n const matchPromises: Promise<any>[] = []\n\n validResolvedMatches.forEach((match, index) => {\n matchPromises.push(\n (async () => {\n const parentMatchPromise = matchPromises[index - 1]\n const route = this.getRoute(match.routeId)\n\n if (\n match.isFetching ||\n (match.status === 'success' &&\n !this.getIsInvalid({ matchId: match.id, preload: opts?.preload }))\n ) {\n return this.getRouteMatch(match.id)?.loadPromise\n }\n\n const fetchedAt = Date.now()\n const checkLatest = () => {\n const latest = this.getRouteMatch(match.id)\n return latest && latest.fetchedAt !== fetchedAt\n ? latest.loadPromise\n : undefined\n }\n\n const loadPromise = (async () => {\n let latestPromise\n\n const componentsPromise = Promise.all(\n componentTypes.map(async (type) => {\n const component = route.options[type]\n\n if ((component as any)?.preload) {\n await (component as any).preload()\n }\n }),\n )\n\n const loaderPromise = route.options.loader?.({\n ...match,\n preload: !!opts?.preload,\n parentMatchPromise,\n })\n\n const handleError = (err: any) => {\n if (isRedirect(err)) {\n if (!opts?.preload) {\n this.navigate(err as any)\n }\n return true\n }\n\n return false\n }\n\n try {\n const [_, loader] = await Promise.all([\n componentsPromise,\n loaderPromise,\n ])\n if ((latestPromise = checkLatest())) return await latestPromise\n\n this.setRouteMatchData(match.id, () => loader, opts)\n } catch (err) {\n if ((latestPromise = checkLatest())) return await latestPromise\n\n if (handleError(err)) {\n return\n }\n\n const errorHandler =\n route.options.onLoadError ?? route.options.onError\n\n let caughtError = err\n\n try {\n errorHandler?.(err)\n } catch (errorHandlerErr) {\n caughtError = errorHandlerErr\n\n if (handleError(errorHandlerErr)) {\n return\n }\n }\n\n this.setRouteMatch(match.id, (s) => ({\n ...s,\n error: caughtError,\n status: 'error',\n isFetching: false,\n updatedAt: Date.now(),\n }))\n }\n })()\n\n this.setRouteMatch(match.id, (s) => ({\n ...s,\n status: s.status !== 'success' ? 'pending' : s.status,\n isFetching: true,\n loadPromise,\n fetchedAt,\n invalid: false,\n }))\n\n await loadPromise\n })(),\n )\n })\n\n await Promise.all(matchPromises)\n }\n\n reload = () => {\n return this.navigate({\n fromCurrent: true,\n replace: true,\n search: true,\n } as any)\n }\n\n resolvePath = (from: string, path: string) => {\n return resolvePath(this.basepath!, from, cleanPath(path))\n }\n\n navigate = async <TFrom extends string = '/', TTo extends string = ''>({\n from,\n to = '' as any,\n search,\n hash,\n replace,\n params,\n }: NavigateOptions<TRoutesInfo, TFrom, TTo>) => {\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n const toString = String(to)\n const fromString = typeof from === 'undefined' ? from : String(from)\n let isExternal\n\n try {\n new URL(`${toString}`)\n isExternal = true\n } catch (e) {}\n\n invariant(\n !isExternal,\n 'Attempting to navigate to external url with this.navigate!',\n )\n\n return this.#commitLocation({\n from: fromString,\n to: toString,\n search,\n hash,\n replace,\n params,\n })\n }\n\n matchRoute = <\n TFrom extends string = '/',\n TTo extends string = '',\n TResolved extends string = ResolveRelativePath<TFrom, NoInfer<TTo>>,\n >(\n location: ToOptions<TRoutesInfo, TFrom, TTo>,\n opts?: MatchRouteOptions,\n ): false | TRoutesInfo['routesById'][TResolved]['__types']['allParams'] => {\n location = {\n ...location,\n to: location.to\n ? this.resolvePath(location.from ?? '', location.to)\n : undefined,\n } as any\n\n const next = this.buildNext(location)\n if (opts?.pending && this.state.status !== 'pending') {\n return false\n }\n\n const baseLocation = opts?.pending\n ? this.state.location\n : this.state.resolvedLocation\n\n if (!baseLocation) {\n return false\n }\n\n const match = matchPathname(this.basepath, baseLocation.pathname, {\n ...opts,\n to: next.pathname,\n }) as any\n\n if (!match) {\n return false\n }\n\n if (opts?.includeSearch ?? true) {\n return partialDeepEqual(baseLocation.search, next.search) ? match : false\n }\n\n return match\n }\n\n buildLink = <TFrom extends string = '/', TTo extends string = ''>({\n from,\n to = '.' as any,\n search,\n params,\n hash,\n target,\n replace,\n activeOptions,\n preload,\n preloadDelay: userPreloadDelay,\n disabled,\n }: LinkOptions<TRoutesInfo, TFrom, TTo>): LinkInfo => {\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n\n try {\n new URL(`${to}`)\n return {\n type: 'external',\n href: to,\n }\n } catch (e) {}\n\n const nextOpts = {\n from,\n to,\n search,\n params,\n hash,\n replace,\n }\n\n const next = this.buildNext(nextOpts)\n\n preload = preload ?? this.options.defaultPreload\n const preloadDelay =\n userPreloadDelay ?? this.options.defaultPreloadDelay ?? 0\n\n // Compare path/hash for matches\n const currentPathSplit = this.state.location.pathname.split('/')\n const nextPathSplit = next.pathname.split('/')\n const pathIsFuzzyEqual = nextPathSplit.every(\n (d, i) => d === currentPathSplit[i],\n )\n // Combine the matches based on user options\n const pathTest = activeOptions?.exact\n ? this.state.location.pathname === next.pathname\n : pathIsFuzzyEqual\n const hashTest = activeOptions?.includeHash\n ? this.state.location.hash === next.hash\n : true\n const searchTest =\n activeOptions?.includeSearch ?? true\n ? partialDeepEqual(this.state.location.search, next.search)\n : true\n\n // The final \"active\" test\n const isActive = pathTest && hashTest && searchTest\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n if (\n !disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!target || target === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n\n // All is well? Navigate!\n this.#commitLocation(nextOpts as any)\n }\n }\n\n // The click handler\n const handleFocus = (e: MouseEvent) => {\n if (preload) {\n this.preloadRoute(nextOpts).catch((err) => {\n console.warn(err)\n console.warn('Error preloading route! ☝️')\n })\n }\n }\n\n const handleTouchStart = (e: TouchEvent) => {\n this.preloadRoute(nextOpts).catch((err) => {\n console.warn(err)\n console.warn('Error preloading route! ☝️')\n })\n }\n\n const handleEnter = (e: MouseEvent) => {\n const target = (e.target || {}) as LinkCurrentTargetElement\n\n if (preload) {\n if (target.preloadTimeout) {\n return\n }\n\n target.preloadTimeout = setTimeout(() => {\n target.preloadTimeout = null\n this.preloadRoute(nextOpts).catch((err) => {\n console.warn(err)\n console.warn('Error preloading route! ☝️')\n })\n }, preloadDelay)\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n const target = (e.target || {}) as LinkCurrentTargetElement\n\n if (target.preloadTimeout) {\n clearTimeout(target.preloadTimeout)\n target.preloadTimeout = null\n }\n }\n\n return {\n type: 'internal',\n next,\n handleFocus,\n handleClick,\n handleEnter,\n handleLeave,\n handleTouchStart,\n isActive,\n disabled,\n }\n }\n\n dehydrate = (): DehydratedRouter => {\n return {\n state: pick(this.state, ['location', 'status', 'lastUpdated']),\n }\n }\n\n hydrate = async (__do_not_use_server_ctx?: HydrationCtx) => {\n let _ctx = __do_not_use_server_ctx\n // Client hydrates from window\n if (typeof document !== 'undefined') {\n _ctx = window.__TSR_DEHYDRATED__\n }\n\n invariant(\n _ctx,\n 'Expected to find a __TSR_DEHYDRATED__ property on window... but we did not. Did you forget to render <DehydrateRouter /> in your app?',\n )\n\n const ctx = _ctx\n this.dehydratedData = ctx.payload as any\n this.options.hydrate?.(ctx.payload as any)\n\n this.__store.setState((s) => {\n return {\n ...s,\n ...ctx.router.state,\n resolvedLocation: ctx.router.state.location,\n }\n })\n\n await this.load()\n\n return\n }\n\n injectedHtml: (string | (() => Promise<string> | string))[] = []\n\n injectHtml = async (html: string | (() => Promise<string> | string)) => {\n this.injectedHtml.push(html)\n }\n\n dehydrateData = <T>(key: any, getData: T | (() => Promise<T> | T)) => {\n if (typeof document === 'undefined') {\n const strKey = typeof key === 'string' ? key : JSON.stringify(key)\n\n this.injectHtml(async () => {\n const id = `__TSR_DEHYDRATED__${strKey}`\n const data =\n typeof getData === 'function' ? await (getData as any)() : getData\n return `<script id='${id}' suppressHydrationWarning>window[\"__TSR_DEHYDRATED__${escapeJSON(\n strKey,\n )}\"] = ${JSON.stringify(data)}\n ;(() => {\n var el = document.getElementById('${id}')\n el.parentElement.removeChild(el)\n })()\n </script>`\n })\n\n return () => this.hydrateData<T>(key)\n }\n\n return () => undefined\n }\n\n hydrateData = <T = unknown>(key: any) => {\n if (typeof document !== 'undefined') {\n const strKey = typeof key === 'string' ? key : JSON.stringify(key)\n\n return window[`__TSR_DEHYDRATED__${strKey}` as any] as T\n }\n\n return undefined\n }\n\n // resolveMatchPromise = (matchId: string, key: string, value: any) => {\n // this.state.matches\n // .find((d) => d.id === matchId)\n // ?.__promisesByKey[key]?.resolve(value)\n // }\n\n #buildRouteTree = (routeTree: TRouteTree) => {\n this.routeTree = routeTree as any\n this.routesById = {} as any\n this.routesByPath = {} as any\n this.flatRoutes = [] as any\n\n const recurseRoutes = (routes: AnyRoute[]) => {\n routes.forEach((route, i) => {\n route.init({ originalIndex: i, router: this })\n\n const existingRoute = (this.routesById as any)[route.id]\n\n invariant(\n !existingRoute,\n `Duplicate routes found with id: ${String(route.id)}`,\n )\n ;(this.routesById as any)[route.id] = route\n\n if (!route.isRoot && route.path) {\n const trimmedFullPath = trimPathRight(route.fullPath)\n if (\n !this.routesByPath[trimmedFullPath] ||\n route.fullPath.endsWith('/')\n ) {\n ;(this.routesByPath as any)[trimmedFullPath] = route\n }\n }\n\n const children = route.children as Route[]\n\n if (children?.length) {\n recurseRoutes(children)\n }\n })\n }\n\n recurseRoutes([routeTree])\n\n this.flatRoutes = (Object.values(this.routesByPath) as AnyRoute[])\n .map((d, i) => {\n const trimmed = trimPath(d.fullPath)\n const parsed = parsePathname(trimmed)\n\n while (parsed.length > 1 && parsed[0]?.value === '/') {\n parsed.shift()\n }\n\n const score = parsed.map((d) => {\n if (d.type === 'param') {\n return 0.5\n }\n\n if (d.type === 'wildcard') {\n return 0.25\n }\n\n return 1\n })\n\n return { child: d, trimmed, parsed, index: i, score }\n })\n .sort((a, b) => {\n let isIndex = a.trimmed === '/' ? 1 : b.trimmed === '/' ? -1 : 0\n\n if (isIndex !== 0) return isIndex\n\n const length = Math.min(a.score.length, b.score.length)\n\n // Sort by length of score\n if (a.score.length !== b.score.length) {\n return b.score.length - a.score.length\n }\n\n // Sort by min available score\n for (let i = 0; i < length; i++) {\n if (a.score[i] !== b.score[i]) {\n return b.score[i]! - a.score[i]!\n }\n }\n\n // Sort by min available parsed value\n for (let i = 0; i < length; i++) {\n if (a.parsed[i]!.value !== b.parsed[i]!.value) {\n return a.parsed[i]!.value! > b.parsed[i]!.value! ? 1 : -1\n }\n }\n\n // Sort by length of trimmed full path\n if (a.trimmed !== b.trimmed) {\n return a.trimmed > b.trimmed ? 1 : -1\n }\n\n // Sort by original index\n return a.index - b.index\n })\n .map((d, i) => {\n d.child.rank = i\n return d.child\n }) as any\n }\n\n #parseLocation = (previousLocation?: ParsedLocation): ParsedLocation => {\n let { pathname, search, hash, state } = this.history.location\n\n const parsedSearch = this.options.parseSearch(search)\n\n return {\n pathname: pathname,\n searchStr: search,\n search: replaceEqualDeep(previousLocation?.search, parsedSearch),\n hash: hash.split('#').reverse()[0] ?? '',\n href: `${pathname}${search}${hash}`,\n state: state as LocationState,\n key: state?.key || '__init__',\n }\n }\n\n #buildLocation = (dest: BuildNextOptions = {}): ParsedLocation => {\n dest.fromCurrent = dest.fromCurrent ?? dest.to === ''\n\n const fromPathname = dest.fromCurrent\n ? this.state.location.pathname\n : dest.from ?? this.state.location.pathname\n\n let pathname = resolvePath(\n this.basepath ?? '/',\n fromPathname,\n `${dest.to ?? ''}`,\n )\n\n const fromMatches = this.matchRoutes(\n this.state.location.pathname,\n this.state.location.search,\n )\n\n const prevParams = { ...last(fromMatches)?.params }\n\n let nextParams =\n (dest.params ?? true) === true\n ? prevParams\n : functionalUpdate(dest.params!, prevParams)\n\n if (nextParams) {\n dest.__matches\n ?.map((d) => this.getRoute(d.routeId).options.stringifyParams)\n .filter(Boolean)\n .forEach((fn) => {\n nextParams = { ...nextParams!, ...fn!(nextParams!) }\n })\n }\n\n pathname = interpolatePath(pathname, nextParams ?? {})\n\n const preSearchFilters =\n dest.__matches\n ?.map(\n (match) =>\n this.getRoute(match.routeId).options.preSearchFilters ?? [],\n )\n .flat()\n .filter(Boolean) ?? []\n\n const postSearchFilters =\n dest.__matches\n ?.map(\n (match) =>\n this.getRoute(match.routeId).options.postSearchFilters ?? [],\n )\n .flat()\n .filter(Boolean) ?? []\n\n // Pre filters first\n const preFilteredSearch = preSearchFilters?.length\n ? preSearchFilters?.reduce(\n (prev, next) => next(prev),\n this.state.location.search,\n )\n : this.state.location.search\n\n // Then the link/navigate function\n const destSearch =\n dest.search === true\n ? preFilteredSearch // Preserve resolvedFrom true\n : dest.search\n ? functionalUpdate(dest.search, preFilteredSearch) ?? {} // Updater\n : preSearchFilters?.length\n ? preFilteredSearch // Preserve resolvedFrom filters\n : {}\n\n // Then post filters\n const postFilteredSearch = postSearchFilters?.length\n ? postSearchFilters.reduce((prev, next) => next(prev), destSearch)\n : destSearch\n\n const search = replaceEqualDeep(\n this.state.location.search,\n postFilteredSearch,\n )\n\n const searchStr = this.options.stringifySearch(search)\n\n const hash =\n dest.hash === true\n ? this.state.location.hash\n : functionalUpdate(dest.hash!, this.state.location.hash)\n\n const hashStr = hash ? `#${hash}` : ''\n\n const nextState =\n dest.state === true\n ? this.state.location.state\n : functionalUpdate(dest.state, this.state.location.state)!\n\n return {\n pathname,\n search,\n searchStr,\n state: nextState,\n hash,\n href: this.history.createHref(`${pathname}${searchStr}${hashStr}`),\n key: dest.key,\n }\n }\n\n #commitLocation = async (\n location: BuildNextOptions & { replace?: boolean },\n ) => {\n const next = this.buildNext(location)\n const id = '' + Date.now() + Math.random()\n\n if (this.navigateTimeout) clearTimeout(this.navigateTimeout)\n\n let nextAction: 'push' | 'replace' = 'replace'\n\n if (!location.replace) {\n nextAction = 'push'\n }\n\n const isSameUrl = this.state.location.href === next.href\n\n if (isSameUrl && !next.key) {\n nextAction = 'replace'\n }\n\n const href = `${next.pathname}${next.searchStr}${\n next.hash ? `#${next.hash}` : ''\n }`\n\n this.history[nextAction === 'push' ? 'push' : 'replace'](href, {\n id,\n ...next.state,\n })\n\n return this.latestLoadPromise\n }\n\n getRouteMatch = (\n id: string,\n ): undefined | RouteMatch<TRoutesInfo, AnyRoute> => {\n return this.state.matchesById[id]\n }\n\n setRouteMatch = (\n id: string,\n updater: (\n prev: RouteMatch<TRoutesInfo, AnyRoute>,\n ) => RouteMatch<TRoutesInfo, AnyRoute>,\n ) => {\n this.__store.setState((prev) => ({\n ...prev,\n matchesById: {\n ...prev.matchesById,\n [id]: updater(prev.matchesById[id] as any),\n },\n }))\n }\n\n setRouteMatchData = (\n id: string,\n updater: (prev: any) => any,\n opts?: {\n updatedAt?: number\n maxAge?: number\n },\n ) => {\n const match = this.getRouteMatch(id)\n\n if (!match) return\n\n const route = this.getRoute(match.routeId)\n const updatedAt = opts?.updatedAt ?? Date.now()\n\n const preloadInvalidAt =\n updatedAt +\n (opts?.maxAge ??\n route.options.preloadMaxAge ??\n this.options.defaultPreloadMaxAge ??\n 5000)\n\n const invalidAt =\n updatedAt +\n (opts?.maxAge ??\n route.options.maxAge ??\n this.options.defaultMaxAge ??\n Infinity)\n\n this.setRouteMatch(id, (s) => ({\n ...s,\n error: undefined,\n status: 'success',\n isFetching: false,\n updatedAt: Date.now(),\n loaderData: functionalUpdate(updater, s.loaderData),\n preloadInvalidAt,\n invalidAt,\n }))\n\n if (this.state.matches.find((d) => d.id === id)) {\n }\n }\n\n invalidate = async (opts?: {\n matchId?: string\n reload?: boolean\n }): Promise<void> => {\n if (opts?.matchId) {\n this.setRouteMatch(opts.matchId, (s) => ({\n ...s,\n invalid: true,\n }))\n const matchIndex = this.state.matches.findIndex(\n (d) => d.id === opts.matchId,\n )\n const childMatch = this.state.matches[matchIndex + 1]\n\n if (childMatch) {\n return this.invalidate({ matchId: childMatch.id, reload: false })\n }\n } else {\n this.__store.batch(() => {\n Object.values(this.state.matchesById).forEach((match) => {\n this.setRouteMatch(match.id, (s) => ({\n ...s,\n invalid: true,\n }))\n })\n })\n }\n\n if (opts?.reload ?? true) {\n return this.reload()\n }\n }\n\n getIsInvalid = (opts?: { matchId: string; preload?: boolean }): boolean => {\n if (!opts?.matchId) {\n return !!this.state.matches.find((d) =>\n this.getIsInvalid({ matchId: d.id, preload: opts?.preload }),\n )\n }\n\n const match = this.getRouteMatch(opts?.matchId)\n\n if (!match) {\n return false\n }\n\n const now = Date.now()\n\n return (\n match.invalid ||\n (opts?.preload ? match.preloadInvalidAt : match.invalidAt) < now\n )\n }\n}\n\n// Detect if we're in the DOM\nconst isServer = typeof window === 'undefined' || !window.document.createElement\n\nfunction getInitialRouterState(): RouterState<any, any> {\n return {\n status: 'idle',\n isFetching: false,\n resolvedLocation: null!,\n location: null!,\n matchesById: {},\n matchIds: [],\n pendingMatchIds: [],\n matches: [],\n pendingMatches: [],\n lastUpdated: Date.now(),\n }\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nexport type AnyRedirect = Redirect<any, any, any>\n\nexport type Redirect<\n TRoutesInfo extends AnyRoutesInfo = RegisteredRoutesInfo,\n TFrom extends TRoutesInfo['routePaths'] = '/',\n TTo extends string = '',\n> = NavigateOptions<TRoutesInfo, TFrom, TTo> & {\n code?: number\n}\n\nexport function redirect<\n TRoutesInfo extends AnyRoutesInfo = RegisteredRoutesInfo,\n TFrom extends TRoutesInfo['routePaths'] = '/',\n TTo extends string = '',\n>(opts: Redirect<TRoutesInfo, TFrom, TTo>): Redirect<TRoutesInfo, TFrom, TTo> {\n ;(opts as any).isRedirect = true\n return opts\n}\n\nexport function isRedirect(obj: any): obj is AnyRedirect {\n return !!obj?.isRedirect\n}\n\nexport class SearchParamError extends Error {}\nexport class PathParamError extends Error {}\n\nfunction escapeJSON(jsonString: string) {\n return jsonString\n .replace(/\\\\/g, '\\\\\\\\') // Escape backslashes\n .replace(/'/g, \"\\\\'\") // Escape single quotes\n .replace(/\"/g, '\\\\\"') // Escape double quotes\n}\n\n// A function that takes an import() argument which is a function and returns a new function that will\n// proxy arguments from the caller to the imported function, retaining all type\n// information along the way\nexport function lazyFn<\n T extends Record<string, (...args: any[]) => any>,\n TKey extends keyof T = 'default',\n>(fn: () => Promise<T>, key?: TKey) {\n return async (...args: Parameters<T[TKey]>): Promise<ReturnType<T[TKey]>> => {\n const imported = await fn()\n return imported[key || 'default'](...args)\n }\n}\n"],"names":["componentTypes","Router","constructor","options","defaultPreloadDelay","context","undefined","stringifySearch","defaultStringifySearch","parseSearch","defaultParseSearch","__store","Store","getInitialRouterState","onUpdate","prev","state","matchesByIdChanged","matchesById","matchesChanged","pendingMatchesChanged","matchIds","length","some","d","i","pendingMatchIds","matches","map","id","pendingMatches","isFetching","defaultPriority","update","next","buildNext","hash","fromCurrent","search","location","href","replace","reset","setState","s","Object","assign","mount","safeLoad","opts","history","isServer","createMemoryHistory","createBrowserHistory","parsedLocation","resolvedLocation","listen","basepath","routeTree","trimPath","__matches","matchRoutes","pathname","cancelMatches","forEach","match","cancelMatch","getRouteMatch","abortController","abort","load","catch","err","latestLoadPromise","Promise","resolve","promise","reject","latestPromise","checkLatest","batch","throwOnError","debug","status","loadMatches","prevLocation","onRouteChange","#mergeMatches","prevMatchesById","nextMatches","nextMatchesById","hadNew","getRoute","route","routesById","invariant","preloadRoute","navigateOpts","preload","maxAge","cleanMatches","now","Date","outdatedMatchIds","values","filter","routeId","includes","preloadInvalidAt","gcMaxAge","updatedAt","locationSearch","routeParams","foundRoute","flatRoutes","find","matchedParams","matchPathname","to","fullPath","caseSensitive","routeCursor","matchedRoutes","parentRoute","unshift","allParams","parsedParams","parsedParamsError","parseParams","PathParamError","message","cause","interpolatedPath","interpolatePath","path","key","params","stringifiedKey","JSON","stringify","matchId","existingMatch","hasLoaders","loader","routeMatch","joinPaths","invalidAt","Infinity","routeSearch","invalid","error","paramsError","searchError","loaderData","loadPromise","routeContext","AbortController","fetchedAt","parentMatch","searchInfo","parentSearchInfo","validator","validateSearch","parse","replaceEqualDeep","SearchParamError","contextInfo","getContext","parentContext","onError","resolvedMatches","firstBadMatchIndex","all","index","setRouteMatch","handleError","handler","isRedirect","errorHandlerErr","onParseParamsError","onValidateSearchError","beforeLoad","onBeforeLoadError","navigate","validResolvedMatches","slice","matchPromises","push","parentMatchPromise","getIsInvalid","latest","componentsPromise","type","component","loaderPromise","_","setRouteMatchData","errorHandler","onLoadError","caughtError","reload","resolvePath","from","cleanPath","toString","String","fromString","isExternal","URL","e","matchRoute","pending","baseLocation","includeSearch","partialDeepEqual","buildLink","target","activeOptions","preloadDelay","userPreloadDelay","disabled","nextOpts","defaultPreload","currentPathSplit","split","nextPathSplit","pathIsFuzzyEqual","every","pathTest","exact","hashTest","includeHash","searchTest","isActive","handleClick","isCtrlEvent","defaultPrevented","button","preventDefault","handleFocus","console","warn","handleTouchStart","handleEnter","preloadTimeout","setTimeout","handleLeave","clearTimeout","dehydrate","pick","hydrate","__do_not_use_server_ctx","_ctx","document","window","__TSR_DEHYDRATED__","ctx","dehydratedData","payload","router","injectedHtml","injectHtml","html","dehydrateData","getData","strKey","data","escapeJSON","hydrateData","routesByPath","recurseRoutes","routes","init","originalIndex","existingRoute","isRoot","trimmedFullPath","trimPathRight","endsWith","children","trimmed","parsed","parsePathname","value","shift","score","child","sort","a","b","isIndex","Math","min","rank","previousLocation","parsedSearch","searchStr","reverse","#buildLocation","dest","fromPathname","fromMatches","prevParams","last","nextParams","functionalUpdate","stringifyParams","Boolean","fn","preSearchFilters","flat","postSearchFilters","preFilteredSearch","reduce","destSearch","postFilteredSearch","hashStr","nextState","createHref","random","navigateTimeout","nextAction","isSameUrl","updater","preloadMaxAge","defaultPreloadMaxAge","defaultMaxAge","invalidate","matchIndex","findIndex","childMatch","createElement","lastUpdated","metaKey","altKey","ctrlKey","shiftKey","redirect","obj","Error","jsonString","lazyFn","args","imported"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.js","sources":["../../src/router.ts"],"sourcesContent":["import { Store } from '@tanstack/react-store'\nimport invariant from 'tiny-invariant'\n\n//\n\nimport {\n LinkInfo,\n LinkOptions,\n NavigateOptions,\n ToOptions,\n ResolveRelativePath,\n} from './link'\nimport {\n cleanPath,\n interpolatePath,\n joinPaths,\n matchPathname,\n parsePathname,\n resolvePath,\n trimPath,\n trimPathRight,\n} from './path'\nimport {\n Route,\n AnySearchSchema,\n AnyRoute,\n RootRoute,\n AnyContext,\n AnyPathParams,\n RouteProps,\n RegisteredRouteComponent,\n RegisteredRouteErrorComponent,\n} from './route'\nimport {\n RoutesInfo,\n AnyRoutesInfo,\n RoutesById,\n RoutesByPath,\n DefaultRoutesInfo,\n} from './routeInfo'\nimport { defaultParseSearch, defaultStringifySearch } from './searchParams'\nimport {\n functionalUpdate,\n last,\n NoInfer,\n pick,\n PickAsRequired,\n Timeout,\n Updater,\n replaceEqualDeep,\n partialDeepEqual,\n} from './utils'\nimport {\n createBrowserHistory,\n createMemoryHistory,\n RouterHistory,\n} from './history'\n\n//\n\ndeclare global {\n interface Window {\n __TSR_DEHYDRATED__?: HydrationCtx\n }\n}\n\nexport interface Register {\n // router: Router\n}\n\nexport type AnyRouter = Router<any, any, any>\n\nexport type RegisteredRouterPair = Register extends {\n router: infer TRouter extends AnyRouter\n}\n ? [TRouter, TRouter['types']['RoutesInfo']]\n : [Router, AnyRoutesInfo]\n\nexport type RegisteredRouter = RegisteredRouterPair[0]\nexport type RegisteredRoutesInfo = RegisteredRouterPair[1]\n\nexport interface LocationState {}\n\nexport interface ParsedLocation<\n TSearchObj extends AnySearchSchema = {},\n TState extends LocationState = LocationState,\n> {\n href: string\n pathname: string\n search: TSearchObj\n searchStr: string\n state: TState\n hash: string\n key?: string\n}\n\nexport interface FromLocation {\n pathname: string\n search?: unknown\n key?: string\n hash?: string\n}\n\nexport type SearchSerializer = (searchObj: Record<string, any>) => string\nexport type SearchParser = (searchStr: string) => Record<string, any>\n\nexport type HydrationCtx = {\n router: DehydratedRouter\n payload: Record<string, any>\n}\n\nexport interface RouteMatch<\n TRoutesInfo extends AnyRoutesInfo = DefaultRoutesInfo,\n TRoute extends AnyRoute = Route,\n> {\n id: string\n key?: string\n routeId: string\n pathname: string\n params: TRoute['__types']['allParams']\n status: 'idle' | 'pending' | 'success' | 'error'\n isFetching: boolean\n invalid: boolean\n error: unknown\n paramsError: unknown\n searchError: unknown\n updatedAt: number\n invalidAt: number\n preloadInvalidAt: number\n loaderData: TRoute['__types']['loader']\n loadPromise?: Promise<void>\n __resolveLoadPromise?: () => void\n routeContext: TRoute['__types']['routeContext']\n context: TRoute['__types']['context']\n routeSearch: TRoute['__types']['searchSchema']\n search: TRoutesInfo['fullSearchSchema'] &\n TRoute['__types']['fullSearchSchema']\n fetchedAt: number\n abortController: AbortController\n}\n\nexport type AnyRouteMatch = RouteMatch<AnyRoutesInfo, AnyRoute>\n\nexport type RouterContextOptions<TRouteTree extends AnyRoute> =\n AnyContext extends TRouteTree['__types']['routerContext']\n ? {\n context?: TRouteTree['__types']['routerContext']\n }\n : {\n context: TRouteTree['__types']['routerContext']\n }\n\nexport interface RouterOptions<\n TRouteTree extends AnyRoute,\n TDehydrated extends Record<string, any>,\n> {\n history?: RouterHistory\n stringifySearch?: SearchSerializer\n parseSearch?: SearchParser\n defaultPreload?: false | 'intent'\n defaultPreloadDelay?: number\n defaultComponent?: RegisteredRouteComponent<\n RouteProps<unknown, AnySearchSchema, AnyPathParams, AnyContext, AnyContext>\n >\n defaultErrorComponent?: RegisteredRouteErrorComponent<\n RouteProps<unknown, AnySearchSchema, AnyPathParams, AnyContext, AnyContext>\n >\n defaultPendingComponent?: RegisteredRouteComponent<\n RouteProps<unknown, AnySearchSchema, AnyPathParams, AnyContext, AnyContext>\n >\n defaultMaxAge?: number\n defaultGcMaxAge?: number\n defaultPreloadMaxAge?: number\n caseSensitive?: boolean\n routeTree?: TRouteTree\n basepath?: string\n createRoute?: (opts: { route: AnyRoute; router: AnyRouter }) => void\n onRouteChange?: () => void\n context?: TRouteTree['__types']['routerContext']\n Wrap?: React.ComponentType<{\n children: React.ReactNode\n dehydratedState?: TDehydrated\n }>\n dehydrate?: () => TDehydrated\n hydrate?: (dehydrated: TDehydrated) => void\n}\n\nexport interface RouterState<\n TRoutesInfo extends AnyRoutesInfo = AnyRoutesInfo,\n TState extends LocationState = LocationState,\n> {\n status: 'idle' | 'pending'\n isFetching: boolean\n matchesById: Record<\n string,\n RouteMatch<TRoutesInfo, TRoutesInfo['routeIntersection']>\n >\n matchIds: string[]\n pendingMatchIds: string[]\n matches: RouteMatch<TRoutesInfo, TRoutesInfo['routeIntersection']>[]\n pendingMatches: RouteMatch<TRoutesInfo, TRoutesInfo['routeIntersection']>[]\n location: ParsedLocation<TRoutesInfo['fullSearchSchema'], TState>\n resolvedLocation: ParsedLocation<TRoutesInfo['fullSearchSchema'], TState>\n lastUpdated: number\n}\n\nexport type ListenerFn = () => void\n\nexport interface BuildNextOptions {\n to?: string | number | null\n params?: true | Updater<unknown>\n search?: true | Updater<unknown>\n hash?: true | Updater<string>\n state?: LocationState\n key?: string\n from?: string\n fromCurrent?: boolean\n __matches?: AnyRouteMatch[]\n}\n\nexport interface MatchLocation {\n to?: string | number | null\n fuzzy?: boolean\n caseSensitive?: boolean\n from?: string\n fromCurrent?: boolean\n}\n\nexport interface MatchRouteOptions {\n pending?: boolean\n caseSensitive?: boolean\n includeSearch?: boolean\n fuzzy?: boolean\n}\n\ntype LinkCurrentTargetElement = {\n preloadTimeout?: null | ReturnType<typeof setTimeout>\n}\n\nexport interface DehydratedRouterState\n extends Pick<RouterState, 'status' | 'location' | 'lastUpdated'> {}\n\nexport interface DehydratedRouter {\n state: DehydratedRouterState\n}\n\nexport type RouterConstructorOptions<\n TRouteTree extends AnyRoute,\n TDehydrated extends Record<string, any>,\n> = Omit<RouterOptions<TRouteTree, TDehydrated>, 'context'> &\n RouterContextOptions<TRouteTree>\n\nexport const componentTypes = [\n 'component',\n 'errorComponent',\n 'pendingComponent',\n] as const\n\nexport class Router<\n TRouteTree extends AnyRoute = AnyRoute,\n TRoutesInfo extends AnyRoutesInfo = RoutesInfo<TRouteTree>,\n TDehydrated extends Record<string, any> = Record<string, any>,\n> {\n types!: {\n RootRoute: TRouteTree\n RoutesInfo: TRoutesInfo\n }\n\n options: PickAsRequired<\n RouterOptions<TRouteTree, TDehydrated>,\n 'stringifySearch' | 'parseSearch' | 'context'\n >\n history!: RouterHistory\n #unsubHistory?: () => void\n basepath!: string\n routeTree!: RootRoute\n routesById!: RoutesById<TRoutesInfo>\n routesByPath!: RoutesByPath<TRoutesInfo>\n flatRoutes!: TRoutesInfo['routesByFullPath'][keyof TRoutesInfo['routesByFullPath']][]\n navigateTimeout: undefined | Timeout\n nextAction: undefined | 'push' | 'replace'\n navigationPromise: undefined | Promise<void>\n\n __store: Store<RouterState<TRoutesInfo>>\n state: RouterState<TRoutesInfo>\n dehydratedData?: TDehydrated\n\n constructor(options: RouterConstructorOptions<TRouteTree, TDehydrated>) {\n this.options = {\n defaultPreloadDelay: 50,\n context: undefined!,\n ...options,\n stringifySearch: options?.stringifySearch ?? defaultStringifySearch,\n parseSearch: options?.parseSearch ?? defaultParseSearch,\n // fetchServerDataFn: options?.fetchServerDataFn ?? defaultFetchServerDataFn,\n }\n\n this.__store = new Store<RouterState<TRoutesInfo>>(\n getInitialRouterState(),\n {\n onUpdate: () => {\n const prev = this.state\n\n this.state = this.__store.state\n\n const matchesByIdChanged = prev.matchesById !== this.state.matchesById\n let matchesChanged\n let pendingMatchesChanged\n\n if (!matchesByIdChanged) {\n matchesChanged =\n prev.matchIds.length !== this.state.matchIds.length ||\n prev.matchIds.some((d, i) => d !== this.state.matchIds[i])\n\n pendingMatchesChanged =\n prev.pendingMatchIds.length !==\n this.state.pendingMatchIds.length ||\n prev.pendingMatchIds.some(\n (d, i) => d !== this.state.pendingMatchIds[i],\n )\n }\n\n if (matchesByIdChanged || matchesChanged) {\n this.state.matches = this.state.matchIds.map((id) => {\n return this.state.matchesById[id] as any\n })\n }\n\n if (matchesByIdChanged || pendingMatchesChanged) {\n this.state.pendingMatches = this.state.pendingMatchIds.map((id) => {\n return this.state.matchesById[id] as any\n })\n }\n\n this.state.isFetching = [\n ...this.state.matches,\n ...this.state.pendingMatches,\n ].some((d) => d.isFetching)\n },\n defaultPriority: 'low',\n },\n )\n\n this.state = this.__store.state\n\n this.update(options)\n\n const next = this.buildNext({\n hash: true,\n fromCurrent: true,\n search: true,\n state: true,\n })\n\n if (this.state.location.href !== next.href) {\n this.#commitLocation({ ...next, replace: true })\n }\n }\n\n reset = () => {\n this.__store.setState((s) => Object.assign(s, getInitialRouterState()))\n }\n\n mount = () => {\n // If the router matches are empty, start loading the matches\n // if (!this.state.matches.length) {\n this.safeLoad()\n // }\n }\n\n update = (opts?: RouterOptions<any, any>): this => {\n this.options = {\n ...this.options,\n ...opts,\n context: {\n ...this.options.context,\n ...opts?.context,\n },\n }\n\n if (\n !this.history ||\n (this.options.history && this.options.history !== this.history)\n ) {\n if (this.#unsubHistory) {\n this.#unsubHistory()\n }\n\n this.history =\n this.options.history ??\n (isServer ? createMemoryHistory() : createBrowserHistory()!)\n\n const parsedLocation = this.#parseLocation()\n\n this.__store.setState((s) => ({\n ...s,\n resolvedLocation: parsedLocation,\n location: parsedLocation,\n }))\n\n this.#unsubHistory = this.history.listen(() => {\n this.safeLoad({\n next: this.#parseLocation(this.state.location),\n })\n })\n }\n\n const { basepath, routeTree } = this.options\n\n this.basepath = `/${trimPath(basepath ?? '') ?? ''}`\n\n if (routeTree && routeTree !== this.routeTree) {\n this.#buildRouteTree(routeTree)\n }\n\n return this\n }\n\n buildNext = (opts: BuildNextOptions): ParsedLocation => {\n const next = this.#buildLocation(opts)\n\n const __matches = this.matchRoutes(next.pathname, next.search)\n\n return this.#buildLocation({\n ...opts,\n __matches,\n })\n }\n\n cancelMatches = () => {\n this.state.matches.forEach((match) => {\n this.cancelMatch(match.id)\n })\n }\n\n cancelMatch = (id: string) => {\n this.getRouteMatch(id)?.abortController?.abort()\n }\n\n safeLoad = (opts?: { next?: ParsedLocation }) => {\n return this.load(opts).catch((err) => {\n // console.warn(err)\n // invariant(false, 'Encountered an error during router.load()! ☝️.')\n })\n }\n\n latestLoadPromise: Promise<void> = Promise.resolve()\n\n load = async (opts?: { next?: ParsedLocation; throwOnError?: boolean }) => {\n const promise = new Promise<void>(async (resolve, reject) => {\n let latestPromise: Promise<void> | undefined | null\n\n const checkLatest = (): undefined | Promise<void> | null => {\n return this.latestLoadPromise !== promise\n ? this.latestLoadPromise\n : undefined\n }\n\n // Cancel any pending matches\n // this.cancelMatches()\n\n let pendingMatches!: RouteMatch<any, any>[]\n\n this.__store.batch(() => {\n if (opts?.next) {\n // Ingest the new location\n this.__store.setState((s) => ({\n ...s,\n location: opts.next!,\n }))\n }\n\n // Match the routes\n pendingMatches = this.matchRoutes(\n this.state.location.pathname,\n this.state.location.search,\n {\n throwOnError: opts?.throwOnError,\n debug: true,\n },\n )\n\n this.__store.setState((s) => ({\n ...s,\n status: 'pending',\n pendingMatchIds: pendingMatches.map((d) => d.id),\n matchesById: this.#mergeMatches(s.matchesById, pendingMatches),\n }))\n })\n\n try {\n // Load the matches\n await this.loadMatches(pendingMatches)\n\n // Only apply the latest transition\n if ((latestPromise = checkLatest())) {\n return await latestPromise\n }\n\n const prevLocation = this.state.resolvedLocation\n\n this.__store.setState((s) => ({\n ...s,\n status: 'idle',\n resolvedLocation: s.location,\n matchIds: s.pendingMatchIds,\n pendingMatchIds: [],\n }))\n\n if (prevLocation!.href !== this.state.location.href) {\n this.options.onRouteChange?.()\n }\n\n resolve()\n } catch (err) {\n // Only apply the latest transition\n if ((latestPromise = checkLatest())) {\n return await latestPromise\n }\n\n reject(err)\n }\n })\n\n this.latestLoadPromise = promise\n\n return this.latestLoadPromise\n }\n\n #mergeMatches = (\n prevMatchesById: Record<\n string,\n RouteMatch<TRoutesInfo, TRoutesInfo['routeIntersection']>\n >,\n nextMatches: RouteMatch[],\n ): Record<\n string,\n RouteMatch<TRoutesInfo, TRoutesInfo['routeIntersection']>\n > => {\n const nextMatchesById: any = {\n ...prevMatchesById,\n }\n\n let hadNew = false\n\n nextMatches.forEach((match) => {\n if (!nextMatchesById[match.id]) {\n hadNew = true\n nextMatchesById[match.id] = match\n }\n })\n\n if (!hadNew) {\n return prevMatchesById\n }\n\n return nextMatchesById\n }\n\n getRoute = <TId extends keyof TRoutesInfo['routesById']>(\n id: TId,\n ): TRoutesInfo['routesById'][TId] => {\n const route = this.routesById[id]\n\n invariant(route, `Route with id \"${id as string}\" not found`)\n\n return route\n }\n\n preloadRoute = async (\n navigateOpts: BuildNextOptions & {\n maxAge?: number\n } = this.state.location,\n ) => {\n const next = this.buildNext(navigateOpts)\n const matches = this.matchRoutes(next.pathname, next.search, {\n throwOnError: true,\n })\n\n this.__store.setState((s) => {\n return {\n ...s,\n matchesById: this.#mergeMatches(s.matchesById, matches),\n }\n })\n\n await this.loadMatches(matches, {\n preload: true,\n maxAge: navigateOpts.maxAge,\n })\n\n return matches\n }\n\n cleanMatches = () => {\n const now = Date.now()\n\n const outdatedMatchIds = Object.values(this.state.matchesById)\n .filter((match) => {\n const route = this.getRoute(match.routeId)\n return (\n !this.state.matchIds.includes(match.id) &&\n !this.state.pendingMatchIds.includes(match.id) &&\n match.preloadInvalidAt < now &&\n (route.options.gcMaxAge\n ? match.updatedAt + route.options.gcMaxAge < now\n : true)\n )\n })\n .map((d) => d.id)\n\n if (outdatedMatchIds.length) {\n this.__store.setState((s) => {\n const matchesById = { ...s.matchesById }\n outdatedMatchIds.forEach((id) => {\n delete matchesById[id]\n })\n return {\n ...s,\n matchesById,\n }\n })\n }\n }\n\n matchRoutes = (\n pathname: string,\n locationSearch: AnySearchSchema,\n opts?: { throwOnError?: boolean; debug?: boolean },\n ): RouteMatch<TRoutesInfo, TRoutesInfo['routeIntersection']>[] => {\n let routeParams: AnyPathParams = {}\n\n let foundRoute = this.flatRoutes.find((route) => {\n const matchedParams = matchPathname(this.basepath, pathname, {\n to: route.fullPath,\n caseSensitive:\n route.options.caseSensitive ?? this.options.caseSensitive,\n })\n\n if (matchedParams) {\n routeParams = matchedParams\n return true\n }\n\n return false\n })\n\n let routeCursor = foundRoute || (this.routesById['__root__'] as any)\n\n let matchedRoutes: AnyRoute[] = [routeCursor]\n\n while (routeCursor?.parentRoute) {\n routeCursor = routeCursor.parentRoute\n if (routeCursor) matchedRoutes.unshift(routeCursor)\n }\n\n // Alright, by now we should have all of our\n // matching routes and their param pairs, let's\n // Turn them into actual `Match` objects and\n // accumulate the params into a single params bag\n let allParams = {}\n\n // Existing matches are matches that are already loaded along with\n // pending matches that are still loading\n\n const matches = matchedRoutes.map((route) => {\n let parsedParams\n let parsedParamsError\n\n try {\n parsedParams =\n (route.options.parseParams as any)?.(routeParams!) ?? routeParams\n // (typeof route.options.parseParams === 'object' &&\n // route.options.parseParams.parse\n // ? route.options.parseParams.parse(routeParams)\n // : (route.options.parseParams as any)?.(routeParams!)) ?? routeParams\n } catch (err: any) {\n parsedParamsError = new PathParamError(err.message, {\n cause: err,\n })\n\n if (opts?.throwOnError) {\n throw parsedParamsError\n }\n }\n\n // Add the parsed params to the accumulated params bag\n Object.assign(allParams, parsedParams)\n\n const interpolatedPath = interpolatePath(route.path, allParams)\n const key = route.options.key\n ? route.options.key({\n params: allParams,\n search: locationSearch,\n }) ?? ''\n : ''\n\n const stringifiedKey = key ? JSON.stringify(key) : ''\n\n const matchId =\n interpolatePath(route.id, allParams, true) + stringifiedKey\n\n // Waste not, want not. If we already have a match for this route,\n // reuse it. This is important for layout routes, which might stick\n // around between navigation actions that only change leaf routes.\n const existingMatch = this.getRouteMatch(matchId)\n\n if (existingMatch) {\n return { ...existingMatch }\n }\n\n // Create a fresh route match\n const hasLoaders = !!(\n route.options.loader ||\n componentTypes.some((d) => (route.options[d] as any)?.preload)\n )\n\n const routeMatch: RouteMatch = {\n id: matchId,\n key: stringifiedKey,\n routeId: route.id,\n params: allParams,\n pathname: joinPaths([this.basepath, interpolatedPath]),\n updatedAt: Date.now(),\n invalidAt: Infinity,\n preloadInvalidAt: Infinity,\n routeSearch: {},\n search: {} as any,\n status: hasLoaders ? 'idle' : 'success',\n isFetching: false,\n invalid: false,\n error: undefined,\n paramsError: parsedParamsError,\n searchError: undefined,\n loaderData: undefined,\n loadPromise: Promise.resolve(),\n routeContext: undefined!,\n context: undefined!,\n abortController: new AbortController(),\n fetchedAt: 0,\n }\n\n return routeMatch\n })\n\n // Take each match and resolve its search params and context\n // This has to happen after the matches are created or found\n // so that we can use the parent match's search params and context\n matches.forEach((match, i): any => {\n const parentMatch = matches[i - 1]\n const route = this.getRoute(match.routeId)\n\n const searchInfo = (() => {\n // Validate the search params and stabilize them\n const parentSearchInfo = {\n search: parentMatch?.search ?? locationSearch,\n routeSearch: parentMatch?.routeSearch ?? locationSearch,\n }\n\n try {\n const validator =\n typeof route.options.validateSearch === 'object'\n ? route.options.validateSearch.parse\n : route.options.validateSearch\n\n const routeSearch = validator?.(parentSearchInfo.search) ?? {}\n\n const search = {\n ...parentSearchInfo.search,\n ...routeSearch,\n }\n\n return {\n routeSearch: replaceEqualDeep(match.routeSearch, routeSearch),\n search: replaceEqualDeep(match.search, search),\n }\n } catch (err: any) {\n match.searchError = new SearchParamError(err.message, {\n cause: err,\n })\n\n if (opts?.throwOnError) {\n throw match.searchError\n }\n\n return parentSearchInfo\n }\n })()\n\n const contextInfo = (() => {\n try {\n const routeContext =\n route.options.getContext?.({\n parentContext: parentMatch?.routeContext ?? {},\n context: parentMatch?.context ?? this?.options.context ?? {},\n params: match.params,\n search: match.search,\n }) || ({} as any)\n\n const context = {\n ...(parentMatch?.context ?? this?.options.context),\n ...routeContext,\n } as any\n\n return {\n context,\n routeContext,\n }\n } catch (err) {\n route.options.onError?.(err)\n throw err\n }\n })()\n\n Object.assign(match, {\n ...searchInfo,\n ...contextInfo,\n })\n })\n\n return matches as any\n }\n\n loadMatches = async (\n resolvedMatches: AnyRouteMatch[],\n opts?: {\n preload?: boolean\n maxAge?: number\n },\n ) => {\n this.cleanMatches()\n\n if (!opts?.preload) {\n resolvedMatches.forEach((match) => {\n // Update each match with its latest url data\n this.setRouteMatch(match.id, (s) => ({\n ...s,\n routeSearch: match.routeSearch,\n search: match.search,\n routeContext: match.routeContext,\n context: match.context,\n error: match.error,\n paramsError: match.paramsError,\n searchError: match.searchError,\n params: match.params,\n }))\n })\n }\n\n let firstBadMatchIndex: number | undefined\n\n // Check each match middleware to see if the route can be accessed\n try {\n for (const [index, match] of resolvedMatches.entries()) {\n const route = this.getRoute(match.routeId)\n\n const handleError = (\n err: any,\n handler: undefined | ((err: any) => void),\n ) => {\n firstBadMatchIndex = firstBadMatchIndex ?? index\n handler = handler || route.options.onError\n\n if (isRedirect(err)) {\n throw err\n }\n\n try {\n handler?.(err)\n } catch (errorHandlerErr) {\n err = errorHandlerErr\n\n if (isRedirect(errorHandlerErr)) {\n throw errorHandlerErr\n }\n }\n\n this.setRouteMatch(match.id, (s) => ({\n ...s,\n error: err,\n status: 'error',\n updatedAt: Date.now(),\n }))\n }\n\n if (match.paramsError) {\n handleError(match.paramsError, route.options.onParseParamsError)\n }\n\n if (match.searchError) {\n handleError(match.searchError, route.options.onValidateSearchError)\n }\n\n let didError = false\n\n try {\n await route.options.beforeLoad?.({\n ...match,\n preload: !!opts?.preload,\n })\n } catch (err) {\n handleError(err, route.options.onBeforeLoadError)\n didError = true\n }\n\n // If we errored, do not run the next matches' middleware\n if (didError) {\n break\n }\n }\n } catch (err) {\n if (!opts?.preload) {\n this.navigate(err as any)\n }\n\n throw err\n }\n\n const validResolvedMatches = resolvedMatches.slice(0, firstBadMatchIndex)\n const matchPromises: Promise<any>[] = []\n\n validResolvedMatches.forEach((match, index) => {\n matchPromises.push(\n (async () => {\n const parentMatchPromise = matchPromises[index - 1]\n const route = this.getRoute(match.routeId)\n\n if (\n match.isFetching ||\n (match.status === 'success' &&\n !this.getIsInvalid({ matchId: match.id, preload: opts?.preload }))\n ) {\n return this.getRouteMatch(match.id)?.loadPromise\n }\n\n const fetchedAt = Date.now()\n const checkLatest = () => {\n const latest = this.getRouteMatch(match.id)\n return latest && latest.fetchedAt !== fetchedAt\n ? latest.loadPromise\n : undefined\n }\n\n const loadPromise = (async () => {\n let latestPromise\n\n const componentsPromise = Promise.all(\n componentTypes.map(async (type) => {\n const component = route.options[type]\n\n if ((component as any)?.preload) {\n await (component as any).preload()\n }\n }),\n )\n\n const loaderPromise = route.options.loader?.({\n ...match,\n preload: !!opts?.preload,\n parentMatchPromise,\n })\n\n const handleError = (err: any) => {\n if (isRedirect(err)) {\n if (!opts?.preload) {\n this.navigate(err as any)\n }\n return true\n }\n\n return false\n }\n\n try {\n const [_, loader] = await Promise.all([\n componentsPromise,\n loaderPromise,\n ])\n if ((latestPromise = checkLatest())) return await latestPromise\n\n this.setRouteMatchData(match.id, () => loader, opts)\n } catch (err) {\n if ((latestPromise = checkLatest())) return await latestPromise\n\n if (handleError(err)) {\n return\n }\n\n const errorHandler =\n route.options.onLoadError ?? route.options.onError\n\n let caughtError = err\n\n try {\n errorHandler?.(err)\n } catch (errorHandlerErr) {\n caughtError = errorHandlerErr\n\n if (handleError(errorHandlerErr)) {\n return\n }\n }\n\n this.setRouteMatch(match.id, (s) => ({\n ...s,\n error: caughtError,\n status: 'error',\n isFetching: false,\n updatedAt: Date.now(),\n }))\n }\n })()\n\n this.setRouteMatch(match.id, (s) => ({\n ...s,\n status: s.status !== 'success' ? 'pending' : s.status,\n isFetching: true,\n loadPromise,\n fetchedAt,\n invalid: false,\n }))\n\n await loadPromise\n })(),\n )\n })\n\n await Promise.all(matchPromises)\n }\n\n reload = () => {\n return this.navigate({\n fromCurrent: true,\n replace: true,\n search: true,\n } as any)\n }\n\n resolvePath = (from: string, path: string) => {\n return resolvePath(this.basepath!, from, cleanPath(path))\n }\n\n navigate = async <TFrom extends string = '/', TTo extends string = ''>({\n from,\n to = '' as any,\n search,\n hash,\n replace,\n params,\n }: NavigateOptions<TRoutesInfo, TFrom, TTo>) => {\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n const toString = String(to)\n const fromString = typeof from === 'undefined' ? from : String(from)\n let isExternal\n\n try {\n new URL(`${toString}`)\n isExternal = true\n } catch (e) {}\n\n invariant(\n !isExternal,\n 'Attempting to navigate to external url with this.navigate!',\n )\n\n return this.#commitLocation({\n from: fromString,\n to: toString,\n search,\n hash,\n replace,\n params,\n })\n }\n\n matchRoute = <\n TFrom extends string = '/',\n TTo extends string = '',\n TResolved extends string = ResolveRelativePath<TFrom, NoInfer<TTo>>,\n >(\n location: ToOptions<TRoutesInfo, TFrom, TTo>,\n opts?: MatchRouteOptions,\n ): false | TRoutesInfo['routesById'][TResolved]['__types']['allParams'] => {\n location = {\n ...location,\n to: location.to\n ? this.resolvePath(location.from ?? '', location.to)\n : undefined,\n } as any\n\n const next = this.buildNext(location)\n if (opts?.pending && this.state.status !== 'pending') {\n return false\n }\n\n const baseLocation = opts?.pending\n ? this.state.location\n : this.state.resolvedLocation\n\n if (!baseLocation) {\n return false\n }\n\n const match = matchPathname(this.basepath, baseLocation.pathname, {\n ...opts,\n to: next.pathname,\n }) as any\n\n if (!match) {\n return false\n }\n\n if (opts?.includeSearch ?? true) {\n return partialDeepEqual(baseLocation.search, next.search) ? match : false\n }\n\n return match\n }\n\n buildLink = <TFrom extends string = '/', TTo extends string = ''>({\n from,\n to = '.' as any,\n search,\n params,\n hash,\n target,\n replace,\n activeOptions,\n preload,\n preloadDelay: userPreloadDelay,\n disabled,\n }: LinkOptions<TRoutesInfo, TFrom, TTo>): LinkInfo => {\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n\n try {\n new URL(`${to}`)\n return {\n type: 'external',\n href: to,\n }\n } catch (e) {}\n\n const nextOpts = {\n from,\n to,\n search,\n params,\n hash,\n replace,\n }\n\n const next = this.buildNext(nextOpts)\n\n preload = preload ?? this.options.defaultPreload\n const preloadDelay =\n userPreloadDelay ?? this.options.defaultPreloadDelay ?? 0\n\n // Compare path/hash for matches\n const currentPathSplit = this.state.location.pathname.split('/')\n const nextPathSplit = next.pathname.split('/')\n const pathIsFuzzyEqual = nextPathSplit.every(\n (d, i) => d === currentPathSplit[i],\n )\n // Combine the matches based on user options\n const pathTest = activeOptions?.exact\n ? this.state.location.pathname === next.pathname\n : pathIsFuzzyEqual\n const hashTest = activeOptions?.includeHash\n ? this.state.location.hash === next.hash\n : true\n const searchTest =\n activeOptions?.includeSearch ?? true\n ? partialDeepEqual(this.state.location.search, next.search)\n : true\n\n // The final \"active\" test\n const isActive = pathTest && hashTest && searchTest\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n if (\n !disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!target || target === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n\n // All is well? Navigate!\n this.#commitLocation(nextOpts as any)\n }\n }\n\n // The click handler\n const handleFocus = (e: MouseEvent) => {\n if (preload) {\n this.preloadRoute(nextOpts).catch((err) => {\n console.warn(err)\n console.warn('Error preloading route! ☝️')\n })\n }\n }\n\n const handleTouchStart = (e: TouchEvent) => {\n this.preloadRoute(nextOpts).catch((err) => {\n console.warn(err)\n console.warn('Error preloading route! ☝️')\n })\n }\n\n const handleEnter = (e: MouseEvent) => {\n const target = (e.target || {}) as LinkCurrentTargetElement\n\n if (preload) {\n if (target.preloadTimeout) {\n return\n }\n\n target.preloadTimeout = setTimeout(() => {\n target.preloadTimeout = null\n this.preloadRoute(nextOpts).catch((err) => {\n console.warn(err)\n console.warn('Error preloading route! ☝️')\n })\n }, preloadDelay)\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n const target = (e.target || {}) as LinkCurrentTargetElement\n\n if (target.preloadTimeout) {\n clearTimeout(target.preloadTimeout)\n target.preloadTimeout = null\n }\n }\n\n return {\n type: 'internal',\n next,\n handleFocus,\n handleClick,\n handleEnter,\n handleLeave,\n handleTouchStart,\n isActive,\n disabled,\n }\n }\n\n dehydrate = (): DehydratedRouter => {\n return {\n state: pick(this.state, ['location', 'status', 'lastUpdated']),\n }\n }\n\n hydrate = async (__do_not_use_server_ctx?: HydrationCtx) => {\n let _ctx = __do_not_use_server_ctx\n // Client hydrates from window\n if (typeof document !== 'undefined') {\n _ctx = window.__TSR_DEHYDRATED__\n }\n\n invariant(\n _ctx,\n 'Expected to find a __TSR_DEHYDRATED__ property on window... but we did not. Did you forget to render <DehydrateRouter /> in your app?',\n )\n\n const ctx = _ctx\n this.dehydratedData = ctx.payload as any\n this.options.hydrate?.(ctx.payload as any)\n\n this.__store.setState((s) => {\n return {\n ...s,\n ...ctx.router.state,\n resolvedLocation: ctx.router.state.location,\n }\n })\n\n await this.load()\n\n return\n }\n\n injectedHtml: (string | (() => Promise<string> | string))[] = []\n\n injectHtml = async (html: string | (() => Promise<string> | string)) => {\n this.injectedHtml.push(html)\n }\n\n dehydrateData = <T>(key: any, getData: T | (() => Promise<T> | T)) => {\n if (typeof document === 'undefined') {\n const strKey = typeof key === 'string' ? key : JSON.stringify(key)\n\n this.injectHtml(async () => {\n const id = `__TSR_DEHYDRATED__${strKey}`\n const data =\n typeof getData === 'function' ? await (getData as any)() : getData\n return `<script id='${id}' suppressHydrationWarning>window[\"__TSR_DEHYDRATED__${escapeJSON(\n strKey,\n )}\"] = ${JSON.stringify(data)}\n ;(() => {\n var el = document.getElementById('${id}')\n el.parentElement.removeChild(el)\n })()\n </script>`\n })\n\n return () => this.hydrateData<T>(key)\n }\n\n return () => undefined\n }\n\n hydrateData = <T = unknown>(key: any) => {\n if (typeof document !== 'undefined') {\n const strKey = typeof key === 'string' ? key : JSON.stringify(key)\n\n return window[`__TSR_DEHYDRATED__${strKey}` as any] as T\n }\n\n return undefined\n }\n\n // resolveMatchPromise = (matchId: string, key: string, value: any) => {\n // this.state.matches\n // .find((d) => d.id === matchId)\n // ?.__promisesByKey[key]?.resolve(value)\n // }\n\n #buildRouteTree = (routeTree: TRouteTree) => {\n this.routeTree = routeTree as any\n this.routesById = {} as any\n this.routesByPath = {} as any\n this.flatRoutes = [] as any\n\n const recurseRoutes = (routes: AnyRoute[]) => {\n routes.forEach((route, i) => {\n route.init({ originalIndex: i, router: this })\n\n const existingRoute = (this.routesById as any)[route.id]\n\n invariant(\n !existingRoute,\n `Duplicate routes found with id: ${String(route.id)}`,\n )\n ;(this.routesById as any)[route.id] = route\n\n if (!route.isRoot && route.path) {\n const trimmedFullPath = trimPathRight(route.fullPath)\n if (\n !this.routesByPath[trimmedFullPath] ||\n route.fullPath.endsWith('/')\n ) {\n ;(this.routesByPath as any)[trimmedFullPath] = route\n }\n }\n\n const children = route.children as Route[]\n\n if (children?.length) {\n recurseRoutes(children)\n }\n })\n }\n\n recurseRoutes([routeTree])\n\n this.flatRoutes = (Object.values(this.routesByPath) as AnyRoute[])\n .map((d, i) => {\n const trimmed = trimPath(d.fullPath)\n const parsed = parsePathname(trimmed)\n\n while (parsed.length > 1 && parsed[0]?.value === '/') {\n parsed.shift()\n }\n\n const score = parsed.map((d) => {\n if (d.type === 'param') {\n return 0.5\n }\n\n if (d.type === 'wildcard') {\n return 0.25\n }\n\n return 1\n })\n\n return { child: d, trimmed, parsed, index: i, score }\n })\n .sort((a, b) => {\n let isIndex = a.trimmed === '/' ? 1 : b.trimmed === '/' ? -1 : 0\n\n if (isIndex !== 0) return isIndex\n\n const length = Math.min(a.score.length, b.score.length)\n\n // Sort by length of score\n if (a.score.length !== b.score.length) {\n return b.score.length - a.score.length\n }\n\n // Sort by min available score\n for (let i = 0; i < length; i++) {\n if (a.score[i] !== b.score[i]) {\n return b.score[i]! - a.score[i]!\n }\n }\n\n // Sort by min available parsed value\n for (let i = 0; i < length; i++) {\n if (a.parsed[i]!.value !== b.parsed[i]!.value) {\n return a.parsed[i]!.value! > b.parsed[i]!.value! ? 1 : -1\n }\n }\n\n // Sort by length of trimmed full path\n if (a.trimmed !== b.trimmed) {\n return a.trimmed > b.trimmed ? 1 : -1\n }\n\n // Sort by original index\n return a.index - b.index\n })\n .map((d, i) => {\n d.child.rank = i\n return d.child\n }) as any\n }\n\n #parseLocation = (previousLocation?: ParsedLocation): ParsedLocation => {\n let { pathname, search, hash, state } = this.history.location\n\n const parsedSearch = this.options.parseSearch(search)\n\n return {\n pathname: pathname,\n searchStr: search,\n search: replaceEqualDeep(previousLocation?.search, parsedSearch),\n hash: hash.split('#').reverse()[0] ?? '',\n href: `${pathname}${search}${hash}`,\n state: state as LocationState,\n key: state?.key || '__init__',\n }\n }\n\n #buildLocation = (dest: BuildNextOptions = {}): ParsedLocation => {\n dest.fromCurrent = dest.fromCurrent ?? dest.to === ''\n\n const fromPathname = dest.fromCurrent\n ? this.state.location.pathname\n : dest.from ?? this.state.location.pathname\n\n let pathname = resolvePath(\n this.basepath ?? '/',\n fromPathname,\n `${dest.to ?? ''}`,\n )\n\n const fromMatches = this.matchRoutes(\n this.state.location.pathname,\n this.state.location.search,\n )\n\n const prevParams = { ...last(fromMatches)?.params }\n\n let nextParams =\n (dest.params ?? true) === true\n ? prevParams\n : functionalUpdate(dest.params!, prevParams)\n\n if (nextParams) {\n dest.__matches\n ?.map((d) => this.getRoute(d.routeId).options.stringifyParams)\n .filter(Boolean)\n .forEach((fn) => {\n nextParams = { ...nextParams!, ...fn!(nextParams!) }\n })\n }\n\n pathname = interpolatePath(pathname, nextParams ?? {})\n\n const preSearchFilters =\n dest.__matches\n ?.map(\n (match) =>\n this.getRoute(match.routeId).options.preSearchFilters ?? [],\n )\n .flat()\n .filter(Boolean) ?? []\n\n const postSearchFilters =\n dest.__matches\n ?.map(\n (match) =>\n this.getRoute(match.routeId).options.postSearchFilters ?? [],\n )\n .flat()\n .filter(Boolean) ?? []\n\n // Pre filters first\n const preFilteredSearch = preSearchFilters?.length\n ? preSearchFilters?.reduce(\n (prev, next) => next(prev),\n this.state.location.search,\n )\n : this.state.location.search\n\n // Then the link/navigate function\n const destSearch =\n dest.search === true\n ? preFilteredSearch // Preserve resolvedFrom true\n : dest.search\n ? functionalUpdate(dest.search, preFilteredSearch) ?? {} // Updater\n : preSearchFilters?.length\n ? preFilteredSearch // Preserve resolvedFrom filters\n : {}\n\n // Then post filters\n const postFilteredSearch = postSearchFilters?.length\n ? postSearchFilters.reduce((prev, next) => next(prev), destSearch)\n : destSearch\n\n const search = replaceEqualDeep(\n this.state.location.search,\n postFilteredSearch,\n )\n\n const searchStr = this.options.stringifySearch(search)\n\n const hash =\n dest.hash === true\n ? this.state.location.hash\n : functionalUpdate(dest.hash!, this.state.location.hash)\n\n const hashStr = hash ? `#${hash}` : ''\n\n const nextState =\n dest.state === true\n ? this.state.location.state\n : functionalUpdate(dest.state, this.state.location.state)!\n\n return {\n pathname,\n search,\n searchStr,\n state: nextState,\n hash,\n href: this.history.createHref(`${pathname}${searchStr}${hashStr}`),\n key: dest.key,\n }\n }\n\n #commitLocation = async (\n location: BuildNextOptions & { replace?: boolean },\n ) => {\n const next = this.buildNext(location)\n const id = '' + Date.now() + Math.random()\n\n if (this.navigateTimeout) clearTimeout(this.navigateTimeout)\n\n let nextAction: 'push' | 'replace' = 'replace'\n\n if (!location.replace) {\n nextAction = 'push'\n }\n\n const isSameUrl = this.state.location.href === next.href\n\n if (isSameUrl && !next.key) {\n nextAction = 'replace'\n }\n\n const href = `${next.pathname}${next.searchStr}${\n next.hash ? `#${next.hash}` : ''\n }`\n\n this.history[nextAction === 'push' ? 'push' : 'replace'](href, {\n id,\n ...next.state,\n })\n\n return this.latestLoadPromise\n }\n\n getRouteMatch = (\n id: string,\n ): undefined | RouteMatch<TRoutesInfo, AnyRoute> => {\n return this.state.matchesById[id]\n }\n\n setRouteMatch = (\n id: string,\n updater: (\n prev: RouteMatch<TRoutesInfo, AnyRoute>,\n ) => RouteMatch<TRoutesInfo, AnyRoute>,\n ) => {\n this.__store.setState((prev) => ({\n ...prev,\n matchesById: {\n ...prev.matchesById,\n [id]: updater(prev.matchesById[id] as any),\n },\n }))\n }\n\n setRouteMatchData = (\n id: string,\n updater: (prev: any) => any,\n opts?: {\n updatedAt?: number\n maxAge?: number\n },\n ) => {\n const match = this.getRouteMatch(id)\n\n if (!match) return\n\n const route = this.getRoute(match.routeId)\n const updatedAt = opts?.updatedAt ?? Date.now()\n\n const preloadInvalidAt =\n updatedAt +\n (opts?.maxAge ??\n route.options.preloadMaxAge ??\n this.options.defaultPreloadMaxAge ??\n 5000)\n\n const invalidAt =\n updatedAt +\n (opts?.maxAge ??\n route.options.maxAge ??\n this.options.defaultMaxAge ??\n Infinity)\n\n this.setRouteMatch(id, (s) => ({\n ...s,\n error: undefined,\n status: 'success',\n isFetching: false,\n updatedAt: Date.now(),\n loaderData: functionalUpdate(updater, s.loaderData),\n preloadInvalidAt,\n invalidAt,\n }))\n\n if (this.state.matches.find((d) => d.id === id)) {\n }\n }\n\n invalidate = async (opts?: {\n matchId?: string\n reload?: boolean\n }): Promise<void> => {\n if (opts?.matchId) {\n this.setRouteMatch(opts.matchId, (s) => ({\n ...s,\n invalid: true,\n }))\n const matchIndex = this.state.matches.findIndex(\n (d) => d.id === opts.matchId,\n )\n const childMatch = this.state.matches[matchIndex + 1]\n\n if (childMatch) {\n return this.invalidate({ matchId: childMatch.id, reload: false })\n }\n } else {\n this.__store.batch(() => {\n Object.values(this.state.matchesById).forEach((match) => {\n this.setRouteMatch(match.id, (s) => ({\n ...s,\n invalid: true,\n }))\n })\n })\n }\n\n if (opts?.reload ?? true) {\n return this.reload()\n }\n }\n\n getIsInvalid = (opts?: { matchId: string; preload?: boolean }): boolean => {\n if (!opts?.matchId) {\n return !!this.state.matches.find((d) =>\n this.getIsInvalid({ matchId: d.id, preload: opts?.preload }),\n )\n }\n\n const match = this.getRouteMatch(opts?.matchId)\n\n if (!match) {\n return false\n }\n\n const now = Date.now()\n\n return (\n match.invalid ||\n (opts?.preload ? match.preloadInvalidAt : match.invalidAt) < now\n )\n }\n}\n\n// Detect if we're in the DOM\nconst isServer = typeof window === 'undefined' || !window.document.createElement\n\nfunction getInitialRouterState(): RouterState<any, any> {\n return {\n status: 'idle',\n isFetching: false,\n resolvedLocation: null!,\n location: null!,\n matchesById: {},\n matchIds: [],\n pendingMatchIds: [],\n matches: [],\n pendingMatches: [],\n lastUpdated: Date.now(),\n }\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nexport type AnyRedirect = Redirect<any, any, any>\n\nexport type Redirect<\n TRoutesInfo extends AnyRoutesInfo = RegisteredRoutesInfo,\n TFrom extends TRoutesInfo['routePaths'] = '/',\n TTo extends string = '',\n> = NavigateOptions<TRoutesInfo, TFrom, TTo> & {\n code?: number\n}\n\nexport function redirect<\n TRoutesInfo extends AnyRoutesInfo = RegisteredRoutesInfo,\n TFrom extends TRoutesInfo['routePaths'] = '/',\n TTo extends string = '',\n>(opts: Redirect<TRoutesInfo, TFrom, TTo>): Redirect<TRoutesInfo, TFrom, TTo> {\n ;(opts as any).isRedirect = true\n return opts\n}\n\nexport function isRedirect(obj: any): obj is AnyRedirect {\n return !!obj?.isRedirect\n}\n\nexport class SearchParamError extends Error {}\nexport class PathParamError extends Error {}\n\nfunction escapeJSON(jsonString: string) {\n return jsonString\n .replace(/\\\\/g, '\\\\\\\\') // Escape backslashes\n .replace(/'/g, \"\\\\'\") // Escape single quotes\n .replace(/\"/g, '\\\\\"') // Escape double quotes\n}\n\n// A function that takes an import() argument which is a function and returns a new function that will\n// proxy arguments from the caller to the imported function, retaining all type\n// information along the way\nexport function lazyFn<\n T extends Record<string, (...args: any[]) => any>,\n TKey extends keyof T = 'default',\n>(fn: () => Promise<T>, key?: TKey) {\n return async (...args: Parameters<T[TKey]>): Promise<ReturnType<T[TKey]>> => {\n const imported = await fn()\n return imported[key || 'default'](...args)\n }\n}\n"],"names":["componentTypes","Router","constructor","options","defaultPreloadDelay","context","undefined","stringifySearch","defaultStringifySearch","parseSearch","defaultParseSearch","__store","Store","getInitialRouterState","onUpdate","prev","state","matchesByIdChanged","matchesById","matchesChanged","pendingMatchesChanged","matchIds","length","some","d","i","pendingMatchIds","matches","map","id","pendingMatches","isFetching","defaultPriority","update","next","buildNext","hash","fromCurrent","search","location","href","replace","reset","setState","s","Object","assign","mount","safeLoad","opts","history","isServer","createMemoryHistory","createBrowserHistory","parsedLocation","resolvedLocation","listen","basepath","routeTree","trimPath","__matches","matchRoutes","pathname","cancelMatches","forEach","match","cancelMatch","getRouteMatch","abortController","abort","load","catch","err","latestLoadPromise","Promise","resolve","promise","reject","latestPromise","checkLatest","batch","throwOnError","debug","status","loadMatches","prevLocation","onRouteChange","#mergeMatches","prevMatchesById","nextMatches","nextMatchesById","hadNew","getRoute","route","routesById","invariant","preloadRoute","navigateOpts","preload","maxAge","cleanMatches","now","Date","outdatedMatchIds","values","filter","routeId","includes","preloadInvalidAt","gcMaxAge","updatedAt","locationSearch","routeParams","foundRoute","flatRoutes","find","matchedParams","matchPathname","to","fullPath","caseSensitive","routeCursor","matchedRoutes","parentRoute","unshift","allParams","parsedParams","parsedParamsError","parseParams","PathParamError","message","cause","interpolatedPath","interpolatePath","path","key","params","stringifiedKey","JSON","stringify","matchId","existingMatch","hasLoaders","loader","routeMatch","joinPaths","invalidAt","Infinity","routeSearch","invalid","error","paramsError","searchError","loaderData","loadPromise","routeContext","AbortController","fetchedAt","parentMatch","searchInfo","parentSearchInfo","validator","validateSearch","parse","replaceEqualDeep","SearchParamError","contextInfo","getContext","parentContext","onError","resolvedMatches","setRouteMatch","firstBadMatchIndex","index","entries","handleError","handler","isRedirect","errorHandlerErr","onParseParamsError","onValidateSearchError","didError","beforeLoad","onBeforeLoadError","navigate","validResolvedMatches","slice","matchPromises","push","parentMatchPromise","getIsInvalid","latest","componentsPromise","all","type","component","loaderPromise","_","setRouteMatchData","errorHandler","onLoadError","caughtError","reload","resolvePath","from","cleanPath","toString","String","fromString","isExternal","URL","e","matchRoute","pending","baseLocation","includeSearch","partialDeepEqual","buildLink","target","activeOptions","preloadDelay","userPreloadDelay","disabled","nextOpts","defaultPreload","currentPathSplit","split","nextPathSplit","pathIsFuzzyEqual","every","pathTest","exact","hashTest","includeHash","searchTest","isActive","handleClick","isCtrlEvent","defaultPrevented","button","preventDefault","handleFocus","console","warn","handleTouchStart","handleEnter","preloadTimeout","setTimeout","handleLeave","clearTimeout","dehydrate","pick","hydrate","__do_not_use_server_ctx","_ctx","document","window","__TSR_DEHYDRATED__","ctx","dehydratedData","payload","router","injectedHtml","injectHtml","html","dehydrateData","getData","strKey","data","escapeJSON","hydrateData","routesByPath","recurseRoutes","routes","init","originalIndex","existingRoute","isRoot","trimmedFullPath","trimPathRight","endsWith","children","trimmed","parsed","parsePathname","value","shift","score","child","sort","a","b","isIndex","Math","min","rank","previousLocation","parsedSearch","searchStr","reverse","#buildLocation","dest","fromPathname","fromMatches","prevParams","last","nextParams","functionalUpdate","stringifyParams","Boolean","fn","preSearchFilters","flat","postSearchFilters","preFilteredSearch","reduce","destSearch","postFilteredSearch","hashStr","nextState","createHref","random","navigateTimeout","nextAction","isSameUrl","updater","preloadMaxAge","defaultPreloadMaxAge","defaultMaxAge","invalidate","matchIndex","findIndex","childMatch","createElement","lastUpdated","metaKey","altKey","ctrlKey","shiftKey","redirect","obj","Error","jsonString","lazyFn","args","imported"],"mappings":"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"}
|
package/build/esm/index.js
CHANGED
|
@@ -1087,26 +1087,28 @@ class Router {
|
|
|
1087
1087
|
};
|
|
1088
1088
|
loadMatches = async (resolvedMatches, opts) => {
|
|
1089
1089
|
this.cleanMatches();
|
|
1090
|
+
if (!opts?.preload) {
|
|
1091
|
+
resolvedMatches.forEach(match => {
|
|
1092
|
+
// Update each match with its latest url data
|
|
1093
|
+
this.setRouteMatch(match.id, s => ({
|
|
1094
|
+
...s,
|
|
1095
|
+
routeSearch: match.routeSearch,
|
|
1096
|
+
search: match.search,
|
|
1097
|
+
routeContext: match.routeContext,
|
|
1098
|
+
context: match.context,
|
|
1099
|
+
error: match.error,
|
|
1100
|
+
paramsError: match.paramsError,
|
|
1101
|
+
searchError: match.searchError,
|
|
1102
|
+
params: match.params
|
|
1103
|
+
}));
|
|
1104
|
+
});
|
|
1105
|
+
}
|
|
1090
1106
|
let firstBadMatchIndex;
|
|
1091
1107
|
|
|
1092
1108
|
// Check each match middleware to see if the route can be accessed
|
|
1093
1109
|
try {
|
|
1094
|
-
|
|
1110
|
+
for (const [index, match] of resolvedMatches.entries()) {
|
|
1095
1111
|
const route = this.getRoute(match.routeId);
|
|
1096
|
-
if (!opts?.preload) {
|
|
1097
|
-
// Update each match with its latest url data
|
|
1098
|
-
this.setRouteMatch(match.id, s => ({
|
|
1099
|
-
...s,
|
|
1100
|
-
routeSearch: match.routeSearch,
|
|
1101
|
-
search: match.search,
|
|
1102
|
-
routeContext: match.routeContext,
|
|
1103
|
-
context: match.context,
|
|
1104
|
-
error: match.error,
|
|
1105
|
-
paramsError: match.paramsError,
|
|
1106
|
-
searchError: match.searchError,
|
|
1107
|
-
params: match.params
|
|
1108
|
-
}));
|
|
1109
|
-
}
|
|
1110
1112
|
const handleError = (err, handler) => {
|
|
1111
1113
|
firstBadMatchIndex = firstBadMatchIndex ?? index;
|
|
1112
1114
|
handler = handler || route.options.onError;
|
|
@@ -1134,6 +1136,7 @@ class Router {
|
|
|
1134
1136
|
if (match.searchError) {
|
|
1135
1137
|
handleError(match.searchError, route.options.onValidateSearchError);
|
|
1136
1138
|
}
|
|
1139
|
+
let didError = false;
|
|
1137
1140
|
try {
|
|
1138
1141
|
await route.options.beforeLoad?.({
|
|
1139
1142
|
...match,
|
|
@@ -1141,8 +1144,14 @@ class Router {
|
|
|
1141
1144
|
});
|
|
1142
1145
|
} catch (err) {
|
|
1143
1146
|
handleError(err, route.options.onBeforeLoadError);
|
|
1147
|
+
didError = true;
|
|
1144
1148
|
}
|
|
1145
|
-
|
|
1149
|
+
|
|
1150
|
+
// If we errored, do not run the next matches' middleware
|
|
1151
|
+
if (didError) {
|
|
1152
|
+
break;
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1146
1155
|
} catch (err) {
|
|
1147
1156
|
if (!opts?.preload) {
|
|
1148
1157
|
this.navigate(err);
|