@tanstack/router-core 0.0.1-alpha.7 → 0.0.1-alpha.9

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.
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sources":["../../../../../src/router.ts"],"sourcesContent":["import {\n BrowserHistory,\n createBrowserHistory,\n createMemoryHistory,\n HashHistory,\n History,\n MemoryHistory,\n} from 'history'\nimport invariant from 'tiny-invariant'\nimport { GetFrameworkGeneric } from './frameworks'\n\nimport {\n LinkInfo,\n LinkOptions,\n NavigateOptionsAbsolute,\n ToOptions,\n ValidFromPath,\n} from './link'\nimport {\n cleanPath,\n interpolatePath,\n joinPaths,\n matchPathname,\n resolvePath,\n} from './path'\nimport { AnyRoute, cascadeLoaderData, createRoute, Route } from './route'\nimport {\n AnyRouteConfig,\n AnySearchSchema,\n RouteConfig,\n SearchFilter,\n} from './routeConfig'\nimport {\n AllRouteInfo,\n AnyAllRouteInfo,\n AnyRouteInfo,\n RouteInfo,\n RoutesById,\n} from './routeInfo'\nimport { createRouteMatch, RouteMatch } from './routeMatch'\nimport { defaultParseSearch, defaultStringifySearch } from './searchParams'\nimport {\n functionalUpdate,\n last,\n PickAsRequired,\n replaceEqualDeep,\n Timeout,\n Updater,\n} from './utils'\n\nexport interface LocationState {}\n\nexport interface Location<\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>\nexport type FilterRoutesFn = <TRoute extends Route<any, RouteInfo>>(\n routeConfigs: TRoute[],\n) => TRoute[]\n\nexport interface RouterOptions<TRouteConfig extends AnyRouteConfig> {\n history?: BrowserHistory | MemoryHistory | HashHistory\n stringifySearch?: SearchSerializer\n parseSearch?: SearchParser\n filterRoutes?: FilterRoutesFn\n defaultLinkPreload?: false | 'intent'\n defaultLinkPreloadMaxAge?: number\n defaultLinkPreloadDelay?: number\n useErrorBoundary?: boolean\n defaultElement?: GetFrameworkGeneric<'Element'>\n defaultErrorElement?: GetFrameworkGeneric<'Element'>\n defaultCatchElement?: GetFrameworkGeneric<'Element'>\n defaultPendingElement?: GetFrameworkGeneric<'Element'>\n defaultPendingMs?: number\n defaultPendingMinMs?: number\n defaultLoaderMaxAge?: number\n defaultLoaderGcMaxAge?: number\n caseSensitive?: boolean\n routeConfig?: TRouteConfig\n basepath?: string\n createRouter?: (router: Router<any, any>) => void\n createRoute?: (opts: { route: AnyRoute; router: Router<any, any> }) => void\n}\n\nexport interface Action<\n TPayload = unknown,\n TResponse = unknown,\n // TError = unknown,\n> {\n submit: (submission?: TPayload) => Promise<TResponse>\n current?: ActionState<TPayload, TResponse>\n latest?: ActionState<TPayload, TResponse>\n pending: ActionState<TPayload, TResponse>[]\n}\n\nexport interface ActionState<\n TPayload = unknown,\n TResponse = unknown,\n // TError = unknown,\n> {\n submittedAt: number\n status: 'idle' | 'pending' | 'success' | 'error'\n submission: TPayload\n data?: TResponse\n error?: unknown\n}\n\nexport interface RouterState {\n status: 'idle' | 'loading'\n location: Location\n matches: RouteMatch[]\n lastUpdated: number\n loaderData: unknown\n currentAction?: ActionState\n latestAction?: ActionState\n actions: Record<string, Action>\n pending?: PendingState\n isFetching: boolean\n isPreloading: boolean\n}\n\nexport interface PendingState {\n location: Location\n matches: RouteMatch[]\n}\n\ntype Listener = () => void\n\nexport type ListenerFn = () => void\n\nexport interface BuildNextOptions {\n to?: string | number | null\n params?: true | Updater<Record<string, any>>\n search?: true | Updater<unknown>\n hash?: true | Updater<string>\n key?: string\n from?: string\n fromCurrent?: boolean\n __preSearchFilters?: SearchFilter<any>[]\n __postSearchFilters?: SearchFilter<any>[]\n}\n\nexport type MatchCacheEntry = {\n gc: number\n match: RouteMatch\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}\n\ntype LinkCurrentTargetElement = {\n preloadTimeout?: null | ReturnType<typeof setTimeout>\n}\n\nexport interface Router<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n> {\n options: PickAsRequired<\n RouterOptions<TRouteConfig>,\n 'stringifySearch' | 'parseSearch'\n >\n // Computed in this.update()\n basepath: string\n // Internal:\n allRouteInfo: TAllRouteInfo\n listeners: Listener[]\n location: Location\n navigateTimeout?: Timeout\n nextAction?: 'push' | 'replace'\n state: RouterState\n routeTree: Route<TAllRouteInfo, RouteInfo>\n routesById: RoutesById<TAllRouteInfo>\n navigationPromise: Promise<void>\n removeActionQueue: { action: Action; actionState: ActionState }[]\n startedLoadingAt: number\n resolveNavigation: () => void\n subscribe: (listener: Listener) => () => void\n notify: () => void\n mount: () => () => void\n onFocus: () => void\n update: <TRouteConfig extends RouteConfig = RouteConfig>(\n opts?: RouterOptions<TRouteConfig>,\n ) => Router<TRouteConfig>\n buildRouteTree: (\n routeConfig: RouteConfig,\n ) => Route<TAllRouteInfo, AnyRouteInfo>\n parseLocation: (\n location: History['location'],\n previousLocation?: Location,\n ) => Location\n buildLocation: (dest: BuildNextOptions) => Location\n commitLocation: (next: Location, replace?: boolean) => Promise<void>\n buildNext: (opts: BuildNextOptions) => Location\n cancelMatches: () => void\n loadLocation: (next?: Location) => Promise<void>\n matchCache: Record<string, MatchCacheEntry>\n cleanMatchCache: () => void\n getRoute: <TId extends keyof TAllRouteInfo['routeInfoById']>(\n id: TId,\n ) => Route<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TId]>\n loadRoute: (\n navigateOpts: BuildNextOptions,\n loaderOpts: { maxAge: number },\n ) => Promise<RouteMatch[]>\n matchRoutes: (\n pathname: string,\n opts?: { strictParseParams?: boolean },\n ) => RouteMatch[]\n loadMatches: (\n resolvedMatches: RouteMatch[],\n loaderOpts?: { withPending?: boolean } & (\n | { preload: true; maxAge: number }\n | { preload?: false; maxAge?: never }\n ),\n ) => Promise<void>\n invalidateRoute: (opts: MatchLocation) => void\n reload: () => Promise<void>\n resolvePath: (from: string, path: string) => string\n _navigate: (\n location: BuildNextOptions & { replace?: boolean },\n ) => Promise<void>\n navigate: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n opts: NavigateOptionsAbsolute<TAllRouteInfo, TFrom, TTo>,\n ) => Promise<void>\n matchRoute: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n matchLocation: ToOptions<TAllRouteInfo, TFrom, TTo>,\n opts?: MatchRouteOptions,\n ) => boolean\n buildLink: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n opts: LinkOptions<TAllRouteInfo, TFrom, TTo>,\n ) => LinkInfo\n}\n\n// Detect if we're in the DOM\nconst isServer = Boolean(\n typeof window === 'undefined' || !window.document?.createElement,\n)\n\n// This is the default history object if none is defined\nconst createDefaultHistory = () =>\n !isServer ? createBrowserHistory() : createMemoryHistory()\n\nexport function createRouter<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n>(\n userOptions?: RouterOptions<TRouteConfig>,\n): Router<TRouteConfig, TAllRouteInfo> {\n const history = userOptions?.history || createDefaultHistory()\n\n const originalOptions = {\n defaultLoaderGcMaxAge: 5 * 60 * 1000,\n defaultLoaderMaxAge: 0,\n defaultLinkPreloadDelay: 50,\n ...userOptions,\n stringifySearch: userOptions?.stringifySearch ?? defaultStringifySearch,\n parseSearch: userOptions?.parseSearch ?? defaultParseSearch,\n }\n\n let router: Router<TRouteConfig, TAllRouteInfo> = {\n options: originalOptions,\n listeners: [],\n removeActionQueue: [],\n // Resolved after construction\n basepath: '',\n routeTree: undefined!,\n routesById: {} as any,\n location: undefined!,\n allRouteInfo: undefined!,\n //\n navigationPromise: Promise.resolve(),\n resolveNavigation: () => {},\n matchCache: {},\n state: {\n status: 'idle',\n location: null!,\n matches: [],\n actions: {},\n loaderData: {} as any,\n lastUpdated: Date.now(),\n isFetching: false,\n isPreloading: false,\n },\n startedLoadingAt: Date.now(),\n subscribe: (listener: Listener): (() => void) => {\n router.listeners.push(listener as Listener)\n return () => {\n router.listeners = router.listeners.filter((x) => x !== listener)\n }\n },\n getRoute: (id) => {\n return router.routesById[id]\n },\n notify: (): void => {\n router.state = {\n ...router.state,\n isFetching:\n router.state.status === 'loading' ||\n router.state.matches.some((d) => d.isFetching),\n isPreloading: Object.values(router.matchCache).some(\n (d) =>\n d.match.isFetching &&\n !router.state.matches.find((dd) => dd.matchId === d.match.matchId),\n ),\n }\n\n cascadeLoaderData(router.state.matches)\n router.listeners.forEach((listener) => listener())\n },\n\n mount: () => {\n const next = router.buildLocation({\n to: '.',\n search: true,\n hash: true,\n })\n\n // If the current location isn't updated, trigger a navigation\n // to the current location. Otherwise, load the current location.\n if (next.href !== router.location.href) {\n router.commitLocation(next, true)\n } else {\n router.loadLocation()\n }\n\n const unsub = history.listen((event) => {\n router.loadLocation(\n router.parseLocation(event.location, router.location),\n )\n })\n\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n // Listen to visibillitychange and focus\n window.addEventListener('visibilitychange', router.onFocus, false)\n window.addEventListener('focus', router.onFocus, false)\n }\n\n return () => {\n unsub()\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', router.onFocus)\n window.removeEventListener('focus', router.onFocus)\n }\n },\n\n onFocus: () => {\n router.loadLocation()\n },\n\n update: (opts) => {\n Object.assign(router.options, opts)\n\n const { basepath, routeConfig } = router.options\n\n router.basepath = cleanPath(`/${basepath ?? ''}`)\n\n if (routeConfig) {\n router.routesById = {} as any\n router.routeTree = router.buildRouteTree(routeConfig)\n }\n\n return router as any\n },\n\n buildRouteTree: (rootRouteConfig: RouteConfig) => {\n const recurseRoutes = (\n routeConfigs: RouteConfig[],\n parent?: Route<TAllRouteInfo, any>,\n ): Route<TAllRouteInfo, any>[] => {\n return routeConfigs.map((routeConfig) => {\n const routeOptions = routeConfig.options\n const route = createRoute(routeConfig, routeOptions, parent, router)\n\n // {\n // pendingMs: routeOptions.pendingMs ?? router.defaultPendingMs,\n // pendingMinMs: routeOptions.pendingMinMs ?? router.defaultPendingMinMs,\n // }\n\n const existingRoute = (router.routesById as any)[route.routeId]\n\n if (existingRoute) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Duplicate routes found with id: ${String(route.routeId)}`,\n router.routesById,\n route,\n )\n }\n throw new Error()\n }\n\n ;(router.routesById as any)[route.routeId] = route\n\n const children = routeConfig.children as RouteConfig[]\n\n route.childRoutes = children?.length\n ? recurseRoutes(children, route)\n : undefined\n\n return route\n })\n }\n\n const routes = recurseRoutes([rootRouteConfig])\n\n return routes[0]!\n },\n\n parseLocation: (\n location: History['location'],\n previousLocation?: Location,\n ): Location => {\n const parsedSearch = router.options.parseSearch(location.search)\n\n return {\n pathname: location.pathname,\n searchStr: location.search,\n search: replaceEqualDeep(previousLocation?.search, parsedSearch),\n hash: location.hash.split('#').reverse()[0] ?? '',\n href: `${location.pathname}${location.search}${location.hash}`,\n state: location.state as LocationState,\n key: location.key,\n }\n },\n\n buildLocation: (dest: BuildNextOptions = {}): Location => {\n // const resolvedFrom: Location = {\n // ...router.location,\n const fromPathname = dest.fromCurrent\n ? router.location.pathname\n : dest.from ?? router.location.pathname\n\n let pathname = resolvePath(\n router.basepath ?? '/',\n fromPathname,\n `${dest.to ?? '.'}`,\n )\n\n const fromMatches = router.matchRoutes(router.location.pathname, {\n strictParseParams: true,\n })\n\n const toMatches = router.matchRoutes(pathname)\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 toMatches\n .map((d) => d.options.stringifyParams)\n .filter(Boolean)\n .forEach((fn) => {\n Object.assign({}, nextParams!, fn!(nextParams!))\n })\n }\n\n pathname = interpolatePath(pathname, nextParams ?? {})\n\n // Pre filters first\n const preFilteredSearch = dest.__preSearchFilters?.length\n ? dest.__preSearchFilters.reduce(\n (prev, next) => next(prev),\n router.location.search,\n )\n : router.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 : dest.__preSearchFilters?.length\n ? preFilteredSearch // Preserve resolvedFrom filters\n : {}\n\n // Then post filters\n const postFilteredSearch = dest.__postSearchFilters?.length\n ? dest.__postSearchFilters.reduce(\n (prev, next) => next(prev),\n destSearch,\n )\n : destSearch\n\n const search = replaceEqualDeep(\n router.location.search,\n postFilteredSearch,\n )\n\n const searchStr = router.options.stringifySearch(search)\n let hash =\n dest.hash === true\n ? router.location.hash\n : functionalUpdate(dest.hash!, router.location.hash)\n hash = hash ? `#${hash}` : ''\n\n return {\n pathname,\n search,\n searchStr,\n state: router.location.state,\n hash,\n href: `${pathname}${searchStr}${hash}`,\n key: dest.key,\n }\n },\n\n commitLocation: (next: Location, replace?: boolean): Promise<void> => {\n const id = '' + Date.now() + Math.random()\n\n if (router.navigateTimeout) clearTimeout(router.navigateTimeout)\n\n let nextAction: 'push' | 'replace' = 'replace'\n\n if (!replace) {\n nextAction = 'push'\n }\n\n const isSameUrl =\n router.parseLocation(history.location).href === next.href\n\n if (isSameUrl && !next.key) {\n nextAction = 'replace'\n }\n\n if (nextAction === 'replace') {\n history.replace(\n {\n pathname: next.pathname,\n hash: next.hash,\n search: next.searchStr,\n },\n {\n id,\n },\n )\n } else {\n history.push(\n {\n pathname: next.pathname,\n hash: next.hash,\n search: next.searchStr,\n },\n {\n id,\n },\n )\n }\n\n router.navigationPromise = new Promise((resolve) => {\n const previousNavigationResolve = router.resolveNavigation\n\n router.resolveNavigation = () => {\n previousNavigationResolve()\n resolve()\n }\n })\n\n return router.navigationPromise\n },\n\n buildNext: (opts: BuildNextOptions) => {\n const next = router.buildLocation(opts)\n\n const matches = router.matchRoutes(next.pathname)\n\n const __preSearchFilters = matches\n .map((match) => match.options.preSearchFilters ?? [])\n .flat()\n .filter(Boolean)\n\n const __postSearchFilters = matches\n .map((match) => match.options.postSearchFilters ?? [])\n .flat()\n .filter(Boolean)\n\n return router.buildLocation({\n ...opts,\n __preSearchFilters,\n __postSearchFilters,\n })\n },\n\n cancelMatches: () => {\n ;[\n ...router.state.matches,\n ...(router.state.pending?.matches ?? []),\n ].forEach((match) => {\n match.cancel()\n })\n },\n\n loadLocation: async (next?: Location) => {\n const id = Math.random()\n router.startedLoadingAt = id\n\n if (next) {\n // Ingest the new location\n router.location = next\n }\n\n // Clear out old actions\n router.removeActionQueue.forEach(({ action, actionState }) => {\n if (router.state.currentAction === actionState) {\n router.state.currentAction = undefined\n }\n if (action.current === actionState) {\n action.current = undefined\n }\n })\n router.removeActionQueue = []\n\n // Cancel any pending matches\n router.cancelMatches()\n\n // Match the routes\n const matches = router.matchRoutes(location.pathname, {\n strictParseParams: true,\n })\n\n router.state = {\n ...router.state,\n pending: {\n matches: matches,\n location: router.location,\n },\n status: 'loading',\n }\n\n router.notify()\n\n // Load the matches\n await router.loadMatches(matches, {\n withPending: true,\n })\n\n if (router.startedLoadingAt !== id) {\n // Ignore side-effects of match loading\n return router.navigationPromise\n }\n\n const previousMatches = router.state.matches\n\n const exiting: RouteMatch[] = [],\n staying: RouteMatch[] = []\n\n previousMatches.forEach((d) => {\n if (matches.find((dd) => dd.matchId === d.matchId)) {\n staying.push(d)\n } else {\n exiting.push(d)\n }\n })\n\n const now = Date.now()\n\n exiting.forEach((d) => {\n d.__.onExit?.({\n params: d.params,\n search: d.routeSearch,\n })\n // Clear idle error states when match leaves\n if (d.status === 'error' && !d.isFetching) {\n d.status = 'idle'\n d.error = undefined\n }\n const gc = Math.max(\n d.options.loaderGcMaxAge ?? router.options.defaultLoaderGcMaxAge ?? 0,\n d.options.loaderMaxAge ?? router.options.defaultLoaderMaxAge ?? 0,\n )\n if (gc > 0) {\n router.matchCache[d.matchId] = {\n gc: gc == Infinity ? Number.MAX_SAFE_INTEGER : now + gc,\n match: d,\n }\n }\n })\n\n staying.forEach((d) => {\n d.options.onTransition?.({\n params: d.params,\n search: d.routeSearch,\n })\n })\n\n const entering = matches.filter((d) => {\n return !previousMatches.find((dd) => dd.matchId === d.matchId)\n })\n\n entering.forEach((d) => {\n d.__.onExit = d.options.onMatch?.({\n params: d.params,\n search: d.search,\n })\n })\n\n if (matches.some((d) => d.status === 'loading')) {\n router.notify()\n await Promise.all(\n matches.map((d) => d.__.loaderPromise || Promise.resolve()),\n )\n }\n if (router.startedLoadingAt !== id) {\n // Ignore side-effects of match loading\n return\n }\n\n router.state = {\n ...router.state,\n location: router.location,\n matches,\n pending: undefined,\n status: 'idle',\n }\n\n router.notify()\n router.resolveNavigation()\n },\n\n cleanMatchCache: () => {\n const now = Date.now()\n\n Object.keys(router.matchCache).forEach((matchId) => {\n const entry = router.matchCache[matchId]!\n\n // Don't remove loading matches\n if (entry.match.status === 'loading') {\n return\n }\n\n // Do not remove successful matches that are still valid\n if (entry.gc > 0 && entry.gc > now) {\n return\n }\n\n // Everything else gets removed\n delete router.matchCache[matchId]\n })\n },\n\n loadRoute: async (\n navigateOpts: BuildNextOptions = router.location,\n loaderOpts: { maxAge: number },\n ) => {\n const next = router.buildNext(navigateOpts)\n const matches = router.matchRoutes(next.pathname, {\n strictParseParams: true,\n })\n await router.loadMatches(matches, {\n preload: true,\n maxAge: loaderOpts.maxAge,\n })\n return matches\n },\n\n matchRoutes: (pathname, opts) => {\n router.cleanMatchCache()\n\n const matches: RouteMatch[] = []\n\n if (!router.routeTree) {\n return matches\n }\n\n const existingMatches = [\n ...router.state.matches,\n ...(router.state.pending?.matches ?? []),\n ]\n\n const recurse = async (routes: Route<any, any>[]): Promise<void> => {\n const parentMatch = last(matches)\n let params = parentMatch?.params ?? {}\n\n const filteredRoutes = router.options.filterRoutes?.(routes) ?? routes\n\n let foundRoutes: Route[] = []\n\n const findMatchInRoutes = (parentRoutes: Route[], routes: Route[]) => {\n routes.some((route) => {\n if (!route.routePath && route.childRoutes?.length) {\n return findMatchInRoutes(\n [...foundRoutes, route],\n route.childRoutes,\n )\n }\n\n const fuzzy = !!(\n route.routePath !== '/' || route.childRoutes?.length\n )\n\n const matchParams = matchPathname(pathname, {\n to: route.fullPath,\n fuzzy,\n caseSensitive:\n route.options.caseSensitive ?? router.options.caseSensitive,\n })\n\n if (matchParams) {\n let parsedParams\n\n try {\n parsedParams =\n route.options.parseParams?.(matchParams!) ?? matchParams\n } catch (err) {\n if (opts?.strictParseParams) {\n throw err\n }\n }\n\n params = {\n ...params,\n ...parsedParams,\n }\n }\n\n if (!!matchParams) {\n foundRoutes = [...parentRoutes, route]\n }\n\n return !!foundRoutes.length\n })\n\n return !!foundRoutes.length\n }\n\n findMatchInRoutes([], filteredRoutes)\n\n if (!foundRoutes.length) {\n return\n }\n\n foundRoutes.forEach((foundRoute) => {\n const interpolatedPath = interpolatePath(foundRoute.routePath, params)\n const matchId = interpolatePath(foundRoute.routeId, params, true)\n\n const match =\n existingMatches.find((d) => d.matchId === matchId) ||\n router.matchCache[matchId]?.match ||\n createRouteMatch(router, foundRoute, {\n matchId,\n params,\n pathname: joinPaths([pathname, interpolatedPath]),\n })\n\n matches.push(match)\n })\n\n const foundRoute = last(foundRoutes)!\n\n if (foundRoute.childRoutes?.length) {\n recurse(foundRoute.childRoutes)\n }\n }\n\n recurse([router.routeTree])\n\n cascadeLoaderData(matches)\n\n return matches\n },\n\n loadMatches: async (resolvedMatches, loaderOpts) => {\n const now = Date.now()\n\n const matchPromises = resolvedMatches.map(async (match) => {\n // Validate the match (loads search params etc)\n match.__.validate()\n\n // If the match doesn't have a loader, don't attempt to load it\n if (!match.hasLoaders()) {\n return\n }\n // If this is a preload, add it to the preload cache\n if (loaderOpts?.preload && loaderOpts?.maxAge > 0) {\n // If the match is currently active, don't preload it\n if (router.state.matches.find((d) => d.matchId === match.matchId)) {\n return\n }\n router.matchCache[match.matchId] = {\n gc: now + loaderOpts.maxAge, // TODO: Should this use the route's maxAge?\n match,\n }\n }\n\n // If the match is invalid, errored or idle, trigger it to load\n if (\n (match.status === 'success' && match.getIsInvalid()) ||\n match.status === 'error' ||\n match.status === 'idle'\n ) {\n match.load()\n }\n\n if (match.status === 'loading') {\n // If requested, start the pending timers\n if (loaderOpts?.withPending) match.__.startPending()\n\n // Wait for the first sign of activity from the match\n // This might be completion, error, or a pending state\n await match.__.loadPromise\n }\n })\n\n router.notify()\n\n await Promise.all(matchPromises)\n },\n\n invalidateRoute: (opts: MatchLocation) => {\n const next = router.buildNext(opts)\n const unloadedMatchIds = router\n .matchRoutes(next.pathname)\n .map((d) => d.matchId)\n ;[\n ...router.state.matches,\n ...(router.state.pending?.matches ?? []),\n ].forEach((match) => {\n if (unloadedMatchIds.includes(match.matchId)) {\n match.invalidate()\n }\n })\n },\n\n reload: () =>\n router._navigate({\n fromCurrent: true,\n replace: true,\n search: true,\n }),\n\n resolvePath: (from: string, path: string) => {\n return resolvePath(router.basepath!, from, cleanPath(path))\n },\n\n matchRoute: (location, opts) => {\n // const location = router.buildNext(opts)\n\n location = {\n ...location,\n to: location.to\n ? router.resolvePath(location.from ?? '', location.to)\n : undefined,\n }\n\n const next = router.buildNext(location)\n\n if (opts?.pending) {\n if (!router.state.pending?.location) {\n return false\n }\n return !!matchPathname(router.state.pending.location.pathname, {\n ...opts,\n to: next.pathname,\n })\n }\n\n return !!matchPathname(router.state.location.pathname, {\n ...opts,\n to: next.pathname,\n })\n },\n\n _navigate: (location: BuildNextOptions & { replace?: boolean }) => {\n const next = router.buildNext(location)\n return router.commitLocation(next, location.replace)\n },\n\n navigate: async ({ from, to = '.', search, hash, replace, params }) => {\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 = String(from)\n\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 router.navigate!',\n )\n\n return router._navigate({\n from: fromString,\n to: toString,\n search,\n hash,\n replace,\n params,\n })\n },\n\n buildLink: ({\n from,\n to = '.',\n search,\n params,\n hash,\n target,\n replace,\n activeOptions,\n preload,\n preloadMaxAge: userPreloadMaxAge,\n preloadDelay: userPreloadDelay,\n disabled,\n }) => {\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 = router.buildNext(nextOpts)\n\n preload = preload ?? router.options.defaultLinkPreload\n const preloadMaxAge =\n userPreloadMaxAge ??\n router.options.defaultLinkPreloadMaxAge ??\n router.options.defaultLoaderGcMaxAge ??\n 0\n const preloadDelay =\n userPreloadDelay ?? router.options.defaultLinkPreloadDelay ?? 0\n\n // Compare path/hash for matches\n const pathIsEqual = router.state.location.pathname === next.pathname\n const currentPathSplit = router.state.location.pathname.split('/')\n const nextPathSplit = next.pathname.split('/')\n const pathIsFuzzyEqual = nextPathSplit.every(\n (d, i) => d === currentPathSplit[i],\n )\n const hashIsEqual = router.state.location.hash === next.hash\n // Combine the matches based on user options\n const pathTest = activeOptions?.exact ? pathIsEqual : pathIsFuzzyEqual\n const hashTest = activeOptions?.includeHash ? hashIsEqual : true\n\n // The final \"active\" test\n const isActive = pathTest && hashTest\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 if (pathIsEqual && !search && !hash) {\n router.invalidateRoute(nextOpts)\n }\n\n // All is well? Navigate!)\n router._navigate(nextOpts)\n }\n }\n\n // The click handler\n const handleFocus = (e: MouseEvent) => {\n if (preload && preloadMaxAge > 0) {\n router.loadRoute(nextOpts, { maxAge: preloadMaxAge })\n }\n }\n\n const handleEnter = (e: MouseEvent) => {\n const target = (e.target || {}) as LinkCurrentTargetElement\n\n if (preload && preloadMaxAge > 0) {\n if (target.preloadTimeout) {\n return\n }\n\n target.preloadTimeout = setTimeout(() => {\n target.preloadTimeout = null\n router.loadRoute(nextOpts, { maxAge: preloadMaxAge })\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 isActive,\n disabled,\n }\n },\n }\n\n router.location = router.parseLocation(history.location)\n router.state.location = router.location\n\n router.update(userOptions)\n\n // Allow frameworks to hook into the router creation\n router.options.createRouter?.(router)\n\n return router\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n"],"names":["isServer","Boolean","window","document","createElement","createDefaultHistory","createBrowserHistory","createMemoryHistory","createRouter","userOptions","history","originalOptions","_extends","defaultLoaderGcMaxAge","defaultLoaderMaxAge","defaultLinkPreloadDelay","stringifySearch","defaultStringifySearch","parseSearch","defaultParseSearch","router","options","listeners","removeActionQueue","basepath","routeTree","undefined","routesById","location","allRouteInfo","navigationPromise","Promise","resolve","resolveNavigation","matchCache","state","status","matches","actions","loaderData","lastUpdated","Date","now","isFetching","isPreloading","startedLoadingAt","subscribe","listener","push","filter","x","getRoute","id","notify","some","d","Object","values","match","find","dd","matchId","cascadeLoaderData","forEach","mount","next","buildLocation","to","search","hash","href","commitLocation","loadLocation","unsub","listen","event","parseLocation","addEventListener","onFocus","removeEventListener","update","opts","assign","routeConfig","cleanPath","buildRouteTree","rootRouteConfig","recurseRoutes","routeConfigs","parent","map","routeOptions","route","createRoute","existingRoute","routeId","process","env","NODE_ENV","console","warn","String","Error","children","childRoutes","length","routes","previousLocation","parsedSearch","pathname","searchStr","replaceEqualDeep","split","reverse","key","dest","fromPathname","fromCurrent","from","resolvePath","fromMatches","matchRoutes","strictParseParams","toMatches","prevParams","last","params","nextParams","functionalUpdate","stringifyParams","fn","interpolatePath","preFilteredSearch","__preSearchFilters","reduce","prev","destSearch","postFilteredSearch","__postSearchFilters","replace","Math","random","navigateTimeout","clearTimeout","nextAction","isSameUrl","previousNavigationResolve","buildNext","preSearchFilters","flat","postSearchFilters","cancelMatches","pending","cancel","action","actionState","currentAction","current","loadMatches","withPending","previousMatches","exiting","staying","__","onExit","routeSearch","error","gc","max","loaderGcMaxAge","loaderMaxAge","Infinity","Number","MAX_SAFE_INTEGER","onTransition","entering","onMatch","all","loaderPromise","cleanMatchCache","keys","entry","loadRoute","navigateOpts","loaderOpts","preload","maxAge","existingMatches","recurse","parentMatch","filteredRoutes","filterRoutes","foundRoutes","findMatchInRoutes","parentRoutes","routePath","fuzzy","matchParams","matchPathname","fullPath","caseSensitive","parsedParams","parseParams","err","foundRoute","interpolatedPath","createRouteMatch","joinPaths","resolvedMatches","matchPromises","validate","hasLoaders","getIsInvalid","load","startPending","loadPromise","invalidateRoute","unloadedMatchIds","includes","invalidate","reload","_navigate","path","matchRoute","navigate","toString","fromString","isExternal","URL","e","invariant","buildLink","target","activeOptions","preloadMaxAge","userPreloadMaxAge","preloadDelay","userPreloadDelay","disabled","type","nextOpts","defaultLinkPreload","defaultLinkPreloadMaxAge","pathIsEqual","currentPathSplit","nextPathSplit","pathIsFuzzyEqual","every","i","hashIsEqual","pathTest","exact","hashTest","includeHash","isActive","handleClick","isCtrlEvent","defaultPrevented","button","preventDefault","handleFocus","handleEnter","preloadTimeout","setTimeout","handleLeave","metaKey","altKey","ctrlKey","shiftKey"],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sources":["../../../../../src/router.ts"],"sourcesContent":["import {\n BrowserHistory,\n createBrowserHistory,\n createMemoryHistory,\n HashHistory,\n History,\n MemoryHistory,\n} from 'history'\nimport invariant from 'tiny-invariant'\nimport { GetFrameworkGeneric } from './frameworks'\n\nimport {\n LinkInfo,\n LinkOptions,\n NavigateOptionsAbsolute,\n ToOptions,\n ValidFromPath,\n} from './link'\nimport {\n cleanPath,\n interpolatePath,\n joinPaths,\n matchPathname,\n resolvePath,\n} from './path'\nimport { AnyRoute, cascadeLoaderData, createRoute, Route } from './route'\nimport {\n AnyRouteConfig,\n AnySearchSchema,\n RouteConfig,\n SearchFilter,\n} from './routeConfig'\nimport {\n AllRouteInfo,\n AnyAllRouteInfo,\n AnyRouteInfo,\n RouteInfo,\n RoutesById,\n} from './routeInfo'\nimport { createRouteMatch, RouteMatch } from './routeMatch'\nimport { defaultParseSearch, defaultStringifySearch } from './searchParams'\nimport {\n functionalUpdate,\n last,\n PickAsRequired,\n replaceEqualDeep,\n Timeout,\n Updater,\n} from './utils'\n\nexport interface LocationState {}\n\nexport interface Location<\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>\nexport type FilterRoutesFn = <TRoute extends Route<any, RouteInfo>>(\n routeConfigs: TRoute[],\n) => TRoute[]\n\nexport interface RouterOptions<TRouteConfig extends AnyRouteConfig> {\n history?: BrowserHistory | MemoryHistory | HashHistory\n stringifySearch?: SearchSerializer\n parseSearch?: SearchParser\n filterRoutes?: FilterRoutesFn\n defaultPreload?: false | 'intent'\n defaultPreloadMaxAge?: number\n defaultPreloadGcMaxAge?: number\n defaultPreloadDelay?: number\n useErrorBoundary?: boolean\n defaultElement?: GetFrameworkGeneric<'Element'>\n defaultErrorElement?: GetFrameworkGeneric<'Element'>\n defaultCatchElement?: GetFrameworkGeneric<'Element'>\n defaultPendingElement?: GetFrameworkGeneric<'Element'>\n defaultPendingMs?: number\n defaultPendingMinMs?: number\n defaultLoaderMaxAge?: number\n defaultLoaderGcMaxAge?: number\n caseSensitive?: boolean\n routeConfig?: TRouteConfig\n basepath?: string\n createRouter?: (router: Router<any, any>) => void\n createRoute?: (opts: { route: AnyRoute; router: Router<any, any> }) => void\n}\n\nexport interface Action<\n TPayload = unknown,\n TResponse = unknown,\n // TError = unknown,\n> {\n submit: (submission?: TPayload) => Promise<TResponse>\n current?: ActionState<TPayload, TResponse>\n latest?: ActionState<TPayload, TResponse>\n pending: ActionState<TPayload, TResponse>[]\n}\n\nexport interface ActionState<\n TPayload = unknown,\n TResponse = unknown,\n // TError = unknown,\n> {\n submittedAt: number\n status: 'idle' | 'pending' | 'success' | 'error'\n submission: TPayload\n data?: TResponse\n error?: unknown\n}\n\nexport interface RouterState {\n status: 'idle' | 'loading'\n location: Location\n matches: RouteMatch[]\n lastUpdated: number\n loaderData: unknown\n currentAction?: ActionState\n latestAction?: ActionState\n actions: Record<string, Action>\n pending?: PendingState\n isFetching: boolean\n isPreloading: boolean\n}\n\nexport interface PendingState {\n location: Location\n matches: RouteMatch[]\n}\n\ntype Listener = () => void\n\nexport type ListenerFn = () => void\n\nexport interface BuildNextOptions {\n to?: string | number | null\n params?: true | Updater<Record<string, any>>\n search?: true | Updater<unknown>\n hash?: true | Updater<string>\n key?: string\n from?: string\n fromCurrent?: boolean\n __preSearchFilters?: SearchFilter<any>[]\n __postSearchFilters?: SearchFilter<any>[]\n}\n\nexport type MatchCacheEntry = {\n gc: number\n match: RouteMatch\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}\n\ntype LinkCurrentTargetElement = {\n preloadTimeout?: null | ReturnType<typeof setTimeout>\n}\n\nexport interface Router<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n> {\n options: PickAsRequired<\n RouterOptions<TRouteConfig>,\n 'stringifySearch' | 'parseSearch'\n >\n // Computed in this.update()\n basepath: string\n // Internal:\n allRouteInfo: TAllRouteInfo\n listeners: Listener[]\n location: Location\n navigateTimeout?: Timeout\n nextAction?: 'push' | 'replace'\n state: RouterState\n routeTree: Route<TAllRouteInfo, RouteInfo>\n routesById: RoutesById<TAllRouteInfo>\n navigationPromise: Promise<void>\n removeActionQueue: { action: Action; actionState: ActionState }[]\n startedLoadingAt: number\n resolveNavigation: () => void\n subscribe: (listener: Listener) => () => void\n notify: () => void\n mount: () => () => void\n onFocus: () => void\n update: <TRouteConfig extends RouteConfig = RouteConfig>(\n opts?: RouterOptions<TRouteConfig>,\n ) => Router<TRouteConfig>\n buildRouteTree: (\n routeConfig: RouteConfig,\n ) => Route<TAllRouteInfo, AnyRouteInfo>\n parseLocation: (\n location: History['location'],\n previousLocation?: Location,\n ) => Location\n buildLocation: (dest: BuildNextOptions) => Location\n commitLocation: (next: Location, replace?: boolean) => Promise<void>\n buildNext: (opts: BuildNextOptions) => Location\n cancelMatches: () => void\n loadLocation: (next?: Location) => Promise<void>\n matchCache: Record<string, MatchCacheEntry>\n cleanMatchCache: () => void\n getRoute: <TId extends keyof TAllRouteInfo['routeInfoById']>(\n id: TId,\n ) => Route<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TId]>\n loadRoute: (navigateOpts: BuildNextOptions) => Promise<RouteMatch[]>\n preloadRoute: (\n navigateOpts: BuildNextOptions,\n loaderOpts: { maxAge?: number; gcMaxAge?: number },\n ) => Promise<RouteMatch[]>\n matchRoutes: (\n pathname: string,\n opts?: { strictParseParams?: boolean },\n ) => RouteMatch[]\n loadMatches: (\n resolvedMatches: RouteMatch[],\n loaderOpts?: { withPending?: boolean } & (\n | { preload: true; maxAge: number; gcMaxAge: number }\n | { preload?: false; maxAge?: never; gcMaxAge?: never }\n ),\n ) => Promise<void>\n invalidateRoute: (opts: MatchLocation) => void\n reload: () => Promise<void>\n resolvePath: (from: string, path: string) => string\n _navigate: (\n location: BuildNextOptions & { replace?: boolean },\n ) => Promise<void>\n navigate: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n opts: NavigateOptionsAbsolute<TAllRouteInfo, TFrom, TTo>,\n ) => Promise<void>\n matchRoute: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n matchLocation: ToOptions<TAllRouteInfo, TFrom, TTo>,\n opts?: MatchRouteOptions,\n ) => boolean\n buildLink: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n opts: LinkOptions<TAllRouteInfo, TFrom, TTo>,\n ) => LinkInfo\n}\n\n// Detect if we're in the DOM\nconst isServer = Boolean(\n typeof window === 'undefined' || !window.document?.createElement,\n)\n\n// This is the default history object if none is defined\nconst createDefaultHistory = () =>\n !isServer ? createBrowserHistory() : createMemoryHistory()\n\nexport function createRouter<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n>(\n userOptions?: RouterOptions<TRouteConfig>,\n): Router<TRouteConfig, TAllRouteInfo> {\n const history = userOptions?.history || createDefaultHistory()\n\n const originalOptions = {\n defaultLoaderGcMaxAge: 5 * 60 * 1000,\n defaultLoaderMaxAge: 0,\n defaultPreloadMaxAge: 2000,\n defaultPreloadDelay: 50,\n ...userOptions,\n stringifySearch: userOptions?.stringifySearch ?? defaultStringifySearch,\n parseSearch: userOptions?.parseSearch ?? defaultParseSearch,\n }\n\n let router: Router<TRouteConfig, TAllRouteInfo> = {\n options: originalOptions,\n listeners: [],\n removeActionQueue: [],\n // Resolved after construction\n basepath: '',\n routeTree: undefined!,\n routesById: {} as any,\n location: undefined!,\n allRouteInfo: undefined!,\n //\n navigationPromise: Promise.resolve(),\n resolveNavigation: () => {},\n matchCache: {},\n state: {\n status: 'idle',\n location: null!,\n matches: [],\n actions: {},\n loaderData: {} as any,\n lastUpdated: Date.now(),\n isFetching: false,\n isPreloading: false,\n },\n startedLoadingAt: Date.now(),\n subscribe: (listener: Listener): (() => void) => {\n router.listeners.push(listener as Listener)\n return () => {\n router.listeners = router.listeners.filter((x) => x !== listener)\n }\n },\n getRoute: (id) => {\n return router.routesById[id]\n },\n notify: (): void => {\n router.state = {\n ...router.state,\n isFetching:\n router.state.status === 'loading' ||\n router.state.matches.some((d) => d.isFetching),\n isPreloading: Object.values(router.matchCache).some(\n (d) =>\n d.match.isFetching &&\n !router.state.matches.find((dd) => dd.matchId === d.match.matchId),\n ),\n }\n\n cascadeLoaderData(router.state.matches)\n router.listeners.forEach((listener) => listener())\n },\n\n mount: () => {\n const next = router.buildLocation({\n to: '.',\n search: true,\n hash: true,\n })\n\n // If the current location isn't updated, trigger a navigation\n // to the current location. Otherwise, load the current location.\n if (next.href !== router.location.href) {\n router.commitLocation(next, true)\n } else {\n router.loadLocation()\n }\n\n const unsub = history.listen((event) => {\n router.loadLocation(\n router.parseLocation(event.location, router.location),\n )\n })\n\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n // Listen to visibillitychange and focus\n window.addEventListener('visibilitychange', router.onFocus, false)\n window.addEventListener('focus', router.onFocus, false)\n }\n\n return () => {\n unsub()\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', router.onFocus)\n window.removeEventListener('focus', router.onFocus)\n }\n },\n\n onFocus: () => {\n router.loadLocation()\n },\n\n update: (opts) => {\n Object.assign(router.options, opts)\n\n const { basepath, routeConfig } = router.options\n\n router.basepath = cleanPath(`/${basepath ?? ''}`)\n\n if (routeConfig) {\n router.routesById = {} as any\n router.routeTree = router.buildRouteTree(routeConfig)\n }\n\n return router as any\n },\n\n buildRouteTree: (rootRouteConfig: RouteConfig) => {\n const recurseRoutes = (\n routeConfigs: RouteConfig[],\n parent?: Route<TAllRouteInfo, any>,\n ): Route<TAllRouteInfo, any>[] => {\n return routeConfigs.map((routeConfig) => {\n const routeOptions = routeConfig.options\n const route = createRoute(routeConfig, routeOptions, parent, router)\n\n // {\n // pendingMs: routeOptions.pendingMs ?? router.defaultPendingMs,\n // pendingMinMs: routeOptions.pendingMinMs ?? router.defaultPendingMinMs,\n // }\n\n const existingRoute = (router.routesById as any)[route.routeId]\n\n if (existingRoute) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Duplicate routes found with id: ${String(route.routeId)}`,\n router.routesById,\n route,\n )\n }\n throw new Error()\n }\n\n ;(router.routesById as any)[route.routeId] = route\n\n const children = routeConfig.children as RouteConfig[]\n\n route.childRoutes = children?.length\n ? recurseRoutes(children, route)\n : undefined\n\n return route\n })\n }\n\n const routes = recurseRoutes([rootRouteConfig])\n\n return routes[0]!\n },\n\n parseLocation: (\n location: History['location'],\n previousLocation?: Location,\n ): Location => {\n const parsedSearch = router.options.parseSearch(location.search)\n\n return {\n pathname: location.pathname,\n searchStr: location.search,\n search: replaceEqualDeep(previousLocation?.search, parsedSearch),\n hash: location.hash.split('#').reverse()[0] ?? '',\n href: `${location.pathname}${location.search}${location.hash}`,\n state: location.state as LocationState,\n key: location.key,\n }\n },\n\n buildLocation: (dest: BuildNextOptions = {}): Location => {\n // const resolvedFrom: Location = {\n // ...router.location,\n const fromPathname = dest.fromCurrent\n ? router.location.pathname\n : dest.from ?? router.location.pathname\n\n let pathname = resolvePath(\n router.basepath ?? '/',\n fromPathname,\n `${dest.to ?? '.'}`,\n )\n\n const fromMatches = router.matchRoutes(router.location.pathname, {\n strictParseParams: true,\n })\n\n const toMatches = router.matchRoutes(pathname)\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 toMatches\n .map((d) => d.options.stringifyParams)\n .filter(Boolean)\n .forEach((fn) => {\n Object.assign({}, nextParams!, fn!(nextParams!))\n })\n }\n\n pathname = interpolatePath(pathname, nextParams ?? {})\n\n // Pre filters first\n const preFilteredSearch = dest.__preSearchFilters?.length\n ? dest.__preSearchFilters.reduce(\n (prev, next) => next(prev),\n router.location.search,\n )\n : router.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 : dest.__preSearchFilters?.length\n ? preFilteredSearch // Preserve resolvedFrom filters\n : {}\n\n // Then post filters\n const postFilteredSearch = dest.__postSearchFilters?.length\n ? dest.__postSearchFilters.reduce(\n (prev, next) => next(prev),\n destSearch,\n )\n : destSearch\n\n const search = replaceEqualDeep(\n router.location.search,\n postFilteredSearch,\n )\n\n const searchStr = router.options.stringifySearch(search)\n let hash =\n dest.hash === true\n ? router.location.hash\n : functionalUpdate(dest.hash!, router.location.hash)\n hash = hash ? `#${hash}` : ''\n\n return {\n pathname,\n search,\n searchStr,\n state: router.location.state,\n hash,\n href: `${pathname}${searchStr}${hash}`,\n key: dest.key,\n }\n },\n\n commitLocation: (next: Location, replace?: boolean): Promise<void> => {\n const id = '' + Date.now() + Math.random()\n\n if (router.navigateTimeout) clearTimeout(router.navigateTimeout)\n\n let nextAction: 'push' | 'replace' = 'replace'\n\n if (!replace) {\n nextAction = 'push'\n }\n\n const isSameUrl =\n router.parseLocation(history.location).href === next.href\n\n if (isSameUrl && !next.key) {\n nextAction = 'replace'\n }\n\n if (nextAction === 'replace') {\n history.replace(\n {\n pathname: next.pathname,\n hash: next.hash,\n search: next.searchStr,\n },\n {\n id,\n },\n )\n } else {\n history.push(\n {\n pathname: next.pathname,\n hash: next.hash,\n search: next.searchStr,\n },\n {\n id,\n },\n )\n }\n\n router.navigationPromise = new Promise((resolve) => {\n const previousNavigationResolve = router.resolveNavigation\n\n router.resolveNavigation = () => {\n previousNavigationResolve()\n resolve()\n }\n })\n\n return router.navigationPromise\n },\n\n buildNext: (opts: BuildNextOptions) => {\n const next = router.buildLocation(opts)\n\n const matches = router.matchRoutes(next.pathname)\n\n const __preSearchFilters = matches\n .map((match) => match.options.preSearchFilters ?? [])\n .flat()\n .filter(Boolean)\n\n const __postSearchFilters = matches\n .map((match) => match.options.postSearchFilters ?? [])\n .flat()\n .filter(Boolean)\n\n return router.buildLocation({\n ...opts,\n __preSearchFilters,\n __postSearchFilters,\n })\n },\n\n cancelMatches: () => {\n ;[\n ...router.state.matches,\n ...(router.state.pending?.matches ?? []),\n ].forEach((match) => {\n match.cancel()\n })\n },\n\n loadLocation: async (next?: Location) => {\n const id = Math.random()\n router.startedLoadingAt = id\n\n if (next) {\n // Ingest the new location\n router.location = next\n }\n\n // Clear out old actions\n router.removeActionQueue.forEach(({ action, actionState }) => {\n if (router.state.currentAction === actionState) {\n router.state.currentAction = undefined\n }\n if (action.current === actionState) {\n action.current = undefined\n }\n })\n router.removeActionQueue = []\n\n // Cancel any pending matches\n router.cancelMatches()\n\n // Match the routes\n const matches = router.matchRoutes(location.pathname, {\n strictParseParams: true,\n })\n\n router.state = {\n ...router.state,\n pending: {\n matches: matches,\n location: router.location,\n },\n status: 'loading',\n }\n\n router.notify()\n\n // Load the matches\n await router.loadMatches(matches, {\n withPending: true,\n })\n\n if (router.startedLoadingAt !== id) {\n // Ignore side-effects of match loading\n return router.navigationPromise\n }\n\n const previousMatches = router.state.matches\n\n const exiting: RouteMatch[] = [],\n staying: RouteMatch[] = []\n\n previousMatches.forEach((d) => {\n if (matches.find((dd) => dd.matchId === d.matchId)) {\n staying.push(d)\n } else {\n exiting.push(d)\n }\n })\n\n const now = Date.now()\n\n exiting.forEach((d) => {\n d.__.onExit?.({\n params: d.params,\n search: d.routeSearch,\n })\n // Clear idle error states when match leaves\n if (d.status === 'error' && !d.isFetching) {\n d.status = 'idle'\n d.error = undefined\n }\n const gc = Math.max(\n d.options.loaderGcMaxAge ?? router.options.defaultLoaderGcMaxAge ?? 0,\n d.options.loaderMaxAge ?? router.options.defaultLoaderMaxAge ?? 0,\n )\n if (gc > 0) {\n router.matchCache[d.matchId] = {\n gc: gc == Infinity ? Number.MAX_SAFE_INTEGER : now + gc,\n match: d,\n }\n }\n })\n\n staying.forEach((d) => {\n d.options.onTransition?.({\n params: d.params,\n search: d.routeSearch,\n })\n })\n\n const entering = matches.filter((d) => {\n return !previousMatches.find((dd) => dd.matchId === d.matchId)\n })\n\n entering.forEach((d) => {\n d.__.onExit = d.options.onMatch?.({\n params: d.params,\n search: d.search,\n })\n })\n\n if (matches.some((d) => d.status === 'loading')) {\n router.notify()\n await Promise.all(\n matches.map((d) => d.__.loaderPromise || Promise.resolve()),\n )\n }\n if (router.startedLoadingAt !== id) {\n // Ignore side-effects of match loading\n return\n }\n\n router.state = {\n ...router.state,\n location: router.location,\n matches,\n pending: undefined,\n status: 'idle',\n }\n\n router.notify()\n router.resolveNavigation()\n },\n\n cleanMatchCache: () => {\n const now = Date.now()\n\n Object.keys(router.matchCache).forEach((matchId) => {\n const entry = router.matchCache[matchId]!\n\n // Don't remove loading matches\n if (entry.match.status === 'loading') {\n return\n }\n\n // Do not remove successful matches that are still valid\n if (entry.gc > 0 && entry.gc > now) {\n return\n }\n\n // Everything else gets removed\n delete router.matchCache[matchId]\n })\n },\n\n loadRoute: async (navigateOpts = router.location) => {\n const next = router.buildNext(navigateOpts)\n const matches = router.matchRoutes(next.pathname, {\n strictParseParams: true,\n })\n await router.loadMatches(matches)\n return matches\n },\n\n preloadRoute: async (navigateOpts = router.location, loaderOpts) => {\n const next = router.buildNext(navigateOpts)\n const matches = router.matchRoutes(next.pathname, {\n strictParseParams: true,\n })\n await router.loadMatches(matches, {\n preload: true,\n maxAge:\n loaderOpts.maxAge ??\n router.options.defaultPreloadMaxAge ??\n router.options.defaultLoaderMaxAge ??\n 0,\n gcMaxAge:\n loaderOpts.gcMaxAge ??\n router.options.defaultPreloadGcMaxAge ??\n router.options.defaultLoaderGcMaxAge ??\n 0,\n })\n return matches\n },\n\n matchRoutes: (pathname, opts) => {\n router.cleanMatchCache()\n\n const matches: RouteMatch[] = []\n\n if (!router.routeTree) {\n return matches\n }\n\n const existingMatches = [\n ...router.state.matches,\n ...(router.state.pending?.matches ?? []),\n ]\n\n const recurse = async (routes: Route<any, any>[]): Promise<void> => {\n const parentMatch = last(matches)\n let params = parentMatch?.params ?? {}\n\n const filteredRoutes = router.options.filterRoutes?.(routes) ?? routes\n\n let foundRoutes: Route[] = []\n\n const findMatchInRoutes = (parentRoutes: Route[], routes: Route[]) => {\n routes.some((route) => {\n if (!route.routePath && route.childRoutes?.length) {\n return findMatchInRoutes(\n [...foundRoutes, route],\n route.childRoutes,\n )\n }\n\n const fuzzy = !!(\n route.routePath !== '/' || route.childRoutes?.length\n )\n\n const matchParams = matchPathname(pathname, {\n to: route.fullPath,\n fuzzy,\n caseSensitive:\n route.options.caseSensitive ?? router.options.caseSensitive,\n })\n\n if (matchParams) {\n let parsedParams\n\n try {\n parsedParams =\n route.options.parseParams?.(matchParams!) ?? matchParams\n } catch (err) {\n if (opts?.strictParseParams) {\n throw err\n }\n }\n\n params = {\n ...params,\n ...parsedParams,\n }\n }\n\n if (!!matchParams) {\n foundRoutes = [...parentRoutes, route]\n }\n\n return !!foundRoutes.length\n })\n\n return !!foundRoutes.length\n }\n\n findMatchInRoutes([], filteredRoutes)\n\n if (!foundRoutes.length) {\n return\n }\n\n foundRoutes.forEach((foundRoute) => {\n const interpolatedPath = interpolatePath(foundRoute.routePath, params)\n const matchId = interpolatePath(foundRoute.routeId, params, true)\n\n const match =\n existingMatches.find((d) => d.matchId === matchId) ||\n router.matchCache[matchId]?.match ||\n createRouteMatch(router, foundRoute, {\n matchId,\n params,\n pathname: joinPaths([pathname, interpolatedPath]),\n })\n\n matches.push(match)\n })\n\n const foundRoute = last(foundRoutes)!\n\n if (foundRoute.childRoutes?.length) {\n recurse(foundRoute.childRoutes)\n }\n }\n\n recurse([router.routeTree])\n\n cascadeLoaderData(matches)\n\n return matches\n },\n\n loadMatches: async (resolvedMatches, loaderOpts) => {\n const now = Date.now()\n const minMaxAge = loaderOpts?.preload\n ? Math.max(loaderOpts?.maxAge, loaderOpts?.gcMaxAge)\n : 0\n\n const matchPromises = resolvedMatches.map(async (match) => {\n // Validate the match (loads search params etc)\n match.__.validate()\n\n // If this is a preload, add it to the preload cache\n if (loaderOpts?.preload && minMaxAge > 0) {\n // If the match is currently active, don't preload it\n if (router.state.matches.find((d) => d.matchId === match.matchId)) {\n return\n }\n\n router.matchCache[match.matchId] = {\n gc: now + loaderOpts.gcMaxAge,\n match,\n }\n }\n\n // If the match is invalid, errored or idle, trigger it to load\n if (\n (match.status === 'success' && match.getIsInvalid()) ||\n match.status === 'error' ||\n match.status === 'idle'\n ) {\n const maxAge = loaderOpts?.preload ? loaderOpts?.maxAge : undefined\n\n match.load({ maxAge })\n }\n\n if (match.status === 'loading') {\n // If requested, start the pending timers\n if (loaderOpts?.withPending) match.__.startPending()\n\n // Wait for the first sign of activity from the match\n // This might be completion, error, or a pending state\n await match.__.loadPromise\n }\n })\n\n router.notify()\n\n await Promise.all(matchPromises)\n },\n\n invalidateRoute: (opts: MatchLocation) => {\n const next = router.buildNext(opts)\n const unloadedMatchIds = router\n .matchRoutes(next.pathname)\n .map((d) => d.matchId)\n ;[\n ...router.state.matches,\n ...(router.state.pending?.matches ?? []),\n ].forEach((match) => {\n if (unloadedMatchIds.includes(match.matchId)) {\n match.invalidate()\n }\n })\n },\n\n reload: () =>\n router._navigate({\n fromCurrent: true,\n replace: true,\n search: true,\n }),\n\n resolvePath: (from: string, path: string) => {\n return resolvePath(router.basepath!, from, cleanPath(path))\n },\n\n matchRoute: (location, opts) => {\n // const location = router.buildNext(opts)\n\n location = {\n ...location,\n to: location.to\n ? router.resolvePath(location.from ?? '', location.to)\n : undefined,\n }\n\n const next = router.buildNext(location)\n\n if (opts?.pending) {\n if (!router.state.pending?.location) {\n return false\n }\n return !!matchPathname(router.state.pending.location.pathname, {\n ...opts,\n to: next.pathname,\n })\n }\n\n return !!matchPathname(router.state.location.pathname, {\n ...opts,\n to: next.pathname,\n })\n },\n\n _navigate: (location: BuildNextOptions & { replace?: boolean }) => {\n const next = router.buildNext(location)\n return router.commitLocation(next, location.replace)\n },\n\n navigate: async ({ from, to = '.', search, hash, replace, params }) => {\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 = String(from)\n\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 router.navigate!',\n )\n\n return router._navigate({\n from: fromString,\n to: toString,\n search,\n hash,\n replace,\n params,\n })\n },\n\n buildLink: ({\n from,\n to = '.',\n search,\n params,\n hash,\n target,\n replace,\n activeOptions,\n preload,\n preloadMaxAge: userPreloadMaxAge,\n preloadGcMaxAge: userPreloadGcMaxAge,\n preloadDelay: userPreloadDelay,\n disabled,\n }) => {\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 = router.buildNext(nextOpts)\n\n preload = preload ?? router.options.defaultPreload\n const preloadDelay =\n userPreloadDelay ?? router.options.defaultPreloadDelay ?? 0\n\n // Compare path/hash for matches\n const pathIsEqual = router.state.location.pathname === next.pathname\n const currentPathSplit = router.state.location.pathname.split('/')\n const nextPathSplit = next.pathname.split('/')\n const pathIsFuzzyEqual = nextPathSplit.every(\n (d, i) => d === currentPathSplit[i],\n )\n const hashIsEqual = router.state.location.hash === next.hash\n // Combine the matches based on user options\n const pathTest = activeOptions?.exact ? pathIsEqual : pathIsFuzzyEqual\n const hashTest = activeOptions?.includeHash ? hashIsEqual : true\n\n // The final \"active\" test\n const isActive = pathTest && hashTest\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 if (pathIsEqual && !search && !hash) {\n router.invalidateRoute(nextOpts)\n }\n\n // All is well? Navigate!)\n router._navigate(nextOpts)\n }\n }\n\n // The click handler\n const handleFocus = (e: MouseEvent) => {\n if (preload) {\n router.preloadRoute(nextOpts, {\n maxAge: userPreloadMaxAge,\n gcMaxAge: userPreloadGcMaxAge,\n })\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 router.preloadRoute(nextOpts, {\n maxAge: userPreloadMaxAge,\n gcMaxAge: userPreloadGcMaxAge,\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 isActive,\n disabled,\n }\n },\n }\n\n router.location = router.parseLocation(history.location)\n router.state.location = router.location\n\n router.update(userOptions)\n\n // Allow frameworks to hook into the router creation\n router.options.createRouter?.(router)\n\n return router\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n"],"names":["isServer","Boolean","window","document","createElement","createDefaultHistory","createBrowserHistory","createMemoryHistory","createRouter","userOptions","history","originalOptions","_extends","defaultLoaderGcMaxAge","defaultLoaderMaxAge","defaultPreloadMaxAge","defaultPreloadDelay","stringifySearch","defaultStringifySearch","parseSearch","defaultParseSearch","router","options","listeners","removeActionQueue","basepath","routeTree","undefined","routesById","location","allRouteInfo","navigationPromise","Promise","resolve","resolveNavigation","matchCache","state","status","matches","actions","loaderData","lastUpdated","Date","now","isFetching","isPreloading","startedLoadingAt","subscribe","listener","push","filter","x","getRoute","id","notify","some","d","Object","values","match","find","dd","matchId","cascadeLoaderData","forEach","mount","next","buildLocation","to","search","hash","href","commitLocation","loadLocation","unsub","listen","event","parseLocation","addEventListener","onFocus","removeEventListener","update","opts","assign","routeConfig","cleanPath","buildRouteTree","rootRouteConfig","recurseRoutes","routeConfigs","parent","map","routeOptions","route","createRoute","existingRoute","routeId","process","env","NODE_ENV","console","warn","String","Error","children","childRoutes","length","routes","previousLocation","parsedSearch","pathname","searchStr","replaceEqualDeep","split","reverse","key","dest","fromPathname","fromCurrent","from","resolvePath","fromMatches","matchRoutes","strictParseParams","toMatches","prevParams","last","params","nextParams","functionalUpdate","stringifyParams","fn","interpolatePath","preFilteredSearch","__preSearchFilters","reduce","prev","destSearch","postFilteredSearch","__postSearchFilters","replace","Math","random","navigateTimeout","clearTimeout","nextAction","isSameUrl","previousNavigationResolve","buildNext","preSearchFilters","flat","postSearchFilters","cancelMatches","pending","cancel","action","actionState","currentAction","current","loadMatches","withPending","previousMatches","exiting","staying","__","onExit","routeSearch","error","gc","max","loaderGcMaxAge","loaderMaxAge","Infinity","Number","MAX_SAFE_INTEGER","onTransition","entering","onMatch","all","loaderPromise","cleanMatchCache","keys","entry","loadRoute","navigateOpts","preloadRoute","loaderOpts","preload","maxAge","gcMaxAge","defaultPreloadGcMaxAge","existingMatches","recurse","parentMatch","filteredRoutes","filterRoutes","foundRoutes","findMatchInRoutes","parentRoutes","routePath","fuzzy","matchParams","matchPathname","fullPath","caseSensitive","parsedParams","parseParams","err","foundRoute","interpolatedPath","createRouteMatch","joinPaths","resolvedMatches","minMaxAge","matchPromises","validate","getIsInvalid","load","startPending","loadPromise","invalidateRoute","unloadedMatchIds","includes","invalidate","reload","_navigate","path","matchRoute","navigate","toString","fromString","isExternal","URL","e","invariant","buildLink","target","activeOptions","preloadMaxAge","userPreloadMaxAge","preloadGcMaxAge","userPreloadGcMaxAge","preloadDelay","userPreloadDelay","disabled","type","nextOpts","defaultPreload","pathIsEqual","currentPathSplit","nextPathSplit","pathIsFuzzyEqual","every","i","hashIsEqual","pathTest","exact","hashTest","includeHash","isActive","handleClick","isCtrlEvent","defaultPrevented","button","preventDefault","handleFocus","handleEnter","preloadTimeout","setTimeout","handleLeave","metaKey","altKey","ctrlKey","shiftKey"],"mappings":"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"}
@@ -1365,12 +1365,10 @@ function createRouteMatch(router, route, opts) {
1365
1365
  isPending: false,
1366
1366
  isFetching: false,
1367
1367
  isInvalid: false,
1368
+ invalidAt: Infinity,
1368
1369
  getIsInvalid: () => {
1369
- var _ref, _routeMatch$options$l;
1370
-
1371
1370
  const now = Date.now();
1372
- const maxAge = (_ref = (_routeMatch$options$l = routeMatch.options.loaderMaxAge) != null ? _routeMatch$options$l : router.options.defaultLoaderMaxAge) != null ? _ref : 0;
1373
- return routeMatch.isInvalid || routeMatch.updatedAt + maxAge < now;
1371
+ return routeMatch.isInvalid || routeMatch.invalidAt < now;
1374
1372
  },
1375
1373
  __: {
1376
1374
  abortController: new AbortController(),
@@ -1461,7 +1459,7 @@ function createRouteMatch(router, route, opts) {
1461
1459
  hasLoaders: () => {
1462
1460
  return !!(route.options.loader || route.options.import || elementTypes.some(d => typeof route.options[d] === 'function'));
1463
1461
  },
1464
- load: async () => {
1462
+ load: async opts => {
1465
1463
  const id = '' + Date.now() + Math.random();
1466
1464
  routeMatch.__.latestId = id; // If the match was in an error state, set it
1467
1465
  // to a loading state again. Otherwise, keep it
@@ -1516,6 +1514,8 @@ function createRouteMatch(router, route, opts) {
1516
1514
 
1517
1515
  routeMatch.__.dataPromise = Promise.resolve().then(async () => {
1518
1516
  try {
1517
+ var _ref, _ref2, _opts$maxAge;
1518
+
1519
1519
  if (routeMatch.options.loader) {
1520
1520
  const data = await routeMatch.options.loader({
1521
1521
  params: routeMatch.params,
@@ -1533,6 +1533,7 @@ function createRouteMatch(router, route, opts) {
1533
1533
  routeMatch.error = undefined;
1534
1534
  routeMatch.status = 'success';
1535
1535
  routeMatch.updatedAt = Date.now();
1536
+ routeMatch.invalidAt = routeMatch.updatedAt + ((_ref = (_ref2 = (_opts$maxAge = opts == null ? void 0 : opts.maxAge) != null ? _opts$maxAge : routeMatch.options.loaderMaxAge) != null ? _ref2 : router.options.defaultLoaderMaxAge) != null ? _ref : 0);
1536
1537
  } catch (err) {
1537
1538
  if (id !== routeMatch.__.latestId) {
1538
1539
  return routeMatch.__.loaderPromise;
@@ -1655,7 +1656,8 @@ function createRouter(userOptions) {
1655
1656
  const originalOptions = _extends({
1656
1657
  defaultLoaderGcMaxAge: 5 * 60 * 1000,
1657
1658
  defaultLoaderMaxAge: 0,
1658
- defaultLinkPreloadDelay: 50
1659
+ defaultPreloadMaxAge: 2000,
1660
+ defaultPreloadDelay: 50
1659
1661
  }, userOptions, {
1660
1662
  stringifySearch: (_userOptions$stringif = userOptions == null ? void 0 : userOptions.stringifySearch) != null ? _userOptions$stringif : defaultStringifySearch,
1661
1663
  parseSearch: (_userOptions$parseSea = userOptions == null ? void 0 : userOptions.parseSearch) != null ? _userOptions$parseSea : defaultParseSearch
@@ -2052,7 +2054,21 @@ function createRouter(userOptions) {
2052
2054
  delete router.matchCache[matchId];
2053
2055
  });
2054
2056
  },
2055
- loadRoute: async function loadRoute(navigateOpts, loaderOpts) {
2057
+ loadRoute: async function loadRoute(navigateOpts) {
2058
+ if (navigateOpts === void 0) {
2059
+ navigateOpts = router.location;
2060
+ }
2061
+
2062
+ const next = router.buildNext(navigateOpts);
2063
+ const matches = router.matchRoutes(next.pathname, {
2064
+ strictParseParams: true
2065
+ });
2066
+ await router.loadMatches(matches);
2067
+ return matches;
2068
+ },
2069
+ preloadRoute: async function preloadRoute(navigateOpts, loaderOpts) {
2070
+ var _ref4, _ref5, _loaderOpts$maxAge, _ref6, _ref7, _loaderOpts$gcMaxAge;
2071
+
2056
2072
  if (navigateOpts === void 0) {
2057
2073
  navigateOpts = router.location;
2058
2074
  }
@@ -2063,7 +2079,8 @@ function createRouter(userOptions) {
2063
2079
  });
2064
2080
  await router.loadMatches(matches, {
2065
2081
  preload: true,
2066
- maxAge: loaderOpts.maxAge
2082
+ maxAge: (_ref4 = (_ref5 = (_loaderOpts$maxAge = loaderOpts.maxAge) != null ? _loaderOpts$maxAge : router.options.defaultPreloadMaxAge) != null ? _ref5 : router.options.defaultLoaderMaxAge) != null ? _ref4 : 0,
2083
+ gcMaxAge: (_ref6 = (_ref7 = (_loaderOpts$gcMaxAge = loaderOpts.gcMaxAge) != null ? _loaderOpts$gcMaxAge : router.options.defaultPreloadGcMaxAge) != null ? _ref7 : router.options.defaultLoaderGcMaxAge) != null ? _ref6 : 0
2067
2084
  });
2068
2085
  return matches;
2069
2086
  },
@@ -2158,32 +2175,30 @@ function createRouter(userOptions) {
2158
2175
  },
2159
2176
  loadMatches: async (resolvedMatches, loaderOpts) => {
2160
2177
  const now = Date.now();
2178
+ const minMaxAge = loaderOpts != null && loaderOpts.preload ? Math.max(loaderOpts == null ? void 0 : loaderOpts.maxAge, loaderOpts == null ? void 0 : loaderOpts.gcMaxAge) : 0;
2161
2179
  const matchPromises = resolvedMatches.map(async match => {
2162
2180
  // Validate the match (loads search params etc)
2163
- match.__.validate(); // If the match doesn't have a loader, don't attempt to load it
2181
+ match.__.validate(); // If this is a preload, add it to the preload cache
2164
2182
 
2165
2183
 
2166
- if (!match.hasLoaders()) {
2167
- return;
2168
- } // If this is a preload, add it to the preload cache
2169
-
2170
-
2171
- if (loaderOpts != null && loaderOpts.preload && (loaderOpts == null ? void 0 : loaderOpts.maxAge) > 0) {
2184
+ if (loaderOpts != null && loaderOpts.preload && minMaxAge > 0) {
2172
2185
  // If the match is currently active, don't preload it
2173
2186
  if (router.state.matches.find(d => d.matchId === match.matchId)) {
2174
2187
  return;
2175
2188
  }
2176
2189
 
2177
2190
  router.matchCache[match.matchId] = {
2178
- gc: now + loaderOpts.maxAge,
2179
- // TODO: Should this use the route's maxAge?
2191
+ gc: now + loaderOpts.gcMaxAge,
2180
2192
  match
2181
2193
  };
2182
2194
  } // If the match is invalid, errored or idle, trigger it to load
2183
2195
 
2184
2196
 
2185
2197
  if (match.status === 'success' && match.getIsInvalid() || match.status === 'error' || match.status === 'idle') {
2186
- match.load();
2198
+ const maxAge = loaderOpts != null && loaderOpts.preload ? loaderOpts == null ? void 0 : loaderOpts.maxAge : undefined;
2199
+ match.load({
2200
+ maxAge
2201
+ });
2187
2202
  }
2188
2203
 
2189
2204
  if (match.status === 'loading') {
@@ -2245,7 +2260,7 @@ function createRouter(userOptions) {
2245
2260
  const next = router.buildNext(location);
2246
2261
  return router.commitLocation(next, location.replace);
2247
2262
  },
2248
- navigate: async _ref4 => {
2263
+ navigate: async _ref8 => {
2249
2264
  let {
2250
2265
  from,
2251
2266
  to = '.',
@@ -2253,7 +2268,7 @@ function createRouter(userOptions) {
2253
2268
  hash,
2254
2269
  replace,
2255
2270
  params
2256
- } = _ref4;
2271
+ } = _ref8;
2257
2272
  // If this link simply reloads the current route,
2258
2273
  // make sure it has a new key so it will trigger a data refresh
2259
2274
  // If this `to` is a valid external URL, return
@@ -2277,8 +2292,8 @@ function createRouter(userOptions) {
2277
2292
  params
2278
2293
  });
2279
2294
  },
2280
- buildLink: _ref5 => {
2281
- var _preload, _ref6, _ref7, _ref8;
2295
+ buildLink: _ref9 => {
2296
+ var _preload, _ref10;
2282
2297
 
2283
2298
  let {
2284
2299
  from,
@@ -2291,9 +2306,10 @@ function createRouter(userOptions) {
2291
2306
  activeOptions,
2292
2307
  preload,
2293
2308
  preloadMaxAge: userPreloadMaxAge,
2309
+ preloadGcMaxAge: userPreloadGcMaxAge,
2294
2310
  preloadDelay: userPreloadDelay,
2295
2311
  disabled
2296
- } = _ref5;
2312
+ } = _ref9;
2297
2313
 
2298
2314
  // If this link simply reloads the current route,
2299
2315
  // make sure it has a new key so it will trigger a data refresh
@@ -2316,9 +2332,8 @@ function createRouter(userOptions) {
2316
2332
  replace
2317
2333
  };
2318
2334
  const next = router.buildNext(nextOpts);
2319
- preload = (_preload = preload) != null ? _preload : router.options.defaultLinkPreload;
2320
- const preloadMaxAge = (_ref6 = (_ref7 = userPreloadMaxAge != null ? userPreloadMaxAge : router.options.defaultLinkPreloadMaxAge) != null ? _ref7 : router.options.defaultLoaderGcMaxAge) != null ? _ref6 : 0;
2321
- const preloadDelay = (_ref8 = userPreloadDelay != null ? userPreloadDelay : router.options.defaultLinkPreloadDelay) != null ? _ref8 : 0; // Compare path/hash for matches
2335
+ preload = (_preload = preload) != null ? _preload : router.options.defaultPreload;
2336
+ const preloadDelay = (_ref10 = userPreloadDelay != null ? userPreloadDelay : router.options.defaultPreloadDelay) != null ? _ref10 : 0; // Compare path/hash for matches
2322
2337
 
2323
2338
  const pathIsEqual = router.state.location.pathname === next.pathname;
2324
2339
  const currentPathSplit = router.state.location.pathname.split('/');
@@ -2346,9 +2361,10 @@ function createRouter(userOptions) {
2346
2361
 
2347
2362
 
2348
2363
  const handleFocus = e => {
2349
- if (preload && preloadMaxAge > 0) {
2350
- router.loadRoute(nextOpts, {
2351
- maxAge: preloadMaxAge
2364
+ if (preload) {
2365
+ router.preloadRoute(nextOpts, {
2366
+ maxAge: userPreloadMaxAge,
2367
+ gcMaxAge: userPreloadGcMaxAge
2352
2368
  });
2353
2369
  }
2354
2370
  };
@@ -2356,15 +2372,16 @@ function createRouter(userOptions) {
2356
2372
  const handleEnter = e => {
2357
2373
  const target = e.target || {};
2358
2374
 
2359
- if (preload && preloadMaxAge > 0) {
2375
+ if (preload) {
2360
2376
  if (target.preloadTimeout) {
2361
2377
  return;
2362
2378
  }
2363
2379
 
2364
2380
  target.preloadTimeout = setTimeout(() => {
2365
2381
  target.preloadTimeout = null;
2366
- router.loadRoute(nextOpts, {
2367
- maxAge: preloadMaxAge
2382
+ router.preloadRoute(nextOpts, {
2383
+ maxAge: userPreloadMaxAge,
2384
+ gcMaxAge: userPreloadGcMaxAge
2368
2385
  });
2369
2386
  }, preloadDelay);
2370
2387
  }