@tanstack/router-core 0.0.1-beta.33 → 0.0.1-beta.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/path.js +9 -4
- package/build/cjs/path.js.map +1 -1
- package/build/cjs/router.js +13 -12
- package/build/cjs/router.js.map +1 -1
- package/build/esm/index.js +22 -16
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +132 -132
- package/build/types/index.d.ts +2 -2
- package/build/umd/index.development.js +22 -16
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +1 -1
- package/src/path.ts +10 -2
- package/src/router.ts +28 -14
package/build/cjs/path.js
CHANGED
|
@@ -119,8 +119,8 @@ function interpolatePath(path, params, leaveWildcard) {
|
|
|
119
119
|
return segment.value;
|
|
120
120
|
}));
|
|
121
121
|
}
|
|
122
|
-
function matchPathname(currentPathname, matchLocation) {
|
|
123
|
-
const pathParams = matchByPath(currentPathname, matchLocation);
|
|
122
|
+
function matchPathname(basepath, currentPathname, matchLocation) {
|
|
123
|
+
const pathParams = matchByPath(basepath, currentPathname, matchLocation);
|
|
124
124
|
// const searchMatched = matchBySearch(currentLocation.search, matchLocation)
|
|
125
125
|
|
|
126
126
|
if (matchLocation.to && !pathParams) {
|
|
@@ -128,10 +128,15 @@ function matchPathname(currentPathname, matchLocation) {
|
|
|
128
128
|
}
|
|
129
129
|
return pathParams != null ? pathParams : {};
|
|
130
130
|
}
|
|
131
|
-
function matchByPath(from, matchLocation) {
|
|
131
|
+
function matchByPath(basepath, from, matchLocation) {
|
|
132
132
|
var _matchLocation$to;
|
|
133
|
+
if (!from.startsWith(basepath)) {
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
from = basepath != '/' ? from.substring(basepath.length) : from;
|
|
133
137
|
const baseSegments = parsePathname(from);
|
|
134
|
-
const
|
|
138
|
+
const to = "" + ((_matchLocation$to = matchLocation.to) != null ? _matchLocation$to : '*');
|
|
139
|
+
const routeSegments = parsePathname(to);
|
|
135
140
|
const params = {};
|
|
136
141
|
let isMatch = (() => {
|
|
137
142
|
for (let i = 0; i < Math.max(baseSegments.length, routeSegments.length); i++) {
|
package/build/cjs/path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.js","sources":["../../src/path.ts"],"sourcesContent":["import { AnyPathParams } from './routeConfig'\nimport { MatchLocation } from './router'\nimport { last } from './utils'\n\nexport interface Segment {\n type: 'pathname' | 'param' | 'wildcard'\n value: string\n}\n\nexport function joinPaths(paths: (string | undefined)[]) {\n return cleanPath(paths.filter(Boolean).join('/'))\n}\n\nexport function cleanPath(path: string) {\n // remove double slashes\n return path.replace(/\\/{2,}/g, '/')\n}\n\nexport function trimPathLeft(path: string) {\n return path === '/' ? path : path.replace(/^\\/{1,}/, '')\n}\n\nexport function trimPathRight(path: string) {\n return path === '/' ? path : path.replace(/\\/{1,}$/, '')\n}\n\nexport function trimPath(path: string) {\n return trimPathRight(trimPathLeft(path))\n}\n\nexport function resolvePath(basepath: string, base: string, to: string) {\n base = base.replace(new RegExp(`^${basepath}`), '/')\n to = to.replace(new RegExp(`^${basepath}`), '/')\n\n let baseSegments = parsePathname(base)\n const toSegments = parsePathname(to)\n\n toSegments.forEach((toSegment, index) => {\n if (toSegment.value === '/') {\n if (!index) {\n // Leading slash\n baseSegments = [toSegment]\n } else if (index === toSegments.length - 1) {\n // Trailing Slash\n baseSegments.push(toSegment)\n } else {\n // ignore inter-slashes\n }\n } else if (toSegment.value === '..') {\n // Extra trailing slash? pop it off\n if (baseSegments.length > 1 && last(baseSegments)?.value === '/') {\n baseSegments.pop()\n }\n baseSegments.pop()\n } else if (toSegment.value === '.') {\n return\n } else {\n baseSegments.push(toSegment)\n }\n })\n\n const joined = joinPaths([basepath, ...baseSegments.map((d) => d.value)])\n\n return cleanPath(joined)\n}\n\nexport function parsePathname(pathname?: string): Segment[] {\n if (!pathname) {\n return []\n }\n\n pathname = cleanPath(pathname)\n\n const segments: Segment[] = []\n\n if (pathname.slice(0, 1) === '/') {\n pathname = pathname.substring(1)\n segments.push({\n type: 'pathname',\n value: '/',\n })\n }\n\n if (!pathname) {\n return segments\n }\n\n // Remove empty segments and '.' segments\n const split = pathname.split('/').filter(Boolean)\n\n segments.push(\n ...split.map((part): Segment => {\n if (part.startsWith('*')) {\n return {\n type: 'wildcard',\n value: part,\n }\n }\n\n if (part.charAt(0) === '$') {\n return {\n type: 'param',\n value: part,\n }\n }\n\n return {\n type: 'pathname',\n value: part,\n }\n }),\n )\n\n if (pathname.slice(-1) === '/') {\n pathname = pathname.substring(1)\n segments.push({\n type: 'pathname',\n value: '/',\n })\n }\n\n return segments\n}\n\nexport function interpolatePath(\n path: string | undefined,\n params: any,\n leaveWildcard?: boolean,\n) {\n const interpolatedPathSegments = parsePathname(path)\n\n return joinPaths(\n interpolatedPathSegments.map((segment) => {\n if (segment.value === '*' && !leaveWildcard) {\n return ''\n }\n\n if (segment.type === 'param') {\n return params![segment.value.substring(1)] ?? ''\n }\n\n return segment.value\n }),\n )\n}\n\nexport function matchPathname(\n currentPathname: string,\n matchLocation: Pick<MatchLocation, 'to' | 'fuzzy' | 'caseSensitive'>,\n): AnyPathParams | undefined {\n const pathParams = matchByPath(currentPathname, matchLocation)\n // const searchMatched = matchBySearch(currentLocation.search, matchLocation)\n\n if (matchLocation.to && !pathParams) {\n return\n }\n\n return pathParams ?? {}\n}\n\nexport function matchByPath(\n from: string,\n matchLocation: Pick<MatchLocation, 'to' | 'caseSensitive' | 'fuzzy'>,\n): Record<string, string> | undefined {\n const baseSegments = parsePathname(from)\n const routeSegments = parsePathname(`${matchLocation.to ?? '*'}`)\n\n const params: Record<string, string> = {}\n\n let isMatch = (() => {\n for (\n let i = 0;\n i < Math.max(baseSegments.length, routeSegments.length);\n i++\n ) {\n const baseSegment = baseSegments[i]\n const routeSegment = routeSegments[i]\n\n const isLastRouteSegment = i === routeSegments.length - 1\n const isLastBaseSegment = i === baseSegments.length - 1\n\n if (routeSegment) {\n if (routeSegment.type === 'wildcard') {\n if (baseSegment?.value) {\n params['*'] = joinPaths(baseSegments.slice(i).map((d) => d.value))\n return true\n }\n return false\n }\n\n if (routeSegment.type === 'pathname') {\n if (routeSegment.value === '/' && !baseSegment?.value) {\n return true\n }\n\n if (baseSegment) {\n if (matchLocation.caseSensitive) {\n if (routeSegment.value !== baseSegment.value) {\n return false\n }\n } else if (\n routeSegment.value.toLowerCase() !==\n baseSegment.value.toLowerCase()\n ) {\n return false\n }\n }\n }\n\n if (!baseSegment) {\n return false\n }\n\n if (routeSegment.type === 'param') {\n if (baseSegment?.value === '/') {\n return false\n }\n if (baseSegment.value.charAt(0) !== '$') {\n params[routeSegment.value.substring(1)] = baseSegment.value\n }\n }\n }\n\n if (isLastRouteSegment && !isLastBaseSegment) {\n return !!matchLocation.fuzzy\n }\n }\n return true\n })()\n\n return isMatch ? (params as Record<string, string>) : undefined\n}\n"],"names":["joinPaths","paths","cleanPath","filter","Boolean","join","path","replace","trimPathLeft","trimPathRight","trimPath","resolvePath","basepath","base","to","RegExp","baseSegments","parsePathname","toSegments","forEach","toSegment","index","value","length","push","last","pop","joined","map","d","pathname","segments","slice","substring","type","split","part","startsWith","charAt","interpolatePath","params","leaveWildcard","interpolatedPathSegments","segment","matchPathname","currentPathname","matchLocation","pathParams","matchByPath","from","routeSegments","isMatch","i","Math","max","baseSegment","routeSegment","isLastRouteSegment","isLastBaseSegment","caseSensitive","toLowerCase","fuzzy","undefined"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"path.js","sources":["../../src/path.ts"],"sourcesContent":["import invariant from 'tiny-invariant'\nimport { AnyPathParams } from './routeConfig'\nimport { MatchLocation } from './router'\nimport { last } from './utils'\n\nexport interface Segment {\n type: 'pathname' | 'param' | 'wildcard'\n value: string\n}\n\nexport function joinPaths(paths: (string | undefined)[]) {\n return cleanPath(paths.filter(Boolean).join('/'))\n}\n\nexport function cleanPath(path: string) {\n // remove double slashes\n return path.replace(/\\/{2,}/g, '/')\n}\n\nexport function trimPathLeft(path: string) {\n return path === '/' ? path : path.replace(/^\\/{1,}/, '')\n}\n\nexport function trimPathRight(path: string) {\n return path === '/' ? path : path.replace(/\\/{1,}$/, '')\n}\n\nexport function trimPath(path: string) {\n return trimPathRight(trimPathLeft(path))\n}\n\nexport function resolvePath(basepath: string, base: string, to: string) {\n base = base.replace(new RegExp(`^${basepath}`), '/')\n to = to.replace(new RegExp(`^${basepath}`), '/')\n\n let baseSegments = parsePathname(base)\n const toSegments = parsePathname(to)\n\n toSegments.forEach((toSegment, index) => {\n if (toSegment.value === '/') {\n if (!index) {\n // Leading slash\n baseSegments = [toSegment]\n } else if (index === toSegments.length - 1) {\n // Trailing Slash\n baseSegments.push(toSegment)\n } else {\n // ignore inter-slashes\n }\n } else if (toSegment.value === '..') {\n // Extra trailing slash? pop it off\n if (baseSegments.length > 1 && last(baseSegments)?.value === '/') {\n baseSegments.pop()\n }\n baseSegments.pop()\n } else if (toSegment.value === '.') {\n return\n } else {\n baseSegments.push(toSegment)\n }\n })\n\n const joined = joinPaths([basepath, ...baseSegments.map((d) => d.value)])\n\n return cleanPath(joined)\n}\n\nexport function parsePathname(pathname?: string): Segment[] {\n if (!pathname) {\n return []\n }\n\n pathname = cleanPath(pathname)\n\n const segments: Segment[] = []\n\n if (pathname.slice(0, 1) === '/') {\n pathname = pathname.substring(1)\n segments.push({\n type: 'pathname',\n value: '/',\n })\n }\n\n if (!pathname) {\n return segments\n }\n\n // Remove empty segments and '.' segments\n const split = pathname.split('/').filter(Boolean)\n\n segments.push(\n ...split.map((part): Segment => {\n if (part.startsWith('*')) {\n return {\n type: 'wildcard',\n value: part,\n }\n }\n\n if (part.charAt(0) === '$') {\n return {\n type: 'param',\n value: part,\n }\n }\n\n return {\n type: 'pathname',\n value: part,\n }\n }),\n )\n\n if (pathname.slice(-1) === '/') {\n pathname = pathname.substring(1)\n segments.push({\n type: 'pathname',\n value: '/',\n })\n }\n\n return segments\n}\n\nexport function interpolatePath(\n path: string | undefined,\n params: any,\n leaveWildcard?: boolean,\n) {\n const interpolatedPathSegments = parsePathname(path)\n\n return joinPaths(\n interpolatedPathSegments.map((segment) => {\n if (segment.value === '*' && !leaveWildcard) {\n return ''\n }\n\n if (segment.type === 'param') {\n return params![segment.value.substring(1)] ?? ''\n }\n\n return segment.value\n }),\n )\n}\n\nexport function matchPathname(\n basepath: string,\n currentPathname: string,\n matchLocation: Pick<MatchLocation, 'to' | 'fuzzy' | 'caseSensitive'>,\n): AnyPathParams | undefined {\n const pathParams = matchByPath(basepath, currentPathname, matchLocation)\n // const searchMatched = matchBySearch(currentLocation.search, matchLocation)\n\n if (matchLocation.to && !pathParams) {\n return\n }\n\n return pathParams ?? {}\n}\n\nexport function matchByPath(\n basepath: string,\n from: string,\n matchLocation: Pick<MatchLocation, 'to' | 'caseSensitive' | 'fuzzy'>,\n): Record<string, string> | undefined {\n if (!from.startsWith(basepath)) {\n return undefined\n }\n from = basepath != '/' ? from.substring(basepath.length) : from\n const baseSegments = parsePathname(from)\n const to = `${matchLocation.to ?? '*'}`\n const routeSegments = parsePathname(to)\n\n const params: Record<string, string> = {}\n\n let isMatch = (() => {\n for (\n let i = 0;\n i < Math.max(baseSegments.length, routeSegments.length);\n i++\n ) {\n const baseSegment = baseSegments[i]\n const routeSegment = routeSegments[i]\n\n const isLastRouteSegment = i === routeSegments.length - 1\n const isLastBaseSegment = i === baseSegments.length - 1\n\n if (routeSegment) {\n if (routeSegment.type === 'wildcard') {\n if (baseSegment?.value) {\n params['*'] = joinPaths(baseSegments.slice(i).map((d) => d.value))\n return true\n }\n return false\n }\n\n if (routeSegment.type === 'pathname') {\n if (routeSegment.value === '/' && !baseSegment?.value) {\n return true\n }\n\n if (baseSegment) {\n if (matchLocation.caseSensitive) {\n if (routeSegment.value !== baseSegment.value) {\n return false\n }\n } else if (\n routeSegment.value.toLowerCase() !==\n baseSegment.value.toLowerCase()\n ) {\n return false\n }\n }\n }\n\n if (!baseSegment) {\n return false\n }\n\n if (routeSegment.type === 'param') {\n if (baseSegment?.value === '/') {\n return false\n }\n if (baseSegment.value.charAt(0) !== '$') {\n params[routeSegment.value.substring(1)] = baseSegment.value\n }\n }\n }\n\n if (isLastRouteSegment && !isLastBaseSegment) {\n return !!matchLocation.fuzzy\n }\n }\n return true\n })()\n\n return isMatch ? (params as Record<string, string>) : undefined\n}\n"],"names":["joinPaths","paths","cleanPath","filter","Boolean","join","path","replace","trimPathLeft","trimPathRight","trimPath","resolvePath","basepath","base","to","RegExp","baseSegments","parsePathname","toSegments","forEach","toSegment","index","value","length","push","last","pop","joined","map","d","pathname","segments","slice","substring","type","split","part","startsWith","charAt","interpolatePath","params","leaveWildcard","interpolatedPathSegments","segment","matchPathname","currentPathname","matchLocation","pathParams","matchByPath","from","undefined","routeSegments","isMatch","i","Math","max","baseSegment","routeSegment","isLastRouteSegment","isLastBaseSegment","caseSensitive","toLowerCase","fuzzy"],"mappings":"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"}
|
package/build/cjs/router.js
CHANGED
|
@@ -128,7 +128,7 @@ function createRouter(userOptions) {
|
|
|
128
128
|
});
|
|
129
129
|
},
|
|
130
130
|
mount: () => {
|
|
131
|
-
|
|
131
|
+
router.__.buildLocation({
|
|
132
132
|
to: '.',
|
|
133
133
|
search: true,
|
|
134
134
|
hash: true
|
|
@@ -136,9 +136,10 @@ 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) {
|
|
140
|
-
|
|
141
|
-
}
|
|
139
|
+
// if (next.href !== router.__location.href) {
|
|
140
|
+
// router.__.commitLocation(next, true)
|
|
141
|
+
// }
|
|
142
|
+
|
|
142
143
|
if (!router.state.matches.length) {
|
|
143
144
|
router.load();
|
|
144
145
|
}
|
|
@@ -166,6 +167,7 @@ function createRouter(userOptions) {
|
|
|
166
167
|
router.load();
|
|
167
168
|
},
|
|
168
169
|
update: opts => {
|
|
170
|
+
var _trimPath;
|
|
169
171
|
const newHistory = (opts == null ? void 0 : opts.history) !== router.history;
|
|
170
172
|
if (!router.__location || newHistory) {
|
|
171
173
|
if (opts != null && opts.history) {
|
|
@@ -179,7 +181,7 @@ function createRouter(userOptions) {
|
|
|
179
181
|
basepath,
|
|
180
182
|
routeConfig
|
|
181
183
|
} = router.options;
|
|
182
|
-
router.basepath =
|
|
184
|
+
router.basepath = "/" + ((_trimPath = path.trimPath(basepath != null ? basepath : '')) != null ? _trimPath : '');
|
|
183
185
|
if (routeConfig) {
|
|
184
186
|
router.routesById = {};
|
|
185
187
|
router.routeTree = router.__.buildRouteTree(routeConfig);
|
|
@@ -230,10 +232,8 @@ function createRouter(userOptions) {
|
|
|
230
232
|
match
|
|
231
233
|
})));
|
|
232
234
|
} catch (err) {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
}
|
|
236
|
-
throw err;
|
|
235
|
+
console.info(err);
|
|
236
|
+
invariant__default["default"](false, "A route's beforeLoad middleware failed! \uD83D\uDC46");
|
|
237
237
|
}
|
|
238
238
|
router.notify();
|
|
239
239
|
|
|
@@ -377,11 +377,12 @@ function createRouter(userOptions) {
|
|
|
377
377
|
return findMatchInRoutes([...foundRoutes, route], route.childRoutes);
|
|
378
378
|
}
|
|
379
379
|
const fuzzy = !!(route.routePath !== '/' || (_route$childRoutes2 = route.childRoutes) != null && _route$childRoutes2.length);
|
|
380
|
-
const matchParams = path.matchPathname(pathname, {
|
|
380
|
+
const matchParams = path.matchPathname(router.basepath, pathname, {
|
|
381
381
|
to: route.fullPath,
|
|
382
382
|
fuzzy,
|
|
383
383
|
caseSensitive: (_route$options$caseSe = route.options.caseSensitive) != null ? _route$options$caseSe : router.options.caseSensitive
|
|
384
384
|
});
|
|
385
|
+
console.log(router.basepath, route.fullPath, fuzzy, pathname, matchParams);
|
|
385
386
|
if (matchParams) {
|
|
386
387
|
let parsedParams;
|
|
387
388
|
try {
|
|
@@ -515,11 +516,11 @@ function createRouter(userOptions) {
|
|
|
515
516
|
if (!((_router$state$pending7 = router.state.pending) != null && _router$state$pending7.location)) {
|
|
516
517
|
return false;
|
|
517
518
|
}
|
|
518
|
-
return !!path.matchPathname(router.state.pending.location.pathname, _rollupPluginBabelHelpers["extends"]({}, opts, {
|
|
519
|
+
return !!path.matchPathname(router.basepath, router.state.pending.location.pathname, _rollupPluginBabelHelpers["extends"]({}, opts, {
|
|
519
520
|
to: next.pathname
|
|
520
521
|
}));
|
|
521
522
|
}
|
|
522
|
-
return !!path.matchPathname(router.state.location.pathname, _rollupPluginBabelHelpers["extends"]({}, opts, {
|
|
523
|
+
return !!path.matchPathname(router.basepath, router.state.location.pathname, _rollupPluginBabelHelpers["extends"]({}, opts, {
|
|
523
524
|
to: next.pathname
|
|
524
525
|
}));
|
|
525
526
|
},
|
package/build/cjs/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sources":["../../src/router.ts"],"sourcesContent":["import {\n BrowserHistory,\n createBrowserHistory,\n createMemoryHistory,\n HashHistory,\n History,\n MemoryHistory,\n} from 'history'\nimport invariant from 'tiny-invariant'\nimport { GetFrameworkGeneric } from './frameworks'\n\nimport {\n LinkInfo,\n LinkOptions,\n NavigateOptionsAbsolute,\n ToOptions,\n ValidFromPath,\n} from './link'\nimport {\n cleanPath,\n interpolatePath,\n joinPaths,\n matchPathname,\n resolvePath,\n} from './path'\nimport { AnyRoute, createRoute, 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 AnyRouteInfo,\n RouteInfo,\n RoutesById,\n} from './routeInfo'\nimport { createRouteMatch, RouteMatch } from './routeMatch'\nimport { defaultParseSearch, defaultStringifySearch } from './searchParams'\nimport {\n functionalUpdate,\n last,\n pick,\n PickAsRequired,\n PickRequired,\n replaceEqualDeep,\n Timeout,\n Updater,\n} from './utils'\n\nexport interface RegisterRouter {\n // router: Router\n}\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 Location<\n TSearchObj extends AnySearchSchema = {},\n TState extends LocationState = LocationState,\n> {\n href: string\n pathname: string\n search: TSearchObj\n searchStr: string\n state: TState\n hash: string\n key?: string\n}\n\nexport interface FromLocation {\n pathname: string\n search?: unknown\n key?: string\n hash?: string\n}\n\nexport type SearchSerializer = (searchObj: Record<string, any>) => string\nexport type SearchParser = (searchStr: string) => Record<string, any>\nexport type FilterRoutesFn = <TRoute extends Route<any, RouteInfo>>(\n routeConfigs: TRoute[],\n) => TRoute[]\n\nexport interface RouterOptions<\n TRouteConfig extends AnyRouteConfig,\n TRouterContext,\n> {\n history?: BrowserHistory | MemoryHistory | HashHistory\n stringifySearch?: SearchSerializer\n parseSearch?: SearchParser\n filterRoutes?: FilterRoutesFn\n defaultPreload?: false | 'intent'\n defaultPreloadMaxAge?: number\n defaultPreloadGcMaxAge?: number\n defaultPreloadDelay?: number\n 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 createRouter?: (router: Router<any, any, any>) => void\n createRoute?: (opts: {\n route: AnyRoute\n router: Router<any, any, any>\n }) => void\n context?: TRouterContext\n loadComponent?: (\n component: GetFrameworkGeneric<'Component'>,\n ) => Promise<GetFrameworkGeneric<'Component'>>\n // renderComponent?: (\n // component: GetFrameworkGeneric<'Component'>,\n // ) => GetFrameworkGeneric<'Element'>\n}\n\nexport interface Action<\n TPayload = unknown,\n TResponse = unknown,\n // TError = unknown,\n> {\n submit: (\n submission?: TPayload,\n actionOpts?: { invalidate?: boolean; multi?: boolean },\n ) => Promise<TResponse>\n current?: ActionState<TPayload, TResponse>\n latest?: ActionState<TPayload, TResponse>\n submissions: ActionState<TPayload, TResponse>[]\n}\n\nexport interface ActionState<\n TPayload = unknown,\n TResponse = unknown,\n // TError = unknown,\n> {\n submittedAt: number\n status: 'idle' | 'pending' | 'success' | 'error'\n submission: TPayload\n isMulti: boolean\n data?: TResponse\n error?: unknown\n}\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 RouterState<\n TSearchObj extends AnySearchSchema = {},\n TState extends LocationState = LocationState,\n> {\n status: 'idle' | 'loading'\n location: Location<TSearchObj, TState>\n matches: RouteMatch[]\n lastUpdated: number\n actions: Record<string, Action>\n loaders: Record<string, Loader>\n pending?: PendingState\n isFetching: boolean\n isPreloading: boolean\n}\n\nexport interface PendingState {\n location: Location\n matches: RouteMatch[]\n}\n\ntype Listener = (router: Router<any, any, any>) => void\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 RouterState,\n 'status' | 'location' | 'lastUpdated' | 'location'\n > {\n matches: DehydratedRouteMatch[]\n}\n\nexport interface DehydratedRouter<TRouterContext = unknown> {\n location: Router['__location']\n state: DehydratedRouterState\n context: TRouterContext\n}\n\ninterface DehydratedRouteMatch\n extends Pick<\n RouteMatch<any, any>,\n | 'matchId'\n | 'status'\n | 'routeLoaderData'\n | 'loaderData'\n | 'isInvalid'\n | 'invalidAt'\n > {}\n\nexport interface RouterContext {}\n\nexport interface 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 // Public API\n history: BrowserHistory | MemoryHistory | HashHistory\n options: PickAsRequired<\n RouterOptions<TRouteConfig, TRouterContext>,\n 'stringifySearch' | 'parseSearch' | 'context'\n >\n // Computed in this.update()\n basepath: string\n // Internal:\n listeners: Listener[]\n __location: Location<TAllRouteInfo['fullSearchSchema']>\n navigateTimeout?: Timeout\n nextAction?: 'push' | 'replace'\n state: RouterState<TAllRouteInfo['fullSearchSchema']>\n routeTree: Route<TAllRouteInfo, RouteInfo>\n routesById: RoutesById<TAllRouteInfo>\n navigationPromise?: Promise<void>\n startedLoadingAt: number\n resolveNavigation: () => void\n subscribe: (listener: Listener) => () => void\n reset: () => void\n notify: () => void\n mount: () => () => void\n onFocus: () => void\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\n buildNext: (opts: BuildNextOptions) => Location\n cancelMatches: () => void\n load: (next?: Location) => Promise<void>\n matchCache: Record<string, MatchCacheEntry>\n cleanMatchCache: () => void\n getRoute: <TId extends keyof TAllRouteInfo['routeInfoById']>(\n id: TId,\n ) => Route<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TId]>\n loadRoute: (navigateOpts: BuildNextOptions) => Promise<RouteMatch[]>\n preloadRoute: (\n navigateOpts: BuildNextOptions,\n loaderOpts: { maxAge?: number; gcMaxAge?: number },\n ) => Promise<RouteMatch[]>\n matchRoutes: (\n pathname: string,\n opts?: { strictParseParams?: boolean },\n ) => RouteMatch[]\n loadMatches: (\n resolvedMatches: RouteMatch[],\n loaderOpts?:\n | { preload: true; maxAge: number; gcMaxAge: number }\n | { preload?: false; maxAge?: never; gcMaxAge?: never },\n ) => Promise<void>\n loadMatchData: (\n routeMatch: RouteMatch<any, any>,\n ) => Promise<Record<string, unknown>>\n invalidateRoute: (opts: MatchLocation) => void\n reload: () => Promise<void>\n resolvePath: (from: string, path: string) => string\n navigate: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n opts: NavigateOptionsAbsolute<TAllRouteInfo, TFrom, TTo>,\n ) => Promise<void>\n matchRoute: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n matchLocation: ToOptions<TAllRouteInfo, TFrom, TTo>,\n opts?: MatchRouteOptions,\n ) => boolean\n buildLink: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n opts: LinkOptions<TAllRouteInfo, TFrom, TTo>,\n ) => LinkInfo\n dehydrate: () => DehydratedRouter<TRouterContext>\n hydrate: (dehydratedRouter: DehydratedRouter<TRouterContext>) => void\n __: {\n buildRouteTree: (\n routeConfig: RouteConfig,\n ) => Route<TAllRouteInfo, AnyRouteInfo>\n parseLocation: (\n location: History['location'],\n previousLocation?: Location,\n ) => Location\n buildLocation: (dest: BuildNextOptions) => Location\n commitLocation: (next: Location, replace?: boolean) => Promise<void>\n navigate: (\n location: BuildNextOptions & { replace?: boolean },\n ) => Promise<void>\n }\n}\n\n// Detect if we're in the DOM\nconst isServer =\n typeof window === 'undefined' || !window.document?.createElement\n\n// This is the default history object if none is defined\nconst createDefaultHistory = () =>\n isServer ? createMemoryHistory() : createBrowserHistory()\n\nfunction getInitialRouterState(): RouterState {\n return {\n status: 'idle',\n location: null!,\n matches: [],\n actions: {},\n loaders: {},\n lastUpdated: Date.now(),\n isFetching: false,\n isPreloading: false,\n }\n}\n\nexport function createRouter<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n TRouterContext = unknown,\n>(\n userOptions?: RouterOptions<TRouteConfig, TRouterContext>,\n): Router<TRouteConfig, TAllRouteInfo, TRouterContext> {\n const history = userOptions?.history || createDefaultHistory()\n\n const originalOptions = {\n defaultLoaderGcMaxAge: 5 * 60 * 1000,\n defaultLoaderMaxAge: 0,\n defaultPreloadMaxAge: 2000,\n defaultPreloadDelay: 50,\n context: undefined!,\n ...userOptions,\n stringifySearch: userOptions?.stringifySearch ?? defaultStringifySearch,\n parseSearch: userOptions?.parseSearch ?? defaultParseSearch,\n }\n\n let router: Router<TRouteConfig, TAllRouteInfo, TRouterContext> = {\n types: undefined!,\n\n // public api\n history,\n options: originalOptions,\n listeners: [],\n // Resolved after construction\n basepath: '',\n routeTree: undefined!,\n routesById: {} as any,\n __location: undefined!,\n //\n resolveNavigation: () => {},\n matchCache: {},\n state: getInitialRouterState(),\n reset: () => {\n router.state = getInitialRouterState()\n router.notify()\n },\n startedLoadingAt: Date.now(),\n subscribe: (listener: Listener): (() => void) => {\n router.listeners.push(listener as Listener)\n return () => {\n router.listeners = router.listeners.filter((x) => x !== listener)\n }\n },\n getRoute: (id) => {\n return router.routesById[id]\n },\n notify: (): void => {\n const isFetching =\n router.state.status === 'loading' ||\n router.state.matches.some((d) => d.isFetching)\n\n const isPreloading = Object.values(router.matchCache).some(\n (d) =>\n d.match.isFetching &&\n !router.state.matches.find((dd) => dd.matchId === d.match.matchId),\n )\n\n if (\n router.state.isFetching !== isFetching ||\n router.state.isPreloading !== isPreloading\n ) {\n router.state = {\n ...router.state,\n isFetching,\n isPreloading,\n }\n }\n\n cascadeLoaderData(router.state.matches)\n router.listeners.forEach((listener) => listener(router))\n },\n\n dehydrate: () => {\n return {\n location: router.__location,\n state: {\n ...pick(router.state, [\n 'status',\n 'location',\n 'lastUpdated',\n 'location',\n ]),\n matches: router.state.matches.map((match) =>\n pick(match, [\n 'matchId',\n 'status',\n 'routeLoaderData',\n 'loaderData',\n 'isInvalid',\n 'invalidAt',\n ]),\n ),\n },\n context: router.options.context as TRouterContext,\n }\n },\n\n hydrate: (dehydratedState) => {\n // Update the location\n router.__location = dehydratedState.location\n\n // Update the context\n router.options.context = dehydratedState.context\n\n // Match the routes\n const matches = router.matchRoutes(router.__location.pathname, {\n strictParseParams: true,\n })\n\n matches.forEach((match, index) => {\n const dehydratedMatch = dehydratedState.state.matches[index]\n invariant(\n dehydratedMatch,\n 'Oh no! Dehydrated route matches did not match the active state of the router 😬',\n )\n Object.assign(match, dehydratedMatch)\n })\n\n matches.forEach((match) => match.__.validate())\n\n router.state = {\n ...router.state,\n ...dehydratedState,\n matches,\n }\n },\n\n mount: () => {\n const next = router.__.buildLocation({\n to: '.',\n search: true,\n hash: true,\n })\n\n // If the current location isn't updated, trigger a navigation\n // to the current location. Otherwise, load the current location.\n if (next.href !== router.__location.href) {\n router.__.commitLocation(next, true)\n }\n\n if (!router.state.matches.length) {\n router.load()\n }\n\n const unsub = router.history.listen((event) => {\n router.load(router.__.parseLocation(event.location, router.__location))\n })\n\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n // Listen to visibillitychange and focus\n window.addEventListener('visibilitychange', router.onFocus, false)\n window.addEventListener('focus', router.onFocus, false)\n }\n\n return () => {\n unsub()\n if (!isServer && window.removeEventListener) {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', router.onFocus)\n window.removeEventListener('focus', router.onFocus)\n }\n }\n },\n\n onFocus: () => {\n router.load()\n },\n\n update: (opts) => {\n const newHistory = opts?.history !== router.history\n if (!router.__location || newHistory) {\n if (opts?.history) {\n router.history = opts.history\n }\n router.__location = router.__.parseLocation(router.history.location)\n router.state.location = router.__location\n }\n\n Object.assign(router.options, opts)\n\n const { basepath, routeConfig } = router.options\n\n router.basepath = cleanPath(`/${basepath ?? ''}`)\n\n if (routeConfig) {\n router.routesById = {} as any\n router.routeTree = router.__.buildRouteTree(routeConfig)\n }\n\n return router as any\n },\n\n cancelMatches: () => {\n ;[\n ...router.state.matches,\n ...(router.state.pending?.matches ?? []),\n ].forEach((match) => {\n match.cancel()\n })\n },\n\n load: async (next?: Location) => {\n const id = Math.random()\n router.startedLoadingAt = id\n\n if (next) {\n // Ingest the new location\n router.__location = next\n }\n\n // Cancel any pending matches\n router.cancelMatches()\n\n // Match the routes\n const matches = router.matchRoutes(router.__location.pathname, {\n strictParseParams: true,\n })\n\n if (typeof document !== 'undefined') {\n router.state = {\n ...router.state,\n pending: {\n matches: matches,\n location: router.__location,\n },\n status: 'loading',\n }\n } else {\n router.state = {\n ...router.state,\n matches: matches,\n location: router.__location,\n status: 'loading',\n }\n }\n\n // Check if each match middleware to see if the route can be accessed\n try {\n await Promise.all(\n matches.map((match) =>\n match.options.beforeLoad?.({\n router: router as any,\n match,\n }),\n ),\n )\n } catch (err: any) {\n if (err?.then) {\n await new Promise(() => {})\n }\n throw err\n }\n\n router.notify()\n\n // Load the matches\n await router.loadMatches(matches)\n\n if (router.startedLoadingAt !== id) {\n // Ignore side-effects of match loading\n return router.navigationPromise\n }\n\n const previousMatches = router.state.matches\n\n const exiting: RouteMatch[] = [],\n staying: RouteMatch[] = []\n\n previousMatches.forEach((d) => {\n if (matches.find((dd) => dd.matchId === d.matchId)) {\n staying.push(d)\n } else {\n exiting.push(d)\n }\n })\n\n const entering = matches.filter((d) => {\n return !previousMatches.find((dd) => dd.matchId === d.matchId)\n })\n\n const now = Date.now()\n\n exiting.forEach((d) => {\n d.__.onExit?.({\n params: d.params,\n search: d.routeSearch,\n })\n\n // Clear idle error states when match leaves\n if (d.status === 'error' && !d.isFetching) {\n d.status = 'idle'\n d.error = undefined\n }\n const gc = Math.max(\n d.options.loaderGcMaxAge ?? router.options.defaultLoaderGcMaxAge ?? 0,\n d.options.loaderMaxAge ?? router.options.defaultLoaderMaxAge ?? 0,\n )\n if (gc > 0) {\n router.matchCache[d.matchId] = {\n gc: gc == Infinity ? Number.MAX_SAFE_INTEGER : now + gc,\n match: d,\n }\n }\n })\n\n staying.forEach((d) => {\n d.options.onTransition?.({\n params: d.params,\n search: d.routeSearch,\n })\n })\n\n entering.forEach((d) => {\n d.__.onExit = d.options.onLoaded?.({\n params: d.params,\n search: d.search,\n })\n delete router.matchCache[d.matchId]\n })\n\n if (router.startedLoadingAt !== id) {\n // Ignore side-effects of match loading\n return\n }\n\n matches.forEach((match) => {\n // Clear actions\n if (match.action) {\n match.action.current = undefined\n match.action.submissions = []\n }\n })\n\n router.state = {\n ...router.state,\n location: router.__location,\n matches,\n pending: undefined,\n status: 'idle',\n }\n\n router.notify()\n router.resolveNavigation()\n },\n\n cleanMatchCache: () => {\n const now = Date.now()\n\n Object.keys(router.matchCache).forEach((matchId) => {\n const entry = router.matchCache[matchId]!\n\n // Don't remove loading matches\n if (entry.match.status === 'loading') {\n return\n }\n\n // Do not remove successful matches that are still valid\n if (entry.gc > 0 && entry.gc > now) {\n return\n }\n\n // Everything else gets removed\n delete router.matchCache[matchId]\n })\n },\n\n loadRoute: async (navigateOpts = router.__location) => {\n const next = router.buildNext(navigateOpts)\n const matches = router.matchRoutes(next.pathname, {\n strictParseParams: true,\n })\n await router.loadMatches(matches)\n return matches\n },\n\n preloadRoute: async (navigateOpts = router.__location, loaderOpts) => {\n const next = router.buildNext(navigateOpts)\n const matches = router.matchRoutes(next.pathname, {\n strictParseParams: true,\n })\n await router.loadMatches(matches, {\n preload: true,\n maxAge:\n loaderOpts.maxAge ??\n router.options.defaultPreloadMaxAge ??\n router.options.defaultLoaderMaxAge ??\n 0,\n gcMaxAge:\n loaderOpts.gcMaxAge ??\n router.options.defaultPreloadGcMaxAge ??\n router.options.defaultLoaderGcMaxAge ??\n 0,\n })\n return matches\n },\n\n matchRoutes: (pathname, opts) => {\n router.cleanMatchCache()\n\n const matches: RouteMatch[] = []\n\n if (!router.routeTree) {\n return matches\n }\n\n const existingMatches = [\n ...router.state.matches,\n ...(router.state.pending?.matches ?? []),\n ]\n\n const recurse = async (routes: Route<any, any>[]): Promise<void> => {\n const parentMatch = last(matches)\n let params = parentMatch?.params ?? {}\n\n const filteredRoutes = router.options.filterRoutes?.(routes) ?? routes\n\n let foundRoutes: Route[] = []\n\n const findMatchInRoutes = (parentRoutes: Route[], routes: Route[]) => {\n routes.some((route) => {\n if (!route.routePath && route.childRoutes?.length) {\n return findMatchInRoutes(\n [...foundRoutes, route],\n route.childRoutes,\n )\n }\n\n const fuzzy = !!(\n route.routePath !== '/' || route.childRoutes?.length\n )\n\n const matchParams = matchPathname(pathname, {\n to: route.fullPath,\n fuzzy,\n caseSensitive:\n route.options.caseSensitive ?? router.options.caseSensitive,\n })\n\n if (matchParams) {\n let parsedParams\n\n try {\n parsedParams =\n route.options.parseParams?.(matchParams!) ?? matchParams\n } catch (err) {\n if (opts?.strictParseParams) {\n throw err\n }\n }\n\n params = {\n ...params,\n ...parsedParams,\n }\n }\n\n if (!!matchParams) {\n foundRoutes = [...parentRoutes, route]\n }\n\n return !!foundRoutes.length\n })\n\n return !!foundRoutes.length\n }\n\n findMatchInRoutes([], filteredRoutes)\n\n if (!foundRoutes.length) {\n return\n }\n\n foundRoutes.forEach((foundRoute) => {\n const interpolatedPath = interpolatePath(foundRoute.routePath, params)\n const matchId = interpolatePath(foundRoute.routeId, params, true)\n\n const match =\n existingMatches.find((d) => d.matchId === matchId) ||\n router.matchCache[matchId]?.match ||\n createRouteMatch(router, foundRoute, {\n parentMatch,\n matchId,\n params,\n pathname: joinPaths([router.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([router.routeTree])\n\n cascadeLoaderData(matches)\n\n return matches\n },\n\n loadMatches: async (resolvedMatches, loaderOpts) => {\n const matchPromises = resolvedMatches.map(async (match) => {\n // Validate the match (loads search params etc)\n match.__.validate()\n\n const search = match.search as { __data?: any }\n\n if (search.__data?.matchId && search.__data.matchId !== match.matchId) {\n return\n }\n\n match.load(loaderOpts)\n\n if (match.status !== 'success' && match.__.loadPromise) {\n // Wait for the first sign of activity from the match\n await match.__.loadPromise\n }\n })\n\n router.notify()\n\n await Promise.all(matchPromises)\n },\n\n loadMatchData: async (routeMatch) => {\n if (isServer || !router.options.useServerData) {\n return (\n (await routeMatch.options.loader?.({\n // parentLoaderPromise: routeMatch.parentMatch?.__.dataPromise,\n params: routeMatch.params,\n search: routeMatch.routeSearch,\n signal: routeMatch.__.abortController.signal,\n })) ?? {}\n )\n } else {\n const next = router.buildNext({\n to: '.',\n search: (d: any) => ({\n ...(d ?? {}),\n __data: {\n matchId: routeMatch.matchId,\n },\n }),\n })\n\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 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 },\n\n invalidateRoute: (opts: MatchLocation) => {\n const next = router.buildNext(opts)\n const unloadedMatchIds = router\n .matchRoutes(next.pathname)\n .map((d) => d.matchId)\n ;[\n ...router.state.matches,\n ...(router.state.pending?.matches ?? []),\n ].forEach((match) => {\n if (unloadedMatchIds.includes(match.matchId)) {\n match.invalidate()\n }\n })\n },\n\n reload: () =>\n router.__.navigate({\n fromCurrent: true,\n replace: true,\n search: true,\n }),\n\n resolvePath: (from: string, path: string) => {\n return resolvePath(router.basepath!, from, cleanPath(path))\n },\n\n matchRoute: (location, opts) => {\n // const location = router.buildNext(opts)\n\n location = {\n ...location,\n to: location.to\n ? router.resolvePath(location.from ?? '', location.to)\n : undefined,\n }\n\n const next = router.buildNext(location)\n\n if (opts?.pending) {\n if (!router.state.pending?.location) {\n return false\n }\n return !!matchPathname(router.state.pending.location.pathname, {\n ...opts,\n to: next.pathname,\n })\n }\n\n return !!matchPathname(router.state.location.pathname, {\n ...opts,\n to: next.pathname,\n })\n },\n\n navigate: async ({ from, to = '.', search, hash, replace, params }) => {\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n const toString = String(to)\n const fromString = String(from)\n\n let isExternal\n\n try {\n new URL(`${toString}`)\n isExternal = true\n } catch (e) {}\n\n invariant(\n !isExternal,\n 'Attempting to navigate to external url with router.navigate!',\n )\n\n return router.__.navigate({\n from: fromString,\n to: toString,\n search,\n hash,\n replace,\n params,\n })\n },\n\n buildLink: ({\n from,\n to = '.',\n search,\n params,\n hash,\n target,\n replace,\n activeOptions,\n preload,\n preloadMaxAge: userPreloadMaxAge,\n preloadGcMaxAge: userPreloadGcMaxAge,\n preloadDelay: userPreloadDelay,\n disabled,\n }) => {\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n\n try {\n new URL(`${to}`)\n return {\n type: 'external',\n href: to,\n }\n } catch (e) {}\n\n const nextOpts = {\n from,\n to,\n search,\n params,\n hash,\n replace,\n }\n\n const next = router.buildNext(nextOpts)\n\n preload = preload ?? router.options.defaultPreload\n const preloadDelay =\n userPreloadDelay ?? router.options.defaultPreloadDelay ?? 0\n\n // Compare path/hash for matches\n const pathIsEqual = router.state.location.pathname === next.pathname\n const currentPathSplit = router.state.location.pathname.split('/')\n const nextPathSplit = next.pathname.split('/')\n const pathIsFuzzyEqual = nextPathSplit.every(\n (d, i) => d === currentPathSplit[i],\n )\n const hashIsEqual = router.state.location.hash === next.hash\n // Combine the matches based on user options\n const pathTest = activeOptions?.exact ? pathIsEqual : pathIsFuzzyEqual\n const hashTest = activeOptions?.includeHash ? hashIsEqual : true\n\n // The final \"active\" test\n const isActive = pathTest && hashTest\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n if (\n !disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!target || target === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n if (pathIsEqual && !search && !hash) {\n router.invalidateRoute(nextOpts)\n }\n\n // All is well? Navigate!)\n router.__.navigate(nextOpts)\n }\n }\n\n // The click handler\n const handleFocus = (e: MouseEvent) => {\n if (preload) {\n router.preloadRoute(nextOpts, {\n maxAge: userPreloadMaxAge,\n gcMaxAge: userPreloadGcMaxAge,\n })\n }\n }\n\n const handleEnter = (e: MouseEvent) => {\n const target = (e.target || {}) as LinkCurrentTargetElement\n\n if (preload) {\n if (target.preloadTimeout) {\n return\n }\n\n target.preloadTimeout = setTimeout(() => {\n target.preloadTimeout = null\n router.preloadRoute(nextOpts, {\n maxAge: userPreloadMaxAge,\n gcMaxAge: userPreloadGcMaxAge,\n })\n }, preloadDelay)\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n const target = (e.target || {}) as LinkCurrentTargetElement\n\n if (target.preloadTimeout) {\n clearTimeout(target.preloadTimeout)\n target.preloadTimeout = null\n }\n }\n\n return {\n type: 'internal',\n next,\n handleFocus,\n handleClick,\n handleEnter,\n handleLeave,\n isActive,\n disabled,\n }\n },\n buildNext: (opts: BuildNextOptions) => {\n const next = router.__.buildLocation(opts)\n\n const matches = router.matchRoutes(next.pathname)\n\n const __preSearchFilters = matches\n .map((match) => match.options.preSearchFilters ?? [])\n .flat()\n .filter(Boolean)\n\n const __postSearchFilters = matches\n .map((match) => match.options.postSearchFilters ?? [])\n .flat()\n .filter(Boolean)\n\n return router.__.buildLocation({\n ...opts,\n __preSearchFilters,\n __postSearchFilters,\n })\n },\n\n __: {\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) => {\n const routeOptions = routeConfig.options\n const route = createRoute(routeConfig, routeOptions, parent, router)\n const existingRoute = (router.routesById as any)[route.routeId]\n\n if (existingRoute) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Duplicate routes found with id: ${String(route.routeId)}`,\n router.routesById,\n route,\n )\n }\n throw new Error()\n }\n\n ;(router.routesById as any)[route.routeId] = route\n\n const children = routeConfig.children as RouteConfig[]\n\n route.childRoutes = children?.length\n ? recurseRoutes(children, route)\n : undefined\n\n return route\n })\n }\n\n const routes = recurseRoutes([rootRouteConfig])\n\n return routes[0]!\n },\n\n parseLocation: (\n location: History['location'],\n previousLocation?: Location,\n ): Location => {\n const parsedSearch = router.options.parseSearch(location.search)\n\n return {\n pathname: location.pathname,\n searchStr: location.search,\n search: replaceEqualDeep(previousLocation?.search, parsedSearch),\n hash: location.hash.split('#').reverse()[0] ?? '',\n href: `${location.pathname}${location.search}${location.hash}`,\n state: location.state as LocationState,\n key: location.key,\n }\n },\n\n navigate: (location: BuildNextOptions & { replace?: boolean }) => {\n const next = router.buildNext(location)\n return router.__.commitLocation(next, location.replace)\n },\n\n buildLocation: (dest: BuildNextOptions = {}): Location => {\n const fromPathname = dest.fromCurrent\n ? router.__location.pathname\n : dest.from ?? router.__location.pathname\n\n let pathname = resolvePath(\n router.basepath ?? '/',\n fromPathname,\n `${dest.to ?? '.'}`,\n )\n\n const fromMatches = router.matchRoutes(router.__location.pathname, {\n strictParseParams: true,\n })\n\n const toMatches = router.matchRoutes(pathname)\n\n const prevParams = { ...last(fromMatches)?.params }\n\n let nextParams =\n (dest.params ?? true) === true\n ? prevParams\n : functionalUpdate(dest.params!, prevParams)\n\n if (nextParams) {\n toMatches\n .map((d) => d.options.stringifyParams)\n .filter(Boolean)\n .forEach((fn) => {\n Object.assign({}, nextParams!, fn!(nextParams!))\n })\n }\n\n pathname = interpolatePath(pathname, nextParams ?? {})\n\n // Pre filters first\n const preFilteredSearch = dest.__preSearchFilters?.length\n ? dest.__preSearchFilters.reduce(\n (prev, next) => next(prev),\n router.__location.search,\n )\n : router.__location.search\n\n // Then the link/navigate function\n const destSearch =\n dest.search === true\n ? preFilteredSearch // Preserve resolvedFrom true\n : dest.search\n ? functionalUpdate(dest.search, preFilteredSearch) ?? {} // Updater\n : dest.__preSearchFilters?.length\n ? preFilteredSearch // Preserve resolvedFrom filters\n : {}\n\n // Then post filters\n const postFilteredSearch = dest.__postSearchFilters?.length\n ? dest.__postSearchFilters.reduce(\n (prev, next) => next(prev),\n destSearch,\n )\n : destSearch\n\n const search = replaceEqualDeep(\n router.__location.search,\n postFilteredSearch,\n )\n\n const searchStr = router.options.stringifySearch(search)\n let hash =\n dest.hash === true\n ? router.__location.hash\n : functionalUpdate(dest.hash!, router.__location.hash)\n hash = hash ? `#${hash}` : ''\n\n return {\n pathname,\n search,\n searchStr,\n state: router.__location.state,\n hash,\n href: `${pathname}${searchStr}${hash}`,\n key: dest.key,\n }\n },\n\n commitLocation: (next: Location, replace?: boolean): Promise<void> => {\n const id = '' + Date.now() + Math.random()\n\n if (router.navigateTimeout) clearTimeout(router.navigateTimeout)\n\n let nextAction: 'push' | 'replace' = 'replace'\n\n if (!replace) {\n nextAction = 'push'\n }\n\n const isSameUrl =\n router.__.parseLocation(history.location).href === next.href\n\n if (isSameUrl && !next.key) {\n nextAction = 'replace'\n }\n\n if (nextAction === 'replace') {\n history.replace(\n {\n pathname: next.pathname,\n hash: next.hash,\n search: next.searchStr,\n },\n {\n id,\n ...next.state,\n },\n )\n } else {\n history.push(\n {\n pathname: next.pathname,\n hash: next.hash,\n search: next.searchStr,\n },\n {\n id,\n },\n )\n }\n\n router.navigationPromise = new Promise((resolve) => {\n const previousNavigationResolve = router.resolveNavigation\n\n router.resolveNavigation = () => {\n previousNavigationResolve()\n resolve()\n delete router.navigationPromise\n }\n })\n\n return router.navigationPromise\n },\n },\n }\n\n router.update(userOptions)\n\n // Allow frameworks to hook into the router creation\n router.options.createRouter?.(router)\n\n return router\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nfunction cascadeLoaderData(matches: RouteMatch<any, any>[]) {\n matches.forEach((match, index) => {\n const parent = matches[index - 1]\n\n if (parent) {\n match.loaderData = replaceEqualDeep(match.loaderData, {\n ...parent.loaderData,\n ...match.routeLoaderData,\n })\n }\n })\n}\n"],"names":["isServer","window","document","createElement","createDefaultHistory","createMemoryHistory","createBrowserHistory","getInitialRouterState","status","location","matches","actions","loaders","lastUpdated","Date","now","isFetching","isPreloading","createRouter","userOptions","history","originalOptions","_extends","defaultLoaderGcMaxAge","defaultLoaderMaxAge","defaultPreloadMaxAge","defaultPreloadDelay","context","undefined","stringifySearch","defaultStringifySearch","parseSearch","defaultParseSearch","router","types","options","listeners","basepath","routeTree","routesById","__location","resolveNavigation","matchCache","state","reset","notify","startedLoadingAt","subscribe","listener","push","filter","x","getRoute","id","some","d","Object","values","match","find","dd","matchId","cascadeLoaderData","forEach","dehydrate","pick","map","hydrate","dehydratedState","matchRoutes","pathname","strictParseParams","index","dehydratedMatch","invariant","assign","__","validate","mount","next","buildLocation","to","search","hash","href","commitLocation","length","load","unsub","listen","event","parseLocation","addEventListener","onFocus","removeEventListener","update","opts","newHistory","routeConfig","cleanPath","buildRouteTree","cancelMatches","pending","cancel","Math","random","Promise","all","beforeLoad","err","then","loadMatches","navigationPromise","previousMatches","exiting","staying","entering","onExit","params","routeSearch","error","gc","max","loaderGcMaxAge","loaderMaxAge","Infinity","Number","MAX_SAFE_INTEGER","onTransition","onLoaded","action","current","submissions","cleanMatchCache","keys","entry","loadRoute","navigateOpts","buildNext","preloadRoute","loaderOpts","preload","maxAge","gcMaxAge","defaultPreloadGcMaxAge","existingMatches","recurse","routes","parentMatch","last","filteredRoutes","filterRoutes","foundRoutes","findMatchInRoutes","parentRoutes","route","routePath","childRoutes","fuzzy","matchParams","matchPathname","fullPath","caseSensitive","parsedParams","parseParams","foundRoute","interpolatedPath","interpolatePath","routeId","createRouteMatch","joinPaths","resolvedMatches","matchPromises","__data","loadPromise","loadMatchData","routeMatch","useServerData","loader","signal","abortController","res","fetch","method","ok","json","Error","invalidateRoute","unloadedMatchIds","includes","invalidate","reload","navigate","fromCurrent","replace","resolvePath","from","path","matchRoute","toString","String","fromString","isExternal","URL","e","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","handleEnter","preloadTimeout","setTimeout","handleLeave","clearTimeout","__preSearchFilters","preSearchFilters","flat","Boolean","__postSearchFilters","postSearchFilters","rootRouteConfig","recurseRoutes","routeConfigs","parent","routeOptions","createRoute","existingRoute","process","env","NODE_ENV","console","warn","children","previousLocation","parsedSearch","searchStr","replaceEqualDeep","reverse","key","dest","fromPathname","fromMatches","toMatches","prevParams","nextParams","functionalUpdate","stringifyParams","fn","preFilteredSearch","reduce","prev","destSearch","postFilteredSearch","navigateTimeout","nextAction","isSameUrl","resolve","previousNavigationResolve","metaKey","altKey","ctrlKey","shiftKey","loaderData","routeLoaderData"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.js","sources":["../../src/router.ts"],"sourcesContent":["import {\n BrowserHistory,\n createBrowserHistory,\n createMemoryHistory,\n HashHistory,\n History,\n MemoryHistory,\n} from 'history'\nimport invariant from 'tiny-invariant'\nimport { GetFrameworkGeneric } from './frameworks'\n\nimport {\n LinkInfo,\n LinkOptions,\n NavigateOptionsAbsolute,\n ToOptions,\n ValidFromPath,\n} from './link'\nimport {\n cleanPath,\n interpolatePath,\n joinPaths,\n matchPathname,\n resolvePath,\n trimPath,\n} from './path'\nimport { AnyRoute, createRoute, 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 AnyRouteInfo,\n RouteInfo,\n RoutesById,\n} from './routeInfo'\nimport { createRouteMatch, RouteMatch } from './routeMatch'\nimport { defaultParseSearch, defaultStringifySearch } from './searchParams'\nimport {\n functionalUpdate,\n last,\n pick,\n PickAsRequired,\n PickRequired,\n replaceEqualDeep,\n Timeout,\n Updater,\n} from './utils'\n\nexport interface RegisterRouter {\n // router: Router\n}\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 Location<\n TSearchObj extends AnySearchSchema = {},\n TState extends LocationState = LocationState,\n> {\n href: string\n pathname: string\n search: TSearchObj\n searchStr: string\n state: TState\n hash: string\n key?: string\n}\n\nexport interface FromLocation {\n pathname: string\n search?: unknown\n key?: string\n hash?: string\n}\n\nexport type SearchSerializer = (searchObj: Record<string, any>) => string\nexport type SearchParser = (searchStr: string) => Record<string, any>\nexport type FilterRoutesFn = <TRoute extends Route<any, RouteInfo>>(\n routeConfigs: TRoute[],\n) => TRoute[]\n\nexport interface RouterOptions<\n TRouteConfig extends AnyRouteConfig,\n TRouterContext,\n> {\n history?: BrowserHistory | MemoryHistory | HashHistory\n stringifySearch?: SearchSerializer\n parseSearch?: SearchParser\n filterRoutes?: FilterRoutesFn\n defaultPreload?: false | 'intent'\n defaultPreloadMaxAge?: number\n defaultPreloadGcMaxAge?: number\n defaultPreloadDelay?: number\n 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 createRouter?: (router: Router<any, any, any>) => void\n createRoute?: (opts: {\n route: AnyRoute\n router: Router<any, any, any>\n }) => void\n context?: TRouterContext\n loadComponent?: (\n component: GetFrameworkGeneric<'Component'>,\n ) => Promise<GetFrameworkGeneric<'Component'>>\n // renderComponent?: (\n // component: GetFrameworkGeneric<'Component'>,\n // ) => GetFrameworkGeneric<'Element'>\n}\n\nexport interface Action<\n TPayload = unknown,\n TResponse = unknown,\n // TError = unknown,\n> {\n submit: (\n submission?: TPayload,\n actionOpts?: { invalidate?: boolean; multi?: boolean },\n ) => Promise<TResponse>\n current?: ActionState<TPayload, TResponse>\n latest?: ActionState<TPayload, TResponse>\n submissions: ActionState<TPayload, TResponse>[]\n}\n\nexport interface ActionState<\n TPayload = unknown,\n TResponse = unknown,\n // TError = unknown,\n> {\n submittedAt: number\n status: 'idle' | 'pending' | 'success' | 'error'\n submission: TPayload\n isMulti: boolean\n data?: TResponse\n error?: unknown\n}\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 RouterState<\n TSearchObj extends AnySearchSchema = {},\n TState extends LocationState = LocationState,\n> {\n status: 'idle' | 'loading'\n location: Location<TSearchObj, TState>\n matches: RouteMatch[]\n lastUpdated: number\n actions: Record<string, Action>\n loaders: Record<string, Loader>\n pending?: PendingState\n isFetching: boolean\n isPreloading: boolean\n}\n\nexport interface PendingState {\n location: Location\n matches: RouteMatch[]\n}\n\ntype Listener = (router: Router<any, any, any>) => void\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 RouterState,\n 'status' | 'location' | 'lastUpdated' | 'location'\n > {\n matches: DehydratedRouteMatch[]\n}\n\nexport interface DehydratedRouter<TRouterContext = unknown> {\n location: Router['__location']\n state: DehydratedRouterState\n context: TRouterContext\n}\n\ninterface DehydratedRouteMatch\n extends Pick<\n RouteMatch<any, any>,\n | 'matchId'\n | 'status'\n | 'routeLoaderData'\n | 'loaderData'\n | 'isInvalid'\n | 'invalidAt'\n > {}\n\nexport interface RouterContext {}\n\nexport interface 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 // Public API\n history: BrowserHistory | MemoryHistory | HashHistory\n options: PickAsRequired<\n RouterOptions<TRouteConfig, TRouterContext>,\n 'stringifySearch' | 'parseSearch' | 'context'\n >\n // Computed in this.update()\n basepath: string\n // Internal:\n listeners: Listener[]\n __location: Location<TAllRouteInfo['fullSearchSchema']>\n navigateTimeout?: Timeout\n nextAction?: 'push' | 'replace'\n state: RouterState<TAllRouteInfo['fullSearchSchema']>\n routeTree: Route<TAllRouteInfo, RouteInfo>\n routesById: RoutesById<TAllRouteInfo>\n navigationPromise?: Promise<void>\n startedLoadingAt: number\n resolveNavigation: () => void\n subscribe: (listener: Listener) => () => void\n reset: () => void\n notify: () => void\n mount: () => () => void\n onFocus: () => void\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\n buildNext: (opts: BuildNextOptions) => Location\n cancelMatches: () => void\n load: (next?: Location) => Promise<void>\n matchCache: Record<string, MatchCacheEntry>\n cleanMatchCache: () => void\n getRoute: <TId extends keyof TAllRouteInfo['routeInfoById']>(\n id: TId,\n ) => Route<TAllRouteInfo, TAllRouteInfo['routeInfoById'][TId]>\n loadRoute: (navigateOpts: BuildNextOptions) => Promise<RouteMatch[]>\n preloadRoute: (\n navigateOpts: BuildNextOptions,\n loaderOpts: { maxAge?: number; gcMaxAge?: number },\n ) => Promise<RouteMatch[]>\n matchRoutes: (\n pathname: string,\n opts?: { strictParseParams?: boolean },\n ) => RouteMatch[]\n loadMatches: (\n resolvedMatches: RouteMatch[],\n loaderOpts?:\n | { preload: true; maxAge: number; gcMaxAge: number }\n | { preload?: false; maxAge?: never; gcMaxAge?: never },\n ) => Promise<void>\n loadMatchData: (\n routeMatch: RouteMatch<any, any>,\n ) => Promise<Record<string, unknown>>\n invalidateRoute: (opts: MatchLocation) => void\n reload: () => Promise<void>\n resolvePath: (from: string, path: string) => string\n navigate: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n opts: NavigateOptionsAbsolute<TAllRouteInfo, TFrom, TTo>,\n ) => Promise<void>\n matchRoute: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n matchLocation: ToOptions<TAllRouteInfo, TFrom, TTo>,\n opts?: MatchRouteOptions,\n ) => boolean\n buildLink: <\n TFrom extends ValidFromPath<TAllRouteInfo> = '/',\n TTo extends string = '.',\n >(\n opts: LinkOptions<TAllRouteInfo, TFrom, TTo>,\n ) => LinkInfo\n dehydrate: () => DehydratedRouter<TRouterContext>\n hydrate: (dehydratedRouter: DehydratedRouter<TRouterContext>) => void\n __: {\n buildRouteTree: (\n routeConfig: RouteConfig,\n ) => Route<TAllRouteInfo, AnyRouteInfo>\n parseLocation: (\n location: History['location'],\n previousLocation?: Location,\n ) => Location\n buildLocation: (dest: BuildNextOptions) => Location\n commitLocation: (next: Location, replace?: boolean) => Promise<void>\n navigate: (\n location: BuildNextOptions & { replace?: boolean },\n ) => Promise<void>\n }\n}\n\n// Detect if we're in the DOM\nconst isServer =\n typeof window === 'undefined' || !window.document?.createElement\n\n// This is the default history object if none is defined\nconst createDefaultHistory = () =>\n isServer ? createMemoryHistory() : createBrowserHistory()\n\nfunction getInitialRouterState(): RouterState {\n return {\n status: 'idle',\n location: null!,\n matches: [],\n actions: {},\n loaders: {},\n lastUpdated: Date.now(),\n isFetching: false,\n isPreloading: false,\n }\n}\n\nexport function createRouter<\n TRouteConfig extends AnyRouteConfig = RouteConfig,\n TAllRouteInfo extends AnyAllRouteInfo = AllRouteInfo<TRouteConfig>,\n TRouterContext = unknown,\n>(\n userOptions?: RouterOptions<TRouteConfig, TRouterContext>,\n): Router<TRouteConfig, TAllRouteInfo, TRouterContext> {\n const history = userOptions?.history || createDefaultHistory()\n\n const originalOptions = {\n defaultLoaderGcMaxAge: 5 * 60 * 1000,\n defaultLoaderMaxAge: 0,\n defaultPreloadMaxAge: 2000,\n defaultPreloadDelay: 50,\n context: undefined!,\n ...userOptions,\n stringifySearch: userOptions?.stringifySearch ?? defaultStringifySearch,\n parseSearch: userOptions?.parseSearch ?? defaultParseSearch,\n }\n\n let router: Router<TRouteConfig, TAllRouteInfo, TRouterContext> = {\n types: undefined!,\n\n // public api\n history,\n options: originalOptions,\n listeners: [],\n // Resolved after construction\n basepath: '',\n routeTree: undefined!,\n routesById: {} as any,\n __location: undefined!,\n //\n resolveNavigation: () => {},\n matchCache: {},\n state: getInitialRouterState(),\n reset: () => {\n router.state = getInitialRouterState()\n router.notify()\n },\n startedLoadingAt: Date.now(),\n subscribe: (listener: Listener): (() => void) => {\n router.listeners.push(listener as Listener)\n return () => {\n router.listeners = router.listeners.filter((x) => x !== listener)\n }\n },\n getRoute: (id) => {\n return router.routesById[id]\n },\n notify: (): void => {\n const isFetching =\n router.state.status === 'loading' ||\n router.state.matches.some((d) => d.isFetching)\n\n const isPreloading = Object.values(router.matchCache).some(\n (d) =>\n d.match.isFetching &&\n !router.state.matches.find((dd) => dd.matchId === d.match.matchId),\n )\n\n if (\n router.state.isFetching !== isFetching ||\n router.state.isPreloading !== isPreloading\n ) {\n router.state = {\n ...router.state,\n isFetching,\n isPreloading,\n }\n }\n\n cascadeLoaderData(router.state.matches)\n router.listeners.forEach((listener) => listener(router))\n },\n\n dehydrate: () => {\n return {\n location: router.__location,\n state: {\n ...pick(router.state, [\n 'status',\n 'location',\n 'lastUpdated',\n 'location',\n ]),\n matches: router.state.matches.map((match) =>\n pick(match, [\n 'matchId',\n 'status',\n 'routeLoaderData',\n 'loaderData',\n 'isInvalid',\n 'invalidAt',\n ]),\n ),\n },\n context: router.options.context as TRouterContext,\n }\n },\n\n hydrate: (dehydratedState) => {\n // Update the location\n router.__location = dehydratedState.location\n\n // Update the context\n router.options.context = dehydratedState.context\n\n // Match the routes\n const matches = router.matchRoutes(router.__location.pathname, {\n strictParseParams: true,\n })\n\n matches.forEach((match, index) => {\n const dehydratedMatch = dehydratedState.state.matches[index]\n invariant(\n dehydratedMatch,\n 'Oh no! Dehydrated route matches did not match the active state of the router 😬',\n )\n Object.assign(match, dehydratedMatch)\n })\n\n matches.forEach((match) => match.__.validate())\n\n router.state = {\n ...router.state,\n ...dehydratedState,\n matches,\n }\n },\n\n mount: () => {\n const next = router.__.buildLocation({\n to: '.',\n search: true,\n hash: true,\n })\n\n // If the current location isn't updated, trigger a navigation\n // to the current location. Otherwise, load the current location.\n // if (next.href !== router.__location.href) {\n // router.__.commitLocation(next, true)\n // }\n\n if (!router.state.matches.length) {\n router.load()\n }\n\n const unsub = router.history.listen((event) => {\n router.load(router.__.parseLocation(event.location, router.__location))\n })\n\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n // Listen to visibillitychange and focus\n window.addEventListener('visibilitychange', router.onFocus, false)\n window.addEventListener('focus', router.onFocus, false)\n }\n\n return () => {\n unsub()\n if (!isServer && window.removeEventListener) {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', router.onFocus)\n window.removeEventListener('focus', router.onFocus)\n }\n }\n },\n\n onFocus: () => {\n router.load()\n },\n\n update: (opts) => {\n const newHistory = opts?.history !== router.history\n if (!router.__location || newHistory) {\n if (opts?.history) {\n router.history = opts.history\n }\n router.__location = router.__.parseLocation(router.history.location)\n router.state.location = router.__location\n }\n\n Object.assign(router.options, opts)\n\n const { basepath, routeConfig } = router.options\n\n router.basepath = `/${trimPath(basepath ?? '') ?? ''}`\n\n if (routeConfig) {\n router.routesById = {} as any\n router.routeTree = router.__.buildRouteTree(routeConfig)\n }\n\n return router as any\n },\n\n cancelMatches: () => {\n ;[\n ...router.state.matches,\n ...(router.state.pending?.matches ?? []),\n ].forEach((match) => {\n match.cancel()\n })\n },\n\n load: async (next?: Location) => {\n const id = Math.random()\n router.startedLoadingAt = id\n\n if (next) {\n // Ingest the new location\n router.__location = next\n }\n\n // Cancel any pending matches\n router.cancelMatches()\n\n // Match the routes\n const matches = router.matchRoutes(router.__location.pathname, {\n strictParseParams: true,\n })\n\n if (typeof document !== 'undefined') {\n router.state = {\n ...router.state,\n pending: {\n matches: matches,\n location: router.__location,\n },\n status: 'loading',\n }\n } else {\n router.state = {\n ...router.state,\n matches: matches,\n location: router.__location,\n status: 'loading',\n }\n }\n\n // Check if each match middleware to see if the route can be accessed\n try {\n await Promise.all(\n matches.map((match) =>\n match.options.beforeLoad?.({\n router: router as any,\n match,\n }),\n ),\n )\n } catch (err: any) {\n console.info(err)\n invariant(false, `A route's beforeLoad middleware failed! 👆`)\n }\n\n router.notify()\n\n // Load the matches\n await router.loadMatches(matches)\n\n if (router.startedLoadingAt !== id) {\n // Ignore side-effects of match loading\n return router.navigationPromise\n }\n\n const previousMatches = router.state.matches\n\n const exiting: RouteMatch[] = [],\n staying: RouteMatch[] = []\n\n previousMatches.forEach((d) => {\n if (matches.find((dd) => dd.matchId === d.matchId)) {\n staying.push(d)\n } else {\n exiting.push(d)\n }\n })\n\n const entering = matches.filter((d) => {\n return !previousMatches.find((dd) => dd.matchId === d.matchId)\n })\n\n const now = Date.now()\n\n exiting.forEach((d) => {\n d.__.onExit?.({\n params: d.params,\n search: d.routeSearch,\n })\n\n // Clear idle error states when match leaves\n if (d.status === 'error' && !d.isFetching) {\n d.status = 'idle'\n d.error = undefined\n }\n\n const gc = Math.max(\n d.options.loaderGcMaxAge ?? router.options.defaultLoaderGcMaxAge ?? 0,\n d.options.loaderMaxAge ?? router.options.defaultLoaderMaxAge ?? 0,\n )\n\n if (gc > 0) {\n router.matchCache[d.matchId] = {\n gc: gc == Infinity ? Number.MAX_SAFE_INTEGER : now + gc,\n match: d,\n }\n }\n })\n\n staying.forEach((d) => {\n d.options.onTransition?.({\n params: d.params,\n search: d.routeSearch,\n })\n })\n\n entering.forEach((d) => {\n d.__.onExit = d.options.onLoaded?.({\n params: d.params,\n search: d.search,\n })\n delete router.matchCache[d.matchId]\n })\n\n if (router.startedLoadingAt !== id) {\n // Ignore side-effects of match loading\n return\n }\n\n matches.forEach((match) => {\n // Clear actions\n if (match.action) {\n match.action.current = undefined\n match.action.submissions = []\n }\n })\n\n router.state = {\n ...router.state,\n location: router.__location,\n matches,\n pending: undefined,\n status: 'idle',\n }\n\n router.notify()\n router.resolveNavigation()\n },\n\n cleanMatchCache: () => {\n const now = Date.now()\n\n Object.keys(router.matchCache).forEach((matchId) => {\n const entry = router.matchCache[matchId]!\n\n // Don't remove loading matches\n if (entry.match.status === 'loading') {\n return\n }\n\n // Do not remove successful matches that are still valid\n if (entry.gc > 0 && entry.gc > now) {\n return\n }\n\n // Everything else gets removed\n delete router.matchCache[matchId]\n })\n },\n\n loadRoute: async (navigateOpts = router.__location) => {\n const next = router.buildNext(navigateOpts)\n const matches = router.matchRoutes(next.pathname, {\n strictParseParams: true,\n })\n await router.loadMatches(matches)\n return matches\n },\n\n preloadRoute: async (navigateOpts = router.__location, loaderOpts) => {\n const next = router.buildNext(navigateOpts)\n const matches = router.matchRoutes(next.pathname, {\n strictParseParams: true,\n })\n await router.loadMatches(matches, {\n preload: true,\n maxAge:\n loaderOpts.maxAge ??\n router.options.defaultPreloadMaxAge ??\n router.options.defaultLoaderMaxAge ??\n 0,\n gcMaxAge:\n loaderOpts.gcMaxAge ??\n router.options.defaultPreloadGcMaxAge ??\n router.options.defaultLoaderGcMaxAge ??\n 0,\n })\n return matches\n },\n\n matchRoutes: (pathname, opts) => {\n router.cleanMatchCache()\n\n const matches: RouteMatch[] = []\n\n if (!router.routeTree) {\n return matches\n }\n\n const existingMatches = [\n ...router.state.matches,\n ...(router.state.pending?.matches ?? []),\n ]\n\n const recurse = async (routes: Route<any, any>[]): Promise<void> => {\n const parentMatch = last(matches)\n let params = parentMatch?.params ?? {}\n\n const filteredRoutes = router.options.filterRoutes?.(routes) ?? routes\n\n let foundRoutes: Route[] = []\n\n const findMatchInRoutes = (parentRoutes: Route[], routes: Route[]) => {\n routes.some((route) => {\n if (!route.routePath && route.childRoutes?.length) {\n return findMatchInRoutes(\n [...foundRoutes, route],\n route.childRoutes,\n )\n }\n\n const fuzzy = !!(\n route.routePath !== '/' || route.childRoutes?.length\n )\n\n const matchParams = matchPathname(router.basepath, pathname, {\n to: route.fullPath,\n fuzzy,\n caseSensitive:\n route.options.caseSensitive ?? router.options.caseSensitive,\n })\n\n console.log(\n router.basepath,\n route.fullPath,\n fuzzy,\n pathname,\n matchParams,\n )\n\n if (matchParams) {\n let parsedParams\n\n try {\n parsedParams =\n route.options.parseParams?.(matchParams!) ?? matchParams\n } catch (err) {\n if (opts?.strictParseParams) {\n throw err\n }\n }\n\n params = {\n ...params,\n ...parsedParams,\n }\n }\n\n if (!!matchParams) {\n foundRoutes = [...parentRoutes, route]\n }\n\n return !!foundRoutes.length\n })\n\n return !!foundRoutes.length\n }\n\n findMatchInRoutes([], filteredRoutes)\n\n if (!foundRoutes.length) {\n return\n }\n\n foundRoutes.forEach((foundRoute) => {\n const interpolatedPath = interpolatePath(foundRoute.routePath, params)\n const matchId = interpolatePath(foundRoute.routeId, params, true)\n\n const match =\n existingMatches.find((d) => d.matchId === matchId) ||\n router.matchCache[matchId]?.match ||\n createRouteMatch(router, foundRoute, {\n parentMatch,\n matchId,\n params,\n pathname: joinPaths([router.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([router.routeTree])\n\n cascadeLoaderData(matches)\n\n return matches\n },\n\n loadMatches: async (resolvedMatches, loaderOpts) => {\n const matchPromises = resolvedMatches.map(async (match) => {\n // Validate the match (loads search params etc)\n match.__.validate()\n\n const search = match.search as { __data?: any }\n\n if (search.__data?.matchId && search.__data.matchId !== match.matchId) {\n return\n }\n\n match.load(loaderOpts)\n\n if (match.status !== 'success' && match.__.loadPromise) {\n // Wait for the first sign of activity from the match\n await match.__.loadPromise\n }\n })\n\n router.notify()\n\n await Promise.all(matchPromises)\n },\n\n loadMatchData: async (routeMatch) => {\n if (isServer || !router.options.useServerData) {\n return (\n (await routeMatch.options.loader?.({\n // parentLoaderPromise: routeMatch.parentMatch?.__.dataPromise,\n params: routeMatch.params,\n search: routeMatch.routeSearch,\n signal: routeMatch.__.abortController.signal,\n })) ?? {}\n )\n } else {\n const next = router.buildNext({\n to: '.',\n search: (d: any) => ({\n ...(d ?? {}),\n __data: {\n matchId: routeMatch.matchId,\n },\n }),\n })\n\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 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 },\n\n invalidateRoute: (opts: MatchLocation) => {\n const next = router.buildNext(opts)\n const unloadedMatchIds = router\n .matchRoutes(next.pathname)\n .map((d) => d.matchId)\n ;[\n ...router.state.matches,\n ...(router.state.pending?.matches ?? []),\n ].forEach((match) => {\n if (unloadedMatchIds.includes(match.matchId)) {\n match.invalidate()\n }\n })\n },\n\n reload: () =>\n router.__.navigate({\n fromCurrent: true,\n replace: true,\n search: true,\n }),\n\n resolvePath: (from: string, path: string) => {\n return resolvePath(router.basepath!, from, cleanPath(path))\n },\n\n matchRoute: (location, opts) => {\n // const location = router.buildNext(opts)\n\n location = {\n ...location,\n to: location.to\n ? router.resolvePath(location.from ?? '', location.to)\n : undefined,\n }\n\n const next = router.buildNext(location)\n\n if (opts?.pending) {\n if (!router.state.pending?.location) {\n return false\n }\n\n return !!matchPathname(\n router.basepath,\n router.state.pending.location.pathname,\n {\n ...opts,\n to: next.pathname,\n },\n )\n }\n\n return !!matchPathname(router.basepath, router.state.location.pathname, {\n ...opts,\n to: next.pathname,\n })\n },\n\n navigate: async ({ from, to = '.', search, hash, replace, params }) => {\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n const toString = String(to)\n const fromString = String(from)\n\n let isExternal\n\n try {\n new URL(`${toString}`)\n isExternal = true\n } catch (e) {}\n\n invariant(\n !isExternal,\n 'Attempting to navigate to external url with router.navigate!',\n )\n\n return router.__.navigate({\n from: fromString,\n to: toString,\n search,\n hash,\n replace,\n params,\n })\n },\n\n buildLink: ({\n from,\n to = '.',\n search,\n params,\n hash,\n target,\n replace,\n activeOptions,\n preload,\n preloadMaxAge: userPreloadMaxAge,\n preloadGcMaxAge: userPreloadGcMaxAge,\n preloadDelay: userPreloadDelay,\n disabled,\n }) => {\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n\n try {\n new URL(`${to}`)\n return {\n type: 'external',\n href: to,\n }\n } catch (e) {}\n\n const nextOpts = {\n from,\n to,\n search,\n params,\n hash,\n replace,\n }\n\n const next = router.buildNext(nextOpts)\n\n preload = preload ?? router.options.defaultPreload\n const preloadDelay =\n userPreloadDelay ?? router.options.defaultPreloadDelay ?? 0\n\n // Compare path/hash for matches\n const pathIsEqual = router.state.location.pathname === next.pathname\n const currentPathSplit = router.state.location.pathname.split('/')\n const nextPathSplit = next.pathname.split('/')\n const pathIsFuzzyEqual = nextPathSplit.every(\n (d, i) => d === currentPathSplit[i],\n )\n const hashIsEqual = router.state.location.hash === next.hash\n // Combine the matches based on user options\n const pathTest = activeOptions?.exact ? pathIsEqual : pathIsFuzzyEqual\n const hashTest = activeOptions?.includeHash ? hashIsEqual : true\n\n // The final \"active\" test\n const isActive = pathTest && hashTest\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n if (\n !disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!target || target === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n if (pathIsEqual && !search && !hash) {\n router.invalidateRoute(nextOpts)\n }\n\n // All is well? Navigate!)\n router.__.navigate(nextOpts)\n }\n }\n\n // The click handler\n const handleFocus = (e: MouseEvent) => {\n if (preload) {\n router.preloadRoute(nextOpts, {\n maxAge: userPreloadMaxAge,\n gcMaxAge: userPreloadGcMaxAge,\n })\n }\n }\n\n const handleEnter = (e: MouseEvent) => {\n const target = (e.target || {}) as LinkCurrentTargetElement\n\n if (preload) {\n if (target.preloadTimeout) {\n return\n }\n\n target.preloadTimeout = setTimeout(() => {\n target.preloadTimeout = null\n router.preloadRoute(nextOpts, {\n maxAge: userPreloadMaxAge,\n gcMaxAge: userPreloadGcMaxAge,\n })\n }, preloadDelay)\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n const target = (e.target || {}) as LinkCurrentTargetElement\n\n if (target.preloadTimeout) {\n clearTimeout(target.preloadTimeout)\n target.preloadTimeout = null\n }\n }\n\n return {\n type: 'internal',\n next,\n handleFocus,\n handleClick,\n handleEnter,\n handleLeave,\n isActive,\n disabled,\n }\n },\n buildNext: (opts: BuildNextOptions) => {\n const next = router.__.buildLocation(opts)\n\n const matches = router.matchRoutes(next.pathname)\n\n const __preSearchFilters = matches\n .map((match) => match.options.preSearchFilters ?? [])\n .flat()\n .filter(Boolean)\n\n const __postSearchFilters = matches\n .map((match) => match.options.postSearchFilters ?? [])\n .flat()\n .filter(Boolean)\n\n return router.__.buildLocation({\n ...opts,\n __preSearchFilters,\n __postSearchFilters,\n })\n },\n\n __: {\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) => {\n const routeOptions = routeConfig.options\n const route = createRoute(routeConfig, routeOptions, parent, router)\n const existingRoute = (router.routesById as any)[route.routeId]\n\n if (existingRoute) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Duplicate routes found with id: ${String(route.routeId)}`,\n router.routesById,\n route,\n )\n }\n throw new Error()\n }\n\n ;(router.routesById as any)[route.routeId] = route\n\n const children = routeConfig.children as RouteConfig[]\n\n route.childRoutes = children?.length\n ? recurseRoutes(children, route)\n : undefined\n\n return route\n })\n }\n\n const routes = recurseRoutes([rootRouteConfig])\n\n return routes[0]!\n },\n\n parseLocation: (\n location: History['location'],\n previousLocation?: Location,\n ): Location => {\n const parsedSearch = router.options.parseSearch(location.search)\n\n return {\n pathname: location.pathname,\n searchStr: location.search,\n search: replaceEqualDeep(previousLocation?.search, parsedSearch),\n hash: location.hash.split('#').reverse()[0] ?? '',\n href: `${location.pathname}${location.search}${location.hash}`,\n state: location.state as LocationState,\n key: location.key,\n }\n },\n\n navigate: (location: BuildNextOptions & { replace?: boolean }) => {\n const next = router.buildNext(location)\n return router.__.commitLocation(next, location.replace)\n },\n\n buildLocation: (dest: BuildNextOptions = {}): Location => {\n const fromPathname = dest.fromCurrent\n ? router.__location.pathname\n : dest.from ?? router.__location.pathname\n\n let pathname = resolvePath(\n router.basepath ?? '/',\n fromPathname,\n `${dest.to ?? '.'}`,\n )\n\n const fromMatches = router.matchRoutes(router.__location.pathname, {\n strictParseParams: true,\n })\n\n const toMatches = router.matchRoutes(pathname)\n\n const prevParams = { ...last(fromMatches)?.params }\n\n let nextParams =\n (dest.params ?? true) === true\n ? prevParams\n : functionalUpdate(dest.params!, prevParams)\n\n if (nextParams) {\n toMatches\n .map((d) => d.options.stringifyParams)\n .filter(Boolean)\n .forEach((fn) => {\n Object.assign({}, nextParams!, fn!(nextParams!))\n })\n }\n\n pathname = interpolatePath(pathname, nextParams ?? {})\n\n // Pre filters first\n const preFilteredSearch = dest.__preSearchFilters?.length\n ? dest.__preSearchFilters.reduce(\n (prev, next) => next(prev),\n router.__location.search,\n )\n : router.__location.search\n\n // Then the link/navigate function\n const destSearch =\n dest.search === true\n ? preFilteredSearch // Preserve resolvedFrom true\n : dest.search\n ? functionalUpdate(dest.search, preFilteredSearch) ?? {} // Updater\n : dest.__preSearchFilters?.length\n ? preFilteredSearch // Preserve resolvedFrom filters\n : {}\n\n // Then post filters\n const postFilteredSearch = dest.__postSearchFilters?.length\n ? dest.__postSearchFilters.reduce(\n (prev, next) => next(prev),\n destSearch,\n )\n : destSearch\n\n const search = replaceEqualDeep(\n router.__location.search,\n postFilteredSearch,\n )\n\n const searchStr = router.options.stringifySearch(search)\n let hash =\n dest.hash === true\n ? router.__location.hash\n : functionalUpdate(dest.hash!, router.__location.hash)\n hash = hash ? `#${hash}` : ''\n\n return {\n pathname,\n search,\n searchStr,\n state: router.__location.state,\n hash,\n href: `${pathname}${searchStr}${hash}`,\n key: dest.key,\n }\n },\n\n commitLocation: (next: Location, replace?: boolean): Promise<void> => {\n const id = '' + Date.now() + Math.random()\n\n if (router.navigateTimeout) clearTimeout(router.navigateTimeout)\n\n let nextAction: 'push' | 'replace' = 'replace'\n\n if (!replace) {\n nextAction = 'push'\n }\n\n const isSameUrl =\n router.__.parseLocation(history.location).href === next.href\n\n if (isSameUrl && !next.key) {\n nextAction = 'replace'\n }\n\n if (nextAction === 'replace') {\n history.replace(\n {\n pathname: next.pathname,\n hash: next.hash,\n search: next.searchStr,\n },\n {\n id,\n ...next.state,\n },\n )\n } else {\n history.push(\n {\n pathname: next.pathname,\n hash: next.hash,\n search: next.searchStr,\n },\n {\n id,\n },\n )\n }\n\n router.navigationPromise = new Promise((resolve) => {\n const previousNavigationResolve = router.resolveNavigation\n\n router.resolveNavigation = () => {\n previousNavigationResolve()\n resolve()\n delete router.navigationPromise\n }\n })\n\n return router.navigationPromise\n },\n },\n }\n\n router.update(userOptions)\n\n // Allow frameworks to hook into the router creation\n router.options.createRouter?.(router)\n\n return router\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nfunction cascadeLoaderData(matches: RouteMatch<any, any>[]) {\n matches.forEach((match, index) => {\n const parent = matches[index - 1]\n\n if (parent) {\n match.loaderData = replaceEqualDeep(match.loaderData, {\n ...parent.loaderData,\n ...match.routeLoaderData,\n })\n }\n })\n}\n"],"names":["isServer","window","document","createElement","createDefaultHistory","createMemoryHistory","createBrowserHistory","getInitialRouterState","status","location","matches","actions","loaders","lastUpdated","Date","now","isFetching","isPreloading","createRouter","userOptions","history","originalOptions","_extends","defaultLoaderGcMaxAge","defaultLoaderMaxAge","defaultPreloadMaxAge","defaultPreloadDelay","context","undefined","stringifySearch","defaultStringifySearch","parseSearch","defaultParseSearch","router","types","options","listeners","basepath","routeTree","routesById","__location","resolveNavigation","matchCache","state","reset","notify","startedLoadingAt","subscribe","listener","push","filter","x","getRoute","id","some","d","Object","values","match","find","dd","matchId","cascadeLoaderData","forEach","dehydrate","pick","map","hydrate","dehydratedState","matchRoutes","pathname","strictParseParams","index","dehydratedMatch","invariant","assign","__","validate","mount","buildLocation","to","search","hash","length","load","unsub","listen","event","parseLocation","addEventListener","onFocus","removeEventListener","update","opts","newHistory","routeConfig","trimPath","buildRouteTree","cancelMatches","pending","cancel","next","Math","random","Promise","all","beforeLoad","err","console","info","loadMatches","navigationPromise","previousMatches","exiting","staying","entering","onExit","params","routeSearch","error","gc","max","loaderGcMaxAge","loaderMaxAge","Infinity","Number","MAX_SAFE_INTEGER","onTransition","onLoaded","action","current","submissions","cleanMatchCache","keys","entry","loadRoute","navigateOpts","buildNext","preloadRoute","loaderOpts","preload","maxAge","gcMaxAge","defaultPreloadGcMaxAge","existingMatches","recurse","routes","parentMatch","last","filteredRoutes","filterRoutes","foundRoutes","findMatchInRoutes","parentRoutes","route","routePath","childRoutes","fuzzy","matchParams","matchPathname","fullPath","caseSensitive","log","parsedParams","parseParams","foundRoute","interpolatedPath","interpolatePath","routeId","createRouteMatch","joinPaths","resolvedMatches","matchPromises","__data","loadPromise","loadMatchData","routeMatch","useServerData","loader","signal","abortController","res","fetch","href","method","ok","json","Error","invalidateRoute","unloadedMatchIds","includes","invalidate","reload","navigate","fromCurrent","replace","resolvePath","from","path","cleanPath","matchRoute","toString","String","fromString","isExternal","URL","e","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","handleEnter","preloadTimeout","setTimeout","handleLeave","clearTimeout","__preSearchFilters","preSearchFilters","flat","Boolean","__postSearchFilters","postSearchFilters","rootRouteConfig","recurseRoutes","routeConfigs","parent","routeOptions","createRoute","existingRoute","process","env","NODE_ENV","warn","children","previousLocation","parsedSearch","searchStr","replaceEqualDeep","reverse","key","commitLocation","dest","fromPathname","fromMatches","toMatches","prevParams","nextParams","functionalUpdate","stringifyParams","fn","preFilteredSearch","reduce","prev","destSearch","postFilteredSearch","navigateTimeout","nextAction","isSameUrl","resolve","previousNavigationResolve","metaKey","altKey","ctrlKey","shiftKey","loaderData","routeLoaderData"],"mappings":"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"}
|