@tanstack/router-core 0.0.1-beta.5 → 0.0.1-beta.50

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.
Files changed (71) hide show
  1. package/LICENSE +21 -0
  2. package/build/cjs/actions.js +94 -0
  3. package/build/cjs/actions.js.map +1 -0
  4. package/build/cjs/history.js +163 -0
  5. package/build/cjs/history.js.map +1 -0
  6. package/build/cjs/{packages/router-core/src/index.js → index.js} +26 -11
  7. package/build/cjs/{packages/router-core/src/index.js.map → index.js.map} +1 -1
  8. package/build/cjs/interop.js +175 -0
  9. package/build/cjs/interop.js.map +1 -0
  10. package/build/cjs/{packages/router-core/src/path.js → path.js} +23 -48
  11. package/build/cjs/path.js.map +1 -0
  12. package/build/cjs/{packages/router-core/src/qss.js → qss.js} +8 -13
  13. package/build/cjs/qss.js.map +1 -0
  14. package/build/cjs/route.js +33 -0
  15. package/build/cjs/route.js.map +1 -0
  16. package/build/cjs/{packages/router-core/src/routeConfig.js → routeConfig.js} +13 -18
  17. package/build/cjs/routeConfig.js.map +1 -0
  18. package/build/cjs/routeMatch.js +237 -0
  19. package/build/cjs/routeMatch.js.map +1 -0
  20. package/build/cjs/router.js +821 -0
  21. package/build/cjs/router.js.map +1 -0
  22. package/build/cjs/{packages/router-core/src/searchParams.js → searchParams.js} +10 -12
  23. package/build/cjs/searchParams.js.map +1 -0
  24. package/build/cjs/store.js +54 -0
  25. package/build/cjs/store.js.map +1 -0
  26. package/build/cjs/utils.js +47 -0
  27. package/build/cjs/utils.js.map +1 -0
  28. package/build/esm/index.js +1384 -2059
  29. package/build/esm/index.js.map +1 -1
  30. package/build/stats-html.html +59 -49
  31. package/build/stats-react.json +248 -193
  32. package/build/types/index.d.ts +385 -317
  33. package/build/umd/index.development.js +1486 -2142
  34. package/build/umd/index.development.js.map +1 -1
  35. package/build/umd/index.production.js +1 -1
  36. package/build/umd/index.production.js.map +1 -1
  37. package/package.json +6 -4
  38. package/src/actions.ts +157 -0
  39. package/src/frameworks.ts +2 -2
  40. package/src/history.ts +199 -0
  41. package/src/index.ts +4 -7
  42. package/src/interop.ts +169 -0
  43. package/src/link.ts +87 -44
  44. package/src/path.ts +12 -8
  45. package/src/route.ts +36 -229
  46. package/src/routeConfig.ts +99 -102
  47. package/src/routeInfo.ts +28 -25
  48. package/src/routeMatch.ts +294 -322
  49. package/src/router.ts +1047 -884
  50. package/src/store.ts +52 -0
  51. package/src/utils.ts +14 -72
  52. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -33
  53. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  54. package/build/cjs/node_modules/@babel/runtime/helpers/esm/extends.js +0 -33
  55. package/build/cjs/node_modules/@babel/runtime/helpers/esm/extends.js.map +0 -1
  56. package/build/cjs/node_modules/history/index.js +0 -815
  57. package/build/cjs/node_modules/history/index.js.map +0 -1
  58. package/build/cjs/node_modules/tiny-invariant/dist/esm/tiny-invariant.js +0 -30
  59. package/build/cjs/node_modules/tiny-invariant/dist/esm/tiny-invariant.js.map +0 -1
  60. package/build/cjs/packages/router-core/src/path.js.map +0 -1
  61. package/build/cjs/packages/router-core/src/qss.js.map +0 -1
  62. package/build/cjs/packages/router-core/src/route.js +0 -161
  63. package/build/cjs/packages/router-core/src/route.js.map +0 -1
  64. package/build/cjs/packages/router-core/src/routeConfig.js.map +0 -1
  65. package/build/cjs/packages/router-core/src/routeMatch.js +0 -266
  66. package/build/cjs/packages/router-core/src/routeMatch.js.map +0 -1
  67. package/build/cjs/packages/router-core/src/router.js +0 -797
  68. package/build/cjs/packages/router-core/src/router.js.map +0 -1
  69. package/build/cjs/packages/router-core/src/searchParams.js.map +0 -1
  70. package/build/cjs/packages/router-core/src/utils.js +0 -118
  71. package/build/cjs/packages/router-core/src/utils.js.map +0 -1
