@tanstack/react-router 1.87.0 → 1.87.2

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.
@@ -29,30 +29,30 @@ function useAwaited({
29
29
  }) {
30
30
  var _a, _b;
31
31
  const router$1 = useRouter.useRouter();
32
- const promise = _promise;
33
- defer.defer(promise);
34
- if (promise.status === "pending") {
32
+ const promise = defer.defer(_promise);
33
+ if (promise[defer.TSR_DEFERRED_PROMISE].status === "pending") {
35
34
  throw promise;
36
35
  }
37
- if (promise.status === "error") {
36
+ if (promise[defer.TSR_DEFERRED_PROMISE].status === "error") {
38
37
  if (typeof document !== "undefined") {
39
- if (isServerSideError.isServerSideError(promise.error)) {
40
- throw (((_a = router$1.options.errorSerializer) == null ? void 0 : _a.deserialize) ?? isServerSideError.defaultDeserializeError)(promise.error.data);
38
+ if (isServerSideError.isServerSideError(promise[defer.TSR_DEFERRED_PROMISE].error)) {
39
+ throw (((_a = router$1.options.errorSerializer) == null ? void 0 : _a.deserialize) ?? isServerSideError.defaultDeserializeError)(promise[defer.TSR_DEFERRED_PROMISE].error.data);
41
40
  } else {
42
41
  warning(
43
42
  false,
44
43
  "Encountered a server-side error that doesn't fit the expected shape"
45
44
  );
46
- throw promise.error;
45
+ throw promise[defer.TSR_DEFERRED_PROMISE].error;
47
46
  }
48
47
  } else {
49
48
  throw {
50
- data: (((_b = router$1.options.errorSerializer) == null ? void 0 : _b.serialize) ?? router.defaultSerializeError)(promise.error),
49
+ data: (((_b = router$1.options.errorSerializer) == null ? void 0 : _b.serialize) ?? router.defaultSerializeError)(promise[defer.TSR_DEFERRED_PROMISE].error),
51
50
  __isServerError: true
52
51
  };
53
52
  }
54
53
  }
55
- return [promise.data, promise];
54
+ console.log("useAwaited", promise[defer.TSR_DEFERRED_PROMISE]);
55
+ return [promise[defer.TSR_DEFERRED_PROMISE].data, promise];
56
56
  }
57
57
  function Await(props) {
58
58
  const inner = /* @__PURE__ */ jsxRuntime.jsx(AwaitInner, { ...props });
@@ -63,6 +63,7 @@ function Await(props) {
63
63
  }
64
64
  function AwaitInner(props) {
65
65
  const [data] = useAwaited(props);
66
+ console.log("AwaitInner", data);
66
67
  return props.children(data);
67
68
  }
68
69
  exports.Await = Await;
@@ -1 +1 @@
1
- {"version":3,"file":"awaited.cjs","sources":["../../src/awaited.tsx"],"sourcesContent":["import * as React from 'react'\nimport warning from 'tiny-warning'\nimport { useRouter } from './useRouter'\nimport { defaultSerializeError } from './router'\nimport { defer } from './defer'\nimport { defaultDeserializeError, isServerSideError } from './isServerSideError'\nimport type { DeferredPromise } from './defer'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\nexport function useAwaited<T>({\n promise: _promise,\n}: AwaitOptions<T>): [T, DeferredPromise<T>] {\n const router = useRouter()\n const promise = _promise as DeferredPromise<T>\n\n defer(promise)\n\n if (promise.status === 'pending') {\n throw promise\n }\n\n if (promise.status === 'error') {\n if (typeof document !== 'undefined') {\n if (isServerSideError(promise.error)) {\n throw (\n router.options.errorSerializer?.deserialize ?? defaultDeserializeError\n )(promise.error.data as any)\n } else {\n warning(\n false,\n \"Encountered a server-side error that doesn't fit the expected shape\",\n )\n throw promise.error\n }\n } else {\n throw {\n data: (\n router.options.errorSerializer?.serialize ?? defaultSerializeError\n )(promise.error),\n __isServerError: true,\n }\n }\n }\n\n return [promise.data as any, promise]\n}\n\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: React.ReactNode\n children: (result: T) => React.ReactNode\n },\n) {\n const inner = <AwaitInner {...props} />\n if (props.fallback) {\n return <React.Suspense fallback={props.fallback}>{inner}</React.Suspense>\n }\n return inner\n}\n\nfunction AwaitInner<T>(\n props: AwaitOptions<T> & {\n fallback?: React.ReactNode\n children: (result: T) => React.ReactNode\n },\n): React.JSX.Element {\n const [data] = useAwaited(props)\n return props.children(data) as React.JSX.Element\n}\n"],"names":["router","useRouter","defer","isServerSideError","defaultDeserializeError","defaultSerializeError","jsx","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,SAAS,WAAc;AAAA,EAC5B,SAAS;AACX,GAA6C;;AAC3C,QAAMA,WAASC,UAAAA,UAAU;AACzB,QAAM,UAAU;AAEhBC,QAAAA,MAAM,OAAO;AAET,MAAA,QAAQ,WAAW,WAAW;AAC1B,UAAA;AAAA,EAAA;AAGJ,MAAA,QAAQ,WAAW,SAAS;AAC1B,QAAA,OAAO,aAAa,aAAa;AAC/B,UAAAC,kBAAA,kBAAkB,QAAQ,KAAK,GAAG;AACpC,iBACEH,cAAO,QAAQ,oBAAfA,mBAAgC,gBAAeI,2CAC/C,QAAQ,MAAM,IAAW;AAAA,MAAA,OACtB;AACL;AAAA,UACE;AAAA,UACA;AAAA,QACF;AACA,cAAM,QAAQ;AAAA,MAAA;AAAA,IAChB,OACK;AACC,YAAA;AAAA,QACJ,SACEJ,cAAO,QAAQ,oBAAfA,mBAAgC,cAAaK,OAAA,uBAC7C,QAAQ,KAAK;AAAA,QACf,iBAAiB;AAAA,MACnB;AAAA,IAAA;AAAA,EACF;AAGK,SAAA,CAAC,QAAQ,MAAa,OAAO;AACtC;AAEO,SAAS,MACd,OAIA;AACA,QAAM,QAAQC,2BAAA,IAAC,YAAY,EAAA,GAAG,MAAO,CAAA;AACrC,MAAI,MAAM,UAAU;AAClB,0CAAQC,iBAAM,UAAN,EAAe,UAAU,MAAM,UAAW,UAAM,OAAA;AAAA,EAAA;AAEnD,SAAA;AACT;AAEA,SAAS,WACP,OAImB;AACnB,QAAM,CAAC,IAAI,IAAI,WAAW,KAAK;AACxB,SAAA,MAAM,SAAS,IAAI;AAC5B;;;"}
1
+ {"version":3,"file":"awaited.cjs","sources":["../../src/awaited.tsx"],"sourcesContent":["import * as React from 'react'\nimport warning from 'tiny-warning'\nimport { useRouter } from './useRouter'\nimport { defaultSerializeError } from './router'\nimport { TSR_DEFERRED_PROMISE, defer } from './defer'\nimport { defaultDeserializeError, isServerSideError } from './isServerSideError'\nimport type { DeferredPromise } from './defer'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\nexport function useAwaited<T>({\n promise: _promise,\n}: AwaitOptions<T>): [T, DeferredPromise<T>] {\n const router = useRouter()\n const promise = defer(_promise)\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'pending') {\n throw promise\n }\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'error') {\n if (typeof document !== 'undefined') {\n if (isServerSideError(promise[TSR_DEFERRED_PROMISE].error)) {\n throw (\n router.options.errorSerializer?.deserialize ?? defaultDeserializeError\n )(promise[TSR_DEFERRED_PROMISE].error.data as any)\n } else {\n warning(\n false,\n \"Encountered a server-side error that doesn't fit the expected shape\",\n )\n throw promise[TSR_DEFERRED_PROMISE].error\n }\n } else {\n throw {\n data: (\n router.options.errorSerializer?.serialize ?? defaultSerializeError\n )(promise[TSR_DEFERRED_PROMISE].error),\n __isServerError: true,\n }\n }\n }\n console.log('useAwaited', promise[TSR_DEFERRED_PROMISE])\n return [promise[TSR_DEFERRED_PROMISE].data, promise]\n}\n\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: React.ReactNode\n children: (result: T) => React.ReactNode\n },\n) {\n const inner = <AwaitInner {...props} />\n if (props.fallback) {\n return <React.Suspense fallback={props.fallback}>{inner}</React.Suspense>\n }\n return inner\n}\n\nfunction AwaitInner<T>(\n props: AwaitOptions<T> & {\n fallback?: React.ReactNode\n children: (result: T) => React.ReactNode\n },\n): React.JSX.Element {\n const [data] = useAwaited(props)\n console.log('AwaitInner', data)\n\n return props.children(data) as React.JSX.Element\n}\n"],"names":["router","useRouter","defer","TSR_DEFERRED_PROMISE","isServerSideError","defaultDeserializeError","defaultSerializeError","jsx","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAYO,SAAS,WAAc;AAAA,EAC5B,SAAS;AACX,GAA6C;;AAC3C,QAAMA,WAASC,UAAAA,UAAU;AACnB,QAAA,UAAUC,YAAM,QAAQ;AAE9B,MAAI,QAAQC,MAAAA,oBAAoB,EAAE,WAAW,WAAW;AAChD,UAAA;AAAA,EAAA;AAGR,MAAI,QAAQA,MAAAA,oBAAoB,EAAE,WAAW,SAAS;AAChD,QAAA,OAAO,aAAa,aAAa;AACnC,UAAIC,kBAAkB,kBAAA,QAAQD,0BAAoB,EAAE,KAAK,GAAG;AAExD,iBAAAH,cAAO,QAAQ,oBAAfA,mBAAgC,gBAAeK,2CAC/C,QAAQF,MAAoB,oBAAA,EAAE,MAAM,IAAW;AAAA,MAAA,OAC5C;AACL;AAAA,UACE;AAAA,UACA;AAAA,QACF;AACM,cAAA,QAAQA,MAAoB,oBAAA,EAAE;AAAA,MAAA;AAAA,IACtC,OACK;AACC,YAAA;AAAA,QACJ,SACEH,cAAO,QAAQ,oBAAfA,mBAAgC,cAAaM,OAAAA,uBAC7C,QAAQH,0BAAoB,EAAE,KAAK;AAAA,QACrC,iBAAiB;AAAA,MACnB;AAAA,IAAA;AAAA,EACF;AAEF,UAAQ,IAAI,cAAc,QAAQA,MAAoB,oBAAA,CAAC;AACvD,SAAO,CAAC,QAAQA,MAAAA,oBAAoB,EAAE,MAAM,OAAO;AACrD;AAEO,SAAS,MACd,OAIA;AACA,QAAM,QAAQI,2BAAA,IAAC,YAAY,EAAA,GAAG,MAAO,CAAA;AACrC,MAAI,MAAM,UAAU;AAClB,0CAAQC,iBAAM,UAAN,EAAe,UAAU,MAAM,UAAW,UAAM,OAAA;AAAA,EAAA;AAEnD,SAAA;AACT;AAEA,SAAS,WACP,OAImB;AACnB,QAAM,CAAC,IAAI,IAAI,WAAW,KAAK;AACvB,UAAA,IAAI,cAAc,IAAI;AAEvB,SAAA,MAAM,SAAS,IAAI;AAC5B;;;"}
@@ -1,24 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const router = require("./router.cjs");
4
+ const TSR_DEFERRED_PROMISE = Symbol.for("TSR_DEFERRED_PROMISE");
4
5
  function defer(_promise, options) {
5
6
  const promise = _promise;
6
- if (!promise.status) {
7
- Object.assign(promise, {
8
- status: "pending"
9
- });
10
- promise.then((data) => {
11
- promise.status = "success";
12
- promise.data = data;
13
- }).catch((error) => {
14
- promise.status = "error";
15
- promise.error = {
16
- data: ((options == null ? void 0 : options.serializeError) ?? router.defaultSerializeError)(error),
17
- __isServerError: true
18
- };
19
- });
7
+ if (promise[TSR_DEFERRED_PROMISE]) {
8
+ return promise;
20
9
  }
10
+ promise[TSR_DEFERRED_PROMISE] = { status: "pending" };
11
+ promise.then((data) => {
12
+ promise[TSR_DEFERRED_PROMISE].status = "success";
13
+ promise[TSR_DEFERRED_PROMISE].data = data;
14
+ console.log("defer then", promise[TSR_DEFERRED_PROMISE]);
15
+ }).catch((error) => {
16
+ promise[TSR_DEFERRED_PROMISE].status = "error";
17
+ promise[TSR_DEFERRED_PROMISE].error = {
18
+ data: ((options == null ? void 0 : options.serializeError) ?? router.defaultSerializeError)(error),
19
+ __isServerError: true
20
+ };
21
+ });
21
22
  return promise;
22
23
  }
24
+ exports.TSR_DEFERRED_PROMISE = TSR_DEFERRED_PROMISE;
23
25
  exports.defer = defer;
24
26
  //# sourceMappingURL=defer.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"defer.cjs","sources":["../../src/defer.ts"],"sourcesContent":["import { defaultSerializeError } from './router'\n\nexport type DeferredPromiseState<T> = {\n uid: string\n resolve?: () => void\n reject?: () => void\n} & (\n | {\n status: 'pending'\n data?: T\n error?: unknown\n }\n | {\n status: 'success'\n data: T\n }\n | {\n status: 'error'\n data?: T\n error: unknown\n }\n)\n\nexport type DeferredPromise<T> = Promise<T> & DeferredPromiseState<T>\n\nexport function defer<T>(\n _promise: Promise<T>,\n options?: {\n serializeError?: typeof defaultSerializeError\n },\n) {\n const promise = _promise as DeferredPromise<T>\n\n if (!(promise as any).status) {\n Object.assign(promise, {\n status: 'pending',\n })\n\n promise\n .then((data) => {\n promise.status = 'success' as any\n promise.data = data\n })\n .catch((error) => {\n promise.status = 'error' as any\n ;(promise as any).error = {\n data: (options?.serializeError ?? defaultSerializeError)(error),\n __isServerError: true,\n }\n })\n }\n\n return promise\n}\n"],"names":["defaultSerializeError"],"mappings":";;;AAyBgB,SAAA,MACd,UACA,SAGA;AACA,QAAM,UAAU;AAEZ,MAAA,CAAE,QAAgB,QAAQ;AAC5B,WAAO,OAAO,SAAS;AAAA,MACrB,QAAQ;AAAA,IAAA,CACT;AAGE,YAAA,KAAK,CAAC,SAAS;AACd,cAAQ,SAAS;AACjB,cAAQ,OAAO;AAAA,IAAA,CAChB,EACA,MAAM,CAAC,UAAU;AAChB,cAAQ,SAAS;AACf,cAAgB,QAAQ;AAAA,QACxB,QAAO,mCAAS,mBAAkBA,OAAAA,uBAAuB,KAAK;AAAA,QAC9D,iBAAiB;AAAA,MACnB;AAAA,IAAA,CACD;AAAA,EAAA;AAGE,SAAA;AACT;;"}
1
+ {"version":3,"file":"defer.cjs","sources":["../../src/defer.ts"],"sourcesContent":["import { defaultSerializeError } from './router'\n\nexport const TSR_DEFERRED_PROMISE = Symbol.for('TSR_DEFERRED_PROMISE')\n\nexport type DeferredPromiseState<T> = {\n [TSR_DEFERRED_PROMISE]:\n | {\n status: 'pending'\n data?: T\n error?: unknown\n }\n | {\n status: 'success'\n data: T\n }\n | {\n status: 'error'\n data?: T\n error: unknown\n }\n}\n\nexport type DeferredPromise<T> = Promise<T> & DeferredPromiseState<T>\n\nexport function defer<T>(\n _promise: Promise<T>,\n options?: {\n serializeError?: typeof defaultSerializeError\n },\n) {\n const promise = _promise as DeferredPromise<T>\n // this is already deferred promise\n if ((promise as any)[TSR_DEFERRED_PROMISE]) {\n return promise\n }\n promise[TSR_DEFERRED_PROMISE] = { status: 'pending' }\n\n promise\n .then((data) => {\n promise[TSR_DEFERRED_PROMISE].status = 'success'\n promise[TSR_DEFERRED_PROMISE].data = data\n console.log('defer then', promise[TSR_DEFERRED_PROMISE])\n })\n .catch((error) => {\n promise[TSR_DEFERRED_PROMISE].status = 'error'\n ;(promise[TSR_DEFERRED_PROMISE] as any).error = {\n data: (options?.serializeError ?? defaultSerializeError)(error),\n __isServerError: true,\n }\n })\n\n return promise\n}\n"],"names":["defaultSerializeError"],"mappings":";;;AAEa,MAAA,uBAAuB,OAAO,IAAI,sBAAsB;AAsBrD,SAAA,MACd,UACA,SAGA;AACA,QAAM,UAAU;AAEX,MAAA,QAAgB,oBAAoB,GAAG;AACnC,WAAA;AAAA,EAAA;AAET,UAAQ,oBAAoB,IAAI,EAAE,QAAQ,UAAU;AAGjD,UAAA,KAAK,CAAC,SAAS;AACN,YAAA,oBAAoB,EAAE,SAAS;AAC/B,YAAA,oBAAoB,EAAE,OAAO;AACrC,YAAQ,IAAI,cAAc,QAAQ,oBAAoB,CAAC;AAAA,EAAA,CACxD,EACA,MAAM,CAAC,UAAU;AACR,YAAA,oBAAoB,EAAE,SAAS;AACrC,YAAQ,oBAAoB,EAAU,QAAQ;AAAA,MAC9C,QAAO,mCAAS,mBAAkBA,OAAAA,uBAAuB,KAAK;AAAA,MAC9D,iBAAiB;AAAA,IACnB;AAAA,EAAA,CACD;AAEI,SAAA;AACT;;;"}
@@ -1,20 +1,19 @@
1
1
  import { defaultSerializeError } from './router.cjs';
2
+ export declare const TSR_DEFERRED_PROMISE: unique symbol;
2
3
  export type DeferredPromiseState<T> = {
3
- uid: string;
4
- resolve?: () => void;
5
- reject?: () => void;
6
- } & ({
7
- status: 'pending';
8
- data?: T;
9
- error?: unknown;
10
- } | {
11
- status: 'success';
12
- data: T;
13
- } | {
14
- status: 'error';
15
- data?: T;
16
- error: unknown;
17
- });
4
+ [TSR_DEFERRED_PROMISE]: {
5
+ status: 'pending';
6
+ data?: T;
7
+ error?: unknown;
8
+ } | {
9
+ status: 'success';
10
+ data: T;
11
+ } | {
12
+ status: 'error';
13
+ data?: T;
14
+ error: unknown;
15
+ };
16
+ };
18
17
  export type DeferredPromise<T> = Promise<T> & DeferredPromiseState<T>;
19
18
  export declare function defer<T>(_promise: Promise<T>, options?: {
20
19
  serializeError?: typeof defaultSerializeError;
@@ -60,6 +60,7 @@ exports.warning = warning;
60
60
  exports.Await = awaited.Await;
61
61
  exports.useAwaited = awaited.useAwaited;
62
62
  exports.ScriptOnce = ScriptOnce.ScriptOnce;
63
+ exports.TSR_DEFERRED_PROMISE = defer.TSR_DEFERRED_PROMISE;
63
64
  exports.defer = defer.defer;
64
65
  exports.CatchBoundary = CatchBoundary.CatchBoundary;
65
66
  exports.ErrorComponent = CatchBoundary.ErrorComponent;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -5,7 +5,7 @@ export { default as warning } from 'tiny-warning';
5
5
  export { useAwaited, Await } from './awaited.cjs';
6
6
  export type { AwaitOptions } from './awaited.cjs';
7
7
  export { ScriptOnce } from './ScriptOnce.cjs';
8
- export { defer } from './defer.cjs';
8
+ export { defer, TSR_DEFERRED_PROMISE } from './defer.cjs';
9
9
  export type { DeferredPromiseState, DeferredPromise } from './defer.cjs';
10
10
  export { CatchBoundary, ErrorComponent } from './CatchBoundary.cjs';
11
11
  export { FileRoute, createFileRoute, FileRouteLoader, LazyRoute, createLazyRoute, createLazyFileRoute, } from './fileRoute.cjs';
@@ -34,7 +34,7 @@ export { RouteApi, getRouteApi, Route, createRoute, RootRoute, rootRouteWithCont
34
34
  export type { AnyPathParams, ResolveParams, SearchSchemaInput, AnyContext, RouteContext, PreloadableObj, RoutePathOptions, StaticDataRouteOption, RoutePathOptionsIntersection, RouteOptions, FileBaseRouteOptions, BaseRouteOptions, UpdatableRouteOptions, UpdatableStaticRouteOption, MetaDescriptor, RouteLinkEntry, ParseParamsFn, RouteLoaderFn, LoaderFnContext, SearchFilter, ResolveId, InferFullSearchSchema, InferFullSearchSchemaInput, ResolveFullSearchSchema, ResolveFullSearchSchemaInput, AnyRoute, RouteConstraints, AnyRootRoute, ResolveFullPath, RouteMask, ErrorRouteProps, ErrorComponentProps, NotFoundRouteProps, ReactNode, SyncRouteComponent, AsyncRouteComponent, RouteComponent, ErrorRouteComponent, NotFoundRouteComponent, TrimPath, TrimPathLeft, TrimPathRight, RootRouteOptions, AnyRouteWithContext, ParseSplatParams, SplatParams, StringifyParamsFn, ParamsOptions, FullSearchSchemaOption, RouteContextFn, RouteContextOptions, BeforeLoadFn, BeforeLoadContextOptions, ContextOptions, InferAllParams, InferAllContext, LooseReturnType, LooseAsyncReturnType, ContextReturnType, ContextAsyncReturnType, RouteContextParameter, BeforeLoadContextParameter, ResolveAllContext, ResolveLoaderData, ResolveAllParamsFromParent, ResolveRouteContext, } from './route.cjs';
35
35
  export type { ParseRoute, RoutesById, RouteById, RouteIds, RoutesByPath, RouteByPath, RoutePaths, FullSearchSchema, AllParams, AllLoaderData, FullSearchSchemaInput, AllContext, } from './routeInfo.cjs';
36
36
  export { componentTypes, createRouter, Router, lazyFn, SearchParamError, PathParamError, getInitialRouterState, defaultSerializeError, } from './router.cjs';
37
- export type { Register, AnyRouter, RegisteredRouter, HydrationCtx, RouterContextOptions, TrailingSlashOption, RouterOptions, RouterErrorSerializer, RouterState, ListenerFn, BuildNextOptions, DehydratedRouterState, DehydratedRouteMatch, DehydratedRouter, RouterConstructorOptions, RouterEvents, RouterEvent, RouterListener, AnyRouterWithContext, ExtractedEntry, StreamState, } from './router.cjs';
37
+ export type { Register, AnyRouter, RegisteredRouter, HydrationCtx, RouterContextOptions, TrailingSlashOption, RouterOptions, RouterErrorSerializer, RouterState, ListenerFn, BuildNextOptions, DehydratedRouterState, DehydratedRouteMatch, DehydratedRouter, RouterConstructorOptions, RouterEvents, RouterEvent, RouterListener, AnyRouterWithContext, ExtractedEntry, ExtractedStream, ExtractedPromise, StreamState, } from './router.cjs';
38
38
  export { RouterProvider, RouterContextProvider } from './RouterProvider.cjs';
39
39
  export type { RouterProps, CommitLocationOptions, MatchLocation, NavigateFn, BuildLocationFn, InjectedHtmlEntry, } from './RouterProvider.cjs';
40
40
  export { useScrollRestoration, useElementScrollRestoration, ScrollRestoration, } from './scroll-restoration.cjs';
@@ -879,6 +879,7 @@ class Router {
879
879
  const route = this.looseRoutesById[routeId];
880
880
  const pendingMs = route.options.pendingMs ?? this.options.defaultPendingMs;
881
881
  const shouldPending = !!(onReady && !this.isServer && !resolvePreload(matchId) && (route.options.loader || route.options.beforeLoad) && typeof pendingMs === "number" && pendingMs !== Infinity && (route.options.pendingComponent ?? this.options.defaultPendingComponent));
882
+ let executeBeforeLoad = true;
882
883
  if (
883
884
  // If we are in the middle of a load, either of these will be present
884
885
  // (not to be confused with `loadPromise`, which is always defined)
@@ -893,7 +894,9 @@ class Router {
893
894
  }, pendingMs);
894
895
  }
895
896
  await existingMatch.beforeLoadPromise;
896
- } else {
897
+ executeBeforeLoad = this.getMatch(matchId).status !== "success";
898
+ }
899
+ if (executeBeforeLoad) {
897
900
  try {
898
901
  updateMatch(matchId, (prev) => ({
899
902
  ...prev,