@tanstack/router-core 1.171.24 → 1.171.26
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/dist/cjs/load-client.cjs +299 -389
- package/dist/cjs/load-client.cjs.map +1 -1
- package/dist/cjs/load-client.d.cts +18 -18
- package/dist/cjs/load-server.cjs +45 -32
- package/dist/cjs/load-server.cjs.map +1 -1
- package/dist/cjs/new-process-route-tree.cjs +1 -1
- package/dist/cjs/new-process-route-tree.cjs.map +1 -1
- package/dist/cjs/path.cjs +10 -4
- package/dist/cjs/path.cjs.map +1 -1
- package/dist/cjs/redirect.cjs +1 -1
- package/dist/cjs/redirect.cjs.map +1 -1
- package/dist/cjs/redirect.d.cts +1 -1
- package/dist/cjs/router.cjs +34 -30
- package/dist/cjs/router.cjs.map +1 -1
- package/dist/cjs/router.d.cts +3 -5
- package/dist/esm/load-client.d.ts +18 -18
- package/dist/esm/load-client.js +299 -389
- package/dist/esm/load-client.js.map +1 -1
- package/dist/esm/load-server.js +45 -32
- package/dist/esm/load-server.js.map +1 -1
- package/dist/esm/new-process-route-tree.js +1 -1
- package/dist/esm/new-process-route-tree.js.map +1 -1
- package/dist/esm/path.js +10 -4
- package/dist/esm/path.js.map +1 -1
- package/dist/esm/redirect.d.ts +1 -1
- package/dist/esm/redirect.js +1 -1
- package/dist/esm/redirect.js.map +1 -1
- package/dist/esm/router.d.ts +3 -5
- package/dist/esm/router.js +35 -31
- package/dist/esm/router.js.map +1 -1
- package/package.json +8 -2
- package/src/load-client.ts +535 -659
- package/src/load-server.ts +97 -35
- package/src/new-process-route-tree.ts +1 -1
- package/src/path.ts +20 -6
- package/src/redirect.ts +2 -18
- package/src/router.ts +54 -78
|
@@ -37,10 +37,17 @@ declare const ERROR = 1;
|
|
|
37
37
|
declare const NOT_FOUND = 2;
|
|
38
38
|
declare const REDIRECTED = 3;
|
|
39
39
|
declare const CANCELED = 4;
|
|
40
|
-
type
|
|
40
|
+
type RedirectOutcome = [
|
|
41
|
+
kind: typeof REDIRECTED,
|
|
42
|
+
redirect: AnyRedirect,
|
|
43
|
+
location?: ParsedLocation
|
|
44
|
+
];
|
|
45
|
+
type NonRedirectOutcome = [kind: typeof SUCCESS, data: unknown] | [kind: typeof ERROR, error: unknown] | [kind: typeof NOT_FOUND, error: NotFoundError] | [kind: typeof CANCELED];
|
|
46
|
+
type RawLoaderOutcome = NonRedirectOutcome | [kind: typeof REDIRECTED, redirect: AnyRedirect];
|
|
47
|
+
type LoaderOutcome = NonRedirectOutcome | RedirectOutcome;
|
|
41
48
|
type IndexedOutcome = [index: number, outcome: LoaderOutcome, boundary?: number];
|
|
42
49
|
export type LoaderFlight = [
|
|
43
|
-
outcome: Promise<
|
|
50
|
+
outcome: Promise<RawLoaderOutcome>,
|
|
44
51
|
controller: AbortController,
|
|
45
52
|
leases: number
|
|
46
53
|
];
|
|
@@ -66,31 +73,25 @@ export type LoadTransaction = [
|
|
|
66
73
|
startedAt: number,
|
|
67
74
|
done: Promise<void>,
|
|
68
75
|
/**
|
|
69
|
-
* Dev-only HMR refresh mode. Presence
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
* with the transaction that owns the publication.
|
|
76
|
+
* Dev-only HMR refresh mode. Presence forces successor rematerialization
|
|
77
|
+
* until this publication is acknowledged. The optional hydration handoff is
|
|
78
|
+
* retired when the refresh publishes.
|
|
73
79
|
*/
|
|
74
|
-
refresh?: [
|
|
75
|
-
presentation: Array<AnyRouteMatch>,
|
|
76
|
-
handoff: NonNullable<AnyRouter['_handoff']> | undefined,
|
|
77
|
-
rollback?: () => boolean
|
|
78
|
-
]
|
|
80
|
+
refresh?: [handoff: NonNullable<AnyRouter['_handoff']> | undefined]
|
|
79
81
|
];
|
|
80
82
|
export type PendingSession = [
|
|
81
|
-
|
|
82
|
-
|
|
83
|
+
generation: LoadTransaction,
|
|
84
|
+
boundaryId: string,
|
|
83
85
|
/** Pending reveal time until acknowledged, then minimum-visible-until time. */
|
|
84
86
|
deadline: number,
|
|
85
|
-
|
|
86
|
-
ack?: Promise<boolean
|
|
87
|
+
revealTimer?: ReturnType<typeof setTimeout>,
|
|
88
|
+
ack?: Promise<boolean> | true,
|
|
87
89
|
component?: unknown
|
|
88
90
|
];
|
|
89
91
|
type CoordinatorRouter = AnyRouter & {
|
|
90
92
|
/** Active speculative lanes retained for cancellation, invalidation, and cache clearing. */
|
|
91
93
|
_preloads?: Map<AbortController, Array<AnyRouteMatch>>;
|
|
92
94
|
_refreshNextLoad?: boolean;
|
|
93
|
-
_cancelTransition?: () => void;
|
|
94
95
|
};
|
|
95
96
|
type BackgroundLoaderTask = [
|
|
96
97
|
index: number,
|
|
@@ -100,14 +101,13 @@ type BackgroundLoaderTask = [
|
|
|
100
101
|
];
|
|
101
102
|
export declare function waitFor<T>(value: T | PromiseLike<T>, signal: AbortSignal): Promise<T>;
|
|
102
103
|
export declare function getRoute(router: AnyRouter, match: WorkMatch): AnyRoute;
|
|
103
|
-
export declare function navigateFrom(router: AnyRouter, location: ParsedLocation): (opts: any) => Promise<void>;
|
|
104
104
|
export declare function cacheLoaderMatch(router: CoordinatorRouter, match: SettledMatch, planned: AnyRouteMatch | undefined): void;
|
|
105
105
|
export declare function projectLane(router: AnyRouter, lane: ReducedLane, signal: AbortSignal, start?: number, end?: number): Promise<ProjectedLane>;
|
|
106
106
|
export declare function loadClientRoute(router: CoordinatorRouter, opts?: {
|
|
107
107
|
sync?: boolean;
|
|
108
108
|
}): Promise<void>;
|
|
109
109
|
export declare function refreshClientRoute(router: CoordinatorRouter): Promise<void>;
|
|
110
|
-
export declare function preloadClientRoute(router: CoordinatorRouter, opts: any, redirects?: number): Promise<Array<AnyRouteMatch> | undefined>;
|
|
110
|
+
export declare function preloadClientRoute(router: CoordinatorRouter, opts: any, redirects?: number, builtLocation?: ParsedLocation): Promise<Array<AnyRouteMatch> | undefined>;
|
|
111
111
|
declare global {
|
|
112
112
|
interface Window {
|
|
113
113
|
[GLOBAL_TSR]?: TsrSsrGlobal;
|
package/dist/cjs/load-server.cjs
CHANGED
|
@@ -19,15 +19,30 @@ function normalize(value, rejected) {
|
|
|
19
19
|
if (rejected && typeof value?.then === "function") value = new Error("A Promise was thrown", { cause: value });
|
|
20
20
|
return rejected ? [ERROR, value] : [SUCCESS, value];
|
|
21
21
|
}
|
|
22
|
-
function normalizeError(route, cause) {
|
|
22
|
+
function normalizeError(router, lane, route, cause, signal, notify = true) {
|
|
23
|
+
signal?.throwIfAborted();
|
|
23
24
|
let outcome = normalize(cause, true);
|
|
24
|
-
if (outcome[0] !== ERROR) return outcome;
|
|
25
|
+
if (outcome[0] !== ERROR) return materializeRedirect(router, lane, route, outcome, signal, notify);
|
|
25
26
|
try {
|
|
26
27
|
route.options.onError?.(outcome[1]);
|
|
27
28
|
} catch (onErrorCause) {
|
|
28
29
|
outcome = normalize(onErrorCause, true);
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
+
signal?.throwIfAborted();
|
|
32
|
+
return materializeRedirect(router, lane, route, outcome, signal, notify);
|
|
33
|
+
}
|
|
34
|
+
function materializeRedirect(router, lane, route, outcome, signal, notify = true) {
|
|
35
|
+
if (outcome[0] !== REDIRECTED) return outcome;
|
|
36
|
+
signal?.throwIfAborted();
|
|
37
|
+
try {
|
|
38
|
+
outcome[1].options._fromLocation = lane.location;
|
|
39
|
+
router.resolveRedirect(outcome[1]);
|
|
40
|
+
signal?.throwIfAborted();
|
|
41
|
+
return outcome;
|
|
42
|
+
} catch (cause) {
|
|
43
|
+
signal?.throwIfAborted();
|
|
44
|
+
return notify ? normalizeError(router, lane, route, cause, signal, false) : [ERROR, cause];
|
|
45
|
+
}
|
|
31
46
|
}
|
|
32
47
|
function maybe(value, cause) {
|
|
33
48
|
if (cause !== void 0) return {
|
|
@@ -96,7 +111,7 @@ async function contextualize(router, lane, signal) {
|
|
|
96
111
|
match.ssr = await resolveSsr(router, lane, index);
|
|
97
112
|
} catch (cause) {
|
|
98
113
|
signal?.throwIfAborted();
|
|
99
|
-
failure = [index, stampNotFound(match, normalizeError(route, cause))];
|
|
114
|
+
failure = [index, stampNotFound(match, normalizeError(router, lane, route, cause, signal))];
|
|
100
115
|
end = index;
|
|
101
116
|
}
|
|
102
117
|
signal?.throwIfAborted();
|
|
@@ -128,7 +143,7 @@ async function contextualize(router, lane, signal) {
|
|
|
128
143
|
match.context = context;
|
|
129
144
|
} catch (cause) {
|
|
130
145
|
signal?.throwIfAborted();
|
|
131
|
-
if (!failure) failure = [index, stampNotFound(match, normalizeError(route, cause))];
|
|
146
|
+
if (!failure) failure = [index, stampNotFound(match, normalizeError(router, lane, route, cause, signal))];
|
|
132
147
|
end = index;
|
|
133
148
|
break;
|
|
134
149
|
}
|
|
@@ -136,7 +151,7 @@ async function contextualize(router, lane, signal) {
|
|
|
136
151
|
if (failure) break;
|
|
137
152
|
const validationError = match.paramsError ?? match.searchError;
|
|
138
153
|
if (validationError !== void 0) {
|
|
139
|
-
failure = [index, stampNotFound(match, normalizeError(route, validationError))];
|
|
154
|
+
failure = [index, stampNotFound(match, normalizeError(router, lane, route, validationError, signal))];
|
|
140
155
|
end = index;
|
|
141
156
|
break;
|
|
142
157
|
}
|
|
@@ -163,7 +178,7 @@ async function contextualize(router, lane, signal) {
|
|
|
163
178
|
try {
|
|
164
179
|
const beforeLoadContext = await route.options.beforeLoad(options);
|
|
165
180
|
signal?.throwIfAborted();
|
|
166
|
-
const outcome = stampNotFound(match, normalize(beforeLoadContext, false));
|
|
181
|
+
const outcome = stampNotFound(match, materializeRedirect(router, lane, route, normalize(beforeLoadContext, false), signal));
|
|
167
182
|
if (outcome[0] !== SUCCESS) {
|
|
168
183
|
failure = [index, outcome];
|
|
169
184
|
end = index;
|
|
@@ -177,7 +192,7 @@ async function contextualize(router, lane, signal) {
|
|
|
177
192
|
parentContext = match.context;
|
|
178
193
|
} catch (cause) {
|
|
179
194
|
signal?.throwIfAborted();
|
|
180
|
-
failure = [index, stampNotFound(match, normalizeError(route, cause))];
|
|
195
|
+
failure = [index, stampNotFound(match, normalizeError(router, lane, route, cause, signal))];
|
|
181
196
|
end = index;
|
|
182
197
|
break;
|
|
183
198
|
}
|
|
@@ -214,8 +229,9 @@ function createLoaderTask(router, lane, index, tasks, signal) {
|
|
|
214
229
|
const loader = typeof routeLoader === "function" ? routeLoader : routeLoader?.handler;
|
|
215
230
|
if (!loader) outcome = Promise.resolve([SUCCESS, void 0]);
|
|
216
231
|
else outcome = Promise.resolve().then(() => loader(getLoaderContext(router, lane, match, route, index, tasks))).then((result) => normalize(result, false), (cause) => normalize(cause, true)).then((result) => {
|
|
217
|
-
if (
|
|
218
|
-
if (result[0] === ERROR) result = normalizeError(route, result[1]);
|
|
232
|
+
if (signal?.aborted || match.abortController.signal.reason === lane) return [SKIPPED];
|
|
233
|
+
if (result[0] === ERROR) result = normalizeError(router, lane, route, result[1], signal);
|
|
234
|
+
else result = materializeRedirect(router, lane, route, result, signal);
|
|
219
235
|
return stampNotFound(match, result);
|
|
220
236
|
});
|
|
221
237
|
}
|
|
@@ -248,9 +264,9 @@ async function getNotFoundBoundary(router, matches, indexed, signal, fallback =
|
|
|
248
264
|
if (index < 0) index = 0;
|
|
249
265
|
for (let candidate = index; candidate >= 0; candidate--) {
|
|
250
266
|
const route = getRoute(router, matches[candidate]);
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
await loading;
|
|
267
|
+
try {
|
|
268
|
+
const loading = require_load_client.loadRouteChunk(route, false);
|
|
269
|
+
if (loading) await loading;
|
|
254
270
|
} catch {
|
|
255
271
|
signal?.throwIfAborted();
|
|
256
272
|
}
|
|
@@ -262,13 +278,6 @@ async function getNotFoundBoundary(router, matches, indexed, signal, fallback =
|
|
|
262
278
|
function abortMatches(matches, start = 0, reason) {
|
|
263
279
|
for (let index = start; index < matches.length; index++) matches[index].abortController.abort(reason);
|
|
264
280
|
}
|
|
265
|
-
function resolveServerRedirect(router, location, value) {
|
|
266
|
-
value.options._fromLocation = location;
|
|
267
|
-
return {
|
|
268
|
-
type: "redirect",
|
|
269
|
-
redirect: router.resolveRedirect(value)
|
|
270
|
-
};
|
|
271
|
-
}
|
|
272
281
|
async function applyFailure(router, lane, indexed, signal) {
|
|
273
282
|
if (!indexed) {
|
|
274
283
|
const boundary = lane.matches.findIndex((match) => match._notFound);
|
|
@@ -330,14 +339,14 @@ async function loadNormalChunks(router, lane, end, signal) {
|
|
|
330
339
|
signal?.throwIfAborted();
|
|
331
340
|
}, (cause) => {
|
|
332
341
|
signal?.throwIfAborted();
|
|
333
|
-
return [index, stampNotFound(match, normalizeError(route, cause))];
|
|
342
|
+
return [index, stampNotFound(match, normalizeError(router, lane, route, cause, signal))];
|
|
334
343
|
});
|
|
335
344
|
chunk.catch(() => {});
|
|
336
345
|
chunks.push(chunk);
|
|
337
346
|
}
|
|
338
347
|
} catch (cause) {
|
|
339
348
|
signal?.throwIfAborted();
|
|
340
|
-
chunks.push([index, stampNotFound(match, normalizeError(route, cause))]);
|
|
349
|
+
chunks.push([index, stampNotFound(match, normalizeError(router, lane, route, cause, signal))]);
|
|
341
350
|
}
|
|
342
351
|
}
|
|
343
352
|
for (const chunk of chunks) {
|
|
@@ -449,7 +458,10 @@ async function executeServerLane(router, location, matchedMatches, signal) {
|
|
|
449
458
|
signal?.throwIfAborted();
|
|
450
459
|
if (control?.[1][0] === REDIRECTED) {
|
|
451
460
|
abortMatches(lane.matches, 0, lane);
|
|
452
|
-
return
|
|
461
|
+
return {
|
|
462
|
+
type: "redirect",
|
|
463
|
+
redirect: control[1][1]
|
|
464
|
+
};
|
|
453
465
|
}
|
|
454
466
|
let failure = lane.failure ?? loaderFailure;
|
|
455
467
|
const plannedBoundary = lane.matches.findIndex((match) => match._notFound);
|
|
@@ -472,7 +484,10 @@ async function executeServerLane(router, location, matchedMatches, signal) {
|
|
|
472
484
|
if (requiredFailure) {
|
|
473
485
|
if (requiredFailure[1][0] === REDIRECTED) {
|
|
474
486
|
abortMatches(lane.matches);
|
|
475
|
-
return
|
|
487
|
+
return {
|
|
488
|
+
type: "redirect",
|
|
489
|
+
redirect: requiredFailure[1][1]
|
|
490
|
+
};
|
|
476
491
|
}
|
|
477
492
|
failure = requiredFailure;
|
|
478
493
|
}
|
|
@@ -519,13 +534,7 @@ async function loadServerRoute(router, opts) {
|
|
|
519
534
|
state: true,
|
|
520
535
|
_includeValidateSearch: true
|
|
521
536
|
});
|
|
522
|
-
if (next.publicHref !== canonical.publicHref) {
|
|
523
|
-
const href = canonical.publicHref || "/";
|
|
524
|
-
throw canonical.external ? require_redirect.redirect({ href }) : require_redirect.redirect({
|
|
525
|
-
href,
|
|
526
|
-
_builtLocation: canonical
|
|
527
|
-
});
|
|
528
|
-
}
|
|
537
|
+
if (next.publicHref !== canonical.publicHref) throw require_redirect.redirect({ href: canonical.publicHref || "/" });
|
|
529
538
|
const changeInfo = require_router.getLocationChangeInfo(next, router.stores.resolvedLocation.get());
|
|
530
539
|
router.emit({
|
|
531
540
|
type: "onBeforeNavigate",
|
|
@@ -541,7 +550,11 @@ async function loadServerRoute(router, opts) {
|
|
|
541
550
|
} catch (cause) {
|
|
542
551
|
opts?._signal?.throwIfAborted();
|
|
543
552
|
if (!require_redirect.isRedirect(cause)) throw cause;
|
|
544
|
-
|
|
553
|
+
cause.options._fromLocation = next;
|
|
554
|
+
result = {
|
|
555
|
+
type: "redirect",
|
|
556
|
+
redirect: router.resolveRedirect(cause)
|
|
557
|
+
};
|
|
545
558
|
}
|
|
546
559
|
router._serverResult = result;
|
|
547
560
|
router.batch(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-server.cjs","names":[],"sources":["../../src/load-server.ts"],"sourcesContent":["// Keep this filename free of a secondary extension so declaration generation\n// can rewrite relative imports for both ESM and CJS.\nimport { isNotFound } from './not-found'\nimport { isRedirect, redirect } from './redirect'\nimport { rootRouteId } from './root'\nimport { loadRouteChunk } from './load-client'\nimport { waitForReason } from './await-signal'\nimport { getLocationChangeInfo, runRouteLifecycle } from './router'\nimport type { ParsedLocation } from './location'\nimport type { AnyRouteMatch } from './Matches'\nimport type { NotFoundError } from './not-found'\nimport type {\n AnyRoute,\n BeforeLoadContextOptions,\n LoaderFnContext,\n RouteContextOptions,\n SsrContextOptions,\n} from './route'\nimport type { AnyRedirect } from './redirect'\nimport type { AnyRouter, SSROption } from './router'\n\ndeclare const serverLanePhase: unique symbol\n\ntype ServerLane<TPhase extends 'matched' | 'contextualized' | 'reduced'> = {\n readonly [serverLanePhase]: TPhase\n location: ParsedLocation\n matches: Array<AnyRouteMatch>\n}\n\ntype MatchedLane = ServerLane<'matched'>\n\ntype IndexedOutcome = [index: number, outcome: LoaderOutcome, boundary?: number]\n\ntype ContextualizedLane = ServerLane<'contextualized'> & {\n end: number\n failure?: IndexedOutcome\n}\n\ntype ReducedLane = ServerLane<'reduced'>\n\nconst SUCCESS = 0\nconst ERROR = 1\nconst NOT_FOUND = 2\nconst REDIRECTED = 3\nconst SKIPPED = 4\n\ntype LoaderOutcome =\n | [typeof SUCCESS, data: unknown]\n | [typeof ERROR, error: unknown]\n | [typeof NOT_FOUND, error: NotFoundError]\n | [typeof REDIRECTED, redirect: AnyRedirect]\n | [typeof SKIPPED]\n\ntype LoaderTask = {\n index: number\n outcome: Promise<LoaderOutcome>\n match: Promise<AnyRouteMatch>\n}\n\nexport type ServerLoadResult =\n | {\n type: 'render'\n status: 200 | 404 | 500\n matches: Array<AnyRouteMatch>\n }\n | { type: 'redirect'; redirect: AnyRedirect }\n\nfunction getRoute(router: AnyRouter, match: AnyRouteMatch): AnyRoute {\n return router.routesById[match.routeId]\n}\n\nfunction normalize(value: unknown, rejected: boolean): LoaderOutcome {\n if (isRedirect(value)) {\n return [REDIRECTED, value]\n }\n if (isNotFound(value)) {\n return [NOT_FOUND, value]\n }\n if (rejected && typeof (value as any)?.then === 'function') {\n value = new Error('A Promise was thrown', { cause: value })\n }\n return rejected ? [ERROR, value] : [SUCCESS, value]\n}\n\nfunction normalizeError(route: AnyRoute, cause: unknown): LoaderOutcome {\n let outcome = normalize(cause, true)\n if (outcome[0] !== ERROR) {\n return outcome\n }\n try {\n route.options.onError?.(outcome[1])\n } catch (onErrorCause) {\n outcome = normalize(onErrorCause, true)\n }\n return outcome\n}\n\nfunction maybe<TValue>(\n value: TValue,\n cause: unknown,\n): { status: 'success'; value: TValue } | { status: 'error'; error: unknown } {\n if (cause !== undefined) {\n return { status: 'error', error: cause }\n }\n return { status: 'success', value }\n}\n\nfunction navigateFrom(router: AnyRouter, location: ParsedLocation) {\n return (options: any) =>\n router.navigate({\n ...options,\n _fromLocation: location,\n })\n}\n\nfunction waitFor<T>(value: Promise<T>, signal?: AbortSignal): Promise<T> {\n return signal ? waitForReason(value, signal) : value\n}\n\nasync function resolveSsr(\n router: AnyRouter,\n lane: MatchedLane,\n index: number,\n): Promise<SSROption> {\n const match = lane.matches[index]!\n const route = getRoute(router, match)\n const parentSsr = lane.matches[index - 1]?.ssr\n\n if (router.isShell()) {\n return route.id === rootRouteId\n }\n if (parentSsr === false) {\n return false\n }\n\n const inherit = (value: SSROption): SSROption => {\n return value === true && parentSsr === 'data-only' ? 'data-only' : value\n }\n const defaultSsr = router.options.defaultSsr ?? true\n const inheritedDefault = inherit(defaultSsr)\n // A functional override can fail. Establish the inherited policy first so\n // the selected error boundary retains the route's actual renderability.\n match.ssr = inheritedDefault\n const option = route.options.ssr\n if (option === undefined) {\n return inheritedDefault\n }\n if (typeof option !== 'function') {\n return inherit(option)\n }\n\n const context: SsrContextOptions<any, any, any> = {\n search: maybe(match.search, match.searchError),\n params: maybe(match.params, match.paramsError),\n location: lane.location,\n matches: lane.matches.map((candidate) => ({\n index: candidate.index,\n pathname: candidate.pathname,\n fullPath: candidate.fullPath,\n staticData: candidate.staticData,\n id: candidate.id,\n routeId: candidate.routeId,\n search: maybe(candidate.search, candidate.searchError),\n params: maybe(candidate.params, candidate.paramsError),\n ssr: candidate.ssr,\n })),\n }\n return inherit((await option(context)) ?? defaultSsr)\n}\n\nfunction stampNotFound(\n match: AnyRouteMatch,\n outcome: LoaderOutcome,\n): LoaderOutcome {\n if (outcome[0] === NOT_FOUND && !outcome[1].routeId) {\n outcome[1].routeId = match.routeId\n }\n return outcome\n}\n\nasync function contextualize(\n router: AnyRouter,\n lane: MatchedLane,\n signal?: AbortSignal,\n): Promise<ContextualizedLane> {\n const globalBoundary = lane.matches.findIndex((match) => match._notFound)\n let end = globalBoundary < 0 ? lane.matches.length : globalBoundary + 1\n let failure: IndexedOutcome | undefined\n let parentContext: Record<string, unknown> = {\n ...(router.options.context ?? {}),\n }\n\n for (let index = 0; index < end; index++) {\n const match = lane.matches[index]!\n const route = getRoute(router, match)\n try {\n match.ssr = await resolveSsr(router, lane, index)\n } catch (cause) {\n signal?.throwIfAborted()\n failure = [index, stampNotFound(match, normalizeError(route, cause))]\n end = index\n }\n signal?.throwIfAborted()\n if (failure?.[1][0] === REDIRECTED) {\n break\n }\n\n match.__beforeLoadContext = undefined\n let context = parentContext\n try {\n let routeContext\n if (route.options.context) {\n const routeContextOptions: RouteContextOptions<\n any,\n any,\n any,\n any,\n any\n > = {\n deps: match.loaderDeps,\n params: match.params,\n context: parentContext,\n location: lane.location,\n navigate: navigateFrom(router, lane.location),\n buildLocation: router.buildLocation,\n cause: match.cause,\n abortController: match.abortController,\n preload: false,\n matches: lane.matches,\n routeId: route.id,\n }\n routeContext = route.options.context(routeContextOptions) ?? undefined\n }\n context = {\n ...parentContext,\n ...routeContext,\n }\n match.context = context\n } catch (cause) {\n signal?.throwIfAborted()\n if (!failure) {\n failure = [index, stampNotFound(match, normalizeError(route, cause))]\n }\n end = index\n break\n }\n signal?.throwIfAborted()\n if (failure) {\n break\n }\n const validationError = match.paramsError ?? match.searchError\n if (validationError !== undefined) {\n failure = [\n index,\n stampNotFound(match, normalizeError(route, validationError)),\n ]\n end = index\n break\n }\n signal?.throwIfAborted()\n\n if (match.ssr === false || !route.options.beforeLoad) {\n parentContext = context\n continue\n }\n\n const abortController = match.abortController\n const options: BeforeLoadContextOptions<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n > = {\n search: match.search,\n abortController,\n params: match.params,\n preload: false,\n context,\n location: lane.location,\n navigate: navigateFrom(router, lane.location),\n buildLocation: router.buildLocation,\n cause: match.cause,\n matches: lane.matches,\n routeId: route.id,\n ...router.options.additionalContext,\n }\n\n try {\n const beforeLoadContext = await route.options.beforeLoad(options)\n signal?.throwIfAborted()\n const outcome = stampNotFound(match, normalize(beforeLoadContext, false))\n if (outcome[0] !== SUCCESS) {\n failure = [index, outcome]\n end = index\n break\n }\n match.__beforeLoadContext = beforeLoadContext\n match.context = {\n ...context,\n ...beforeLoadContext,\n }\n parentContext = match.context\n } catch (cause) {\n signal?.throwIfAborted()\n failure = [index, stampNotFound(match, normalizeError(route, cause))]\n end = index\n break\n }\n }\n\n return {\n location: lane.location,\n matches: lane.matches,\n end,\n failure,\n } as ContextualizedLane\n}\n\nfunction getLoaderContext(\n router: AnyRouter,\n lane: ContextualizedLane,\n match: AnyRouteMatch,\n route: AnyRoute,\n index: number,\n tasks: Array<LoaderTask>,\n): LoaderFnContext {\n return {\n params: match.params,\n deps: match.loaderDeps,\n preload: false,\n parentMatchPromise: tasks[index - 1]?.match,\n abortController: match.abortController,\n context: match.context,\n location: lane.location,\n navigate: navigateFrom(router, lane.location),\n cause: match.cause,\n route,\n ...router.options.additionalContext,\n }\n}\n\nfunction createLoaderTask(\n router: AnyRouter,\n lane: ContextualizedLane,\n index: number,\n tasks: Array<LoaderTask>,\n signal?: AbortSignal,\n): LoaderTask {\n const match = lane.matches[index]!\n const route = getRoute(router, match)\n let outcome: Promise<LoaderOutcome>\n\n if (match.ssr === false) {\n outcome = Promise.resolve<LoaderOutcome>([SKIPPED])\n } else {\n const routeLoader = route.options.loader\n const loader =\n typeof routeLoader === 'function' ? routeLoader : routeLoader?.handler\n if (!loader) {\n outcome = Promise.resolve<LoaderOutcome>([SUCCESS, undefined])\n } else {\n outcome = Promise.resolve()\n .then(() =>\n loader(getLoaderContext(router, lane, match, route, index, tasks)),\n )\n .then(\n (result) => normalize(result, false),\n (cause) => normalize(cause, true),\n )\n .then((result): LoaderOutcome => {\n if (\n result[0] !== REDIRECTED &&\n (signal?.aborted || match.abortController.signal.reason === lane)\n ) {\n return [SKIPPED]\n }\n if (result[0] === ERROR) {\n result = normalizeError(route, result[1])\n }\n return stampNotFound(match, result)\n })\n }\n }\n\n const parentMatch = outcome.then((result) => {\n const snapshot = { ...match }\n if (result[0] === SUCCESS) {\n snapshot.loaderData = result[1]\n snapshot.status = 'success'\n snapshot.error = undefined\n snapshot.invalid = false\n snapshot.isFetching = false\n } else if (result[0] === ERROR) {\n snapshot.status = 'error'\n snapshot.error = result[1]\n } else if (result[0] === NOT_FOUND) {\n snapshot.status = 'notFound'\n snapshot.error = result[1]\n }\n return snapshot\n })\n\n return { index, outcome, match: parentMatch }\n}\n\nasync function getNotFoundBoundary(\n router: AnyRouter,\n matches: Array<AnyRouteMatch>,\n indexed: IndexedOutcome | undefined,\n signal?: AbortSignal,\n fallback = 0,\n): Promise<number> {\n const cause = indexed?.[1][1] as NotFoundError | undefined\n let index = cause?.routeId\n ? matches.findIndex((match) => match.routeId === cause.routeId)\n : (indexed?.[0] ?? matches.length - 1)\n if (index < 0) {\n index = 0\n }\n for (let candidate = index; candidate >= 0; candidate--) {\n const route = getRoute(router, matches[candidate]!)\n const loading = loadRouteChunk(route, false)\n if (loading) {\n try {\n await loading\n } catch {\n signal?.throwIfAborted()\n }\n }\n signal?.throwIfAborted()\n if (route.options.notFoundComponent) {\n return candidate\n }\n }\n return cause?.routeId ? index : fallback\n}\n\nfunction abortMatches(\n matches: Array<AnyRouteMatch>,\n start = 0,\n reason?: unknown,\n): void {\n for (let index = start; index < matches.length; index++) {\n matches[index]!.abortController.abort(reason)\n }\n}\n\nfunction resolveServerRedirect(\n router: AnyRouter,\n location: ParsedLocation,\n value: AnyRedirect,\n): ServerLoadResult {\n value.options._fromLocation = location\n return { type: 'redirect', redirect: router.resolveRedirect(value) }\n}\n\nasync function applyFailure(\n router: AnyRouter,\n lane: ContextualizedLane,\n indexed: IndexedOutcome | undefined,\n signal?: AbortSignal,\n): Promise<{ status: 200 | 404 | 500; boundary?: number; kind?: number }> {\n if (!indexed) {\n const boundary = lane.matches.findIndex((match) => match._notFound)\n if (boundary >= 0) {\n abortMatches(lane.matches, boundary + 1)\n return { status: 404, boundary, kind: NOT_FOUND }\n }\n return { status: 200 }\n }\n\n const [index, outcome] = indexed\n if (outcome[0] === ERROR) {\n const match = lane.matches[index]!\n match._notFound = undefined\n match.status = 'error'\n match.error = outcome[1]\n match.isFetching = false\n abortMatches(lane.matches, index + 1)\n return { status: 500, boundary: index, kind: ERROR }\n }\n\n const boundary =\n indexed[2] ??\n (await getNotFoundBoundary(router, lane.matches, indexed, signal))\n const match = lane.matches[boundary]!\n const cause = outcome[1] as NotFoundError\n cause.routeId = match.routeId\n match._notFound = undefined\n if (match.routeId === router.routeTree.id) {\n match.status = 'success'\n match._notFound = true\n match.error = cause\n } else {\n match.status = 'notFound'\n match.error = cause\n }\n match.isFetching = false\n abortMatches(lane.matches, boundary + 1)\n return { status: 404, boundary, kind: NOT_FOUND }\n}\n\nasync function loadNormalChunks(\n router: AnyRouter,\n lane: ContextualizedLane,\n end: number,\n signal?: AbortSignal,\n): Promise<IndexedOutcome | undefined> {\n const chunks: Array<IndexedOutcome | Promise<IndexedOutcome | undefined>> = []\n for (let index = 0; index < lane.matches.length; index++) {\n const match = lane.matches[index]!\n if (index >= end || match.ssr !== true || match.status !== 'success') {\n continue\n }\n const route = getRoute(router, match)\n try {\n const loading = loadRouteChunk(route)\n if (loading) {\n const chunk = loading.then(\n () => {\n signal?.throwIfAborted()\n return undefined\n },\n (cause) => {\n signal?.throwIfAborted()\n return [\n index,\n stampNotFound(match, normalizeError(route, cause)),\n ] as IndexedOutcome\n },\n )\n // Route-order reduction can return before later chunks settle.\n void chunk.catch(() => {})\n chunks.push(chunk)\n }\n } catch (cause) {\n signal?.throwIfAborted()\n chunks.push([index, stampNotFound(match, normalizeError(route, cause))])\n }\n }\n for (const chunk of chunks) {\n const indexed = Array.isArray(chunk) ? chunk : await chunk\n if (indexed) {\n return indexed\n }\n }\n return undefined\n}\n\nasync function projectLane(\n router: AnyRouter,\n lane: ReducedLane,\n signal?: AbortSignal,\n): Promise<void> {\n for (const match of lane.matches) {\n const routeOptions = getRoute(router, match).options\n if (routeOptions.head || routeOptions.scripts || routeOptions.headers) {\n const context = {\n ssr: router.options.ssr,\n matches: lane.matches,\n match,\n params: match.params,\n loaderData: match.loaderData,\n }\n try {\n const [head, scripts, headers] = await Promise.all([\n routeOptions.head?.(context),\n routeOptions.scripts?.(context),\n routeOptions.headers?.(context),\n ])\n signal?.throwIfAborted()\n match.meta = head?.meta\n match.links = head?.links\n match.headScripts = head?.scripts\n match.styles = head?.styles\n match.scripts = scripts\n match.headers = headers\n } catch (cause) {\n signal?.throwIfAborted()\n console.error(cause)\n }\n }\n if (match.ssr === false || match.status !== 'success' || match._notFound) {\n break\n }\n }\n}\n\nasync function executeServerLane(\n router: AnyRouter,\n location: ParsedLocation,\n matchedMatches: Array<AnyRouteMatch>,\n signal?: AbortSignal,\n): Promise<ServerLoadResult> {\n const matched = {\n location,\n matches: matchedMatches.map((match) => ({\n ...match,\n __beforeLoadContext: undefined,\n context: {},\n isFetching: false,\n abortController: new AbortController(),\n })),\n } as MatchedLane\n const abortLane = () => abortMatches(matched.matches, 0, signal?.reason)\n if (signal?.aborted) {\n abortLane()\n signal.throwIfAborted()\n }\n signal?.addEventListener('abort', abortLane, { once: true })\n\n try {\n const plannedGlobalBoundary = matched.matches.findIndex(\n (match) => match._notFound,\n )\n if (router.options.notFoundMode !== 'root' && plannedGlobalBoundary >= 0) {\n const boundary = await getNotFoundBoundary(\n router,\n matched.matches,\n undefined,\n signal,\n plannedGlobalBoundary,\n )\n if (boundary !== plannedGlobalBoundary) {\n matched.matches[plannedGlobalBoundary]!._notFound = undefined\n matched.matches[boundary]!._notFound = true\n }\n }\n const lane = await contextualize(router, matched, signal)\n signal?.throwIfAborted()\n\n let loaderEnd = lane.end\n if (lane.failure?.[1][0] === REDIRECTED) {\n loaderEnd = 0\n } else if (lane.failure?.[1][0] === NOT_FOUND) {\n lane.failure[2] = await getNotFoundBoundary(\n router,\n lane.matches,\n lane.failure,\n signal,\n )\n loaderEnd = Math.min(loaderEnd, lane.failure[2] + 1)\n }\n\n const tasks: Array<LoaderTask> = []\n for (let index = 0; index < loaderEnd; index++) {\n const task = createLoaderTask(router, lane, index, tasks, signal)\n tasks.push(task)\n }\n\n let loaderFailure: IndexedOutcome | undefined\n let control = lane.failure?.[1][0] === REDIRECTED ? lane.failure : undefined\n try {\n await Promise.all(\n tasks.map((task) =>\n task.outcome.then((loadedOutcome) => {\n const match = lane.matches[task.index]!\n const outcome = loadedOutcome\n if (outcome[0] === SUCCESS) {\n match.loaderData = outcome[1]\n match.status = 'success'\n match.error = undefined\n match.invalid = false\n match.isFetching = false\n match.updatedAt = Date.now()\n } else if (outcome[0] === REDIRECTED) {\n control = [task.index, outcome]\n throw control\n } else {\n // A selective-SSR skip must stay pending for hydration. Every\n // settled server attempt is otherwise renderable unless\n // reduction selects it as the lane's terminal failure.\n if (match.ssr !== false) {\n match.status = 'success'\n match.error = undefined\n match.invalid = true\n match.isFetching = false\n }\n if (!loaderFailure && outcome[0] !== SKIPPED) {\n loaderFailure = [task.index, outcome]\n }\n }\n }),\n ),\n )\n } catch (cause) {\n if (!Array.isArray(cause)) {\n throw cause\n }\n control = cause as IndexedOutcome\n }\n signal?.throwIfAborted()\n\n if (control?.[1][0] === REDIRECTED) {\n abortMatches(lane.matches, 0, lane)\n return resolveServerRedirect(router, location, control[1][1])\n }\n\n let failure = lane.failure ?? loaderFailure\n const plannedBoundary = lane.matches.findIndex((match) => match._notFound)\n let readinessEnd: number\n if (failure) {\n const outcomeEnd = (failure[2] ??=\n failure[1][0] === NOT_FOUND\n ? await getNotFoundBoundary(router, lane.matches, failure, signal)\n : failure[0])\n for (const task of tasks) {\n if (task.index >= outcomeEnd) {\n break\n }\n const outcome = await task.outcome\n // Presence means a loader previously succeeded, even with `undefined`.\n if (\n outcome[0] !== SUCCESS &&\n outcome[0] < REDIRECTED &&\n !('loaderData' in lane.matches[task.index]!)\n ) {\n failure = [task.index, outcome]\n failure[2] =\n outcome[0] === NOT_FOUND\n ? await getNotFoundBoundary(router, lane.matches, failure, signal)\n : task.index\n break\n }\n }\n readinessEnd = failure[2]\n } else {\n readinessEnd = plannedBoundary < 0 ? lane.matches.length : plannedBoundary\n }\n const requiredFailure = await loadNormalChunks(\n router,\n lane,\n readinessEnd,\n signal,\n )\n signal?.throwIfAborted()\n if (requiredFailure) {\n if (requiredFailure[1][0] === REDIRECTED) {\n abortMatches(lane.matches)\n return resolveServerRedirect(router, location, requiredFailure[1][1])\n }\n failure = requiredFailure\n }\n\n const terminal = await applyFailure(router, lane, failure, signal)\n if (terminal.boundary !== undefined) {\n const match = lane.matches[terminal.boundary]!\n if (match.ssr === true) {\n const route = getRoute(router, match)\n try {\n if (terminal.kind === ERROR) {\n await loadRouteChunk(route, 'errorComponent')\n } else if (match._notFound) {\n await Promise.all([\n loadRouteChunk(route),\n loadRouteChunk(route, 'notFoundComponent'),\n ])\n } else {\n await loadRouteChunk(route, 'notFoundComponent')\n }\n } catch {}\n signal?.throwIfAborted()\n }\n }\n\n signal?.throwIfAborted()\n await projectLane(\n router,\n {\n location: lane.location,\n matches: lane.matches,\n } as ReducedLane,\n signal,\n )\n signal?.throwIfAborted()\n router.serverSsr?.onCleanup(abortLane)\n return { type: 'render', status: terminal.status, matches: lane.matches }\n } finally {\n signal?.removeEventListener('abort', abortLane)\n }\n}\n\ntype ServerLoadOptions = NonNullable<Parameters<AnyRouter['load']>[0]> & {\n _signal?: AbortSignal\n}\n\nexport async function loadServerRoute(\n router: AnyRouter,\n opts?: ServerLoadOptions,\n): Promise<void> {\n router.updateLatestLocation()\n const next = router.latestLocation\n const previous = router._committed\n let result: ServerLoadResult\n try {\n const canonical = router.buildLocation({\n to: next.pathname,\n search: true,\n params: true,\n hash: true,\n state: true,\n _includeValidateSearch: true,\n })\n if (next.publicHref !== canonical.publicHref) {\n const href = canonical.publicHref || '/'\n throw canonical.external\n ? redirect({ href })\n : redirect({ href, _builtLocation: canonical })\n }\n\n const fromLocation = router.stores.resolvedLocation.get()\n const changeInfo = getLocationChangeInfo(next, fromLocation)\n router.emit({ type: 'onBeforeNavigate', ...changeInfo })\n router.emit({ type: 'onBeforeLoad', ...changeInfo })\n opts?._signal?.throwIfAborted()\n result = await waitFor(\n executeServerLane(router, next, router.matchRoutes(next), opts?._signal),\n opts?._signal,\n )\n opts?._signal?.throwIfAborted()\n } catch (cause) {\n opts?._signal?.throwIfAborted()\n if (!isRedirect(cause)) {\n throw cause\n }\n result = resolveServerRedirect(router, next, cause)\n }\n\n router._serverResult = result\n router.batch(() => {\n router.stores.location.set(next)\n router.stores.status.set('idle')\n if (result.type === 'render') {\n router.stores.setMatches(result.matches)\n router.stores.resolvedLocation.set(next)\n }\n })\n if (result.type === 'render') {\n router._committed = result.matches\n runRouteLifecycle(router, previous, result.matches)\n }\n router._commitPromise?.resolve()\n router._commitPromise = undefined\n}\n"],"mappings":";;;;;;;AAwCA,MAAM,UAAU;AAChB,MAAM,QAAQ;AACd,MAAM,YAAY;AAClB,MAAM,aAAa;AACnB,MAAM,UAAU;AAuBhB,SAAS,SAAS,QAAmB,OAAgC;CACnE,OAAO,OAAO,WAAW,MAAM;AACjC;AAEA,SAAS,UAAU,OAAgB,UAAkC;CACnE,IAAI,iBAAA,WAAW,KAAK,GAClB,OAAO,CAAC,YAAY,KAAK;CAE3B,IAAI,kBAAA,WAAW,KAAK,GAClB,OAAO,CAAC,WAAW,KAAK;CAE1B,IAAI,YAAY,OAAQ,OAAe,SAAS,YAC9C,QAAQ,IAAI,MAAM,wBAAwB,EAAE,OAAO,MAAM,CAAC;CAE5D,OAAO,WAAW,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,KAAK;AACpD;AAEA,SAAS,eAAe,OAAiB,OAA+B;CACtE,IAAI,UAAU,UAAU,OAAO,IAAI;CACnC,IAAI,QAAQ,OAAO,OACjB,OAAO;CAET,IAAI;EACF,MAAM,QAAQ,UAAU,QAAQ,EAAE;CACpC,SAAS,cAAc;EACrB,UAAU,UAAU,cAAc,IAAI;CACxC;CACA,OAAO;AACT;AAEA,SAAS,MACP,OACA,OAC4E;CAC5E,IAAI,UAAU,KAAA,GACZ,OAAO;EAAE,QAAQ;EAAS,OAAO;CAAM;CAEzC,OAAO;EAAE,QAAQ;EAAW;CAAM;AACpC;AAEA,SAAS,aAAa,QAAmB,UAA0B;CACjE,QAAQ,YACN,OAAO,SAAS;EACd,GAAG;EACH,eAAe;CACjB,CAAC;AACL;AAEA,SAAS,QAAW,OAAmB,QAAkC;CACvE,OAAO,SAAS,qBAAA,cAAc,OAAO,MAAM,IAAI;AACjD;AAEA,eAAe,WACb,QACA,MACA,OACoB;CACpB,MAAM,QAAQ,KAAK,QAAQ;CAC3B,MAAM,QAAQ,SAAS,QAAQ,KAAK;CACpC,MAAM,YAAY,KAAK,QAAQ,QAAQ,IAAI;CAE3C,IAAI,OAAO,QAAQ,GACjB,OAAO,MAAM,OAAO,aAAA;CAEtB,IAAI,cAAc,OAChB,OAAO;CAGT,MAAM,WAAW,UAAgC;EAC/C,OAAO,UAAU,QAAQ,cAAc,cAAc,cAAc;CACrE;CACA,MAAM,aAAa,OAAO,QAAQ,cAAc;CAChD,MAAM,mBAAmB,QAAQ,UAAU;CAG3C,MAAM,MAAM;CACZ,MAAM,SAAS,MAAM,QAAQ;CAC7B,IAAI,WAAW,KAAA,GACb,OAAO;CAET,IAAI,OAAO,WAAW,YACpB,OAAO,QAAQ,MAAM;CAmBvB,OAAO,QAAS,MAAM,OAAO;EAf3B,QAAQ,MAAM,MAAM,QAAQ,MAAM,WAAW;EAC7C,QAAQ,MAAM,MAAM,QAAQ,MAAM,WAAW;EAC7C,UAAU,KAAK;EACf,SAAS,KAAK,QAAQ,KAAK,eAAe;GACxC,OAAO,UAAU;GACjB,UAAU,UAAU;GACpB,UAAU,UAAU;GACpB,YAAY,UAAU;GACtB,IAAI,UAAU;GACd,SAAS,UAAU;GACnB,QAAQ,MAAM,UAAU,QAAQ,UAAU,WAAW;GACrD,QAAQ,MAAM,UAAU,QAAQ,UAAU,WAAW;GACrD,KAAK,UAAU;EACjB,EAAE;CAEyB,CAAO,KAAM,UAAU;AACtD;AAEA,SAAS,cACP,OACA,SACe;CACf,IAAI,QAAQ,OAAO,aAAa,CAAC,QAAQ,GAAG,SAC1C,QAAQ,GAAG,UAAU,MAAM;CAE7B,OAAO;AACT;AAEA,eAAe,cACb,QACA,MACA,QAC6B;CAC7B,MAAM,iBAAiB,KAAK,QAAQ,WAAW,UAAU,MAAM,SAAS;CACxE,IAAI,MAAM,iBAAiB,IAAI,KAAK,QAAQ,SAAS,iBAAiB;CACtE,IAAI;CACJ,IAAI,gBAAyC,EAC3C,GAAI,OAAO,QAAQ,WAAW,CAAC,EACjC;CAEA,KAAK,IAAI,QAAQ,GAAG,QAAQ,KAAK,SAAS;EACxC,MAAM,QAAQ,KAAK,QAAQ;EAC3B,MAAM,QAAQ,SAAS,QAAQ,KAAK;EACpC,IAAI;GACF,MAAM,MAAM,MAAM,WAAW,QAAQ,MAAM,KAAK;EAClD,SAAS,OAAO;GACd,QAAQ,eAAe;GACvB,UAAU,CAAC,OAAO,cAAc,OAAO,eAAe,OAAO,KAAK,CAAC,CAAC;GACpE,MAAM;EACR;EACA,QAAQ,eAAe;EACvB,IAAI,UAAU,GAAG,OAAO,YACtB;EAGF,MAAM,sBAAsB,KAAA;EAC5B,IAAI,UAAU;EACd,IAAI;GACF,IAAI;GACJ,IAAI,MAAM,QAAQ,SAAS;IACzB,MAAM,sBAMF;KACF,MAAM,MAAM;KACZ,QAAQ,MAAM;KACd,SAAS;KACT,UAAU,KAAK;KACf,UAAU,aAAa,QAAQ,KAAK,QAAQ;KAC5C,eAAe,OAAO;KACtB,OAAO,MAAM;KACb,iBAAiB,MAAM;KACvB,SAAS;KACT,SAAS,KAAK;KACd,SAAS,MAAM;IACjB;IACA,eAAe,MAAM,QAAQ,QAAQ,mBAAmB,KAAK,KAAA;GAC/D;GACA,UAAU;IACR,GAAG;IACH,GAAG;GACL;GACA,MAAM,UAAU;EAClB,SAAS,OAAO;GACd,QAAQ,eAAe;GACvB,IAAI,CAAC,SACH,UAAU,CAAC,OAAO,cAAc,OAAO,eAAe,OAAO,KAAK,CAAC,CAAC;GAEtE,MAAM;GACN;EACF;EACA,QAAQ,eAAe;EACvB,IAAI,SACF;EAEF,MAAM,kBAAkB,MAAM,eAAe,MAAM;EACnD,IAAI,oBAAoB,KAAA,GAAW;GACjC,UAAU,CACR,OACA,cAAc,OAAO,eAAe,OAAO,eAAe,CAAC,CAC7D;GACA,MAAM;GACN;EACF;EACA,QAAQ,eAAe;EAEvB,IAAI,MAAM,QAAQ,SAAS,CAAC,MAAM,QAAQ,YAAY;GACpD,gBAAgB;GAChB;EACF;EAEA,MAAM,kBAAkB,MAAM;EAC9B,MAAM,UAUF;GACF,QAAQ,MAAM;GACd;GACA,QAAQ,MAAM;GACd,SAAS;GACT;GACA,UAAU,KAAK;GACf,UAAU,aAAa,QAAQ,KAAK,QAAQ;GAC5C,eAAe,OAAO;GACtB,OAAO,MAAM;GACb,SAAS,KAAK;GACd,SAAS,MAAM;GACf,GAAG,OAAO,QAAQ;EACpB;EAEA,IAAI;GACF,MAAM,oBAAoB,MAAM,MAAM,QAAQ,WAAW,OAAO;GAChE,QAAQ,eAAe;GACvB,MAAM,UAAU,cAAc,OAAO,UAAU,mBAAmB,KAAK,CAAC;GACxE,IAAI,QAAQ,OAAO,SAAS;IAC1B,UAAU,CAAC,OAAO,OAAO;IACzB,MAAM;IACN;GACF;GACA,MAAM,sBAAsB;GAC5B,MAAM,UAAU;IACd,GAAG;IACH,GAAG;GACL;GACA,gBAAgB,MAAM;EACxB,SAAS,OAAO;GACd,QAAQ,eAAe;GACvB,UAAU,CAAC,OAAO,cAAc,OAAO,eAAe,OAAO,KAAK,CAAC,CAAC;GACpE,MAAM;GACN;EACF;CACF;CAEA,OAAO;EACL,UAAU,KAAK;EACf,SAAS,KAAK;EACd;EACA;CACF;AACF;AAEA,SAAS,iBACP,QACA,MACA,OACA,OACA,OACA,OACiB;CACjB,OAAO;EACL,QAAQ,MAAM;EACd,MAAM,MAAM;EACZ,SAAS;EACT,oBAAoB,MAAM,QAAQ,IAAI;EACtC,iBAAiB,MAAM;EACvB,SAAS,MAAM;EACf,UAAU,KAAK;EACf,UAAU,aAAa,QAAQ,KAAK,QAAQ;EAC5C,OAAO,MAAM;EACb;EACA,GAAG,OAAO,QAAQ;CACpB;AACF;AAEA,SAAS,iBACP,QACA,MACA,OACA,OACA,QACY;CACZ,MAAM,QAAQ,KAAK,QAAQ;CAC3B,MAAM,QAAQ,SAAS,QAAQ,KAAK;CACpC,IAAI;CAEJ,IAAI,MAAM,QAAQ,OAChB,UAAU,QAAQ,QAAuB,CAAC,OAAO,CAAC;MAC7C;EACL,MAAM,cAAc,MAAM,QAAQ;EAClC,MAAM,SACJ,OAAO,gBAAgB,aAAa,cAAc,aAAa;EACjE,IAAI,CAAC,QACH,UAAU,QAAQ,QAAuB,CAAC,SAAS,KAAA,CAAS,CAAC;OAE7D,UAAU,QAAQ,QAAQ,EACvB,WACC,OAAO,iBAAiB,QAAQ,MAAM,OAAO,OAAO,OAAO,KAAK,CAAC,CACnE,EACC,MACE,WAAW,UAAU,QAAQ,KAAK,IAClC,UAAU,UAAU,OAAO,IAAI,CAClC,EACC,MAAM,WAA0B;GAC/B,IACE,OAAO,OAAO,eACb,QAAQ,WAAW,MAAM,gBAAgB,OAAO,WAAW,OAE5D,OAAO,CAAC,OAAO;GAEjB,IAAI,OAAO,OAAO,OAChB,SAAS,eAAe,OAAO,OAAO,EAAE;GAE1C,OAAO,cAAc,OAAO,MAAM;EACpC,CAAC;CAEP;CAEA,MAAM,cAAc,QAAQ,MAAM,WAAW;EAC3C,MAAM,WAAW,EAAE,GAAG,MAAM;EAC5B,IAAI,OAAO,OAAO,SAAS;GACzB,SAAS,aAAa,OAAO;GAC7B,SAAS,SAAS;GAClB,SAAS,QAAQ,KAAA;GACjB,SAAS,UAAU;GACnB,SAAS,aAAa;EACxB,OAAO,IAAI,OAAO,OAAO,OAAO;GAC9B,SAAS,SAAS;GAClB,SAAS,QAAQ,OAAO;EAC1B,OAAO,IAAI,OAAO,OAAO,WAAW;GAClC,SAAS,SAAS;GAClB,SAAS,QAAQ,OAAO;EAC1B;EACA,OAAO;CACT,CAAC;CAED,OAAO;EAAE;EAAO;EAAS,OAAO;CAAY;AAC9C;AAEA,eAAe,oBACb,QACA,SACA,SACA,QACA,WAAW,GACM;CACjB,MAAM,QAAQ,UAAU,GAAG;CAC3B,IAAI,QAAQ,OAAO,UACf,QAAQ,WAAW,UAAU,MAAM,YAAY,MAAM,OAAO,IAC3D,UAAU,MAAM,QAAQ,SAAS;CACtC,IAAI,QAAQ,GACV,QAAQ;CAEV,KAAK,IAAI,YAAY,OAAO,aAAa,GAAG,aAAa;EACvD,MAAM,QAAQ,SAAS,QAAQ,QAAQ,UAAW;EAClD,MAAM,UAAU,oBAAA,eAAe,OAAO,KAAK;EAC3C,IAAI,SACF,IAAI;GACF,MAAM;EACR,QAAQ;GACN,QAAQ,eAAe;EACzB;EAEF,QAAQ,eAAe;EACvB,IAAI,MAAM,QAAQ,mBAChB,OAAO;CAEX;CACA,OAAO,OAAO,UAAU,QAAQ;AAClC;AAEA,SAAS,aACP,SACA,QAAQ,GACR,QACM;CACN,KAAK,IAAI,QAAQ,OAAO,QAAQ,QAAQ,QAAQ,SAC9C,QAAQ,OAAQ,gBAAgB,MAAM,MAAM;AAEhD;AAEA,SAAS,sBACP,QACA,UACA,OACkB;CAClB,MAAM,QAAQ,gBAAgB;CAC9B,OAAO;EAAE,MAAM;EAAY,UAAU,OAAO,gBAAgB,KAAK;CAAE;AACrE;AAEA,eAAe,aACb,QACA,MACA,SACA,QACwE;CACxE,IAAI,CAAC,SAAS;EACZ,MAAM,WAAW,KAAK,QAAQ,WAAW,UAAU,MAAM,SAAS;EAClE,IAAI,YAAY,GAAG;GACjB,aAAa,KAAK,SAAS,WAAW,CAAC;GACvC,OAAO;IAAE,QAAQ;IAAK;IAAU,MAAM;GAAU;EAClD;EACA,OAAO,EAAE,QAAQ,IAAI;CACvB;CAEA,MAAM,CAAC,OAAO,WAAW;CACzB,IAAI,QAAQ,OAAO,OAAO;EACxB,MAAM,QAAQ,KAAK,QAAQ;EAC3B,MAAM,YAAY,KAAA;EAClB,MAAM,SAAS;EACf,MAAM,QAAQ,QAAQ;EACtB,MAAM,aAAa;EACnB,aAAa,KAAK,SAAS,QAAQ,CAAC;EACpC,OAAO;GAAE,QAAQ;GAAK,UAAU;GAAO,MAAM;EAAM;CACrD;CAEA,MAAM,WACJ,QAAQ,MACP,MAAM,oBAAoB,QAAQ,KAAK,SAAS,SAAS,MAAM;CAClE,MAAM,QAAQ,KAAK,QAAQ;CAC3B,MAAM,QAAQ,QAAQ;CACtB,MAAM,UAAU,MAAM;CACtB,MAAM,YAAY,KAAA;CAClB,IAAI,MAAM,YAAY,OAAO,UAAU,IAAI;EACzC,MAAM,SAAS;EACf,MAAM,YAAY;EAClB,MAAM,QAAQ;CAChB,OAAO;EACL,MAAM,SAAS;EACf,MAAM,QAAQ;CAChB;CACA,MAAM,aAAa;CACnB,aAAa,KAAK,SAAS,WAAW,CAAC;CACvC,OAAO;EAAE,QAAQ;EAAK;EAAU,MAAM;CAAU;AAClD;AAEA,eAAe,iBACb,QACA,MACA,KACA,QACqC;CACrC,MAAM,SAAsE,CAAC;CAC7E,KAAK,IAAI,QAAQ,GAAG,QAAQ,KAAK,QAAQ,QAAQ,SAAS;EACxD,MAAM,QAAQ,KAAK,QAAQ;EAC3B,IAAI,SAAS,OAAO,MAAM,QAAQ,QAAQ,MAAM,WAAW,WACzD;EAEF,MAAM,QAAQ,SAAS,QAAQ,KAAK;EACpC,IAAI;GACF,MAAM,UAAU,oBAAA,eAAe,KAAK;GACpC,IAAI,SAAS;IACX,MAAM,QAAQ,QAAQ,WACd;KACJ,QAAQ,eAAe;IAEzB,IACC,UAAU;KACT,QAAQ,eAAe;KACvB,OAAO,CACL,OACA,cAAc,OAAO,eAAe,OAAO,KAAK,CAAC,CACnD;IACF,CACF;IAEA,MAAW,YAAY,CAAC,CAAC;IACzB,OAAO,KAAK,KAAK;GACnB;EACF,SAAS,OAAO;GACd,QAAQ,eAAe;GACvB,OAAO,KAAK,CAAC,OAAO,cAAc,OAAO,eAAe,OAAO,KAAK,CAAC,CAAC,CAAC;EACzE;CACF;CACA,KAAK,MAAM,SAAS,QAAQ;EAC1B,MAAM,UAAU,MAAM,QAAQ,KAAK,IAAI,QAAQ,MAAM;EACrD,IAAI,SACF,OAAO;CAEX;AAEF;AAEA,eAAe,YACb,QACA,MACA,QACe;CACf,KAAK,MAAM,SAAS,KAAK,SAAS;EAChC,MAAM,eAAe,SAAS,QAAQ,KAAK,EAAE;EAC7C,IAAI,aAAa,QAAQ,aAAa,WAAW,aAAa,SAAS;GACrE,MAAM,UAAU;IACd,KAAK,OAAO,QAAQ;IACpB,SAAS,KAAK;IACd;IACA,QAAQ,MAAM;IACd,YAAY,MAAM;GACpB;GACA,IAAI;IACF,MAAM,CAAC,MAAM,SAAS,WAAW,MAAM,QAAQ,IAAI;KACjD,aAAa,OAAO,OAAO;KAC3B,aAAa,UAAU,OAAO;KAC9B,aAAa,UAAU,OAAO;IAChC,CAAC;IACD,QAAQ,eAAe;IACvB,MAAM,OAAO,MAAM;IACnB,MAAM,QAAQ,MAAM;IACpB,MAAM,cAAc,MAAM;IAC1B,MAAM,SAAS,MAAM;IACrB,MAAM,UAAU;IAChB,MAAM,UAAU;GAClB,SAAS,OAAO;IACd,QAAQ,eAAe;IACvB,QAAQ,MAAM,KAAK;GACrB;EACF;EACA,IAAI,MAAM,QAAQ,SAAS,MAAM,WAAW,aAAa,MAAM,WAC7D;CAEJ;AACF;AAEA,eAAe,kBACb,QACA,UACA,gBACA,QAC2B;CAC3B,MAAM,UAAU;EACd;EACA,SAAS,eAAe,KAAK,WAAW;GACtC,GAAG;GACH,qBAAqB,KAAA;GACrB,SAAS,CAAC;GACV,YAAY;GACZ,iBAAiB,IAAI,gBAAgB;EACvC,EAAE;CACJ;CACA,MAAM,kBAAkB,aAAa,QAAQ,SAAS,GAAG,QAAQ,MAAM;CACvE,IAAI,QAAQ,SAAS;EACnB,UAAU;EACV,OAAO,eAAe;CACxB;CACA,QAAQ,iBAAiB,SAAS,WAAW,EAAE,MAAM,KAAK,CAAC;CAE3D,IAAI;EACF,MAAM,wBAAwB,QAAQ,QAAQ,WAC3C,UAAU,MAAM,SACnB;EACA,IAAI,OAAO,QAAQ,iBAAiB,UAAU,yBAAyB,GAAG;GACxE,MAAM,WAAW,MAAM,oBACrB,QACA,QAAQ,SACR,KAAA,GACA,QACA,qBACF;GACA,IAAI,aAAa,uBAAuB;IACtC,QAAQ,QAAQ,uBAAwB,YAAY,KAAA;IACpD,QAAQ,QAAQ,UAAW,YAAY;GACzC;EACF;EACA,MAAM,OAAO,MAAM,cAAc,QAAQ,SAAS,MAAM;EACxD,QAAQ,eAAe;EAEvB,IAAI,YAAY,KAAK;EACrB,IAAI,KAAK,UAAU,GAAG,OAAO,YAC3B,YAAY;OACP,IAAI,KAAK,UAAU,GAAG,OAAO,WAAW;GAC7C,KAAK,QAAQ,KAAK,MAAM,oBACtB,QACA,KAAK,SACL,KAAK,SACL,MACF;GACA,YAAY,KAAK,IAAI,WAAW,KAAK,QAAQ,KAAK,CAAC;EACrD;EAEA,MAAM,QAA2B,CAAC;EAClC,KAAK,IAAI,QAAQ,GAAG,QAAQ,WAAW,SAAS;GAC9C,MAAM,OAAO,iBAAiB,QAAQ,MAAM,OAAO,OAAO,MAAM;GAChE,MAAM,KAAK,IAAI;EACjB;EAEA,IAAI;EACJ,IAAI,UAAU,KAAK,UAAU,GAAG,OAAO,aAAa,KAAK,UAAU,KAAA;EACnE,IAAI;GACF,MAAM,QAAQ,IACZ,MAAM,KAAK,SACT,KAAK,QAAQ,MAAM,kBAAkB;IACnC,MAAM,QAAQ,KAAK,QAAQ,KAAK;IAChC,MAAM,UAAU;IAChB,IAAI,QAAQ,OAAO,SAAS;KAC1B,MAAM,aAAa,QAAQ;KAC3B,MAAM,SAAS;KACf,MAAM,QAAQ,KAAA;KACd,MAAM,UAAU;KAChB,MAAM,aAAa;KACnB,MAAM,YAAY,KAAK,IAAI;IAC7B,OAAO,IAAI,QAAQ,OAAO,YAAY;KACpC,UAAU,CAAC,KAAK,OAAO,OAAO;KAC9B,MAAM;IACR,OAAO;KAIL,IAAI,MAAM,QAAQ,OAAO;MACvB,MAAM,SAAS;MACf,MAAM,QAAQ,KAAA;MACd,MAAM,UAAU;MAChB,MAAM,aAAa;KACrB;KACA,IAAI,CAAC,iBAAiB,QAAQ,OAAO,SACnC,gBAAgB,CAAC,KAAK,OAAO,OAAO;IAExC;GACF,CAAC,CACH,CACF;EACF,SAAS,OAAO;GACd,IAAI,CAAC,MAAM,QAAQ,KAAK,GACtB,MAAM;GAER,UAAU;EACZ;EACA,QAAQ,eAAe;EAEvB,IAAI,UAAU,GAAG,OAAO,YAAY;GAClC,aAAa,KAAK,SAAS,GAAG,IAAI;GAClC,OAAO,sBAAsB,QAAQ,UAAU,QAAQ,GAAG,EAAE;EAC9D;EAEA,IAAI,UAAU,KAAK,WAAW;EAC9B,MAAM,kBAAkB,KAAK,QAAQ,WAAW,UAAU,MAAM,SAAS;EACzE,IAAI;EACJ,IAAI,SAAS;GACX,MAAM,aAAc,QAAQ,OAC1B,QAAQ,GAAG,OAAO,YACd,MAAM,oBAAoB,QAAQ,KAAK,SAAS,SAAS,MAAM,IAC/D,QAAQ;GACd,KAAK,MAAM,QAAQ,OAAO;IACxB,IAAI,KAAK,SAAS,YAChB;IAEF,MAAM,UAAU,MAAM,KAAK;IAE3B,IACE,QAAQ,OAAO,WACf,QAAQ,KAAK,cACb,EAAE,gBAAgB,KAAK,QAAQ,KAAK,SACpC;KACA,UAAU,CAAC,KAAK,OAAO,OAAO;KAC9B,QAAQ,KACN,QAAQ,OAAO,YACX,MAAM,oBAAoB,QAAQ,KAAK,SAAS,SAAS,MAAM,IAC/D,KAAK;KACX;IACF;GACF;GACA,eAAe,QAAQ;EACzB,OACE,eAAe,kBAAkB,IAAI,KAAK,QAAQ,SAAS;EAE7D,MAAM,kBAAkB,MAAM,iBAC5B,QACA,MACA,cACA,MACF;EACA,QAAQ,eAAe;EACvB,IAAI,iBAAiB;GACnB,IAAI,gBAAgB,GAAG,OAAO,YAAY;IACxC,aAAa,KAAK,OAAO;IACzB,OAAO,sBAAsB,QAAQ,UAAU,gBAAgB,GAAG,EAAE;GACtE;GACA,UAAU;EACZ;EAEA,MAAM,WAAW,MAAM,aAAa,QAAQ,MAAM,SAAS,MAAM;EACjE,IAAI,SAAS,aAAa,KAAA,GAAW;GACnC,MAAM,QAAQ,KAAK,QAAQ,SAAS;GACpC,IAAI,MAAM,QAAQ,MAAM;IACtB,MAAM,QAAQ,SAAS,QAAQ,KAAK;IACpC,IAAI;KACF,IAAI,SAAS,SAAS,OACpB,MAAM,oBAAA,eAAe,OAAO,gBAAgB;UACvC,IAAI,MAAM,WACf,MAAM,QAAQ,IAAI,CAChB,oBAAA,eAAe,KAAK,GACpB,oBAAA,eAAe,OAAO,mBAAmB,CAC3C,CAAC;UAED,MAAM,oBAAA,eAAe,OAAO,mBAAmB;IAEnD,QAAQ,CAAC;IACT,QAAQ,eAAe;GACzB;EACF;EAEA,QAAQ,eAAe;EACvB,MAAM,YACJ,QACA;GACE,UAAU,KAAK;GACf,SAAS,KAAK;EAChB,GACA,MACF;EACA,QAAQ,eAAe;EACvB,OAAO,WAAW,UAAU,SAAS;EACrC,OAAO;GAAE,MAAM;GAAU,QAAQ,SAAS;GAAQ,SAAS,KAAK;EAAQ;CAC1E,UAAU;EACR,QAAQ,oBAAoB,SAAS,SAAS;CAChD;AACF;AAMA,eAAsB,gBACpB,QACA,MACe;CACf,OAAO,qBAAqB;CAC5B,MAAM,OAAO,OAAO;CACpB,MAAM,WAAW,OAAO;CACxB,IAAI;CACJ,IAAI;EACF,MAAM,YAAY,OAAO,cAAc;GACrC,IAAI,KAAK;GACT,QAAQ;GACR,QAAQ;GACR,MAAM;GACN,OAAO;GACP,wBAAwB;EAC1B,CAAC;EACD,IAAI,KAAK,eAAe,UAAU,YAAY;GAC5C,MAAM,OAAO,UAAU,cAAc;GACrC,MAAM,UAAU,WACZ,iBAAA,SAAS,EAAE,KAAK,CAAC,IACjB,iBAAA,SAAS;IAAE;IAAM,gBAAgB;GAAU,CAAC;EAClD;EAGA,MAAM,aAAa,eAAA,sBAAsB,MADpB,OAAO,OAAO,iBAAiB,IACL,CAAY;EAC3D,OAAO,KAAK;GAAE,MAAM;GAAoB,GAAG;EAAW,CAAC;EACvD,OAAO,KAAK;GAAE,MAAM;GAAgB,GAAG;EAAW,CAAC;EACnD,MAAM,SAAS,eAAe;EAC9B,SAAS,MAAM,QACb,kBAAkB,QAAQ,MAAM,OAAO,YAAY,IAAI,GAAG,MAAM,OAAO,GACvE,MAAM,OACR;EACA,MAAM,SAAS,eAAe;CAChC,SAAS,OAAO;EACd,MAAM,SAAS,eAAe;EAC9B,IAAI,CAAC,iBAAA,WAAW,KAAK,GACnB,MAAM;EAER,SAAS,sBAAsB,QAAQ,MAAM,KAAK;CACpD;CAEA,OAAO,gBAAgB;CACvB,OAAO,YAAY;EACjB,OAAO,OAAO,SAAS,IAAI,IAAI;EAC/B,OAAO,OAAO,OAAO,IAAI,MAAM;EAC/B,IAAI,OAAO,SAAS,UAAU;GAC5B,OAAO,OAAO,WAAW,OAAO,OAAO;GACvC,OAAO,OAAO,iBAAiB,IAAI,IAAI;EACzC;CACF,CAAC;CACD,IAAI,OAAO,SAAS,UAAU;EAC5B,OAAO,aAAa,OAAO;EAC3B,eAAA,kBAAkB,QAAQ,UAAU,OAAO,OAAO;CACpD;CACA,OAAO,gBAAgB,QAAQ;CAC/B,OAAO,iBAAiB,KAAA;AAC1B"}
|
|
1
|
+
{"version":3,"file":"load-server.cjs","names":[],"sources":["../../src/load-server.ts"],"sourcesContent":["// Keep this filename free of a secondary extension so declaration generation\n// can rewrite relative imports for both ESM and CJS.\nimport { isNotFound } from './not-found'\nimport { isRedirect, redirect } from './redirect'\nimport { rootRouteId } from './root'\nimport { loadRouteChunk } from './load-client'\nimport { waitForReason } from './await-signal'\nimport { getLocationChangeInfo, runRouteLifecycle } from './router'\nimport type { ParsedLocation } from './location'\nimport type { AnyRouteMatch } from './Matches'\nimport type { NotFoundError } from './not-found'\nimport type {\n AnyRoute,\n BeforeLoadContextOptions,\n LoaderFnContext,\n RouteContextOptions,\n SsrContextOptions,\n} from './route'\nimport type { AnyRedirect } from './redirect'\nimport type { AnyRouter, SSROption } from './router'\n\ndeclare const serverLanePhase: unique symbol\n\ntype ServerLane<TPhase extends 'matched' | 'contextualized' | 'reduced'> = {\n readonly [serverLanePhase]: TPhase\n location: ParsedLocation\n matches: Array<AnyRouteMatch>\n}\n\ntype MatchedLane = ServerLane<'matched'>\n\ntype IndexedOutcome = [index: number, outcome: LoaderOutcome, boundary?: number]\n\ntype ContextualizedLane = ServerLane<'contextualized'> & {\n end: number\n failure?: IndexedOutcome\n}\n\ntype ReducedLane = ServerLane<'reduced'>\n\nconst SUCCESS = 0\nconst ERROR = 1\nconst NOT_FOUND = 2\nconst REDIRECTED = 3\nconst SKIPPED = 4\n\ntype LoaderOutcome =\n | [typeof SUCCESS, data: unknown]\n | [typeof ERROR, error: unknown]\n | [typeof NOT_FOUND, error: NotFoundError]\n | [typeof REDIRECTED, redirect: AnyRedirect]\n | [typeof SKIPPED]\n\ntype LoaderTask = {\n index: number\n outcome: Promise<LoaderOutcome>\n match: Promise<AnyRouteMatch>\n}\n\nexport type ServerLoadResult =\n | {\n type: 'render'\n status: 200 | 404 | 500\n matches: Array<AnyRouteMatch>\n }\n | { type: 'redirect'; redirect: AnyRedirect }\n\nfunction getRoute(router: AnyRouter, match: AnyRouteMatch): AnyRoute {\n return router.routesById[match.routeId]\n}\n\nfunction normalize(value: unknown, rejected: boolean): LoaderOutcome {\n if (isRedirect(value)) {\n return [REDIRECTED, value]\n }\n if (isNotFound(value)) {\n return [NOT_FOUND, value]\n }\n if (rejected && typeof (value as any)?.then === 'function') {\n value = new Error('A Promise was thrown', { cause: value })\n }\n return rejected ? [ERROR, value] : [SUCCESS, value]\n}\n\nfunction normalizeError(\n router: AnyRouter,\n lane: { location: ParsedLocation },\n route: AnyRoute,\n cause: unknown,\n signal?: AbortSignal,\n notify = true,\n): LoaderOutcome {\n signal?.throwIfAborted()\n let outcome = normalize(cause, true)\n if (outcome[0] !== ERROR) {\n return materializeRedirect(router, lane, route, outcome, signal, notify)\n }\n try {\n route.options.onError?.(outcome[1])\n } catch (onErrorCause) {\n outcome = normalize(onErrorCause, true)\n }\n signal?.throwIfAborted()\n return materializeRedirect(router, lane, route, outcome, signal, notify)\n}\n\nfunction materializeRedirect(\n router: AnyRouter,\n lane: { location: ParsedLocation },\n route: AnyRoute,\n outcome: LoaderOutcome,\n signal?: AbortSignal,\n notify = true,\n): LoaderOutcome {\n if (outcome[0] !== REDIRECTED) {\n return outcome\n }\n signal?.throwIfAborted()\n try {\n outcome[1].options._fromLocation = lane.location\n router.resolveRedirect(outcome[1])\n signal?.throwIfAborted()\n return outcome\n } catch (cause) {\n signal?.throwIfAborted()\n return notify\n ? normalizeError(router, lane, route, cause, signal, false)\n : [ERROR, cause]\n }\n}\n\nfunction maybe<TValue>(\n value: TValue,\n cause: unknown,\n): { status: 'success'; value: TValue } | { status: 'error'; error: unknown } {\n if (cause !== undefined) {\n return { status: 'error', error: cause }\n }\n return { status: 'success', value }\n}\n\nfunction navigateFrom(router: AnyRouter, location: ParsedLocation) {\n return (options: any) =>\n router.navigate({\n ...options,\n _fromLocation: location,\n })\n}\n\nfunction waitFor<T>(value: Promise<T>, signal?: AbortSignal): Promise<T> {\n return signal ? waitForReason(value, signal) : value\n}\n\nasync function resolveSsr(\n router: AnyRouter,\n lane: MatchedLane,\n index: number,\n): Promise<SSROption> {\n const match = lane.matches[index]!\n const route = getRoute(router, match)\n const parentSsr = lane.matches[index - 1]?.ssr\n\n if (router.isShell()) {\n return route.id === rootRouteId\n }\n if (parentSsr === false) {\n return false\n }\n\n const inherit = (value: SSROption): SSROption => {\n return value === true && parentSsr === 'data-only' ? 'data-only' : value\n }\n const defaultSsr = router.options.defaultSsr ?? true\n const inheritedDefault = inherit(defaultSsr)\n // A functional override can fail. Establish the inherited policy first so\n // the selected error boundary retains the route's actual renderability.\n match.ssr = inheritedDefault\n const option = route.options.ssr\n if (option === undefined) {\n return inheritedDefault\n }\n if (typeof option !== 'function') {\n return inherit(option)\n }\n\n const context: SsrContextOptions<any, any, any> = {\n search: maybe(match.search, match.searchError),\n params: maybe(match.params, match.paramsError),\n location: lane.location,\n matches: lane.matches.map((candidate) => ({\n index: candidate.index,\n pathname: candidate.pathname,\n fullPath: candidate.fullPath,\n staticData: candidate.staticData,\n id: candidate.id,\n routeId: candidate.routeId,\n search: maybe(candidate.search, candidate.searchError),\n params: maybe(candidate.params, candidate.paramsError),\n ssr: candidate.ssr,\n })),\n }\n return inherit((await option(context)) ?? defaultSsr)\n}\n\nfunction stampNotFound(\n match: AnyRouteMatch,\n outcome: LoaderOutcome,\n): LoaderOutcome {\n if (outcome[0] === NOT_FOUND && !outcome[1].routeId) {\n outcome[1].routeId = match.routeId\n }\n return outcome\n}\n\nasync function contextualize(\n router: AnyRouter,\n lane: MatchedLane,\n signal?: AbortSignal,\n): Promise<ContextualizedLane> {\n const globalBoundary = lane.matches.findIndex((match) => match._notFound)\n let end = globalBoundary < 0 ? lane.matches.length : globalBoundary + 1\n let failure: IndexedOutcome | undefined\n let parentContext: Record<string, unknown> = {\n ...(router.options.context ?? {}),\n }\n\n for (let index = 0; index < end; index++) {\n const match = lane.matches[index]!\n const route = getRoute(router, match)\n try {\n match.ssr = await resolveSsr(router, lane, index)\n } catch (cause) {\n signal?.throwIfAborted()\n failure = [\n index,\n stampNotFound(\n match,\n normalizeError(router, lane, route, cause, signal),\n ),\n ]\n end = index\n }\n signal?.throwIfAborted()\n if (failure?.[1][0] === REDIRECTED) {\n break\n }\n\n match.__beforeLoadContext = undefined\n let context = parentContext\n try {\n let routeContext\n if (route.options.context) {\n const routeContextOptions: RouteContextOptions<\n any,\n any,\n any,\n any,\n any\n > = {\n deps: match.loaderDeps,\n params: match.params,\n context: parentContext,\n location: lane.location,\n navigate: navigateFrom(router, lane.location),\n buildLocation: router.buildLocation,\n cause: match.cause,\n abortController: match.abortController,\n preload: false,\n matches: lane.matches,\n routeId: route.id,\n }\n routeContext = route.options.context(routeContextOptions) ?? undefined\n }\n context = {\n ...parentContext,\n ...routeContext,\n }\n match.context = context\n } catch (cause) {\n signal?.throwIfAborted()\n if (!failure) {\n failure = [\n index,\n stampNotFound(\n match,\n normalizeError(router, lane, route, cause, signal),\n ),\n ]\n }\n end = index\n break\n }\n signal?.throwIfAborted()\n if (failure) {\n break\n }\n const validationError = match.paramsError ?? match.searchError\n if (validationError !== undefined) {\n failure = [\n index,\n stampNotFound(\n match,\n normalizeError(router, lane, route, validationError, signal),\n ),\n ]\n end = index\n break\n }\n signal?.throwIfAborted()\n\n if (match.ssr === false || !route.options.beforeLoad) {\n parentContext = context\n continue\n }\n\n const abortController = match.abortController\n const options: BeforeLoadContextOptions<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n any\n > = {\n search: match.search,\n abortController,\n params: match.params,\n preload: false,\n context,\n location: lane.location,\n navigate: navigateFrom(router, lane.location),\n buildLocation: router.buildLocation,\n cause: match.cause,\n matches: lane.matches,\n routeId: route.id,\n ...router.options.additionalContext,\n }\n\n try {\n const beforeLoadContext = await route.options.beforeLoad(options)\n signal?.throwIfAborted()\n const outcome = stampNotFound(\n match,\n materializeRedirect(\n router,\n lane,\n route,\n normalize(beforeLoadContext, false),\n signal,\n ),\n )\n if (outcome[0] !== SUCCESS) {\n failure = [index, outcome]\n end = index\n break\n }\n match.__beforeLoadContext = beforeLoadContext\n match.context = {\n ...context,\n ...beforeLoadContext,\n }\n parentContext = match.context\n } catch (cause) {\n signal?.throwIfAborted()\n failure = [\n index,\n stampNotFound(\n match,\n normalizeError(router, lane, route, cause, signal),\n ),\n ]\n end = index\n break\n }\n }\n\n return {\n location: lane.location,\n matches: lane.matches,\n end,\n failure,\n } as ContextualizedLane\n}\n\nfunction getLoaderContext(\n router: AnyRouter,\n lane: ContextualizedLane,\n match: AnyRouteMatch,\n route: AnyRoute,\n index: number,\n tasks: Array<LoaderTask>,\n): LoaderFnContext {\n return {\n params: match.params,\n deps: match.loaderDeps,\n preload: false,\n parentMatchPromise: tasks[index - 1]?.match,\n abortController: match.abortController,\n context: match.context,\n location: lane.location,\n navigate: navigateFrom(router, lane.location),\n cause: match.cause,\n route,\n ...router.options.additionalContext,\n }\n}\n\nfunction createLoaderTask(\n router: AnyRouter,\n lane: ContextualizedLane,\n index: number,\n tasks: Array<LoaderTask>,\n signal?: AbortSignal,\n): LoaderTask {\n const match = lane.matches[index]!\n const route = getRoute(router, match)\n let outcome: Promise<LoaderOutcome>\n\n if (match.ssr === false) {\n outcome = Promise.resolve<LoaderOutcome>([SKIPPED])\n } else {\n const routeLoader = route.options.loader\n const loader =\n typeof routeLoader === 'function' ? routeLoader : routeLoader?.handler\n if (!loader) {\n outcome = Promise.resolve<LoaderOutcome>([SUCCESS, undefined])\n } else {\n outcome = Promise.resolve()\n .then(() =>\n loader(getLoaderContext(router, lane, match, route, index, tasks)),\n )\n .then(\n (result) => normalize(result, false),\n (cause) => normalize(cause, true),\n )\n .then((result): LoaderOutcome => {\n if (signal?.aborted || match.abortController.signal.reason === lane) {\n return [SKIPPED]\n }\n if (result[0] === ERROR) {\n result = normalizeError(router, lane, route, result[1], signal)\n } else {\n result = materializeRedirect(router, lane, route, result, signal)\n }\n return stampNotFound(match, result)\n })\n }\n }\n\n const parentMatch = outcome.then((result) => {\n const snapshot = { ...match }\n if (result[0] === SUCCESS) {\n snapshot.loaderData = result[1]\n snapshot.status = 'success'\n snapshot.error = undefined\n snapshot.invalid = false\n snapshot.isFetching = false\n } else if (result[0] === ERROR) {\n snapshot.status = 'error'\n snapshot.error = result[1]\n } else if (result[0] === NOT_FOUND) {\n snapshot.status = 'notFound'\n snapshot.error = result[1]\n }\n return snapshot\n })\n\n return { index, outcome, match: parentMatch }\n}\n\nasync function getNotFoundBoundary(\n router: AnyRouter,\n matches: Array<AnyRouteMatch>,\n indexed: IndexedOutcome | undefined,\n signal?: AbortSignal,\n fallback = 0,\n): Promise<number> {\n const cause = indexed?.[1][1] as NotFoundError | undefined\n let index = cause?.routeId\n ? matches.findIndex((match) => match.routeId === cause.routeId)\n : (indexed?.[0] ?? matches.length - 1)\n if (index < 0) {\n index = 0\n }\n for (let candidate = index; candidate >= 0; candidate--) {\n const route = getRoute(router, matches[candidate]!)\n try {\n const loading = loadRouteChunk(route, false)\n if (loading) {\n await loading\n }\n } catch {\n signal?.throwIfAborted()\n }\n signal?.throwIfAborted()\n if (route.options.notFoundComponent) {\n return candidate\n }\n }\n return cause?.routeId ? index : fallback\n}\n\nfunction abortMatches(\n matches: Array<AnyRouteMatch>,\n start = 0,\n reason?: unknown,\n): void {\n for (let index = start; index < matches.length; index++) {\n matches[index]!.abortController.abort(reason)\n }\n}\n\nasync function applyFailure(\n router: AnyRouter,\n lane: ContextualizedLane,\n indexed: IndexedOutcome | undefined,\n signal?: AbortSignal,\n): Promise<{ status: 200 | 404 | 500; boundary?: number; kind?: number }> {\n if (!indexed) {\n const boundary = lane.matches.findIndex((match) => match._notFound)\n if (boundary >= 0) {\n abortMatches(lane.matches, boundary + 1)\n return { status: 404, boundary, kind: NOT_FOUND }\n }\n return { status: 200 }\n }\n\n const [index, outcome] = indexed\n if (outcome[0] === ERROR) {\n const match = lane.matches[index]!\n match._notFound = undefined\n match.status = 'error'\n match.error = outcome[1]\n match.isFetching = false\n abortMatches(lane.matches, index + 1)\n return { status: 500, boundary: index, kind: ERROR }\n }\n\n const boundary =\n indexed[2] ??\n (await getNotFoundBoundary(router, lane.matches, indexed, signal))\n const match = lane.matches[boundary]!\n const cause = outcome[1] as NotFoundError\n cause.routeId = match.routeId\n match._notFound = undefined\n if (match.routeId === router.routeTree.id) {\n match.status = 'success'\n match._notFound = true\n match.error = cause\n } else {\n match.status = 'notFound'\n match.error = cause\n }\n match.isFetching = false\n abortMatches(lane.matches, boundary + 1)\n return { status: 404, boundary, kind: NOT_FOUND }\n}\n\nasync function loadNormalChunks(\n router: AnyRouter,\n lane: ContextualizedLane,\n end: number,\n signal?: AbortSignal,\n): Promise<IndexedOutcome | undefined> {\n const chunks: Array<IndexedOutcome | Promise<IndexedOutcome | undefined>> = []\n for (let index = 0; index < lane.matches.length; index++) {\n const match = lane.matches[index]!\n if (index >= end || match.ssr !== true || match.status !== 'success') {\n continue\n }\n const route = getRoute(router, match)\n try {\n const loading = loadRouteChunk(route)\n if (loading) {\n const chunk = loading.then(\n () => {\n signal?.throwIfAborted()\n return undefined\n },\n (cause) => {\n signal?.throwIfAborted()\n return [\n index,\n stampNotFound(\n match,\n normalizeError(router, lane, route, cause, signal),\n ),\n ] as IndexedOutcome\n },\n )\n // Route-order reduction can return before later chunks settle.\n void chunk.catch(() => {})\n chunks.push(chunk)\n }\n } catch (cause) {\n signal?.throwIfAborted()\n chunks.push([\n index,\n stampNotFound(\n match,\n normalizeError(router, lane, route, cause, signal),\n ),\n ])\n }\n }\n for (const chunk of chunks) {\n const indexed = Array.isArray(chunk) ? chunk : await chunk\n if (indexed) {\n return indexed\n }\n }\n return undefined\n}\n\nasync function projectLane(\n router: AnyRouter,\n lane: ReducedLane,\n signal?: AbortSignal,\n): Promise<void> {\n for (const match of lane.matches) {\n const routeOptions = getRoute(router, match).options\n if (routeOptions.head || routeOptions.scripts || routeOptions.headers) {\n const context = {\n ssr: router.options.ssr,\n matches: lane.matches,\n match,\n params: match.params,\n loaderData: match.loaderData,\n }\n try {\n const [head, scripts, headers] = await Promise.all([\n routeOptions.head?.(context),\n routeOptions.scripts?.(context),\n routeOptions.headers?.(context),\n ])\n signal?.throwIfAborted()\n match.meta = head?.meta\n match.links = head?.links\n match.headScripts = head?.scripts\n match.styles = head?.styles\n match.scripts = scripts\n match.headers = headers\n } catch (cause) {\n signal?.throwIfAborted()\n console.error(cause)\n }\n }\n if (match.ssr === false || match.status !== 'success' || match._notFound) {\n break\n }\n }\n}\n\nasync function executeServerLane(\n router: AnyRouter,\n location: ParsedLocation,\n matchedMatches: Array<AnyRouteMatch>,\n signal?: AbortSignal,\n): Promise<ServerLoadResult> {\n const matched = {\n location,\n matches: matchedMatches.map((match) => ({\n ...match,\n __beforeLoadContext: undefined,\n context: {},\n isFetching: false,\n abortController: new AbortController(),\n })),\n } as MatchedLane\n const abortLane = () => abortMatches(matched.matches, 0, signal?.reason)\n if (signal?.aborted) {\n abortLane()\n signal.throwIfAborted()\n }\n signal?.addEventListener('abort', abortLane, { once: true })\n\n try {\n const plannedGlobalBoundary = matched.matches.findIndex(\n (match) => match._notFound,\n )\n if (router.options.notFoundMode !== 'root' && plannedGlobalBoundary >= 0) {\n const boundary = await getNotFoundBoundary(\n router,\n matched.matches,\n undefined,\n signal,\n plannedGlobalBoundary,\n )\n if (boundary !== plannedGlobalBoundary) {\n matched.matches[plannedGlobalBoundary]!._notFound = undefined\n matched.matches[boundary]!._notFound = true\n }\n }\n const lane = await contextualize(router, matched, signal)\n signal?.throwIfAborted()\n\n let loaderEnd = lane.end\n if (lane.failure?.[1][0] === REDIRECTED) {\n loaderEnd = 0\n } else if (lane.failure?.[1][0] === NOT_FOUND) {\n lane.failure[2] = await getNotFoundBoundary(\n router,\n lane.matches,\n lane.failure,\n signal,\n )\n loaderEnd = Math.min(loaderEnd, lane.failure[2] + 1)\n }\n\n const tasks: Array<LoaderTask> = []\n for (let index = 0; index < loaderEnd; index++) {\n const task = createLoaderTask(router, lane, index, tasks, signal)\n tasks.push(task)\n }\n\n let loaderFailure: IndexedOutcome | undefined\n let control = lane.failure?.[1][0] === REDIRECTED ? lane.failure : undefined\n try {\n await Promise.all(\n tasks.map((task) =>\n task.outcome.then((loadedOutcome) => {\n const match = lane.matches[task.index]!\n const outcome = loadedOutcome\n if (outcome[0] === SUCCESS) {\n match.loaderData = outcome[1]\n match.status = 'success'\n match.error = undefined\n match.invalid = false\n match.isFetching = false\n match.updatedAt = Date.now()\n } else if (outcome[0] === REDIRECTED) {\n control = [task.index, outcome]\n throw control\n } else {\n // A selective-SSR skip must stay pending for hydration. Every\n // settled server attempt is otherwise renderable unless\n // reduction selects it as the lane's terminal failure.\n if (match.ssr !== false) {\n match.status = 'success'\n match.error = undefined\n match.invalid = true\n match.isFetching = false\n }\n if (!loaderFailure && outcome[0] !== SKIPPED) {\n loaderFailure = [task.index, outcome]\n }\n }\n }),\n ),\n )\n } catch (cause) {\n if (!Array.isArray(cause)) {\n throw cause\n }\n control = cause as IndexedOutcome\n }\n signal?.throwIfAborted()\n\n if (control?.[1][0] === REDIRECTED) {\n abortMatches(lane.matches, 0, lane)\n return { type: 'redirect', redirect: control[1][1] }\n }\n\n let failure = lane.failure ?? loaderFailure\n const plannedBoundary = lane.matches.findIndex((match) => match._notFound)\n let readinessEnd: number\n if (failure) {\n const outcomeEnd = (failure[2] ??=\n failure[1][0] === NOT_FOUND\n ? await getNotFoundBoundary(router, lane.matches, failure, signal)\n : failure[0])\n for (const task of tasks) {\n if (task.index >= outcomeEnd) {\n break\n }\n const outcome = await task.outcome\n // Presence means a loader previously succeeded, even with `undefined`.\n if (\n outcome[0] !== SUCCESS &&\n outcome[0] < REDIRECTED &&\n !('loaderData' in lane.matches[task.index]!)\n ) {\n failure = [task.index, outcome]\n failure[2] =\n outcome[0] === NOT_FOUND\n ? await getNotFoundBoundary(router, lane.matches, failure, signal)\n : task.index\n break\n }\n }\n readinessEnd = failure[2]\n } else {\n readinessEnd = plannedBoundary < 0 ? lane.matches.length : plannedBoundary\n }\n const requiredFailure = await loadNormalChunks(\n router,\n lane,\n readinessEnd,\n signal,\n )\n signal?.throwIfAborted()\n if (requiredFailure) {\n if (requiredFailure[1][0] === REDIRECTED) {\n abortMatches(lane.matches)\n return { type: 'redirect', redirect: requiredFailure[1][1] }\n }\n failure = requiredFailure\n }\n\n const terminal = await applyFailure(router, lane, failure, signal)\n if (terminal.boundary !== undefined) {\n const match = lane.matches[terminal.boundary]!\n if (match.ssr === true) {\n const route = getRoute(router, match)\n try {\n if (terminal.kind === ERROR) {\n await loadRouteChunk(route, 'errorComponent')\n } else if (match._notFound) {\n await Promise.all([\n loadRouteChunk(route),\n loadRouteChunk(route, 'notFoundComponent'),\n ])\n } else {\n await loadRouteChunk(route, 'notFoundComponent')\n }\n } catch {}\n signal?.throwIfAborted()\n }\n }\n\n signal?.throwIfAborted()\n await projectLane(\n router,\n {\n location: lane.location,\n matches: lane.matches,\n } as ReducedLane,\n signal,\n )\n signal?.throwIfAborted()\n router.serverSsr?.onCleanup(abortLane)\n return { type: 'render', status: terminal.status, matches: lane.matches }\n } finally {\n signal?.removeEventListener('abort', abortLane)\n }\n}\n\ntype ServerLoadOptions = NonNullable<Parameters<AnyRouter['load']>[0]> & {\n _signal?: AbortSignal\n}\n\nexport async function loadServerRoute(\n router: AnyRouter,\n opts?: ServerLoadOptions,\n): Promise<void> {\n router.updateLatestLocation()\n const next = router.latestLocation\n const previous = router._committed\n let result: ServerLoadResult\n try {\n const canonical = router.buildLocation({\n to: next.pathname,\n search: true,\n params: true,\n hash: true,\n state: true,\n _includeValidateSearch: true,\n })\n if (next.publicHref !== canonical.publicHref) {\n const href = canonical.publicHref || '/'\n throw redirect({ href })\n }\n\n const fromLocation = router.stores.resolvedLocation.get()\n const changeInfo = getLocationChangeInfo(next, fromLocation)\n router.emit({ type: 'onBeforeNavigate', ...changeInfo })\n router.emit({ type: 'onBeforeLoad', ...changeInfo })\n opts?._signal?.throwIfAborted()\n result = await waitFor(\n executeServerLane(router, next, router.matchRoutes(next), opts?._signal),\n opts?._signal,\n )\n opts?._signal?.throwIfAborted()\n } catch (cause) {\n opts?._signal?.throwIfAborted()\n if (!isRedirect(cause)) {\n throw cause\n }\n cause.options._fromLocation = next\n result = { type: 'redirect', redirect: router.resolveRedirect(cause) }\n }\n\n router._serverResult = result\n router.batch(() => {\n router.stores.location.set(next)\n router.stores.status.set('idle')\n if (result.type === 'render') {\n router.stores.setMatches(result.matches)\n router.stores.resolvedLocation.set(next)\n }\n })\n if (result.type === 'render') {\n router._committed = result.matches\n runRouteLifecycle(router, previous, result.matches)\n }\n router._commitPromise?.resolve()\n router._commitPromise = undefined\n}\n"],"mappings":"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"}
|
|
@@ -280,7 +280,7 @@ function processRouteMasks(routeList, processedTree) {
|
|
|
280
280
|
function findFlatMatch(path, processedTree) {
|
|
281
281
|
path ||= "/";
|
|
282
282
|
const cached = processedTree.flatCache.get(path);
|
|
283
|
-
if (cached) return cached;
|
|
283
|
+
if (cached !== void 0) return cached;
|
|
284
284
|
const result = findMatch(path, processedTree.masksTree);
|
|
285
285
|
processedTree.flatCache.set(path, result);
|
|
286
286
|
return result;
|