@tanstack/router-core 0.0.1-beta.30 → 0.0.1-beta.33

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":"route.js","sources":["../../src/route.ts"],"sourcesContent":["import {\n CheckRelativePath,\n LinkInfo,\n LinkOptions,\n ResolveRelativePath,\n ToOptions,\n} from './link'\nimport { LoaderContext, RouteConfig, RouteOptions } from './routeConfig'\nimport {\n AnyAllRouteInfo,\n AnyRouteInfo,\n DefaultAllRouteInfo,\n RouteInfo,\n RouteInfoByPath,\n} from './routeInfo'\nimport {\n Action,\n ActionState,\n Loader,\n LoaderState,\n MatchRouteOptions,\n Router,\n} from './router'\nimport { NoInfer } from './utils'\n\nexport interface AnyRoute extends Route<any, any, any> {}\n\nexport interface Route<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n TRouterContext = unknown,\n> {\n routeInfo: TRouteInfo\n routeId: TRouteInfo['id']\n routeRouteId: TRouteInfo['routeId']\n routePath: TRouteInfo['path']\n fullPath: TRouteInfo['fullPath']\n parentRoute?: AnyRoute\n childRoutes?: AnyRoute[]\n options: RouteOptions\n router: Router<TAllRouteInfo['routeConfig'], TAllRouteInfo, TRouterContext>\n buildLink: <TTo extends string = '.'>(\n options: Omit<\n LinkOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo>,\n 'from'\n >,\n ) => LinkInfo\n matchRoute: <\n TTo extends string = '.',\n TResolved extends string = ResolveRelativePath<TRouteInfo['id'], TTo>,\n >(\n matchLocation: CheckRelativePath<\n TAllRouteInfo,\n TRouteInfo['fullPath'],\n NoInfer<TTo>\n > &\n Omit<ToOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo>, 'from'>,\n opts?: MatchRouteOptions,\n ) => RouteInfoByPath<TAllRouteInfo, TResolved>['allParams']\n navigate: <TTo extends string = '.'>(\n options: Omit<\n LinkOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo>,\n 'from'\n >,\n ) => Promise<void>\n action: unknown extends TRouteInfo['actionResponse']\n ?\n | Action<TRouteInfo['actionPayload'], TRouteInfo['actionResponse']>\n | undefined\n : Action<TRouteInfo['actionPayload'], TRouteInfo['actionResponse']>\n loader: unknown extends TRouteInfo['routeLoaderData']\n ?\n | Action<\n LoaderContext<\n TRouteInfo['fullSearchSchema'],\n TRouteInfo['allParams']\n >,\n TRouteInfo['routeLoaderData']\n >\n | undefined\n : Loader<\n TRouteInfo['fullSearchSchema'],\n TRouteInfo['allParams'],\n TRouteInfo['routeLoaderData']\n >\n}\n\nexport function createRoute<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n TRouterContext = unknown,\n>(\n routeConfig: RouteConfig,\n options: TRouteInfo['options'],\n parent: undefined | Route<TAllRouteInfo, any>,\n router: Router<TAllRouteInfo['routeConfig'], TAllRouteInfo, TRouterContext>,\n): Route<TAllRouteInfo, TRouteInfo, TRouterContext> {\n const { id, routeId, path: routePath, fullPath } = routeConfig\n\n const action =\n router.state.actions[id] ||\n (() => {\n router.state.actions[id] = {\n submissions: [],\n submit: async <T, U>(\n submission: T,\n actionOpts?: { invalidate?: boolean; multi?: boolean },\n ) => {\n if (!route) {\n return\n }\n\n const invalidate = actionOpts?.invalidate ?? true\n\n if (!actionOpts?.multi) {\n action.submissions = action.submissions.filter((d) => d.isMulti)\n }\n\n const actionState: ActionState<T, U> = {\n submittedAt: Date.now(),\n status: 'pending',\n submission,\n isMulti: !!actionOpts?.multi,\n }\n\n action.current = actionState\n action.latest = actionState\n action.submissions.push(actionState)\n\n router.notify()\n\n try {\n const res = await route.options.action?.(submission)\n actionState.data = res as U\n\n if (invalidate) {\n router.invalidateRoute({ to: '.', fromCurrent: true })\n await router.reload()\n }\n actionState.status = 'success'\n return res\n } catch (err) {\n console.log('tanner')\n console.error(err)\n actionState.error = err\n actionState.status = 'error'\n } finally {\n router.notify()\n }\n },\n }\n return router.state.actions[id]!\n })()\n\n const loader =\n router.state.loaders[id] ||\n (() => {\n router.state.loaders[id] = {\n pending: [],\n fetch: (async (loaderContext: LoaderContext<any, any>) => {\n if (!route) {\n return\n }\n\n const loaderState: LoaderState<any, any> = {\n loadedAt: Date.now(),\n loaderContext,\n }\n\n loader.current = loaderState\n loader.latest = loaderState\n loader.pending.push(loaderState)\n\n // router.state = {\n // ...router.state,\n // currentAction: loaderState,\n // latestAction: loaderState,\n // }\n\n router.notify()\n\n try {\n return await route.options.loader?.(loaderContext)\n } finally {\n loader.pending = loader.pending.filter((d) => d !== loaderState)\n // router.removeActionQueue.push({ loader, loaderState })\n router.notify()\n }\n }) as any,\n }\n return router.state.loaders[id]!\n })()\n\n let route: Route<TAllRouteInfo, TRouteInfo, TRouterContext> = {\n routeInfo: undefined!,\n routeId: id,\n routeRouteId: routeId,\n routePath,\n fullPath,\n options,\n router,\n childRoutes: undefined!,\n parentRoute: parent,\n action,\n loader: loader as any,\n\n buildLink: (options) => {\n return router.buildLink({\n ...options,\n from: fullPath,\n } as any) as any\n },\n\n navigate: (options) => {\n return router.navigate({\n ...options,\n from: fullPath,\n } as any) as any\n },\n\n matchRoute: (matchLocation, opts) => {\n return router.matchRoute(\n {\n ...matchLocation,\n from: fullPath,\n } as any,\n opts,\n )\n },\n }\n\n router.options.createRoute?.({ router, route })\n\n return route\n}\n"],"names":["createRoute","routeConfig","options","parent","router","id","routeId","path","routePath","fullPath","action","state","actions","submissions","submit","submission","actionOpts","route","invalidate","multi","filter","d","isMulti","actionState","submittedAt","Date","now","status","current","latest","push","notify","res","data","invalidateRoute","to","fromCurrent","reload","err","console","log","error","loader","loaders","pending","fetch","loaderContext","loaderState","loadedAt","routeInfo","undefined","routeRouteId","childRoutes","parentRoute","buildLink","_extends","from","navigate","matchRoute","matchLocation","opts"],"mappings":"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"}
1
+ {"version":3,"file":"route.js","sources":["../../src/route.ts"],"sourcesContent":["import {\n CheckRelativePath,\n LinkInfo,\n LinkOptions,\n ResolveRelativePath,\n ToOptions,\n} from './link'\nimport { LoaderContext, RouteConfig, RouteOptions } from './routeConfig'\nimport {\n AnyAllRouteInfo,\n AnyRouteInfo,\n DefaultAllRouteInfo,\n RouteInfo,\n RouteInfoByPath,\n} from './routeInfo'\nimport {\n Action,\n ActionState,\n Loader,\n LoaderState,\n MatchRouteOptions,\n Router,\n} from './router'\nimport { NoInfer } from './utils'\n\nexport interface AnyRoute extends Route<any, any, any> {}\n\nexport interface Route<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n TRouterContext = unknown,\n> {\n routeInfo: TRouteInfo\n routeId: TRouteInfo['id']\n routeRouteId: TRouteInfo['routeId']\n routePath: TRouteInfo['path']\n fullPath: TRouteInfo['fullPath']\n parentRoute?: AnyRoute\n childRoutes?: AnyRoute[]\n options: RouteOptions\n router: Router<TAllRouteInfo['routeConfig'], TAllRouteInfo, TRouterContext>\n buildLink: <TTo extends string = '.'>(\n options: Omit<\n LinkOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo>,\n 'from'\n >,\n ) => LinkInfo\n matchRoute: <\n TTo extends string = '.',\n TResolved extends string = ResolveRelativePath<TRouteInfo['id'], TTo>,\n >(\n matchLocation: CheckRelativePath<\n TAllRouteInfo,\n TRouteInfo['fullPath'],\n NoInfer<TTo>\n > &\n Omit<ToOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo>, 'from'>,\n opts?: MatchRouteOptions,\n ) => RouteInfoByPath<TAllRouteInfo, TResolved>['allParams']\n navigate: <TTo extends string = '.'>(\n options: Omit<\n LinkOptions<TAllRouteInfo, TRouteInfo['fullPath'], TTo>,\n 'from'\n >,\n ) => Promise<void>\n action: unknown extends TRouteInfo['actionResponse']\n ?\n | Action<TRouteInfo['actionPayload'], TRouteInfo['actionResponse']>\n | undefined\n : Action<TRouteInfo['actionPayload'], TRouteInfo['actionResponse']>\n loader: unknown extends TRouteInfo['routeLoaderData']\n ?\n | Action<\n LoaderContext<\n TRouteInfo['fullSearchSchema'],\n TRouteInfo['allParams']\n >,\n TRouteInfo['routeLoaderData']\n >\n | undefined\n : Loader<\n TRouteInfo['fullSearchSchema'],\n TRouteInfo['allParams'],\n TRouteInfo['routeLoaderData']\n >\n}\n\nexport function createRoute<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n TRouterContext = unknown,\n>(\n routeConfig: RouteConfig,\n options: TRouteInfo['options'],\n parent: undefined | Route<TAllRouteInfo, any>,\n router: Router<TAllRouteInfo['routeConfig'], TAllRouteInfo, TRouterContext>,\n): Route<TAllRouteInfo, TRouteInfo, TRouterContext> {\n const { id, routeId, path: routePath, fullPath } = routeConfig\n\n const action =\n router.state.actions[id] ||\n (() => {\n router.state.actions[id] = {\n submissions: [],\n submit: async <T, U>(\n submission: T,\n actionOpts?: { invalidate?: boolean; multi?: boolean },\n ) => {\n if (!route) {\n return\n }\n\n const invalidate = actionOpts?.invalidate ?? true\n\n if (!actionOpts?.multi) {\n action.submissions = action.submissions.filter((d) => d.isMulti)\n }\n\n const actionState: ActionState<T, U> = {\n submittedAt: Date.now(),\n status: 'pending',\n submission,\n isMulti: !!actionOpts?.multi,\n }\n\n action.current = actionState\n action.latest = actionState\n action.submissions.push(actionState)\n\n router.notify()\n\n try {\n const res = await route.options.action?.(submission)\n actionState.data = res as U\n\n if (invalidate) {\n router.invalidateRoute({ to: '.', fromCurrent: true })\n await router.reload()\n }\n actionState.status = 'success'\n return res\n } catch (err) {\n console.log('tanner')\n console.error(err)\n actionState.error = err\n actionState.status = 'error'\n } finally {\n router.notify()\n }\n },\n }\n return router.state.actions[id]!\n })()\n\n const loader =\n router.state.loaders[id] ||\n (() => {\n router.state.loaders[id] = {\n pending: [],\n fetch: (async (loaderContext: LoaderContext<any, any>) => {\n if (!route) {\n return\n }\n\n const loaderState: LoaderState<any, any> = {\n loadedAt: Date.now(),\n loaderContext,\n }\n\n loader.current = loaderState\n loader.latest = loaderState\n loader.pending.push(loaderState)\n\n // router.state = {\n // ...router.state,\n // currentAction: loaderState,\n // latestAction: loaderState,\n // }\n\n router.notify()\n\n try {\n return await route.options.loader?.(loaderContext)\n } finally {\n loader.pending = loader.pending.filter((d) => d !== loaderState)\n // router.removeActionQueue.push({ loader, loaderState })\n router.notify()\n }\n }) as any,\n }\n return router.state.loaders[id]!\n })()\n\n let route: Route<TAllRouteInfo, TRouteInfo, TRouterContext> = {\n routeInfo: undefined!,\n routeId: id,\n routeRouteId: routeId,\n routePath,\n fullPath,\n options,\n router,\n childRoutes: undefined!,\n parentRoute: parent,\n action,\n loader: loader as any,\n\n buildLink: (options) => {\n return router.buildLink({\n ...options,\n from: fullPath,\n } as any) as any\n },\n\n navigate: (options) => {\n return router.navigate({\n ...options,\n from: fullPath,\n } as any) as any\n },\n\n matchRoute: (matchLocation, opts) => {\n return router.matchRoute(\n {\n ...matchLocation,\n from: fullPath,\n } as any,\n opts,\n ) as any\n },\n }\n\n router.options.createRoute?.({ router, route })\n\n return route\n}\n"],"names":["createRoute","routeConfig","options","parent","router","id","routeId","path","routePath","fullPath","action","state","actions","submissions","submit","submission","actionOpts","route","invalidate","multi","filter","d","isMulti","actionState","submittedAt","Date","now","status","current","latest","push","notify","res","data","invalidateRoute","to","fromCurrent","reload","err","console","log","error","loader","loaders","pending","fetch","loaderContext","loaderState","loadedAt","routeInfo","undefined","routeRouteId","childRoutes","parentRoute","buildLink","_extends","from","navigate","matchRoute","matchLocation","opts"],"mappings":"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"}
@@ -44,7 +44,7 @@ function createRouteMatch(router, route, opts) {
44
44
  validate: () => {
45
45
  var _routeMatch$parentMat, _routeMatch$parentMat2;
46
46
  // Validate the search params and stabilize them
47
- const parentSearch = (_routeMatch$parentMat = (_routeMatch$parentMat2 = routeMatch.parentMatch) == null ? void 0 : _routeMatch$parentMat2.search) != null ? _routeMatch$parentMat : router.location.search;
47
+ const parentSearch = (_routeMatch$parentMat = (_routeMatch$parentMat2 = routeMatch.parentMatch) == null ? void 0 : _routeMatch$parentMat2.search) != null ? _routeMatch$parentMat : router.__location.search;
48
48
  try {
49
49
  var _validator;
50
50
  const prevSearch = routeMatch.routeSearch;
@@ -1 +1 @@
1
- {"version":3,"file":"routeMatch.js","sources":["../../src/routeMatch.ts"],"sourcesContent":["import { GetFrameworkGeneric } from './frameworks'\nimport { Route } from './route'\nimport {\n AnyAllRouteInfo,\n AnyRouteInfo,\n DefaultAllRouteInfo,\n RouteInfo,\n} from './routeInfo'\nimport { Router } from './router'\nimport { replaceEqualDeep } from './utils'\n\nexport interface RouteMatch<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n> extends Route<TAllRouteInfo, TRouteInfo> {\n matchId: string\n pathname: string\n params: TRouteInfo['allParams']\n parentMatch?: RouteMatch\n childMatches: RouteMatch[]\n routeSearch: TRouteInfo['searchSchema']\n search: TRouteInfo['fullSearchSchema']\n status: 'idle' | 'loading' | 'success' | 'error'\n updatedAt?: number\n error?: unknown\n isInvalid: boolean\n getIsInvalid: () => boolean\n loaderData: TRouteInfo['loaderData']\n routeLoaderData: TRouteInfo['routeLoaderData']\n isFetching: boolean\n invalidAt: number\n __: {\n component?: GetFrameworkGeneric<'Component'>\n errorComponent?: GetFrameworkGeneric<'ErrorComponent'>\n pendingComponent?: GetFrameworkGeneric<'Component'>\n loadPromise?: Promise<void>\n componentsPromise?: Promise<void>\n dataPromise?: Promise<TRouteInfo['routeLoaderData']>\n onExit?:\n | void\n | ((matchContext: {\n params: TRouteInfo['allParams']\n search: TRouteInfo['fullSearchSchema']\n }) => void)\n abortController: AbortController\n latestId: string\n // setParentMatch: (parentMatch: RouteMatch) => void\n // addChildMatch: (childMatch: RouteMatch) => void\n validate: () => void\n notify: () => void\n resolve: () => void\n }\n cancel: () => void\n load: (\n loaderOpts?:\n | { preload: true; maxAge: number; gcMaxAge: number }\n | { preload?: false; maxAge?: never; gcMaxAge?: never },\n ) => Promise<TRouteInfo['routeLoaderData']>\n fetch: (opts?: { maxAge?: number }) => Promise<TRouteInfo['routeLoaderData']>\n invalidate: () => void\n hasLoaders: () => boolean\n}\n\nconst componentTypes = [\n 'component',\n 'errorComponent',\n 'pendingComponent',\n] as const\n\nexport function createRouteMatch<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n>(\n router: Router<any, any, any>,\n route: Route<TAllRouteInfo, TRouteInfo>,\n opts: {\n parentMatch?: RouteMatch<any, any>\n matchId: string\n params: TRouteInfo['allParams']\n pathname: string\n },\n): RouteMatch<TAllRouteInfo, TRouteInfo> {\n const routeMatch: RouteMatch<TAllRouteInfo, TRouteInfo> = {\n ...route,\n ...opts,\n router,\n routeSearch: {},\n search: {},\n childMatches: [],\n status: 'idle',\n routeLoaderData: {} as TRouteInfo['routeLoaderData'],\n loaderData: {} as TRouteInfo['loaderData'],\n isFetching: false,\n isInvalid: false,\n invalidAt: Infinity,\n // pendingActions: [],\n getIsInvalid: () => {\n const now = Date.now()\n return routeMatch.isInvalid || routeMatch.invalidAt < now\n },\n __: {\n abortController: new AbortController(),\n latestId: '',\n resolve: () => {},\n notify: () => {\n routeMatch.__.resolve()\n routeMatch.router.notify()\n },\n validate: () => {\n // Validate the search params and stabilize them\n const parentSearch =\n routeMatch.parentMatch?.search ?? router.location.search\n\n try {\n const prevSearch = routeMatch.routeSearch\n\n const validator =\n typeof routeMatch.options.validateSearch === 'object'\n ? routeMatch.options.validateSearch.parse\n : routeMatch.options.validateSearch\n\n let nextSearch = replaceEqualDeep(\n prevSearch,\n validator?.(parentSearch) ?? {},\n )\n\n // Invalidate route matches when search param stability changes\n if (prevSearch !== nextSearch) {\n routeMatch.isInvalid = true\n }\n\n routeMatch.routeSearch = nextSearch\n\n routeMatch.search = replaceEqualDeep(parentSearch, {\n ...parentSearch,\n ...nextSearch,\n })\n\n componentTypes.map(async (type) => {\n const component = routeMatch.options[type]\n\n if (typeof routeMatch.__[type] !== 'function') {\n routeMatch.__[type] = component\n }\n })\n } catch (err: any) {\n console.error(err)\n const error = new (Error as any)('Invalid search params found', {\n cause: err,\n })\n error.code = 'INVALID_SEARCH_PARAMS'\n routeMatch.status = 'error'\n routeMatch.error = error\n // Do not proceed with loading the route\n return\n }\n },\n },\n cancel: () => {\n routeMatch.__.abortController?.abort()\n },\n invalidate: () => {\n routeMatch.isInvalid = true\n },\n hasLoaders: () => {\n return !!(\n route.options.loader ||\n componentTypes.some((d) => route.options[d]?.preload)\n )\n },\n load: async (loaderOpts) => {\n const now = Date.now()\n const minMaxAge = loaderOpts?.preload\n ? Math.max(loaderOpts?.maxAge, loaderOpts?.gcMaxAge)\n : 0\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 (\n router.state.matches.find((d) => d.matchId === routeMatch.matchId)\n ) {\n return\n }\n\n router.matchCache[routeMatch.matchId] = {\n gc: now + loaderOpts.gcMaxAge,\n match: routeMatch as RouteMatch<any, any>,\n }\n }\n\n // If the match is invalid, errored or idle, trigger it to load\n if (\n (routeMatch.status === 'success' && routeMatch.getIsInvalid()) ||\n routeMatch.status === 'error' ||\n routeMatch.status === 'idle'\n ) {\n const maxAge = loaderOpts?.preload ? loaderOpts?.maxAge : undefined\n\n await routeMatch.fetch({ maxAge })\n }\n },\n fetch: async (opts) => {\n const loadId = '' + Date.now() + Math.random()\n routeMatch.__.latestId = loadId\n const checkLatest = async () => {\n if (loadId !== routeMatch.__.latestId) {\n // warning(true, 'Data loader is out of date!')\n return new Promise(() => {})\n }\n }\n\n // If the match was in an error state, set it\n // to a loading state again. Otherwise, keep it\n // as loading or resolved\n if (routeMatch.status === 'idle') {\n routeMatch.status = 'loading'\n }\n\n // We started loading the route, so it's no longer invalid\n routeMatch.isInvalid = false\n\n routeMatch.__.loadPromise = new Promise(async (resolve) => {\n // We are now fetching, even if it's in the background of a\n // resolved state\n routeMatch.isFetching = true\n routeMatch.__.resolve = resolve as () => void\n\n routeMatch.__.componentsPromise = (async () => {\n // then run all component and data loaders in parallel\n // For each component type, potentially load it asynchronously\n\n await Promise.all(\n componentTypes.map(async (type) => {\n const component = routeMatch.options[type]\n\n if (routeMatch.__[type]?.preload) {\n routeMatch.__[type] = await router.options.loadComponent!(\n component,\n )\n }\n }),\n )\n })()\n\n routeMatch.__.dataPromise = Promise.resolve().then(async () => {\n try {\n if (routeMatch.options.loader) {\n const data = await router.loadMatchData(routeMatch)\n await checkLatest()\n\n routeMatch.routeLoaderData = replaceEqualDeep(\n routeMatch.routeLoaderData,\n data,\n )\n }\n\n routeMatch.error = undefined\n routeMatch.status = 'success'\n routeMatch.updatedAt = Date.now()\n routeMatch.invalidAt =\n routeMatch.updatedAt +\n (opts?.maxAge ??\n routeMatch.options.loaderMaxAge ??\n router.options.defaultLoaderMaxAge ??\n 0)\n\n return routeMatch.routeLoaderData\n } catch (err) {\n await checkLatest()\n\n if (process.env.NODE_ENV !== 'production') {\n console.error(err)\n }\n\n routeMatch.error = err\n routeMatch.status = 'error'\n routeMatch.updatedAt = Date.now()\n\n throw err\n }\n })\n\n const after = async () => {\n await checkLatest()\n routeMatch.isFetching = false\n delete routeMatch.__.loadPromise\n routeMatch.__.notify()\n }\n\n try {\n await Promise.all([\n routeMatch.__.componentsPromise,\n routeMatch.__.dataPromise.catch(() => {}),\n ])\n after()\n } catch {\n after()\n }\n })\n\n await routeMatch.__.loadPromise\n await checkLatest()\n },\n }\n\n if (!routeMatch.hasLoaders()) {\n routeMatch.status = 'success'\n }\n\n return routeMatch\n}\n"],"names":["componentTypes","createRouteMatch","router","route","opts","routeMatch","_extends","routeSearch","search","childMatches","status","routeLoaderData","loaderData","isFetching","isInvalid","invalidAt","Infinity","getIsInvalid","now","Date","__","abortController","AbortController","latestId","resolve","notify","validate","parentSearch","parentMatch","location","prevSearch","validator","options","validateSearch","parse","nextSearch","replaceEqualDeep","map","type","component","err","console","error","Error","cause","code","cancel","abort","invalidate","hasLoaders","loader","some","d","preload","load","loaderOpts","minMaxAge","Math","max","maxAge","gcMaxAge","state","matches","find","matchId","matchCache","gc","match","undefined","fetch","loadId","random","checkLatest","Promise","loadPromise","componentsPromise","all","loadComponent","dataPromise","then","data","loadMatchData","updatedAt","loaderMaxAge","defaultLoaderMaxAge","process","env","NODE_ENV","after","catch"],"mappings":"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"}
1
+ {"version":3,"file":"routeMatch.js","sources":["../../src/routeMatch.ts"],"sourcesContent":["import { GetFrameworkGeneric } from './frameworks'\nimport { Route } from './route'\nimport {\n AnyAllRouteInfo,\n AnyRouteInfo,\n DefaultAllRouteInfo,\n RouteInfo,\n} from './routeInfo'\nimport { Router } from './router'\nimport { Expand, replaceEqualDeep } from './utils'\n\nexport interface RouteMatch<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n> extends Route<TAllRouteInfo, TRouteInfo> {\n matchId: string\n pathname: string\n params: TRouteInfo['allParams']\n parentMatch?: RouteMatch\n childMatches: RouteMatch[]\n routeSearch: TRouteInfo['searchSchema']\n search: Expand<\n TAllRouteInfo['fullSearchSchema'] & TRouteInfo['fullSearchSchema']\n >\n status: 'idle' | 'loading' | 'success' | 'error'\n updatedAt?: number\n error?: unknown\n isInvalid: boolean\n getIsInvalid: () => boolean\n loaderData: TRouteInfo['loaderData']\n routeLoaderData: TRouteInfo['routeLoaderData']\n isFetching: boolean\n invalidAt: number\n __: {\n component?: GetFrameworkGeneric<'Component'>\n errorComponent?: GetFrameworkGeneric<'ErrorComponent'>\n pendingComponent?: GetFrameworkGeneric<'Component'>\n loadPromise?: Promise<void>\n componentsPromise?: Promise<void>\n dataPromise?: Promise<TRouteInfo['routeLoaderData']>\n onExit?:\n | void\n | ((matchContext: {\n params: TRouteInfo['allParams']\n search: TRouteInfo['fullSearchSchema']\n }) => void)\n abortController: AbortController\n latestId: string\n // setParentMatch: (parentMatch: RouteMatch) => void\n // addChildMatch: (childMatch: RouteMatch) => void\n validate: () => void\n notify: () => void\n resolve: () => void\n }\n cancel: () => void\n load: (\n loaderOpts?:\n | { preload: true; maxAge: number; gcMaxAge: number }\n | { preload?: false; maxAge?: never; gcMaxAge?: never },\n ) => Promise<TRouteInfo['routeLoaderData']>\n fetch: (opts?: { maxAge?: number }) => Promise<TRouteInfo['routeLoaderData']>\n invalidate: () => void\n hasLoaders: () => boolean\n}\n\nconst componentTypes = [\n 'component',\n 'errorComponent',\n 'pendingComponent',\n] as const\n\nexport function createRouteMatch<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n>(\n router: Router<any, any, any>,\n route: Route<TAllRouteInfo, TRouteInfo>,\n opts: {\n parentMatch?: RouteMatch<any, any>\n matchId: string\n params: TRouteInfo['allParams']\n pathname: string\n },\n): RouteMatch<TAllRouteInfo, TRouteInfo> {\n const routeMatch: RouteMatch<TAllRouteInfo, TRouteInfo> = {\n ...route,\n ...opts,\n router,\n routeSearch: {},\n search: {} as any,\n childMatches: [],\n status: 'idle',\n routeLoaderData: {} as TRouteInfo['routeLoaderData'],\n loaderData: {} as TRouteInfo['loaderData'],\n isFetching: false,\n isInvalid: false,\n invalidAt: Infinity,\n // pendingActions: [],\n getIsInvalid: () => {\n const now = Date.now()\n return routeMatch.isInvalid || routeMatch.invalidAt < now\n },\n __: {\n abortController: new AbortController(),\n latestId: '',\n resolve: () => {},\n notify: () => {\n routeMatch.__.resolve()\n routeMatch.router.notify()\n },\n validate: () => {\n // Validate the search params and stabilize them\n const parentSearch =\n routeMatch.parentMatch?.search ?? router.__location.search\n\n try {\n const prevSearch = routeMatch.routeSearch\n\n const validator =\n typeof routeMatch.options.validateSearch === 'object'\n ? routeMatch.options.validateSearch.parse\n : routeMatch.options.validateSearch\n\n let nextSearch = replaceEqualDeep(\n prevSearch,\n validator?.(parentSearch) ?? {},\n )\n\n // Invalidate route matches when search param stability changes\n if (prevSearch !== nextSearch) {\n routeMatch.isInvalid = true\n }\n\n routeMatch.routeSearch = nextSearch\n\n routeMatch.search = replaceEqualDeep(parentSearch, {\n ...parentSearch,\n ...nextSearch,\n })\n\n componentTypes.map(async (type) => {\n const component = routeMatch.options[type]\n\n if (typeof routeMatch.__[type] !== 'function') {\n routeMatch.__[type] = component\n }\n })\n } catch (err: any) {\n console.error(err)\n const error = new (Error as any)('Invalid search params found', {\n cause: err,\n })\n error.code = 'INVALID_SEARCH_PARAMS'\n routeMatch.status = 'error'\n routeMatch.error = error\n // Do not proceed with loading the route\n return\n }\n },\n },\n cancel: () => {\n routeMatch.__.abortController?.abort()\n },\n invalidate: () => {\n routeMatch.isInvalid = true\n },\n hasLoaders: () => {\n return !!(\n route.options.loader ||\n componentTypes.some((d) => route.options[d]?.preload)\n )\n },\n load: async (loaderOpts) => {\n const now = Date.now()\n const minMaxAge = loaderOpts?.preload\n ? Math.max(loaderOpts?.maxAge, loaderOpts?.gcMaxAge)\n : 0\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 (\n router.state.matches.find((d) => d.matchId === routeMatch.matchId)\n ) {\n return\n }\n\n router.matchCache[routeMatch.matchId] = {\n gc: now + loaderOpts.gcMaxAge,\n match: routeMatch as RouteMatch<any, any>,\n }\n }\n\n // If the match is invalid, errored or idle, trigger it to load\n if (\n (routeMatch.status === 'success' && routeMatch.getIsInvalid()) ||\n routeMatch.status === 'error' ||\n routeMatch.status === 'idle'\n ) {\n const maxAge = loaderOpts?.preload ? loaderOpts?.maxAge : undefined\n\n await routeMatch.fetch({ maxAge })\n }\n },\n fetch: async (opts) => {\n const loadId = '' + Date.now() + Math.random()\n routeMatch.__.latestId = loadId\n const checkLatest = async () => {\n if (loadId !== routeMatch.__.latestId) {\n // warning(true, 'Data loader is out of date!')\n return new Promise(() => {})\n }\n }\n\n // If the match was in an error state, set it\n // to a loading state again. Otherwise, keep it\n // as loading or resolved\n if (routeMatch.status === 'idle') {\n routeMatch.status = 'loading'\n }\n\n // We started loading the route, so it's no longer invalid\n routeMatch.isInvalid = false\n\n routeMatch.__.loadPromise = new Promise(async (resolve) => {\n // We are now fetching, even if it's in the background of a\n // resolved state\n routeMatch.isFetching = true\n routeMatch.__.resolve = resolve as () => void\n\n routeMatch.__.componentsPromise = (async () => {\n // then run all component and data loaders in parallel\n // For each component type, potentially load it asynchronously\n\n await Promise.all(\n componentTypes.map(async (type) => {\n const component = routeMatch.options[type]\n\n if (routeMatch.__[type]?.preload) {\n routeMatch.__[type] = await router.options.loadComponent!(\n component,\n )\n }\n }),\n )\n })()\n\n routeMatch.__.dataPromise = Promise.resolve().then(async () => {\n try {\n if (routeMatch.options.loader) {\n const data = await router.loadMatchData(routeMatch)\n await checkLatest()\n\n routeMatch.routeLoaderData = replaceEqualDeep(\n routeMatch.routeLoaderData,\n data,\n )\n }\n\n routeMatch.error = undefined\n routeMatch.status = 'success'\n routeMatch.updatedAt = Date.now()\n routeMatch.invalidAt =\n routeMatch.updatedAt +\n (opts?.maxAge ??\n routeMatch.options.loaderMaxAge ??\n router.options.defaultLoaderMaxAge ??\n 0)\n\n return routeMatch.routeLoaderData\n } catch (err) {\n await checkLatest()\n\n if (process.env.NODE_ENV !== 'production') {\n console.error(err)\n }\n\n routeMatch.error = err\n routeMatch.status = 'error'\n routeMatch.updatedAt = Date.now()\n\n throw err\n }\n })\n\n const after = async () => {\n await checkLatest()\n routeMatch.isFetching = false\n delete routeMatch.__.loadPromise\n routeMatch.__.notify()\n }\n\n try {\n await Promise.all([\n routeMatch.__.componentsPromise,\n routeMatch.__.dataPromise.catch(() => {}),\n ])\n after()\n } catch {\n after()\n }\n })\n\n await routeMatch.__.loadPromise\n await checkLatest()\n },\n }\n\n if (!routeMatch.hasLoaders()) {\n routeMatch.status = 'success'\n }\n\n return routeMatch\n}\n"],"names":["componentTypes","createRouteMatch","router","route","opts","routeMatch","_extends","routeSearch","search","childMatches","status","routeLoaderData","loaderData","isFetching","isInvalid","invalidAt","Infinity","getIsInvalid","now","Date","__","abortController","AbortController","latestId","resolve","notify","validate","parentSearch","parentMatch","__location","prevSearch","validator","options","validateSearch","parse","nextSearch","replaceEqualDeep","map","type","component","err","console","error","Error","cause","code","cancel","abort","invalidate","hasLoaders","loader","some","d","preload","load","loaderOpts","minMaxAge","Math","max","maxAge","gcMaxAge","state","matches","find","matchId","matchCache","gc","match","undefined","fetch","loadId","random","checkLatest","Promise","loadPromise","componentsPromise","all","loadComponent","dataPromise","then","data","loadMatchData","updatedAt","loaderMaxAge","defaultLoaderMaxAge","process","env","NODE_ENV","after","catch"],"mappings":"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"}
@@ -66,7 +66,7 @@ function createRouter(userOptions) {
66
66
  basepath: '',
67
67
  routeTree: undefined,
68
68
  routesById: {},
69
- location: undefined,
69
+ __location: undefined,
70
70
  //
71
71
  resolveNavigation: () => {},
72
72
  matchCache: {},
@@ -99,7 +99,7 @@ function createRouter(userOptions) {
99
99
  },
100
100
  dehydrate: () => {
101
101
  return {
102
- location: router.location,
102
+ location: router.__location,
103
103
  state: _rollupPluginBabelHelpers["extends"]({}, utils.pick(router.state, ['status', 'location', 'lastUpdated', 'location']), {
104
104
  matches: router.state.matches.map(match => utils.pick(match, ['matchId', 'status', 'routeLoaderData', 'loaderData', 'isInvalid', 'invalidAt']))
105
105
  }),
@@ -108,13 +108,13 @@ function createRouter(userOptions) {
108
108
  },
109
109
  hydrate: dehydratedState => {
110
110
  // Update the location
111
- router.location = dehydratedState.location;
111
+ router.__location = dehydratedState.location;
112
112
 
113
113
  // Update the context
114
114
  router.options.context = dehydratedState.context;
115
115
 
116
116
  // Match the routes
117
- const matches = router.matchRoutes(router.location.pathname, {
117
+ const matches = router.matchRoutes(router.__location.pathname, {
118
118
  strictParseParams: true
119
119
  });
120
120
  matches.forEach((match, index) => {
@@ -136,14 +136,14 @@ function createRouter(userOptions) {
136
136
 
137
137
  // If the current location isn't updated, trigger a navigation
138
138
  // to the current location. Otherwise, load the current location.
139
- if (next.href !== router.location.href) {
139
+ if (next.href !== router.__location.href) {
140
140
  router.__.commitLocation(next, true);
141
141
  }
142
142
  if (!router.state.matches.length) {
143
143
  router.load();
144
144
  }
145
145
  const unsub = router.history.listen(event => {
146
- router.load(router.__.parseLocation(event.location, router.location));
146
+ router.load(router.__.parseLocation(event.location, router.__location));
147
147
  });
148
148
 
149
149
  // addEventListener does not exist in React Native, but window does
@@ -167,12 +167,12 @@ function createRouter(userOptions) {
167
167
  },
168
168
  update: opts => {
169
169
  const newHistory = (opts == null ? void 0 : opts.history) !== router.history;
170
- if (!router.location || newHistory) {
170
+ if (!router.__location || newHistory) {
171
171
  if (opts != null && opts.history) {
172
172
  router.history = opts.history;
173
173
  }
174
- router.location = router.__.parseLocation(router.history.location);
175
- router.state.location = router.location;
174
+ router.__location = router.__.parseLocation(router.history.location);
175
+ router.state.location = router.__location;
176
176
  }
177
177
  Object.assign(router.options, opts);
178
178
  const {
@@ -197,28 +197,28 @@ function createRouter(userOptions) {
197
197
  router.startedLoadingAt = id;
198
198
  if (next) {
199
199
  // Ingest the new location
200
- router.location = next;
200
+ router.__location = next;
201
201
  }
202
202
 
203
203
  // Cancel any pending matches
204
204
  router.cancelMatches();
205
205
 
206
206
  // Match the routes
207
- const matches = router.matchRoutes(router.location.pathname, {
207
+ const matches = router.matchRoutes(router.__location.pathname, {
208
208
  strictParseParams: true
209
209
  });
210
210
  if (typeof document !== 'undefined') {
211
211
  router.state = _rollupPluginBabelHelpers["extends"]({}, router.state, {
212
212
  pending: {
213
213
  matches: matches,
214
- location: router.location
214
+ location: router.__location
215
215
  },
216
216
  status: 'loading'
217
217
  });
218
218
  } else {
219
219
  router.state = _rollupPluginBabelHelpers["extends"]({}, router.state, {
220
220
  matches: matches,
221
- location: router.location,
221
+ location: router.__location,
222
222
  status: 'loading'
223
223
  });
224
224
  }
@@ -302,7 +302,7 @@ function createRouter(userOptions) {
302
302
  }
303
303
  });
304
304
  router.state = _rollupPluginBabelHelpers["extends"]({}, router.state, {
305
- location: router.location,
305
+ location: router.__location,
306
306
  matches,
307
307
  pending: undefined,
308
308
  status: 'idle'
@@ -331,7 +331,7 @@ function createRouter(userOptions) {
331
331
  },
332
332
  loadRoute: async function loadRoute(navigateOpts) {
333
333
  if (navigateOpts === void 0) {
334
- navigateOpts = router.location;
334
+ navigateOpts = router.__location;
335
335
  }
336
336
  const next = router.buildNext(navigateOpts);
337
337
  const matches = router.matchRoutes(next.pathname, {
@@ -343,7 +343,7 @@ function createRouter(userOptions) {
343
343
  preloadRoute: async function preloadRoute(navigateOpts, loaderOpts) {
344
344
  var _ref3, _ref4, _loaderOpts$maxAge, _ref5, _ref6, _loaderOpts$gcMaxAge;
345
345
  if (navigateOpts === void 0) {
346
- navigateOpts = router.location;
346
+ navigateOpts = router.__location;
347
347
  }
348
348
  const next = router.buildNext(navigateOpts);
349
349
  const matches = router.matchRoutes(next.pathname, {
@@ -428,14 +428,15 @@ function createRouter(userOptions) {
428
428
  },
429
429
  loadMatches: async (resolvedMatches, loaderOpts) => {
430
430
  const matchPromises = resolvedMatches.map(async match => {
431
+ var _search$__data;
431
432
  // Validate the match (loads search params etc)
432
433
  match.__.validate();
433
- match.load(loaderOpts);
434
434
  const search = match.search;
435
- if (search.__data && search.__data.matchId !== match.matchId) {
435
+ if ((_search$__data = search.__data) != null && _search$__data.matchId && search.__data.matchId !== match.matchId) {
436
436
  return;
437
437
  }
438
- if (match.__.loadPromise) {
438
+ match.load(loaderOpts);
439
+ if (match.status !== 'success' && match.__.loadPromise) {
439
440
  // Wait for the first sign of activity from the match
440
441
  await match.__.loadPromise;
441
442
  }
@@ -723,11 +724,9 @@ function createRouter(userOptions) {
723
724
  if (dest === void 0) {
724
725
  dest = {};
725
726
  }
726
- // const resolvedFrom: Location = {
727
- // ...router.location,
728
- const fromPathname = dest.fromCurrent ? router.location.pathname : (_dest$from = dest.from) != null ? _dest$from : router.location.pathname;
727
+ const fromPathname = dest.fromCurrent ? router.__location.pathname : (_dest$from = dest.from) != null ? _dest$from : router.__location.pathname;
729
728
  let pathname = path.resolvePath((_router$basepath = router.basepath) != null ? _router$basepath : '/', fromPathname, "" + ((_dest$to = dest.to) != null ? _dest$to : '.'));
730
- const fromMatches = router.matchRoutes(router.location.pathname, {
729
+ const fromMatches = router.matchRoutes(router.__location.pathname, {
731
730
  strictParseParams: true
732
731
  });
733
732
  const toMatches = router.matchRoutes(pathname);
@@ -741,7 +740,7 @@ function createRouter(userOptions) {
741
740
  pathname = path.interpolatePath(pathname, nextParams != null ? nextParams : {});
742
741
 
743
742
  // Pre filters first
744
- const preFilteredSearch = (_dest$__preSearchFilt = dest.__preSearchFilters) != null && _dest$__preSearchFilt.length ? dest.__preSearchFilters.reduce((prev, next) => next(prev), router.location.search) : router.location.search;
743
+ const preFilteredSearch = (_dest$__preSearchFilt = dest.__preSearchFilters) != null && _dest$__preSearchFilt.length ? dest.__preSearchFilters.reduce((prev, next) => next(prev), router.__location.search) : router.__location.search;
745
744
 
746
745
  // Then the link/navigate function
747
746
  const destSearch = dest.search === true ? preFilteredSearch // Preserve resolvedFrom true
@@ -751,15 +750,15 @@ function createRouter(userOptions) {
751
750
 
752
751
  // Then post filters
753
752
  const postFilteredSearch = (_dest$__postSearchFil = dest.__postSearchFilters) != null && _dest$__postSearchFil.length ? dest.__postSearchFilters.reduce((prev, next) => next(prev), destSearch) : destSearch;
754
- const search = utils.replaceEqualDeep(router.location.search, postFilteredSearch);
753
+ const search = utils.replaceEqualDeep(router.__location.search, postFilteredSearch);
755
754
  const searchStr = router.options.stringifySearch(search);
756
- let hash = dest.hash === true ? router.location.hash : utils.functionalUpdate(dest.hash, router.location.hash);
755
+ let hash = dest.hash === true ? router.__location.hash : utils.functionalUpdate(dest.hash, router.__location.hash);
757
756
  hash = hash ? "#" + hash : '';
758
757
  return {
759
758
  pathname,
760
759
  search,
761
760
  searchStr,
762
- state: router.location.state,
761
+ state: router.__location.state,
763
762
  hash,
764
763
  href: "" + pathname + searchStr + hash,
765
764
  key: dest.key