@@ -1,266 +0,0 @@
1
- /**
2
- * router-core
3
- *
4
- * Copyright (c) TanStack
5
- *
6
- * This source code is licensed under the MIT license found in the
7
- * LICENSE.md file in the root directory of this source tree.
8
- *
9
- * @license MIT
10
- */
11
- 'use strict';
12
-
13
- Object.defineProperty(exports, '__esModule', { value: true });
14
-
15
- var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
16
- var utils = require('./utils.js');
17
-
18
- const elementTypes = ['element', 'errorElement', 'catchElement', 'pendingElement'];
19
- function createRouteMatch(router, route, opts) {
20
- const routeMatch = _rollupPluginBabelHelpers["extends"]({}, route, opts, {
21
- router,
22
- routeSearch: {},
23
- search: {},
24
- childMatches: [],
25
- status: 'idle',
26
- routeLoaderData: {},
27
- loaderData: {},
28
- isPending: false,
29
- isFetching: false,
30
- isInvalid: false,
31
- invalidAt: Infinity,
32
- getIsInvalid: () => {
33
- const now = Date.now();
34
- return routeMatch.isInvalid || routeMatch.invalidAt < now;
35
- },
36
- __: {
37
- abortController: new AbortController(),
38
- latestId: '',
39
- resolve: () => {},
40
- notify: () => {
41
- routeMatch.__.resolve();
42
-
43
- routeMatch.router.notify();
44
- },
45
- startPending: () => {
46
- var _routeMatch$options$p, _routeMatch$options$p2;
47
-
48
- const pendingMs = (_routeMatch$options$p = routeMatch.options.pendingMs) != null ? _routeMatch$options$p : router.options.defaultPendingMs;
49
- const pendingMinMs = (_routeMatch$options$p2 = routeMatch.options.pendingMinMs) != null ? _routeMatch$options$p2 : router.options.defaultPendingMinMs;
50
-
51
- if (routeMatch.__.pendingTimeout || routeMatch.status !== 'loading' || typeof pendingMs === 'undefined') {
52
- return;
53
- }
54
-
55
- routeMatch.__.pendingTimeout = setTimeout(() => {
56
- routeMatch.isPending = true;
57
-
58
- routeMatch.__.resolve();
59
-
60
- if (typeof pendingMinMs !== 'undefined') {
61
- routeMatch.__.pendingMinPromise = new Promise(r => routeMatch.__.pendingMinTimeout = setTimeout(r, pendingMinMs));
62
- }
63
- }, pendingMs);
64
- },
65
- cancelPending: () => {
66
- routeMatch.isPending = false;
67
- clearTimeout(routeMatch.__.pendingTimeout);
68
- clearTimeout(routeMatch.__.pendingMinTimeout);
69
- delete routeMatch.__.pendingMinPromise;
70
- },
71
- // setParentMatch: (parentMatch?: RouteMatch) => {
72
- // routeMatch.parentMatch = parentMatch
73
- // },
74
- // addChildMatch: (childMatch: RouteMatch) => {
75
- // if (
76
- // routeMatch.childMatches.find((d) => d.matchId === childMatch.matchId)
77
- // ) {
78
- // return
79
- // }
80
- // routeMatch.childMatches.push(childMatch)
81
- // },
82
- validate: () => {
83
- var _routeMatch$parentMat, _routeMatch$parentMat2;
84
-
85
- // Validate the search params and stabilize them
86
- const parentSearch = (_routeMatch$parentMat = (_routeMatch$parentMat2 = routeMatch.parentMatch) == null ? void 0 : _routeMatch$parentMat2.search) != null ? _routeMatch$parentMat : router.location.search;
87
-
88
- try {
89
- const prevSearch = routeMatch.routeSearch;
90
- const validator = typeof routeMatch.options.validateSearch === 'object' ? routeMatch.options.validateSearch.parse : routeMatch.options.validateSearch;
91
- let nextSearch = utils.replaceEqualDeep(prevSearch, validator == null ? void 0 : validator(parentSearch)); // Invalidate route matches when search param stability changes
92
-
93
- if (prevSearch !== nextSearch) {
94
- routeMatch.isInvalid = true;
95
- }
96
-
97
- routeMatch.routeSearch = nextSearch;
98
- routeMatch.search = utils.replaceEqualDeep(parentSearch, _rollupPluginBabelHelpers["extends"]({}, parentSearch, nextSearch));
99
- } catch (err) {
100
- console.error(err);
101
- const error = new Error('Invalid search params found', {
102
- cause: err
103
- });
104
- error.code = 'INVALID_SEARCH_PARAMS';
105
- routeMatch.status = 'error';
106
- routeMatch.error = error; // Do not proceed with loading the route
107
-
108
- return;
109
- }
110
- }
111
- },
112
- cancel: () => {
113
- var _routeMatch$__$abortC;
114
-
115
- (_routeMatch$__$abortC = routeMatch.__.abortController) == null ? void 0 : _routeMatch$__$abortC.abort();
116
-
117
- routeMatch.__.cancelPending();
118
- },
119
- invalidate: () => {
120
- routeMatch.isInvalid = true;
121
- },
122
- hasLoaders: () => {
123
- return !!(route.options.loader || elementTypes.some(d => typeof route.options[d] === 'function'));
124
- },
125
- load: async loaderOpts => {
126
- const now = Date.now();
127
- const minMaxAge = loaderOpts != null && loaderOpts.preload ? Math.max(loaderOpts == null ? void 0 : loaderOpts.maxAge, loaderOpts == null ? void 0 : loaderOpts.gcMaxAge) : 0; // If this is a preload, add it to the preload cache
128
-
129
- if (loaderOpts != null && loaderOpts.preload && minMaxAge > 0) {
130
- // If the match is currently active, don't preload it
131
- if (router.state.matches.find(d => d.matchId === routeMatch.matchId)) {
132
- return;
133
- }
134
-
135
- router.matchCache[routeMatch.matchId] = {
136
- gc: now + loaderOpts.gcMaxAge,
137
- match: routeMatch
138
- };
139
- } // If the match is invalid, errored or idle, trigger it to load
140
-
141
-
142
- if (routeMatch.status === 'success' && routeMatch.getIsInvalid() || routeMatch.status === 'error' || routeMatch.status === 'idle') {
143
- const maxAge = loaderOpts != null && loaderOpts.preload ? loaderOpts == null ? void 0 : loaderOpts.maxAge : undefined;
144
- routeMatch.fetch({
145
- maxAge
146
- });
147
- }
148
- },
149
- fetch: async opts => {
150
- const id = '' + Date.now() + Math.random();
151
- routeMatch.__.latestId = id; // If the match was in an error state, set it
152
- // to a loading state again. Otherwise, keep it
153
- // as loading or resolved
154
-
155
- if (routeMatch.status === 'idle') {
156
- routeMatch.status = 'loading';
157
- } // We started loading the route, so it's no longer invalid
158
-
159
-
160
- routeMatch.isInvalid = false;
161
- routeMatch.__.loadPromise = new Promise(async resolve => {
162
- // We are now fetching, even if it's in the background of a
163
- // resolved state
164
- routeMatch.isFetching = true;
165
- routeMatch.__.resolve = resolve;
166
-
167
- const loaderPromise = (async () => {
168
- // Load the elements and data in parallel
169
- routeMatch.__.elementsPromise = (async () => {
170
- // then run all element and data loaders in parallel
171
- // For each element type, potentially load it asynchronously
172
- await Promise.all(elementTypes.map(async type => {
173
- const routeElement = routeMatch.options[type];
174
-
175
- if (routeMatch.__[type]) {
176
- return;
177
- }
178
-
179
- routeMatch.__[type] = await router.options.createElement(routeElement);
180
- }));
181
- })();
182
-
183
- routeMatch.__.dataPromise = Promise.resolve().then(async () => {
184
- try {
185
- var _ref, _ref2, _opts$maxAge;
186
-
187
- if (routeMatch.options.loader) {
188
- const data = await routeMatch.options.loader({
189
- params: routeMatch.params,
190
- search: routeMatch.routeSearch,
191
- signal: routeMatch.__.abortController.signal
192
- });
193
-
194
- if (id !== routeMatch.__.latestId) {
195
- return routeMatch.__.loaderPromise;
196
- }
197
-
198
- routeMatch.routeLoaderData = utils.replaceEqualDeep(routeMatch.routeLoaderData, data);
199
- }
200
-
201
- routeMatch.error = undefined;
202
- routeMatch.status = 'success';
203
- routeMatch.updatedAt = Date.now();
204
- routeMatch.invalidAt = routeMatch.updatedAt + ((_ref = (_ref2 = (_opts$maxAge = opts == null ? void 0 : opts.maxAge) != null ? _opts$maxAge : routeMatch.options.loaderMaxAge) != null ? _ref2 : router.options.defaultLoaderMaxAge) != null ? _ref : 0);
205
- } catch (err) {
206
- if (id !== routeMatch.__.latestId) {
207
- return routeMatch.__.loaderPromise;
208
- }
209
-
210
- if (process.env.NODE_ENV !== 'production') {
211
- console.error(err);
212
- }
213
-
214
- routeMatch.error = err;
215
- routeMatch.status = 'error';
216
- routeMatch.updatedAt = Date.now();
217
- }
218
- });
219
-
220
- try {
221
- await Promise.all([routeMatch.__.elementsPromise, routeMatch.__.dataPromise]);
222
-
223
- if (id !== routeMatch.__.latestId) {
224
- return routeMatch.__.loaderPromise;
225
- }
226
-
227
- if (routeMatch.__.pendingMinPromise) {
228
- await routeMatch.__.pendingMinPromise;
229
- delete routeMatch.__.pendingMinPromise;
230
- }
231
- } finally {
232
- if (id !== routeMatch.__.latestId) {
233
- return routeMatch.__.loaderPromise;
234
- }
235
-
236
- routeMatch.__.cancelPending();
237
-
238
- routeMatch.isPending = false;
239
- routeMatch.isFetching = false;
240
-
241
- routeMatch.__.notify();
242
- }
243
- })();
244
-
245
- routeMatch.__.loaderPromise = loaderPromise;
246
- await loaderPromise;
247
-
248
- if (id !== routeMatch.__.latestId) {
249
- return routeMatch.__.loaderPromise;
250
- }
251
-
252
- delete routeMatch.__.loaderPromise;
253
- });
254
- return await routeMatch.__.loadPromise;
255
- }
256
- });
257
-
258
- if (!routeMatch.hasLoaders()) {
259
- routeMatch.status = 'success';
260
- }
261
-
262
- return routeMatch;
263
- }
264
-
265
- exports.createRouteMatch = createRouteMatch;
266
- //# sourceMappingURL=routeMatch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routeMatch.js","sources":["../../../../../src/routeMatch.ts"],"sourcesContent":["import { GetFrameworkGeneric } from './frameworks'\nimport { Route } from './route'\nimport { AnyPathParams } from './routeConfig'\nimport {\n AnyAllRouteInfo,\n AnyRouteInfo,\n DefaultAllRouteInfo,\n RouteInfo,\n} from './routeInfo'\nimport { Router } from './router'\nimport { replaceEqualDeep, Timeout } from './utils'\n\nexport interface RouteMatch<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n> extends Route<TAllRouteInfo, TRouteInfo> {\n matchId: string\n pathname: string\n params: TRouteInfo['params']\n parentMatch?: RouteMatch\n childMatches: RouteMatch[]\n routeSearch: TRouteInfo['searchSchema']\n search: TRouteInfo['fullSearchSchema']\n status: 'idle' | 'loading' | 'success' | 'error'\n updatedAt?: number\n error?: unknown\n isInvalid: boolean\n getIsInvalid: () => boolean\n loaderData: TRouteInfo['loaderData']\n routeLoaderData: TRouteInfo['routeLoaderData']\n isFetching: boolean\n isPending: boolean\n invalidAt: number\n __: {\n element?: GetFrameworkGeneric<'Element'> // , TRouteInfo['loaderData']>\n errorElement?: GetFrameworkGeneric<'Element'> // , TRouteInfo['loaderData']>\n catchElement?: GetFrameworkGeneric<'Element'> // , TRouteInfo['loaderData']>\n pendingElement?: GetFrameworkGeneric<'Element'> // , TRouteInfo['loaderData']>\n loadPromise?: Promise<void>\n loaderPromise?: Promise<void>\n elementsPromise?: Promise<void>\n dataPromise?: Promise<void>\n pendingTimeout?: Timeout\n pendingMinTimeout?: Timeout\n pendingMinPromise?: Promise<void>\n onExit?:\n | void\n | ((matchContext: {\n params: TRouteInfo['allParams']\n search: TRouteInfo['fullSearchSchema']\n }) => void)\n abortController: AbortController\n latestId: string\n // setParentMatch: (parentMatch: RouteMatch) => void\n // addChildMatch: (childMatch: RouteMatch) => void\n validate: () => void\n startPending: () => void\n cancelPending: () => void\n notify: () => void\n resolve: () => void\n }\n cancel: () => void\n load: (\n loaderOpts?: { withPending?: boolean } & (\n | { preload: true; maxAge: number; gcMaxAge: number }\n | { preload?: false; maxAge?: never; gcMaxAge?: never }\n ),\n ) => Promise<TRouteInfo['routeLoaderData']>\n fetch: (opts?: { maxAge?: number }) => Promise<TRouteInfo['routeLoaderData']>\n invalidate: () => void\n hasLoaders: () => boolean\n}\n\nconst elementTypes = [\n 'element',\n 'errorElement',\n 'catchElement',\n 'pendingElement',\n] as const\n\nexport function createRouteMatch<\n TAllRouteInfo extends AnyAllRouteInfo = DefaultAllRouteInfo,\n TRouteInfo extends AnyRouteInfo = RouteInfo,\n>(\n router: Router<any, any>,\n route: Route<TAllRouteInfo, TRouteInfo>,\n opts: {\n matchId: string\n params: TRouteInfo['allParams']\n pathname: string\n },\n): RouteMatch<TAllRouteInfo, TRouteInfo> {\n const routeMatch: RouteMatch<TAllRouteInfo, TRouteInfo> = {\n ...route,\n ...opts,\n router,\n routeSearch: {},\n search: {},\n childMatches: [],\n status: 'idle',\n routeLoaderData: {} as TRouteInfo['routeLoaderData'],\n loaderData: {} as TRouteInfo['loaderData'],\n isPending: false,\n isFetching: false,\n isInvalid: false,\n invalidAt: Infinity,\n getIsInvalid: () => {\n const now = Date.now()\n return routeMatch.isInvalid || routeMatch.invalidAt < now\n },\n __: {\n abortController: new AbortController(),\n latestId: '',\n resolve: () => {},\n notify: () => {\n routeMatch.__.resolve()\n routeMatch.router.notify()\n },\n startPending: () => {\n const pendingMs =\n routeMatch.options.pendingMs ?? router.options.defaultPendingMs\n const pendingMinMs =\n routeMatch.options.pendingMinMs ?? router.options.defaultPendingMinMs\n\n if (\n routeMatch.__.pendingTimeout ||\n routeMatch.status !== 'loading' ||\n typeof pendingMs === 'undefined'\n ) {\n return\n }\n\n routeMatch.__.pendingTimeout = setTimeout(() => {\n routeMatch.isPending = true\n routeMatch.__.resolve()\n if (typeof pendingMinMs !== 'undefined') {\n routeMatch.__.pendingMinPromise = new Promise(\n (r) =>\n (routeMatch.__.pendingMinTimeout = setTimeout(r, pendingMinMs)),\n )\n }\n }, pendingMs)\n },\n cancelPending: () => {\n routeMatch.isPending = false\n clearTimeout(routeMatch.__.pendingTimeout)\n clearTimeout(routeMatch.__.pendingMinTimeout)\n delete routeMatch.__.pendingMinPromise\n },\n // setParentMatch: (parentMatch?: RouteMatch) => {\n // routeMatch.parentMatch = parentMatch\n // },\n // addChildMatch: (childMatch: RouteMatch) => {\n // if (\n // routeMatch.childMatches.find((d) => d.matchId === childMatch.matchId)\n // ) {\n // return\n // }\n\n // routeMatch.childMatches.push(childMatch)\n // },\n validate: () => {\n // Validate the search params and stabilize them\n const parentSearch =\n routeMatch.parentMatch?.search ?? router.location.search\n\n try {\n const prevSearch = routeMatch.routeSearch\n\n const validator =\n typeof routeMatch.options.validateSearch === 'object'\n ? routeMatch.options.validateSearch.parse\n : routeMatch.options.validateSearch\n\n let nextSearch = replaceEqualDeep(\n prevSearch,\n validator?.(parentSearch),\n )\n\n // Invalidate route matches when search param stability changes\n if (prevSearch !== nextSearch) {\n routeMatch.isInvalid = true\n }\n\n routeMatch.routeSearch = nextSearch\n\n routeMatch.search = replaceEqualDeep(parentSearch, {\n ...parentSearch,\n ...nextSearch,\n })\n } catch (err: any) {\n console.error(err)\n const error = new (Error as any)('Invalid search params found', {\n cause: err,\n })\n error.code = 'INVALID_SEARCH_PARAMS'\n routeMatch.status = 'error'\n routeMatch.error = error\n // Do not proceed with loading the route\n return\n }\n },\n },\n cancel: () => {\n routeMatch.__.abortController?.abort()\n routeMatch.__.cancelPending()\n },\n invalidate: () => {\n routeMatch.isInvalid = true\n },\n hasLoaders: () => {\n return !!(\n route.options.loader ||\n elementTypes.some((d) => typeof route.options[d] === 'function')\n )\n },\n load: async (loaderOpts) => {\n const now = Date.now()\n const minMaxAge = loaderOpts?.preload\n ? Math.max(loaderOpts?.maxAge, loaderOpts?.gcMaxAge)\n : 0\n\n // If this is a preload, add it to the preload cache\n if (loaderOpts?.preload && minMaxAge > 0) {\n // If the match is currently active, don't preload it\n if (\n router.state.matches.find((d) => d.matchId === routeMatch.matchId)\n ) {\n return\n }\n\n router.matchCache[routeMatch.matchId] = {\n gc: now + loaderOpts.gcMaxAge,\n match: routeMatch as RouteMatch<any, any>,\n }\n }\n\n // If the match is invalid, errored or idle, trigger it to load\n if (\n (routeMatch.status === 'success' && routeMatch.getIsInvalid()) ||\n routeMatch.status === 'error' ||\n routeMatch.status === 'idle'\n ) {\n const maxAge = loaderOpts?.preload ? loaderOpts?.maxAge : undefined\n\n routeMatch.fetch({ maxAge })\n }\n },\n fetch: async (opts) => {\n const id = '' + Date.now() + Math.random()\n routeMatch.__.latestId = id\n\n // If the match was in an error state, set it\n // to a loading state again. Otherwise, keep it\n // as loading or resolved\n if (routeMatch.status === 'idle') {\n routeMatch.status = 'loading'\n }\n\n // We started loading the route, so it's no longer invalid\n routeMatch.isInvalid = false\n\n routeMatch.__.loadPromise = new Promise(async (resolve) => {\n // We are now fetching, even if it's in the background of a\n // resolved state\n routeMatch.isFetching = true\n routeMatch.__.resolve = resolve as () => void\n\n const loaderPromise = (async () => {\n // Load the elements and data in parallel\n\n routeMatch.__.elementsPromise = (async () => {\n // then run all element and data loaders in parallel\n // For each element type, potentially load it asynchronously\n\n await Promise.all(\n elementTypes.map(async (type) => {\n const routeElement = routeMatch.options[type]\n\n if (routeMatch.__[type]) {\n return\n }\n\n routeMatch.__[type] = await router.options.createElement!(\n routeElement,\n )\n }),\n )\n })()\n\n routeMatch.__.dataPromise = Promise.resolve().then(async () => {\n try {\n if (routeMatch.options.loader) {\n const data = await routeMatch.options.loader({\n params: routeMatch.params,\n search: routeMatch.routeSearch,\n signal: routeMatch.__.abortController.signal,\n })\n if (id !== routeMatch.__.latestId) {\n return routeMatch.__.loaderPromise\n }\n\n routeMatch.routeLoaderData = replaceEqualDeep(\n routeMatch.routeLoaderData,\n data,\n )\n }\n\n routeMatch.error = undefined\n routeMatch.status = 'success'\n routeMatch.updatedAt = Date.now()\n routeMatch.invalidAt =\n routeMatch.updatedAt +\n (opts?.maxAge ??\n routeMatch.options.loaderMaxAge ??\n router.options.defaultLoaderMaxAge ??\n 0)\n } catch (err) {\n if (id !== routeMatch.__.latestId) {\n return routeMatch.__.loaderPromise\n }\n\n if (process.env.NODE_ENV !== 'production') {\n console.error(err)\n }\n routeMatch.error = err\n routeMatch.status = 'error'\n routeMatch.updatedAt = Date.now()\n }\n })\n\n try {\n await Promise.all([\n routeMatch.__.elementsPromise,\n routeMatch.__.dataPromise,\n ])\n if (id !== routeMatch.__.latestId) {\n return routeMatch.__.loaderPromise\n }\n\n if (routeMatch.__.pendingMinPromise) {\n await routeMatch.__.pendingMinPromise\n delete routeMatch.__.pendingMinPromise\n }\n } finally {\n if (id !== routeMatch.__.latestId) {\n return routeMatch.__.loaderPromise\n }\n routeMatch.__.cancelPending()\n routeMatch.isPending = false\n routeMatch.isFetching = false\n routeMatch.__.notify()\n }\n })()\n\n routeMatch.__.loaderPromise = loaderPromise\n await loaderPromise\n\n if (id !== routeMatch.__.latestId) {\n return routeMatch.__.loaderPromise\n }\n delete routeMatch.__.loaderPromise\n })\n\n return await routeMatch.__.loadPromise\n },\n }\n\n if (!routeMatch.hasLoaders()) {\n routeMatch.status = 'success'\n }\n\n return routeMatch\n}\n"],"names":["elementTypes","createRouteMatch","router","route","opts","routeMatch","_extends","routeSearch","search","childMatches","status","routeLoaderData","loaderData","isPending","isFetching","isInvalid","invalidAt","Infinity","getIsInvalid","now","Date","__","abortController","AbortController","latestId","resolve","notify","startPending","pendingMs","options","defaultPendingMs","pendingMinMs","defaultPendingMinMs","pendingTimeout","setTimeout","pendingMinPromise","Promise","r","pendingMinTimeout","cancelPending","clearTimeout","validate","parentSearch","parentMatch","location","prevSearch","validator","validateSearch","parse","nextSearch","replaceEqualDeep","err","console","error","Error","cause","code","cancel","abort","invalidate","hasLoaders","loader","some","d","load","loaderOpts","minMaxAge","preload","Math","max","maxAge","gcMaxAge","state","matches","find","matchId","matchCache","gc","match","undefined","fetch","id","random","loadPromise","loaderPromise","elementsPromise","all","map","type","routeElement","createElement","dataPromise","then","data","params","signal","updatedAt","loaderMaxAge","defaultLoaderMaxAge","process","env","NODE_ENV"],"mappings":"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"}