@tanstack/router-core 0.0.1-beta.52 → 0.0.1-beta.54

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.
@@ -137,10 +137,9 @@ function createMemoryHistory(opts = {
137
137
  function parseLocation(href, state) {
138
138
  let hashIndex = href.indexOf('#');
139
139
  let searchIndex = href.indexOf('?');
140
- const pathEnd = Math.min(hashIndex, searchIndex);
141
140
  return {
142
141
  href,
143
- pathname: pathEnd > -1 ? href.substring(0, pathEnd) : href,
142
+ pathname: href.substring(0, hashIndex > 0 ? searchIndex > 0 ? Math.min(hashIndex, searchIndex) : hashIndex : searchIndex > 0 ? searchIndex : href.length),
144
143
  hash: hashIndex > -1 ? href.substring(hashIndex, searchIndex) : '',
145
144
  search: searchIndex > -1 ? href.substring(searchIndex) : '',
146
145
  state
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sources":["../../src/history.ts"],"sourcesContent":["// While the public API was clearly inspired by the \"history\" npm package,\n// This implementation attempts to be more lightweight by\n// making assumptions about the way TanStack Router works\n\nexport interface RouterHistory {\n location: RouterLocation\n listen: (cb: () => void) => () => void\n push: (path: string, state: any) => void\n replace: (path: string, state: any) => void\n go: (index: number) => void\n back: () => void\n forward: () => void\n}\n\nexport interface ParsedPath {\n href: string\n pathname: string\n search: string\n hash: string\n}\n\nexport interface RouterLocation extends ParsedPath {\n state: any\n}\n\nconst popStateEvent = 'popstate'\n\nfunction createHistory(opts: {\n getLocation: () => RouterLocation\n listener: (onUpdate: () => void) => () => void\n pushState: (path: string, state: any) => void\n replaceState: (path: string, state: any) => void\n go: (n: number) => void\n back: () => void\n forward: () => void\n}): RouterHistory {\n let currentLocation = opts.getLocation()\n let unsub = () => {}\n let listeners = new Set<() => void>()\n\n const onUpdate = () => {\n currentLocation = opts.getLocation()\n\n listeners.forEach((listener) => listener())\n }\n\n return {\n get location() {\n return currentLocation\n },\n listen: (cb: () => void) => {\n if (listeners.size === 0) {\n unsub = opts.listener(onUpdate)\n }\n listeners.add(cb)\n\n return () => {\n listeners.delete(cb)\n if (listeners.size === 0) {\n unsub()\n }\n }\n },\n push: (path: string, state: any) => {\n opts.pushState(path, state)\n onUpdate()\n },\n replace: (path: string, state: any) => {\n opts.replaceState(path, state)\n onUpdate()\n },\n go: (index) => {\n opts.go(index)\n onUpdate()\n },\n back: () => {\n opts.back()\n onUpdate()\n },\n forward: () => {\n opts.forward()\n onUpdate()\n },\n }\n}\n\nexport function createBrowserHistory(opts?: {\n getHref?: () => string\n createHref?: (path: string) => string\n}): RouterHistory {\n const getHref =\n opts?.getHref ??\n (() =>\n `${window.location.pathname}${window.location.hash}${window.location.search}`)\n const createHref = opts?.createHref ?? ((path) => path)\n const getLocation = () => parseLocation(getHref(), history.state)\n\n return createHistory({\n getLocation,\n listener: (onUpdate) => {\n window.addEventListener(popStateEvent, onUpdate)\n return () => {\n window.removeEventListener(popStateEvent, onUpdate)\n }\n },\n pushState: (path, state) => {\n window.history.pushState(\n { ...state, key: createRandomKey() },\n '',\n createHref(path),\n )\n },\n replaceState: (path, state) => {\n window.history.replaceState(\n { ...state, key: createRandomKey() },\n '',\n createHref(path),\n )\n },\n back: () => window.history.back(),\n forward: () => window.history.forward(),\n go: (n) => window.history.go(n),\n })\n}\n\nexport function createHashHistory(): RouterHistory {\n return createBrowserHistory({\n getHref: () => window.location.hash.substring(1),\n createHref: (path) => `#${path}`,\n })\n}\n\nexport function createMemoryHistory(\n opts: {\n initialEntries: string[]\n initialIndex?: number\n } = {\n initialEntries: ['/'],\n },\n): RouterHistory {\n const entries = opts.initialEntries\n let index = opts.initialIndex ?? entries.length - 1\n let currentState = {}\n\n const getLocation = () => parseLocation(entries[index]!, currentState)\n\n return createHistory({\n getLocation,\n listener: () => {\n return () => {}\n },\n pushState: (path, state) => {\n currentState = {\n ...state,\n key: createRandomKey(),\n }\n entries.push(path)\n index++\n },\n replaceState: (path, state) => {\n currentState = {\n ...state,\n key: createRandomKey(),\n }\n entries[index] = path\n },\n back: () => {\n index--\n },\n forward: () => {\n index = Math.min(index + 1, entries.length - 1)\n },\n go: (n) => window.history.go(n),\n })\n}\n\nfunction parseLocation(href: string, state: any): RouterLocation {\n let hashIndex = href.indexOf('#')\n let searchIndex = href.indexOf('?')\n const pathEnd = Math.min(hashIndex, searchIndex)\n\n return {\n href,\n pathname: pathEnd > -1 ? href.substring(0, pathEnd) : href,\n hash: hashIndex > -1 ? href.substring(hashIndex, searchIndex) : '',\n search: searchIndex > -1 ? href.substring(searchIndex) : '',\n state,\n }\n}\n\n// Thanks co-pilot!\nfunction createRandomKey() {\n return (Math.random() + 1).toString(36).substring(7)\n}\n"],"names":["popStateEvent","createHistory","opts","currentLocation","getLocation","unsub","listeners","Set","onUpdate","forEach","listener","location","listen","cb","size","add","delete","push","path","state","pushState","replace","replaceState","go","index","back","forward","createBrowserHistory","getHref","window","pathname","hash","search","createHref","parseLocation","history","addEventListener","removeEventListener","key","createRandomKey","n","createHashHistory","substring","createMemoryHistory","initialEntries","entries","initialIndex","length","currentState","Math","min","href","hashIndex","indexOf","searchIndex","pathEnd","random","toString"],"mappings":"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"}
1
+ {"version":3,"file":"history.js","sources":["../../src/history.ts"],"sourcesContent":["// While the public API was clearly inspired by the \"history\" npm package,\n// This implementation attempts to be more lightweight by\n// making assumptions about the way TanStack Router works\n\nimport { match } from 'assert'\n\nexport interface RouterHistory {\n location: RouterLocation\n listen: (cb: () => void) => () => void\n push: (path: string, state: any) => void\n replace: (path: string, state: any) => void\n go: (index: number) => void\n back: () => void\n forward: () => void\n}\n\nexport interface ParsedPath {\n href: string\n pathname: string\n search: string\n hash: string\n}\n\nexport interface RouterLocation extends ParsedPath {\n state: any\n}\n\nconst popStateEvent = 'popstate'\n\nfunction createHistory(opts: {\n getLocation: () => RouterLocation\n listener: (onUpdate: () => void) => () => void\n pushState: (path: string, state: any) => void\n replaceState: (path: string, state: any) => void\n go: (n: number) => void\n back: () => void\n forward: () => void\n}): RouterHistory {\n let currentLocation = opts.getLocation()\n let unsub = () => {}\n let listeners = new Set<() => void>()\n\n const onUpdate = () => {\n currentLocation = opts.getLocation()\n\n listeners.forEach((listener) => listener())\n }\n\n return {\n get location() {\n return currentLocation\n },\n listen: (cb: () => void) => {\n if (listeners.size === 0) {\n unsub = opts.listener(onUpdate)\n }\n listeners.add(cb)\n\n return () => {\n listeners.delete(cb)\n if (listeners.size === 0) {\n unsub()\n }\n }\n },\n push: (path: string, state: any) => {\n opts.pushState(path, state)\n onUpdate()\n },\n replace: (path: string, state: any) => {\n opts.replaceState(path, state)\n onUpdate()\n },\n go: (index) => {\n opts.go(index)\n onUpdate()\n },\n back: () => {\n opts.back()\n onUpdate()\n },\n forward: () => {\n opts.forward()\n onUpdate()\n },\n }\n}\n\nexport function createBrowserHistory(opts?: {\n getHref?: () => string\n createHref?: (path: string) => string\n}): RouterHistory {\n const getHref =\n opts?.getHref ??\n (() =>\n `${window.location.pathname}${window.location.hash}${window.location.search}`)\n const createHref = opts?.createHref ?? ((path) => path)\n const getLocation = () => parseLocation(getHref(), history.state)\n\n return createHistory({\n getLocation,\n listener: (onUpdate) => {\n window.addEventListener(popStateEvent, onUpdate)\n return () => {\n window.removeEventListener(popStateEvent, onUpdate)\n }\n },\n pushState: (path, state) => {\n window.history.pushState(\n { ...state, key: createRandomKey() },\n '',\n createHref(path),\n )\n },\n replaceState: (path, state) => {\n window.history.replaceState(\n { ...state, key: createRandomKey() },\n '',\n createHref(path),\n )\n },\n back: () => window.history.back(),\n forward: () => window.history.forward(),\n go: (n) => window.history.go(n),\n })\n}\n\nexport function createHashHistory(): RouterHistory {\n return createBrowserHistory({\n getHref: () => window.location.hash.substring(1),\n createHref: (path) => `#${path}`,\n })\n}\n\nexport function createMemoryHistory(\n opts: {\n initialEntries: string[]\n initialIndex?: number\n } = {\n initialEntries: ['/'],\n },\n): RouterHistory {\n const entries = opts.initialEntries\n let index = opts.initialIndex ?? entries.length - 1\n let currentState = {}\n\n const getLocation = () => parseLocation(entries[index]!, currentState)\n\n return createHistory({\n getLocation,\n listener: () => {\n return () => {}\n },\n pushState: (path, state) => {\n currentState = {\n ...state,\n key: createRandomKey(),\n }\n entries.push(path)\n index++\n },\n replaceState: (path, state) => {\n currentState = {\n ...state,\n key: createRandomKey(),\n }\n entries[index] = path\n },\n back: () => {\n index--\n },\n forward: () => {\n index = Math.min(index + 1, entries.length - 1)\n },\n go: (n) => window.history.go(n),\n })\n}\n\nfunction parseLocation(href: string, state: any): RouterLocation {\n let hashIndex = href.indexOf('#')\n let searchIndex = href.indexOf('?')\n\n return {\n href,\n pathname: href.substring(\n 0,\n hashIndex > 0\n ? searchIndex > 0\n ? Math.min(hashIndex, searchIndex)\n : hashIndex\n : searchIndex > 0\n ? searchIndex\n : href.length,\n ),\n hash: hashIndex > -1 ? href.substring(hashIndex, searchIndex) : '',\n search: searchIndex > -1 ? href.substring(searchIndex) : '',\n state,\n }\n}\n\n// Thanks co-pilot!\nfunction createRandomKey() {\n return (Math.random() + 1).toString(36).substring(7)\n}\n"],"names":["popStateEvent","createHistory","opts","currentLocation","getLocation","unsub","listeners","Set","onUpdate","forEach","listener","location","listen","cb","size","add","delete","push","path","state","pushState","replace","replaceState","go","index","back","forward","createBrowserHistory","getHref","window","pathname","hash","search","createHref","parseLocation","history","addEventListener","removeEventListener","key","createRandomKey","n","createHashHistory","substring","createMemoryHistory","initialEntries","entries","initialIndex","length","currentState","Math","min","href","hashIndex","indexOf","searchIndex","random","toString"],"mappings":"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"}
@@ -454,7 +454,7 @@ class Router {
454
454
  // If this `to` is a valid external URL, return
455
455
  // null for LinkUtils
456
456
  const toString = String(to);
457
- const fromString = String(from);
457
+ const fromString = typeof from === 'undefined' ? from : String(from);
458
458
  let isExternal;
459
459
  try {
460
460
  new URL(`${toString}`);
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sources":["../../src/router.ts"],"sourcesContent":["import invariant from 'tiny-invariant'\nimport { GetFrameworkGeneric } from './frameworks'\n\nimport {\n LinkInfo,\n LinkOptions,\n NavigateOptions,\n ToOptions,\n ValidFromPath,\n ResolveRelativePath,\n} from './link'\nimport {\n cleanPath,\n interpolatePath,\n joinPaths,\n matchPathname,\n resolvePath,\n trimPath,\n} from './path'\nimport { AnyRoute, Route } from './route'\nimport {\n AnyLoaderData,\n AnyPathParams,\n AnyRouteConfig,\n AnySearchSchema,\n LoaderContext,\n RouteConfig,\n SearchFilter,\n} from './routeConfig'\nimport {\n AllRouteInfo,\n AnyAllRouteInfo,\n RouteInfo,\n RoutesById,\n} from './routeInfo'\nimport { RouteMatch, RouteMatchStore } from './routeMatch'\nimport { defaultParseSearch, defaultStringifySearch } from './searchParams'\nimport { createStore, batch, Store } from './store'\nimport {\n functionalUpdate,\n last,\n NoInfer,\n pick,\n PickAsRequired,\n PickRequired,\n Timeout,\n Updater,\n} from './utils'\nimport { replaceEqualDeep } from './interop'\nimport {\n createBrowserHistory,\n createMemoryHistory,\n RouterHistory,\n} from './history'\nimport { createMemo } from '@solidjs/reactivity'\n\nexport interface RegisterRouter {\n // router: Router\n}\n\nexport type AnyRouter = Router<any, any, any>\n\nexport type RegisteredRouter = RegisterRouter extends {\n router: Router<infer TRouteConfig, infer TAllRouteInfo, infer TRouterContext>\n}\n ? Router<TRouteConfig, TAllRouteInfo, TRouterContext>\n : Router\n\nexport type RegisteredAllRouteInfo = RegisterRouter extends {\n router: Router<infer TRouteConfig, infer TAllRouteInfo, infer TRouterContext>\n}\n ? TAllRouteInfo\n : AnyAllRouteInfo\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>\nexport type FilterRoutesFn = <TRoute extends Route<any, RouteInfo>>(\n routeConfigs: TRoute[],\n) => TRoute[]\n\nexport interface RouterOptions<\n TRouteConfig extends AnyRouteConfig,\n TRouterContext,\n> {\n history?: RouterHistory\n stringifySearch?: SearchSerializer\n parseSearch?: SearchParser\n filterRoutes?: FilterRoutesFn\n defaultPreload?: false | 'intent'\n defaultPreloadMaxAge?: number\n defaultPreloadGcMaxAge?: number\n defaultPreloadDelay?: number\n defaultComponent?: GetFrameworkGeneric<'Component'>\n defaultErrorComponent?: GetFrameworkGeneric<'ErrorComponent'>\n defaultPendingComponent?: GetFrameworkGeneric<'Component'>\n defaultLoaderMaxAge?: number\n defaultLoaderGcMaxAge?: number\n caseSensitive?: boolean\n routeConfig?: TRouteConfig\n basepath?: string\n useServerData?: boolean\n Router?: (router: AnyRouter) => void\n createRoute?: (opts: { route: AnyRoute; router: AnyRouter }) => void\n context?: TRouterContext\n loadComponent?: (\n component: GetFrameworkGeneric<'Component'>,\n ) => Promise<GetFrameworkGeneric<'Component'>>\n onRouteChange?: () => void\n fetchServerDataFn?: FetchServerDataFn\n}\n\ntype FetchServerDataFn = (ctx: {\n router: AnyRouter\n routeMatch: RouteMatch\n}) => Promise<any>\n\nexport interface Loader<\n TFullSearchSchema extends AnySearchSchema = {},\n TAllParams extends AnyPathParams = {},\n TRouteLoaderData = AnyLoaderData,\n> {\n fetch: keyof PickRequired<TFullSearchSchema> extends never\n ? keyof TAllParams extends never\n ? (loaderContext: { signal?: AbortSignal }) => Promise<TRouteLoaderData>\n : (loaderContext: {\n params: TAllParams\n search?: TFullSearchSchema\n signal?: AbortSignal\n }) => Promise<TRouteLoaderData>\n : keyof TAllParams extends never\n ? (loaderContext: {\n search: TFullSearchSchema\n params: TAllParams\n signal?: AbortSignal\n }) => Promise<TRouteLoaderData>\n : (loaderContext: {\n search: TFullSearchSchema\n signal?: AbortSignal\n }) => Promise<TRouteLoaderData>\n current?: LoaderState<TFullSearchSchema, TAllParams>\n latest?: LoaderState<TFullSearchSchema, TAllParams>\n pending: LoaderState<TFullSearchSchema, TAllParams>[]\n}\n\nexport interface LoaderState<\n TFullSearchSchema extends AnySearchSchema = {},\n TAllParams extends AnyPathParams = {},\n> {\n loadedAt: number\n loaderContext: LoaderContext<TFullSearchSchema, TAllParams>\n}\n\nexport interface RouterStore<\n TSearchObj extends AnySearchSchema = {},\n TState extends LocationState = LocationState,\n> {\n status: 'idle' | 'loading'\n latestLocation: ParsedLocation<TSearchObj, TState>\n currentMatches: RouteMatch[]\n currentLocation: ParsedLocation<TSearchObj, TState>\n pendingMatches?: RouteMatch[]\n pendingLocation?: ParsedLocation<TSearchObj, TState>\n lastUpdated: number\n loaders: Record<string, Loader>\n isFetching: boolean\n isPreloading: boolean\n matchCache: Record<string, MatchCacheEntry>\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 __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 fuzzy?: boolean\n}\n\ntype LinkCurrentTargetElement = {\n preloadTimeout?: null | ReturnType<typeof setTimeout>\n}\n\nexport interface DehydratedRouterState\n extends Pick<\n RouterStore,\n 'status' | 'latestLocation' | 'currentLocation' | 'lastUpdated'\n > {\n currentMatches: DehydratedRouteMatch[]\n}\n\nexport interface DehydratedRouter<TRouterContext = unknown> {\n // location: Router['__location']\n state: DehydratedRouterState\n context: TRouterContext\n}\n\nexport type MatchCache = Record<string, MatchCacheEntry>\n\ninterface DehydratedRouteMatch {\n id: string\n state: Pick<\n RouteMatchStore<any, any>,\n 'status' | 'routeLoaderData' | 'invalid' | 'invalidAt'\n >\n}\n\nexport interface RouterContext {}\n\nexport const defaultFetchServerDataFn: FetchServerDataFn = async ({\n router,\n routeMatch,\n}) => {\n const next = router.buildNext({\n to: '.',\n search: (d: any) => ({\n ...(d ?? {}),\n __data: {\n matchId: routeMatch.id,\n },\n }),\n })\n\n const res = await fetch(next.href, {\n method: 'GET',\n signal: routeMatch.abortController.signal,\n })\n\n if (res.ok) {\n return res.json()\n }\n\n throw new Error('Failed to fetch match data')\n}\n\nexport class Router<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n TRouterContext = unknown,\n> {\n types!: {\n // Super secret internal stuff\n RouteConfig: TRouteConfig\n AllRouteInfo: TAllRouteInfo\n }\n\n options: PickAsRequired<\n RouterOptions<TRouteConfig, TRouterContext>,\n 'stringifySearch' | 'parseSearch' | 'context'\n >\n history!: RouterHistory\n #unsubHistory?: () => void\n basepath: string\n // __location: Location<TAllRouteInfo['fullSearchSchema']>\n routeTree!: Route<TAllRouteInfo, RouteInfo>\n routesById!: RoutesById<TAllRouteInfo>\n navigateTimeout: undefined | Timeout\n nextAction: undefined | 'push' | 'replace'\n navigationPromise: undefined | Promise<void>\n\n store: Store<RouterStore<TAllRouteInfo['fullSearchSchema']>>\n startedLoadingAt = Date.now()\n resolveNavigation = () => {}\n\n constructor(options?: RouterOptions<TRouteConfig, TRouterContext>) {\n this.options = {\n defaultLoaderGcMaxAge: 5 * 60 * 1000,\n defaultLoaderMaxAge: 0,\n defaultPreloadMaxAge: 2000,\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 = createStore(getInitialRouterState())\n this.basepath = ''\n\n this.update(options)\n\n // Allow frameworks to hook into the router creation\n this.options.Router?.(this)\n }\n\n reset = () => {\n this.store.setState((s) => Object.assign(s, getInitialRouterState()))\n }\n\n mount = () => {\n // Mount only does anything on the client\n if (!isServer) {\n // If the router matches are empty, load the matches\n if (!this.store.state.currentMatches.length) {\n this.load()\n }\n\n const visibilityChangeEvent = 'visibilitychange'\n const focusEvent = 'focus'\n\n // addEventListener does not exist in React Native, but window does\n // In the future, we might need to invert control here for more adapters\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (window.addEventListener) {\n // Listen to visibilitychange and focus\n window.addEventListener(visibilityChangeEvent, this.#onFocus, false)\n window.addEventListener(focusEvent, this.#onFocus, false)\n }\n\n return () => {\n if (window.removeEventListener) {\n // Be sure to unsubscribe if a new handler is set\n\n window.removeEventListener(visibilityChangeEvent, this.#onFocus)\n window.removeEventListener(focusEvent, this.#onFocus)\n }\n }\n }\n\n return () => {}\n }\n\n update = <\n TRouteConfig extends RouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n TRouterContext = unknown,\n >(\n opts?: RouterOptions<TRouteConfig, TRouterContext>,\n ): Router<TRouteConfig, TAllRouteInfo, TRouterContext> => {\n Object.assign(this.options, opts)\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 this.store.setState((s) => {\n s.latestLocation = this.#parseLocation()\n s.currentLocation = s.latestLocation\n })\n\n this.#unsubHistory = this.history.listen(() => {\n this.load(this.#parseLocation(this.store.state.latestLocation))\n })\n }\n\n const { basepath, routeConfig } = this.options\n\n this.basepath = `/${trimPath(basepath ?? '') ?? ''}`\n\n if (routeConfig) {\n this.routesById = {} as any\n this.routeTree = this.#buildRouteTree(routeConfig)\n }\n\n return this as any\n }\n\n buildNext = (opts: BuildNextOptions) => {\n const next = this.#buildLocation(opts)\n\n const matches = this.matchRoutes(next.pathname)\n\n const __preSearchFilters = matches\n .map((match) => match.route.options.preSearchFilters ?? [])\n .flat()\n .filter(Boolean)\n\n const __postSearchFilters = matches\n .map((match) => match.route.options.postSearchFilters ?? [])\n .flat()\n .filter(Boolean)\n\n return this.#buildLocation({\n ...opts,\n __preSearchFilters,\n __postSearchFilters,\n })\n }\n\n cancelMatches = () => {\n ;[\n ...this.store.state.currentMatches,\n ...(this.store.state.pendingMatches || []),\n ].forEach((match) => {\n match.cancel()\n })\n }\n\n load = async (next?: ParsedLocation) => {\n let now = Date.now()\n const startedAt = now\n this.startedLoadingAt = startedAt\n\n // Cancel any pending matches\n this.cancelMatches()\n\n let matches!: RouteMatch<any, any>[]\n\n batch(() => {\n if (next) {\n // Ingest the new location\n this.store.setState((s) => {\n s.latestLocation = next\n })\n }\n\n // Match the routes\n matches = this.matchRoutes(this.store.state.latestLocation.pathname, {\n strictParseParams: true,\n })\n\n this.store.setState((s) => {\n s.status = 'loading'\n s.pendingMatches = matches\n s.pendingLocation = this.store.state.latestLocation\n })\n })\n\n // Load the matches\n try {\n await this.loadMatches(matches)\n } catch (err: any) {\n console.warn(err)\n invariant(\n false,\n 'Matches failed to load due to error above ☝️. Navigation cancelled!',\n )\n }\n\n if (this.startedLoadingAt !== startedAt) {\n // Ignore side-effects of outdated side-effects\n return this.navigationPromise\n }\n\n const previousMatches = this.store.state.currentMatches\n\n const exiting: RouteMatch[] = [],\n staying: RouteMatch[] = []\n\n previousMatches.forEach((d) => {\n if (matches.find((dd) => dd.id === d.id)) {\n staying.push(d)\n } else {\n exiting.push(d)\n }\n })\n\n const entering = matches.filter((d) => {\n return !previousMatches.find((dd) => dd.id === d.id)\n })\n\n now = Date.now()\n\n exiting.forEach((d) => {\n d.__onExit?.({\n params: d.params,\n search: d.store.state.routeSearch,\n })\n\n // Clear non-loading error states when match leaves\n if (d.store.state.status === 'error' && !d.store.state.isFetching) {\n d.store.setState((s) => {\n s.status = 'idle'\n s.error = undefined\n })\n }\n\n const gc = Math.max(\n d.route.options.loaderGcMaxAge ??\n this.options.defaultLoaderGcMaxAge ??\n 0,\n d.route.options.loaderMaxAge ?? this.options.defaultLoaderMaxAge ?? 0,\n )\n\n if (gc > 0) {\n this.store.setState((s) => {\n s.matchCache[d.id] = {\n gc: gc == Infinity ? Number.MAX_SAFE_INTEGER : now + gc,\n match: d,\n }\n })\n }\n })\n\n staying.forEach((d) => {\n d.route.options.onTransition?.({\n params: d.params,\n search: d.store.state.routeSearch,\n })\n })\n\n entering.forEach((d) => {\n d.__onExit = d.route.options.onLoaded?.({\n params: d.params,\n search: d.store.state.search,\n })\n delete this.store.state.matchCache[d.id]\n })\n\n this.store.setState((s) => {\n Object.assign(s, {\n status: 'idle',\n currentLocation: this.store.state.latestLocation,\n currentMatches: matches,\n pendingLocation: undefined,\n pendingMatches: undefined,\n })\n })\n\n this.options.onRouteChange?.()\n\n this.resolveNavigation()\n }\n\n cleanMatchCache = () => {\n const now = Date.now()\n\n this.store.setState((s) => {\n Object.keys(s.matchCache).forEach((matchId) => {\n const entry = s.matchCache[matchId]!\n\n // Don't remove loading matches\n if (entry.match.store.state.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 s.matchCache[matchId]\n })\n })\n }\n\n getRoute = <TId extends keyof TAllRouteInfo['routeInfoById']>(\n id: TId,\n ): Route<TAllRouteInfo, TAllRouteInfo['routeInfoById'][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 loadRoute = async (\n navigateOpts: BuildNextOptions = this.store.state.latestLocation,\n ): Promise<RouteMatch[]> => {\n const next = this.buildNext(navigateOpts)\n const matches = this.matchRoutes(next.pathname, {\n strictParseParams: true,\n })\n await this.loadMatches(matches)\n return matches\n }\n\n preloadRoute = async (\n navigateOpts: BuildNextOptions = this.store.state.latestLocation,\n loaderOpts: { maxAge?: number; gcMaxAge?: number },\n ) => {\n const next = this.buildNext(navigateOpts)\n const matches = this.matchRoutes(next.pathname, {\n strictParseParams: true,\n })\n\n await this.loadMatches(matches, {\n preload: true,\n maxAge:\n loaderOpts.maxAge ??\n this.options.defaultPreloadMaxAge ??\n this.options.defaultLoaderMaxAge ??\n 0,\n gcMaxAge:\n loaderOpts.gcMaxAge ??\n this.options.defaultPreloadGcMaxAge ??\n this.options.defaultLoaderGcMaxAge ??\n 0,\n })\n return matches\n }\n\n matchRoutes = (pathname: string, opts?: { strictParseParams?: boolean }) => {\n const matches: RouteMatch[] = []\n\n if (!this.routeTree) {\n return matches\n }\n\n const existingMatches = [\n ...this.store.state.currentMatches,\n ...(this.store.state.pendingMatches ?? []),\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 = this.options.filterRoutes?.(routes) ?? routes\n\n let foundRoutes: Route[] = []\n\n const findMatchInRoutes = (parentRoutes: Route[], routes: Route[]) => {\n routes.some((route) => {\n if (!route.path && route.childRoutes?.length) {\n return findMatchInRoutes([...foundRoutes, route], route.childRoutes)\n }\n\n const fuzzy = !!(route.path !== '/' || route.childRoutes?.length)\n\n const matchParams = matchPathname(this.basepath, pathname, {\n to: route.fullPath,\n fuzzy,\n caseSensitive:\n route.options.caseSensitive ?? this.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.path, params)\n const matchId = interpolatePath(foundRoute.id, params, true)\n\n const match =\n existingMatches.find((d) => d.id === matchId) ||\n this.store.state.matchCache[matchId]?.match ||\n new RouteMatch(this, foundRoute, {\n id: matchId,\n params,\n pathname: joinPaths([this.basepath, 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([this.routeTree])\n\n linkMatches(matches)\n\n return matches\n }\n\n loadMatches = async (\n resolvedMatches: RouteMatch[],\n loaderOpts?:\n | { preload: true; maxAge: number; gcMaxAge: number }\n | { preload?: false; maxAge?: never; gcMaxAge?: never },\n ) => {\n this.cleanMatchCache()\n resolvedMatches.forEach(async (match) => {\n // Validate the match (loads search params etc)\n match.__validate()\n })\n\n // Check each match middleware to see if the route can be accessed\n await Promise.all(\n resolvedMatches.map(async (match) => {\n try {\n await match.route.options.beforeLoad?.({\n router: this as any,\n match,\n })\n } catch (err) {\n if (!loaderOpts?.preload) {\n match.route.options.onLoadError?.(err)\n }\n\n throw err\n }\n }),\n )\n\n const matchPromises = resolvedMatches.map(async (match, index) => {\n const prevMatch = resolvedMatches[(index = 1)]\n const search = match.store.state.search as { __data?: any }\n\n if (search.__data?.matchId && search.__data.matchId !== match.id) {\n return\n }\n\n match.load(loaderOpts)\n\n if (match.store.state.status !== 'success' && match.__loadPromise) {\n // Wait for the first sign of activity from the match\n await match.__loadPromise\n }\n\n if (prevMatch) {\n await prevMatch.__loadPromise\n }\n })\n\n await Promise.all(matchPromises)\n }\n\n loadMatchData = async (\n routeMatch: RouteMatch<any, any>,\n ): Promise<Record<string, unknown>> => {\n if (isServer || !this.options.useServerData) {\n return (\n (await routeMatch.route.options.loader?.({\n // parentLoaderPromise: routeMatch.parentMatch.dataPromise,\n params: routeMatch.params,\n search: routeMatch.store.state.routeSearch,\n signal: routeMatch.abortController.signal,\n })) || {}\n )\n } else {\n // Refresh:\n // '/dashboard'\n // '/dashboard/invoices/'\n // '/dashboard/invoices/123'\n\n // New:\n // '/dashboard/invoices/456'\n\n // TODO: batch requests when possible\n\n const res = await this.options.fetchServerDataFn!({\n router: this,\n routeMatch,\n })\n\n return res\n }\n }\n\n invalidateRoute = async (opts: MatchLocation) => {\n const next = this.buildNext(opts)\n const unloadedMatchIds = this.matchRoutes(next.pathname).map((d) => d.id)\n\n await Promise.allSettled(\n [\n ...this.store.state.currentMatches,\n ...(this.store.state.pendingMatches ?? []),\n ].map(async (match) => {\n if (unloadedMatchIds.includes(match.id)) {\n return match.invalidate()\n }\n }),\n )\n }\n\n reload = () => {\n 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 <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >({\n from,\n to = '.' as any,\n search,\n hash,\n replace,\n params,\n }: NavigateOptions<TAllRouteInfo, 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 = 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 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 ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n location: ToOptions<TAllRouteInfo, TFrom, TTo>,\n opts?: MatchRouteOptions,\n ):\n | false\n | TAllRouteInfo['routeInfoById'][ResolveRelativePath<\n TFrom,\n NoInfer<TTo>\n >]['allParams'] => {\n location = {\n ...location,\n to: location.to\n ? this.resolvePath(location.from ?? '', location.to)\n : undefined,\n }\n\n const next = this.buildNext(location)\n\n if (opts?.pending) {\n if (!this.store.state.pendingLocation) {\n return false\n }\n\n return matchPathname(\n this.basepath,\n this.store.state.pendingLocation!.pathname,\n {\n ...opts,\n to: next.pathname,\n },\n ) as any\n }\n\n return matchPathname(\n this.basepath,\n this.store.state.currentLocation.pathname,\n {\n ...opts,\n to: next.pathname,\n },\n ) as any\n }\n\n buildLink = <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >({\n from,\n to = '.' as any,\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 }: LinkOptions<TAllRouteInfo, 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 pathIsEqual =\n this.store.state.currentLocation.pathname === next.pathname\n const currentPathSplit =\n this.store.state.currentLocation.pathname.split('/')\n const nextPathSplit = next.pathname.split('/')\n const pathIsFuzzyEqual = nextPathSplit.every(\n (d, i) => d === currentPathSplit[i],\n )\n const hashIsEqual = this.store.state.currentLocation.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 this.invalidateRoute(nextOpts)\n }\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, {\n maxAge: userPreloadMaxAge,\n gcMaxAge: userPreloadGcMaxAge,\n }).catch((err) => {\n console.warn(err)\n console.warn('Error preloading route! ☝️')\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 this.preloadRoute(nextOpts, {\n maxAge: userPreloadMaxAge,\n gcMaxAge: userPreloadGcMaxAge,\n }).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 isActive,\n disabled,\n }\n }\n\n dehydrate = (): DehydratedRouter<TRouterContext> => {\n return {\n state: {\n ...pick(this.store.state, [\n 'latestLocation',\n 'currentLocation',\n 'status',\n 'lastUpdated',\n ]),\n currentMatches: this.store.state.currentMatches.map((match) => ({\n id: match.id,\n state: {\n ...pick(match.store.state, [\n 'status',\n 'routeLoaderData',\n 'invalidAt',\n 'invalid',\n ]),\n },\n })),\n },\n context: this.options.context as TRouterContext,\n }\n }\n\n hydrate = (dehydratedRouter: DehydratedRouter<TRouterContext>) => {\n this.store.setState((s) => {\n // Update the context TODO: make this part of state?\n this.options.context = dehydratedRouter.context\n\n // Match the routes\n const currentMatches = this.matchRoutes(\n dehydratedRouter.state.latestLocation.pathname,\n {\n strictParseParams: true,\n },\n )\n\n currentMatches.forEach((match, index) => {\n const dehydratedMatch = dehydratedRouter.state.currentMatches[index]\n invariant(\n dehydratedMatch && dehydratedMatch.id === match.id,\n 'Oh no! There was a hydration mismatch when attempting to rethis.store the state of the router! 😬',\n )\n match.store.setState((s) => {\n Object.assign(s, dehydratedMatch.state)\n })\n match.setLoaderData(dehydratedMatch.state.routeLoaderData)\n })\n\n currentMatches.forEach((match) => match.__validate())\n\n Object.assign(s, { ...dehydratedRouter.state, currentMatches })\n })\n }\n\n getLoader = <TFrom extends keyof TAllRouteInfo['routeInfoById'] = '/'>(opts: {\n from: TFrom\n }): unknown extends TAllRouteInfo['routeInfoById'][TFrom]['routeLoaderData']\n ?\n | Loader<\n LoaderContext<\n TAllRouteInfo['routeInfoById'][TFrom]['fullSearchSchema'],\n TAllRouteInfo['routeInfoById'][TFrom]['allParams']\n >,\n TAllRouteInfo['routeInfoById'][TFrom]['routeLoaderData']\n >\n | undefined\n : Loader<\n TAllRouteInfo['routeInfoById'][TFrom]['fullSearchSchema'],\n TAllRouteInfo['routeInfoById'][TFrom]['allParams'],\n TAllRouteInfo['routeInfoById'][TFrom]['routeLoaderData']\n > => {\n const id = opts.from || ('/' as any)\n\n const route = this.getRoute(id)\n\n if (!route) return undefined as any\n\n let loader =\n this.store.state.loaders[id] ||\n (() => {\n this.store.setState((s) => {\n s.loaders[id] = {\n pending: [],\n fetch: (async (loaderContext: LoaderContext<any, any>) => {\n if (!route) {\n return\n }\n const loaderState: LoaderState<any, any> = {\n loadedAt: Date.now(),\n loaderContext,\n }\n this.store.setState((s) => {\n s.loaders[id]!.current = loaderState\n s.loaders[id]!.latest = loaderState\n s.loaders[id]!.pending.push(loaderState)\n })\n try {\n return await route.options.loader?.(loaderContext)\n } finally {\n this.store.setState((s) => {\n s.loaders[id]!.pending = s.loaders[id]!.pending.filter(\n (d) => d !== loaderState,\n )\n })\n }\n }) as any,\n }\n })\n return this.store.state.loaders[id]!\n })()\n\n return loader as any\n }\n\n #buildRouteTree = (rootRouteConfig: RouteConfig) => {\n const recurseRoutes = (\n routeConfigs: RouteConfig[],\n parent?: Route<TAllRouteInfo, any, any>,\n ): Route<TAllRouteInfo, any, any>[] => {\n return routeConfigs.map((routeConfig, i) => {\n const routeOptions = routeConfig.options\n const route = new Route(routeConfig, routeOptions, i, parent, this)\n const existingRoute = (this.routesById as any)[route.id]\n\n if (existingRoute) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Duplicate routes found with id: ${String(route.id)}`,\n this.routesById,\n route,\n )\n }\n throw new Error()\n }\n\n ;(this.routesById as any)[route.id] = 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 = (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 #onFocus = () => {\n this.load()\n }\n\n #buildLocation = (dest: BuildNextOptions = {}): ParsedLocation => {\n const fromPathname = dest.fromCurrent\n ? this.store.state.latestLocation.pathname\n : dest.from ?? this.store.state.latestLocation.pathname\n\n let pathname = resolvePath(\n this.basepath ?? '/',\n fromPathname,\n `${dest.to ?? '.'}`,\n )\n\n const fromMatches = this.matchRoutes(\n this.store.state.latestLocation.pathname,\n {\n strictParseParams: true,\n },\n )\n\n const toMatches = this.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.route.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 this.store.state.latestLocation.search,\n )\n : this.store.state.latestLocation.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((prev, next) => next(prev), destSearch)\n : destSearch\n\n const search = replaceEqualDeep(\n this.store.state.latestLocation.search,\n postFilteredSearch,\n )\n\n const searchStr = this.options.stringifySearch(search)\n let hash =\n dest.hash === true\n ? this.store.state.latestLocation.hash\n : functionalUpdate(dest.hash!, this.store.state.latestLocation.hash)\n hash = hash ? `#${hash}` : ''\n\n return {\n pathname,\n search,\n searchStr,\n state: this.store.state.latestLocation.state,\n hash,\n href: `${pathname}${searchStr}${hash}`,\n key: dest.key,\n }\n }\n\n #commitLocation = (location: BuildNextOptions & { replace?: boolean }) => {\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.store.state.latestLocation.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 // this.load(this.#parseLocation(this.store.state.latestLocation))\n\n return (this.navigationPromise = new Promise((resolve) => {\n const previousNavigationResolve = this.resolveNavigation\n\n this.resolveNavigation = () => {\n previousNavigationResolve()\n resolve()\n }\n }))\n }\n}\n\n// Detect if we're in the DOM\nconst isServer = typeof window === 'undefined' || !window.document.createElement\n\nfunction getInitialRouterState(): RouterStore {\n return {\n status: 'idle',\n latestLocation: null!,\n currentLocation: null!,\n currentMatches: [],\n loaders: {},\n lastUpdated: Date.now(),\n matchCache: {},\n get isFetching() {\n return (\n this.status === 'loading' ||\n this.currentMatches.some((d) => d.store.state.isFetching)\n )\n },\n get isPreloading() {\n return Object.values(this.matchCache).some(\n (d) =>\n d.match.store.state.isFetching &&\n !this.currentMatches.find((dd) => dd.id === d.match.id),\n )\n },\n }\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nfunction linkMatches(matches: RouteMatch<any, any>[]) {\n matches.forEach((match, index) => {\n const parent = matches[index - 1]\n\n if (parent) {\n match.__setParentMatch(parent)\n }\n })\n}\n"],"names":["defaultFetchServerDataFn","router","routeMatch","next","buildNext","to","search","d","__data","matchId","id","res","fetch","href","method","signal","abortController","ok","json","Error","Router","startedLoadingAt","Date","now","resolveNavigation","constructor","options","defaultLoaderGcMaxAge","defaultLoaderMaxAge","defaultPreloadMaxAge","defaultPreloadDelay","context","undefined","stringifySearch","defaultStringifySearch","parseSearch","defaultParseSearch","fetchServerDataFn","store","createStore","getInitialRouterState","basepath","update","reset","setState","s","Object","assign","mount","isServer","state","currentMatches","length","load","visibilityChangeEvent","focusEvent","window","addEventListener","removeEventListener","opts","history","createMemoryHistory","createBrowserHistory","latestLocation","currentLocation","listen","routeConfig","trimPath","routesById","routeTree","matches","matchRoutes","pathname","__preSearchFilters","map","match","route","preSearchFilters","flat","filter","Boolean","__postSearchFilters","postSearchFilters","cancelMatches","pendingMatches","forEach","cancel","startedAt","batch","strictParseParams","status","pendingLocation","loadMatches","err","console","warn","invariant","navigationPromise","previousMatches","exiting","staying","find","dd","push","entering","__onExit","params","routeSearch","isFetching","error","gc","Math","max","loaderGcMaxAge","loaderMaxAge","matchCache","Infinity","Number","MAX_SAFE_INTEGER","onTransition","onLoaded","onRouteChange","cleanMatchCache","keys","entry","getRoute","loadRoute","navigateOpts","preloadRoute","loaderOpts","preload","maxAge","gcMaxAge","defaultPreloadGcMaxAge","existingMatches","recurse","routes","parentMatch","last","filteredRoutes","filterRoutes","foundRoutes","findMatchInRoutes","parentRoutes","some","path","childRoutes","fuzzy","matchParams","matchPathname","fullPath","caseSensitive","parsedParams","parseParams","foundRoute","interpolatedPath","interpolatePath","RouteMatch","joinPaths","linkMatches","resolvedMatches","__validate","Promise","all","beforeLoad","onLoadError","matchPromises","index","prevMatch","__loadPromise","loadMatchData","useServerData","loader","invalidateRoute","unloadedMatchIds","allSettled","includes","invalidate","reload","navigate","fromCurrent","replace","resolvePath","from","cleanPath","hash","toString","String","fromString","isExternal","URL","e","matchRoute","location","pending","buildLink","target","activeOptions","preloadMaxAge","userPreloadMaxAge","preloadGcMaxAge","userPreloadGcMaxAge","preloadDelay","userPreloadDelay","disabled","type","nextOpts","defaultPreload","pathIsEqual","currentPathSplit","split","nextPathSplit","pathIsFuzzyEqual","every","i","hashIsEqual","pathTest","exact","hashTest","includeHash","isActive","handleClick","isCtrlEvent","defaultPrevented","button","preventDefault","handleFocus","catch","handleEnter","preloadTimeout","setTimeout","handleLeave","clearTimeout","dehydrate","pick","hydrate","dehydratedRouter","dehydratedMatch","setLoaderData","routeLoaderData","getLoader","loaders","loaderContext","loaderState","loadedAt","current","latest","rootRouteConfig","recurseRoutes","routeConfigs","parent","routeOptions","Route","existingRoute","process","env","NODE_ENV","children","previousLocation","parsedSearch","searchStr","replaceEqualDeep","reverse","key","dest","fromPathname","fromMatches","toMatches","prevParams","nextParams","functionalUpdate","stringifyParams","fn","preFilteredSearch","reduce","prev","destSearch","postFilteredSearch","random","navigateTimeout","nextAction","isSameUrl","resolve","previousNavigationResolve","document","createElement","lastUpdated","isPreloading","values","metaKey","altKey","ctrlKey","shiftKey","__setParentMatch"],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sources":["../../src/router.ts"],"sourcesContent":["import invariant from 'tiny-invariant'\nimport { GetFrameworkGeneric } from './frameworks'\n\nimport {\n LinkInfo,\n LinkOptions,\n NavigateOptions,\n ToOptions,\n ValidFromPath,\n ResolveRelativePath,\n} from './link'\nimport {\n cleanPath,\n interpolatePath,\n joinPaths,\n matchPathname,\n resolvePath,\n trimPath,\n} from './path'\nimport { AnyRoute, Route } from './route'\nimport {\n AnyLoaderData,\n AnyPathParams,\n AnyRouteConfig,\n AnySearchSchema,\n LoaderContext,\n RouteConfig,\n SearchFilter,\n} from './routeConfig'\nimport {\n AllRouteInfo,\n AnyAllRouteInfo,\n RouteInfo,\n RoutesById,\n} from './routeInfo'\nimport { RouteMatch, RouteMatchStore } from './routeMatch'\nimport { defaultParseSearch, defaultStringifySearch } from './searchParams'\nimport { createStore, batch, Store } from './store'\nimport {\n functionalUpdate,\n last,\n NoInfer,\n pick,\n PickAsRequired,\n PickRequired,\n Timeout,\n Updater,\n} from './utils'\nimport { replaceEqualDeep } from './interop'\nimport {\n createBrowserHistory,\n createMemoryHistory,\n RouterHistory,\n} from './history'\nimport { createMemo } from '@solidjs/reactivity'\n\nexport interface RegisterRouter {\n // router: Router\n}\n\nexport type AnyRouter = Router<any, any, any>\n\nexport type RegisteredRouter = RegisterRouter extends {\n router: Router<infer TRouteConfig, infer TAllRouteInfo, infer TRouterContext>\n}\n ? Router<TRouteConfig, TAllRouteInfo, TRouterContext>\n : Router\n\nexport type RegisteredAllRouteInfo = RegisterRouter extends {\n router: Router<infer TRouteConfig, infer TAllRouteInfo, infer TRouterContext>\n}\n ? TAllRouteInfo\n : AnyAllRouteInfo\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>\nexport type FilterRoutesFn = <TRoute extends Route<any, RouteInfo>>(\n routeConfigs: TRoute[],\n) => TRoute[]\n\nexport interface RouterOptions<\n TRouteConfig extends AnyRouteConfig,\n TRouterContext,\n> {\n history?: RouterHistory\n stringifySearch?: SearchSerializer\n parseSearch?: SearchParser\n filterRoutes?: FilterRoutesFn\n defaultPreload?: false | 'intent'\n defaultPreloadMaxAge?: number\n defaultPreloadGcMaxAge?: number\n defaultPreloadDelay?: number\n defaultComponent?: GetFrameworkGeneric<'Component'>\n defaultErrorComponent?: GetFrameworkGeneric<'ErrorComponent'>\n defaultPendingComponent?: GetFrameworkGeneric<'Component'>\n defaultLoaderMaxAge?: number\n defaultLoaderGcMaxAge?: number\n caseSensitive?: boolean\n routeConfig?: TRouteConfig\n basepath?: string\n useServerData?: boolean\n Router?: (router: AnyRouter) => void\n createRoute?: (opts: { route: AnyRoute; router: AnyRouter }) => void\n context?: TRouterContext\n loadComponent?: (\n component: GetFrameworkGeneric<'Component'>,\n ) => Promise<GetFrameworkGeneric<'Component'>>\n onRouteChange?: () => void\n fetchServerDataFn?: FetchServerDataFn\n}\n\ntype FetchServerDataFn = (ctx: {\n router: AnyRouter\n routeMatch: RouteMatch\n}) => Promise<any>\n\nexport interface Loader<\n TFullSearchSchema extends AnySearchSchema = {},\n TAllParams extends AnyPathParams = {},\n TRouteLoaderData = AnyLoaderData,\n> {\n fetch: keyof PickRequired<TFullSearchSchema> extends never\n ? keyof TAllParams extends never\n ? (loaderContext: { signal?: AbortSignal }) => Promise<TRouteLoaderData>\n : (loaderContext: {\n params: TAllParams\n search?: TFullSearchSchema\n signal?: AbortSignal\n }) => Promise<TRouteLoaderData>\n : keyof TAllParams extends never\n ? (loaderContext: {\n search: TFullSearchSchema\n params: TAllParams\n signal?: AbortSignal\n }) => Promise<TRouteLoaderData>\n : (loaderContext: {\n search: TFullSearchSchema\n signal?: AbortSignal\n }) => Promise<TRouteLoaderData>\n current?: LoaderState<TFullSearchSchema, TAllParams>\n latest?: LoaderState<TFullSearchSchema, TAllParams>\n pending: LoaderState<TFullSearchSchema, TAllParams>[]\n}\n\nexport interface LoaderState<\n TFullSearchSchema extends AnySearchSchema = {},\n TAllParams extends AnyPathParams = {},\n> {\n loadedAt: number\n loaderContext: LoaderContext<TFullSearchSchema, TAllParams>\n}\n\nexport interface RouterStore<\n TSearchObj extends AnySearchSchema = {},\n TState extends LocationState = LocationState,\n> {\n status: 'idle' | 'loading'\n latestLocation: ParsedLocation<TSearchObj, TState>\n currentMatches: RouteMatch[]\n currentLocation: ParsedLocation<TSearchObj, TState>\n pendingMatches?: RouteMatch[]\n pendingLocation?: ParsedLocation<TSearchObj, TState>\n lastUpdated: number\n loaders: Record<string, Loader>\n isFetching: boolean\n isPreloading: boolean\n matchCache: Record<string, MatchCacheEntry>\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 __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 fuzzy?: boolean\n}\n\ntype LinkCurrentTargetElement = {\n preloadTimeout?: null | ReturnType<typeof setTimeout>\n}\n\nexport interface DehydratedRouterState\n extends Pick<\n RouterStore,\n 'status' | 'latestLocation' | 'currentLocation' | 'lastUpdated'\n > {\n currentMatches: DehydratedRouteMatch[]\n}\n\nexport interface DehydratedRouter<TRouterContext = unknown> {\n // location: Router['__location']\n state: DehydratedRouterState\n context: TRouterContext\n}\n\nexport type MatchCache = Record<string, MatchCacheEntry>\n\ninterface DehydratedRouteMatch {\n id: string\n state: Pick<\n RouteMatchStore<any, any>,\n 'status' | 'routeLoaderData' | 'invalid' | 'invalidAt'\n >\n}\n\nexport interface RouterContext {}\n\nexport const defaultFetchServerDataFn: FetchServerDataFn = async ({\n router,\n routeMatch,\n}) => {\n const next = router.buildNext({\n to: '.',\n search: (d: any) => ({\n ...(d ?? {}),\n __data: {\n matchId: routeMatch.id,\n },\n }),\n })\n\n const res = await fetch(next.href, {\n method: 'GET',\n signal: routeMatch.abortController.signal,\n })\n\n if (res.ok) {\n return res.json()\n }\n\n throw new Error('Failed to fetch match data')\n}\n\nexport class Router<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n TRouterContext = unknown,\n> {\n types!: {\n // Super secret internal stuff\n RouteConfig: TRouteConfig\n AllRouteInfo: TAllRouteInfo\n }\n\n options: PickAsRequired<\n RouterOptions<TRouteConfig, TRouterContext>,\n 'stringifySearch' | 'parseSearch' | 'context'\n >\n history!: RouterHistory\n #unsubHistory?: () => void\n basepath: string\n // __location: Location<TAllRouteInfo['fullSearchSchema']>\n routeTree!: Route<TAllRouteInfo, RouteInfo>\n routesById!: RoutesById<TAllRouteInfo>\n navigateTimeout: undefined | Timeout\n nextAction: undefined | 'push' | 'replace'\n navigationPromise: undefined | Promise<void>\n\n store: Store<RouterStore<TAllRouteInfo['fullSearchSchema']>>\n startedLoadingAt = Date.now()\n resolveNavigation = () => {}\n\n constructor(options?: RouterOptions<TRouteConfig, TRouterContext>) {\n this.options = {\n defaultLoaderGcMaxAge: 5 * 60 * 1000,\n defaultLoaderMaxAge: 0,\n defaultPreloadMaxAge: 2000,\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 = createStore(getInitialRouterState())\n this.basepath = ''\n\n this.update(options)\n\n // Allow frameworks to hook into the router creation\n this.options.Router?.(this)\n }\n\n reset = () => {\n this.store.setState((s) => Object.assign(s, getInitialRouterState()))\n }\n\n mount = () => {\n // Mount only does anything on the client\n if (!isServer) {\n // If the router matches are empty, load the matches\n if (!this.store.state.currentMatches.length) {\n this.load()\n }\n\n const visibilityChangeEvent = 'visibilitychange'\n const focusEvent = 'focus'\n\n // addEventListener does not exist in React Native, but window does\n // In the future, we might need to invert control here for more adapters\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (window.addEventListener) {\n // Listen to visibilitychange and focus\n window.addEventListener(visibilityChangeEvent, this.#onFocus, false)\n window.addEventListener(focusEvent, this.#onFocus, false)\n }\n\n return () => {\n if (window.removeEventListener) {\n // Be sure to unsubscribe if a new handler is set\n\n window.removeEventListener(visibilityChangeEvent, this.#onFocus)\n window.removeEventListener(focusEvent, this.#onFocus)\n }\n }\n }\n\n return () => {}\n }\n\n update = <\n TRouteConfig extends RouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n TRouterContext = unknown,\n >(\n opts?: RouterOptions<TRouteConfig, TRouterContext>,\n ): Router<TRouteConfig, TAllRouteInfo, TRouterContext> => {\n Object.assign(this.options, opts)\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 this.store.setState((s) => {\n s.latestLocation = this.#parseLocation()\n s.currentLocation = s.latestLocation\n })\n\n this.#unsubHistory = this.history.listen(() => {\n this.load(this.#parseLocation(this.store.state.latestLocation))\n })\n }\n\n const { basepath, routeConfig } = this.options\n\n this.basepath = `/${trimPath(basepath ?? '') ?? ''}`\n\n if (routeConfig) {\n this.routesById = {} as any\n this.routeTree = this.#buildRouteTree(routeConfig)\n }\n\n return this as any\n }\n\n buildNext = (opts: BuildNextOptions) => {\n const next = this.#buildLocation(opts)\n\n const matches = this.matchRoutes(next.pathname)\n\n const __preSearchFilters = matches\n .map((match) => match.route.options.preSearchFilters ?? [])\n .flat()\n .filter(Boolean)\n\n const __postSearchFilters = matches\n .map((match) => match.route.options.postSearchFilters ?? [])\n .flat()\n .filter(Boolean)\n\n return this.#buildLocation({\n ...opts,\n __preSearchFilters,\n __postSearchFilters,\n })\n }\n\n cancelMatches = () => {\n ;[\n ...this.store.state.currentMatches,\n ...(this.store.state.pendingMatches || []),\n ].forEach((match) => {\n match.cancel()\n })\n }\n\n load = async (next?: ParsedLocation) => {\n let now = Date.now()\n const startedAt = now\n this.startedLoadingAt = startedAt\n\n // Cancel any pending matches\n this.cancelMatches()\n\n let matches!: RouteMatch<any, any>[]\n\n batch(() => {\n if (next) {\n // Ingest the new location\n this.store.setState((s) => {\n s.latestLocation = next\n })\n }\n\n // Match the routes\n matches = this.matchRoutes(this.store.state.latestLocation.pathname, {\n strictParseParams: true,\n })\n\n this.store.setState((s) => {\n s.status = 'loading'\n s.pendingMatches = matches\n s.pendingLocation = this.store.state.latestLocation\n })\n })\n\n // Load the matches\n try {\n await this.loadMatches(matches)\n } catch (err: any) {\n console.warn(err)\n invariant(\n false,\n 'Matches failed to load due to error above ☝️. Navigation cancelled!',\n )\n }\n\n if (this.startedLoadingAt !== startedAt) {\n // Ignore side-effects of outdated side-effects\n return this.navigationPromise\n }\n\n const previousMatches = this.store.state.currentMatches\n\n const exiting: RouteMatch[] = [],\n staying: RouteMatch[] = []\n\n previousMatches.forEach((d) => {\n if (matches.find((dd) => dd.id === d.id)) {\n staying.push(d)\n } else {\n exiting.push(d)\n }\n })\n\n const entering = matches.filter((d) => {\n return !previousMatches.find((dd) => dd.id === d.id)\n })\n\n now = Date.now()\n\n exiting.forEach((d) => {\n d.__onExit?.({\n params: d.params,\n search: d.store.state.routeSearch,\n })\n\n // Clear non-loading error states when match leaves\n if (d.store.state.status === 'error' && !d.store.state.isFetching) {\n d.store.setState((s) => {\n s.status = 'idle'\n s.error = undefined\n })\n }\n\n const gc = Math.max(\n d.route.options.loaderGcMaxAge ??\n this.options.defaultLoaderGcMaxAge ??\n 0,\n d.route.options.loaderMaxAge ?? this.options.defaultLoaderMaxAge ?? 0,\n )\n\n if (gc > 0) {\n this.store.setState((s) => {\n s.matchCache[d.id] = {\n gc: gc == Infinity ? Number.MAX_SAFE_INTEGER : now + gc,\n match: d,\n }\n })\n }\n })\n\n staying.forEach((d) => {\n d.route.options.onTransition?.({\n params: d.params,\n search: d.store.state.routeSearch,\n })\n })\n\n entering.forEach((d) => {\n d.__onExit = d.route.options.onLoaded?.({\n params: d.params,\n search: d.store.state.search,\n })\n delete this.store.state.matchCache[d.id]\n })\n\n this.store.setState((s) => {\n Object.assign(s, {\n status: 'idle',\n currentLocation: this.store.state.latestLocation,\n currentMatches: matches,\n pendingLocation: undefined,\n pendingMatches: undefined,\n })\n })\n\n this.options.onRouteChange?.()\n\n this.resolveNavigation()\n }\n\n cleanMatchCache = () => {\n const now = Date.now()\n\n this.store.setState((s) => {\n Object.keys(s.matchCache).forEach((matchId) => {\n const entry = s.matchCache[matchId]!\n\n // Don't remove loading matches\n if (entry.match.store.state.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 s.matchCache[matchId]\n })\n })\n }\n\n getRoute = <TId extends keyof TAllRouteInfo['routeInfoById']>(\n id: TId,\n ): Route<TAllRouteInfo, TAllRouteInfo['routeInfoById'][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 loadRoute = async (\n navigateOpts: BuildNextOptions = this.store.state.latestLocation,\n ): Promise<RouteMatch[]> => {\n const next = this.buildNext(navigateOpts)\n const matches = this.matchRoutes(next.pathname, {\n strictParseParams: true,\n })\n await this.loadMatches(matches)\n return matches\n }\n\n preloadRoute = async (\n navigateOpts: BuildNextOptions = this.store.state.latestLocation,\n loaderOpts: { maxAge?: number; gcMaxAge?: number },\n ) => {\n const next = this.buildNext(navigateOpts)\n const matches = this.matchRoutes(next.pathname, {\n strictParseParams: true,\n })\n\n await this.loadMatches(matches, {\n preload: true,\n maxAge:\n loaderOpts.maxAge ??\n this.options.defaultPreloadMaxAge ??\n this.options.defaultLoaderMaxAge ??\n 0,\n gcMaxAge:\n loaderOpts.gcMaxAge ??\n this.options.defaultPreloadGcMaxAge ??\n this.options.defaultLoaderGcMaxAge ??\n 0,\n })\n return matches\n }\n\n matchRoutes = (pathname: string, opts?: { strictParseParams?: boolean }) => {\n const matches: RouteMatch[] = []\n\n if (!this.routeTree) {\n return matches\n }\n\n const existingMatches = [\n ...this.store.state.currentMatches,\n ...(this.store.state.pendingMatches ?? []),\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 = this.options.filterRoutes?.(routes) ?? routes\n\n let foundRoutes: Route[] = []\n\n const findMatchInRoutes = (parentRoutes: Route[], routes: Route[]) => {\n routes.some((route) => {\n if (!route.path && route.childRoutes?.length) {\n return findMatchInRoutes([...foundRoutes, route], route.childRoutes)\n }\n\n const fuzzy = !!(route.path !== '/' || route.childRoutes?.length)\n\n const matchParams = matchPathname(this.basepath, pathname, {\n to: route.fullPath,\n fuzzy,\n caseSensitive:\n route.options.caseSensitive ?? this.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.path, params)\n const matchId = interpolatePath(foundRoute.id, params, true)\n\n const match =\n existingMatches.find((d) => d.id === matchId) ||\n this.store.state.matchCache[matchId]?.match ||\n new RouteMatch(this, foundRoute, {\n id: matchId,\n params,\n pathname: joinPaths([this.basepath, 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([this.routeTree])\n\n linkMatches(matches)\n\n return matches\n }\n\n loadMatches = async (\n resolvedMatches: RouteMatch[],\n loaderOpts?:\n | { preload: true; maxAge: number; gcMaxAge: number }\n | { preload?: false; maxAge?: never; gcMaxAge?: never },\n ) => {\n this.cleanMatchCache()\n resolvedMatches.forEach(async (match) => {\n // Validate the match (loads search params etc)\n match.__validate()\n })\n\n // Check each match middleware to see if the route can be accessed\n await Promise.all(\n resolvedMatches.map(async (match) => {\n try {\n await match.route.options.beforeLoad?.({\n router: this as any,\n match,\n })\n } catch (err) {\n if (!loaderOpts?.preload) {\n match.route.options.onLoadError?.(err)\n }\n\n throw err\n }\n }),\n )\n\n const matchPromises = resolvedMatches.map(async (match, index) => {\n const prevMatch = resolvedMatches[(index = 1)]\n const search = match.store.state.search as { __data?: any }\n\n if (search.__data?.matchId && search.__data.matchId !== match.id) {\n return\n }\n\n match.load(loaderOpts)\n\n if (match.store.state.status !== 'success' && match.__loadPromise) {\n // Wait for the first sign of activity from the match\n await match.__loadPromise\n }\n\n if (prevMatch) {\n await prevMatch.__loadPromise\n }\n })\n\n await Promise.all(matchPromises)\n }\n\n loadMatchData = async (\n routeMatch: RouteMatch<any, any>,\n ): Promise<Record<string, unknown>> => {\n if (isServer || !this.options.useServerData) {\n return (\n (await routeMatch.route.options.loader?.({\n // parentLoaderPromise: routeMatch.parentMatch.dataPromise,\n params: routeMatch.params,\n search: routeMatch.store.state.routeSearch,\n signal: routeMatch.abortController.signal,\n })) || {}\n )\n } else {\n // Refresh:\n // '/dashboard'\n // '/dashboard/invoices/'\n // '/dashboard/invoices/123'\n\n // New:\n // '/dashboard/invoices/456'\n\n // TODO: batch requests when possible\n\n const res = await this.options.fetchServerDataFn!({\n router: this,\n routeMatch,\n })\n\n return res\n }\n }\n\n invalidateRoute = async <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n opts: ToOptions<TAllRouteInfo, TFrom, TTo>,\n ) => {\n const next = this.buildNext(opts)\n const unloadedMatchIds = this.matchRoutes(next.pathname).map((d) => d.id)\n\n await Promise.allSettled(\n [\n ...this.store.state.currentMatches,\n ...(this.store.state.pendingMatches ?? []),\n ].map(async (match) => {\n if (unloadedMatchIds.includes(match.id)) {\n return match.invalidate()\n }\n }),\n )\n }\n\n reload = () => {\n 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 <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >({\n from,\n to = '.' as any,\n search,\n hash,\n replace,\n params,\n }: NavigateOptions<TAllRouteInfo, 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 ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n location: ToOptions<TAllRouteInfo, TFrom, TTo>,\n opts?: MatchRouteOptions,\n ):\n | false\n | TAllRouteInfo['routeInfoById'][ResolveRelativePath<\n TFrom,\n NoInfer<TTo>\n >]['allParams'] => {\n location = {\n ...location,\n to: location.to\n ? this.resolvePath(location.from ?? '', location.to)\n : undefined,\n }\n\n const next = this.buildNext(location)\n\n if (opts?.pending) {\n if (!this.store.state.pendingLocation) {\n return false\n }\n\n return matchPathname(\n this.basepath,\n this.store.state.pendingLocation!.pathname,\n {\n ...opts,\n to: next.pathname,\n },\n ) as any\n }\n\n return matchPathname(\n this.basepath,\n this.store.state.currentLocation.pathname,\n {\n ...opts,\n to: next.pathname,\n },\n ) as any\n }\n\n buildLink = <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >({\n from,\n to = '.' as any,\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 }: LinkOptions<TAllRouteInfo, 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 pathIsEqual =\n this.store.state.currentLocation.pathname === next.pathname\n const currentPathSplit =\n this.store.state.currentLocation.pathname.split('/')\n const nextPathSplit = next.pathname.split('/')\n const pathIsFuzzyEqual = nextPathSplit.every(\n (d, i) => d === currentPathSplit[i],\n )\n const hashIsEqual = this.store.state.currentLocation.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 this.invalidateRoute(nextOpts as any)\n }\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, {\n maxAge: userPreloadMaxAge,\n gcMaxAge: userPreloadGcMaxAge,\n }).catch((err) => {\n console.warn(err)\n console.warn('Error preloading route! ☝️')\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 this.preloadRoute(nextOpts, {\n maxAge: userPreloadMaxAge,\n gcMaxAge: userPreloadGcMaxAge,\n }).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 isActive,\n disabled,\n }\n }\n\n dehydrate = (): DehydratedRouter<TRouterContext> => {\n return {\n state: {\n ...pick(this.store.state, [\n 'latestLocation',\n 'currentLocation',\n 'status',\n 'lastUpdated',\n ]),\n currentMatches: this.store.state.currentMatches.map((match) => ({\n id: match.id,\n state: {\n ...pick(match.store.state, [\n 'status',\n 'routeLoaderData',\n 'invalidAt',\n 'invalid',\n ]),\n },\n })),\n },\n context: this.options.context as TRouterContext,\n }\n }\n\n hydrate = (dehydratedRouter: DehydratedRouter<TRouterContext>) => {\n this.store.setState((s) => {\n // Update the context TODO: make this part of state?\n this.options.context = dehydratedRouter.context\n\n // Match the routes\n const currentMatches = this.matchRoutes(\n dehydratedRouter.state.latestLocation.pathname,\n {\n strictParseParams: true,\n },\n )\n\n currentMatches.forEach((match, index) => {\n const dehydratedMatch = dehydratedRouter.state.currentMatches[index]\n invariant(\n dehydratedMatch && dehydratedMatch.id === match.id,\n 'Oh no! There was a hydration mismatch when attempting to rethis.store the state of the router! 😬',\n )\n match.store.setState((s) => {\n Object.assign(s, dehydratedMatch.state)\n })\n match.setLoaderData(dehydratedMatch.state.routeLoaderData)\n })\n\n currentMatches.forEach((match) => match.__validate())\n\n Object.assign(s, { ...dehydratedRouter.state, currentMatches })\n })\n }\n\n getLoader = <TFrom extends keyof TAllRouteInfo['routeInfoById'] = '/'>(opts: {\n from: TFrom\n }): unknown extends TAllRouteInfo['routeInfoById'][TFrom]['routeLoaderData']\n ?\n | Loader<\n LoaderContext<\n TAllRouteInfo['routeInfoById'][TFrom]['fullSearchSchema'],\n TAllRouteInfo['routeInfoById'][TFrom]['allParams']\n >,\n TAllRouteInfo['routeInfoById'][TFrom]['routeLoaderData']\n >\n | undefined\n : Loader<\n TAllRouteInfo['routeInfoById'][TFrom]['fullSearchSchema'],\n TAllRouteInfo['routeInfoById'][TFrom]['allParams'],\n TAllRouteInfo['routeInfoById'][TFrom]['routeLoaderData']\n > => {\n const id = opts.from || ('/' as any)\n\n const route = this.getRoute(id)\n\n if (!route) return undefined as any\n\n let loader =\n this.store.state.loaders[id] ||\n (() => {\n this.store.setState((s) => {\n s.loaders[id] = {\n pending: [],\n fetch: (async (loaderContext: LoaderContext<any, any>) => {\n if (!route) {\n return\n }\n const loaderState: LoaderState<any, any> = {\n loadedAt: Date.now(),\n loaderContext,\n }\n this.store.setState((s) => {\n s.loaders[id]!.current = loaderState\n s.loaders[id]!.latest = loaderState\n s.loaders[id]!.pending.push(loaderState)\n })\n try {\n return await route.options.loader?.(loaderContext)\n } finally {\n this.store.setState((s) => {\n s.loaders[id]!.pending = s.loaders[id]!.pending.filter(\n (d) => d !== loaderState,\n )\n })\n }\n }) as any,\n }\n })\n return this.store.state.loaders[id]!\n })()\n\n return loader as any\n }\n\n #buildRouteTree = (rootRouteConfig: RouteConfig) => {\n const recurseRoutes = (\n routeConfigs: RouteConfig[],\n parent?: Route<TAllRouteInfo, any, any>,\n ): Route<TAllRouteInfo, any, any>[] => {\n return routeConfigs.map((routeConfig, i) => {\n const routeOptions = routeConfig.options\n const route = new Route(routeConfig, routeOptions, i, parent, this)\n const existingRoute = (this.routesById as any)[route.id]\n\n if (existingRoute) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Duplicate routes found with id: ${String(route.id)}`,\n this.routesById,\n route,\n )\n }\n throw new Error()\n }\n\n ;(this.routesById as any)[route.id] = 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 = (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 #onFocus = () => {\n this.load()\n }\n\n #buildLocation = (dest: BuildNextOptions = {}): ParsedLocation => {\n const fromPathname = dest.fromCurrent\n ? this.store.state.latestLocation.pathname\n : dest.from ?? this.store.state.latestLocation.pathname\n\n let pathname = resolvePath(\n this.basepath ?? '/',\n fromPathname,\n `${dest.to ?? '.'}`,\n )\n\n const fromMatches = this.matchRoutes(\n this.store.state.latestLocation.pathname,\n {\n strictParseParams: true,\n },\n )\n\n const toMatches = this.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.route.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 this.store.state.latestLocation.search,\n )\n : this.store.state.latestLocation.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((prev, next) => next(prev), destSearch)\n : destSearch\n\n const search = replaceEqualDeep(\n this.store.state.latestLocation.search,\n postFilteredSearch,\n )\n\n const searchStr = this.options.stringifySearch(search)\n let hash =\n dest.hash === true\n ? this.store.state.latestLocation.hash\n : functionalUpdate(dest.hash!, this.store.state.latestLocation.hash)\n hash = hash ? `#${hash}` : ''\n\n return {\n pathname,\n search,\n searchStr,\n state: this.store.state.latestLocation.state,\n hash,\n href: `${pathname}${searchStr}${hash}`,\n key: dest.key,\n }\n }\n\n #commitLocation = (location: BuildNextOptions & { replace?: boolean }) => {\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.store.state.latestLocation.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 // this.load(this.#parseLocation(this.store.state.latestLocation))\n\n return (this.navigationPromise = new Promise((resolve) => {\n const previousNavigationResolve = this.resolveNavigation\n\n this.resolveNavigation = () => {\n previousNavigationResolve()\n resolve()\n }\n }))\n }\n}\n\n// Detect if we're in the DOM\nconst isServer = typeof window === 'undefined' || !window.document.createElement\n\nfunction getInitialRouterState(): RouterStore {\n return {\n status: 'idle',\n latestLocation: null!,\n currentLocation: null!,\n currentMatches: [],\n loaders: {},\n lastUpdated: Date.now(),\n matchCache: {},\n get isFetching() {\n return (\n this.status === 'loading' ||\n this.currentMatches.some((d) => d.store.state.isFetching)\n )\n },\n get isPreloading() {\n return Object.values(this.matchCache).some(\n (d) =>\n d.match.store.state.isFetching &&\n !this.currentMatches.find((dd) => dd.id === d.match.id),\n )\n },\n }\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nfunction linkMatches(matches: RouteMatch<any, any>[]) {\n matches.forEach((match, index) => {\n const parent = matches[index - 1]\n\n if (parent) {\n match.__setParentMatch(parent)\n }\n })\n}\n"],"names":["defaultFetchServerDataFn","router","routeMatch","next","buildNext","to","search","d","__data","matchId","id","res","fetch","href","method","signal","abortController","ok","json","Error","Router","startedLoadingAt","Date","now","resolveNavigation","constructor","options","defaultLoaderGcMaxAge","defaultLoaderMaxAge","defaultPreloadMaxAge","defaultPreloadDelay","context","undefined","stringifySearch","defaultStringifySearch","parseSearch","defaultParseSearch","fetchServerDataFn","store","createStore","getInitialRouterState","basepath","update","reset","setState","s","Object","assign","mount","isServer","state","currentMatches","length","load","visibilityChangeEvent","focusEvent","window","addEventListener","removeEventListener","opts","history","createMemoryHistory","createBrowserHistory","latestLocation","currentLocation","listen","routeConfig","trimPath","routesById","routeTree","matches","matchRoutes","pathname","__preSearchFilters","map","match","route","preSearchFilters","flat","filter","Boolean","__postSearchFilters","postSearchFilters","cancelMatches","pendingMatches","forEach","cancel","startedAt","batch","strictParseParams","status","pendingLocation","loadMatches","err","console","warn","invariant","navigationPromise","previousMatches","exiting","staying","find","dd","push","entering","__onExit","params","routeSearch","isFetching","error","gc","Math","max","loaderGcMaxAge","loaderMaxAge","matchCache","Infinity","Number","MAX_SAFE_INTEGER","onTransition","onLoaded","onRouteChange","cleanMatchCache","keys","entry","getRoute","loadRoute","navigateOpts","preloadRoute","loaderOpts","preload","maxAge","gcMaxAge","defaultPreloadGcMaxAge","existingMatches","recurse","routes","parentMatch","last","filteredRoutes","filterRoutes","foundRoutes","findMatchInRoutes","parentRoutes","some","path","childRoutes","fuzzy","matchParams","matchPathname","fullPath","caseSensitive","parsedParams","parseParams","foundRoute","interpolatedPath","interpolatePath","RouteMatch","joinPaths","linkMatches","resolvedMatches","__validate","Promise","all","beforeLoad","onLoadError","matchPromises","index","prevMatch","__loadPromise","loadMatchData","useServerData","loader","invalidateRoute","unloadedMatchIds","allSettled","includes","invalidate","reload","navigate","fromCurrent","replace","resolvePath","from","cleanPath","hash","toString","String","fromString","isExternal","URL","e","matchRoute","location","pending","buildLink","target","activeOptions","preloadMaxAge","userPreloadMaxAge","preloadGcMaxAge","userPreloadGcMaxAge","preloadDelay","userPreloadDelay","disabled","type","nextOpts","defaultPreload","pathIsEqual","currentPathSplit","split","nextPathSplit","pathIsFuzzyEqual","every","i","hashIsEqual","pathTest","exact","hashTest","includeHash","isActive","handleClick","isCtrlEvent","defaultPrevented","button","preventDefault","handleFocus","catch","handleEnter","preloadTimeout","setTimeout","handleLeave","clearTimeout","dehydrate","pick","hydrate","dehydratedRouter","dehydratedMatch","setLoaderData","routeLoaderData","getLoader","loaders","loaderContext","loaderState","loadedAt","current","latest","rootRouteConfig","recurseRoutes","routeConfigs","parent","routeOptions","Route","existingRoute","process","env","NODE_ENV","children","previousLocation","parsedSearch","searchStr","replaceEqualDeep","reverse","key","dest","fromPathname","fromMatches","toMatches","prevParams","nextParams","functionalUpdate","stringifyParams","fn","preFilteredSearch","reduce","prev","destSearch","postFilteredSearch","random","navigateTimeout","nextAction","isSameUrl","resolve","previousNavigationResolve","document","createElement","lastUpdated","isPreloading","values","metaKey","altKey","ctrlKey","shiftKey","__setParentMatch"],"mappings":"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"}
@@ -137,10 +137,9 @@ function createMemoryHistory(opts = {
137
137
  function parseLocation(href, state) {
138
138
  let hashIndex = href.indexOf('#');
139
139
  let searchIndex = href.indexOf('?');
140
- const pathEnd = Math.min(hashIndex, searchIndex);
141
140
  return {
142
141
  href,
143
- pathname: pathEnd > -1 ? href.substring(0, pathEnd) : href,
142
+ pathname: href.substring(0, hashIndex > 0 ? searchIndex > 0 ? Math.min(hashIndex, searchIndex) : hashIndex : searchIndex > 0 ? searchIndex : href.length),
144
143
  hash: hashIndex > -1 ? href.substring(hashIndex, searchIndex) : '',
145
144
  search: searchIndex > -1 ? href.substring(searchIndex) : '',
146
145
  state
@@ -1342,7 +1341,7 @@ class Router {
1342
1341
  // If this `to` is a valid external URL, return
1343
1342
  // null for LinkUtils
1344
1343
  const toString = String(to);
1345
- const fromString = String(from);
1344
+ const fromString = typeof from === 'undefined' ? from : String(from);
1346
1345
  let isExternal;
1347
1346
  try {
1348
1347
  new URL(`${toString}`);