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

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, {
@@ -723,11 +723,9 @@ function createRouter(userOptions) {
723
723
  if (dest === void 0) {
724
724
  dest = {};
725
725
  }
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;
726
+ const fromPathname = dest.fromCurrent ? router.__location.pathname : (_dest$from = dest.from) != null ? _dest$from : router.__location.pathname;
729
727
  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, {
728
+ const fromMatches = router.matchRoutes(router.__location.pathname, {
731
729
  strictParseParams: true
732
730
  });
733
731
  const toMatches = router.matchRoutes(pathname);
@@ -741,7 +739,7 @@ function createRouter(userOptions) {
741
739
  pathname = path.interpolatePath(pathname, nextParams != null ? nextParams : {});
742
740
 
743
741
  // 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;
742
+ const preFilteredSearch = (_dest$__preSearchFilt = dest.__preSearchFilters) != null && _dest$__preSearchFilt.length ? dest.__preSearchFilters.reduce((prev, next) => next(prev), router.__location.search) : router.__location.search;
745
743
 
746
744
  // Then the link/navigate function
747
745
  const destSearch = dest.search === true ? preFilteredSearch // Preserve resolvedFrom true
@@ -751,15 +749,15 @@ function createRouter(userOptions) {
751
749
 
752
750
  // Then post filters
753
751
  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);
752
+ const search = utils.replaceEqualDeep(router.__location.search, postFilteredSearch);
755
753
  const searchStr = router.options.stringifySearch(search);
756
- let hash = dest.hash === true ? router.location.hash : utils.functionalUpdate(dest.hash, router.location.hash);
754
+ let hash = dest.hash === true ? router.__location.hash : utils.functionalUpdate(dest.hash, router.__location.hash);
757
755
  hash = hash ? "#" + hash : '';
758
756
  return {
759
757
  pathname,
760
758
  search,
761
759
  searchStr,
762
- state: router.location.state,
760
+ state: router.__location.state,
763
761
  hash,
764
762
  href: "" + pathname + searchStr + hash,
765
763
  key: dest.key