@tanstack/react-router 1.20.1 → 1.20.3-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/README.md +31 -0
  2. package/dist/cjs/Asset.cjs +41 -0
  3. package/dist/cjs/Asset.cjs.map +1 -0
  4. package/dist/cjs/Asset.d.cts +2 -0
  5. package/dist/cjs/CatchBoundary.cjs +16 -12
  6. package/dist/cjs/CatchBoundary.cjs.map +1 -1
  7. package/dist/cjs/CatchBoundary.d.cts +8 -32
  8. package/dist/cjs/ClientOnly.cjs +20 -0
  9. package/dist/cjs/ClientOnly.cjs.map +1 -0
  10. package/dist/cjs/ClientOnly.d.cts +29 -0
  11. package/dist/cjs/HeadContent.cjs +155 -0
  12. package/dist/cjs/HeadContent.cjs.map +1 -0
  13. package/dist/cjs/HeadContent.d.cts +7 -0
  14. package/dist/cjs/Match.cjs +252 -0
  15. package/dist/cjs/Match.cjs.map +1 -0
  16. package/dist/cjs/Match.d.cts +8 -0
  17. package/dist/cjs/Matches.cjs +39 -287
  18. package/dist/cjs/Matches.cjs.map +1 -1
  19. package/dist/cjs/Matches.d.cts +23 -83
  20. package/dist/cjs/RouterProvider.cjs +17 -140
  21. package/dist/cjs/RouterProvider.cjs.map +1 -1
  22. package/dist/cjs/RouterProvider.d.cts +8 -27
  23. package/dist/cjs/SafeFragment.cjs +8 -0
  24. package/dist/cjs/SafeFragment.cjs.map +1 -0
  25. package/dist/cjs/SafeFragment.d.cts +1 -0
  26. package/dist/cjs/ScriptOnce.cjs +28 -0
  27. package/dist/cjs/ScriptOnce.cjs.map +1 -0
  28. package/dist/cjs/ScriptOnce.d.cts +5 -0
  29. package/dist/cjs/Scripts.cjs +51 -0
  30. package/dist/cjs/Scripts.cjs.map +1 -0
  31. package/dist/cjs/Scripts.d.cts +1 -0
  32. package/dist/cjs/ScrollRestoration.cjs +39 -0
  33. package/dist/cjs/ScrollRestoration.cjs.map +1 -0
  34. package/dist/cjs/ScrollRestoration.d.cts +14 -0
  35. package/dist/cjs/Transitioner.cjs +115 -0
  36. package/dist/cjs/Transitioner.cjs.map +1 -0
  37. package/dist/cjs/Transitioner.d.cts +1 -0
  38. package/dist/cjs/awaited.cjs +12 -65
  39. package/dist/cjs/awaited.cjs.map +1 -1
  40. package/dist/cjs/awaited.d.cts +4 -4
  41. package/dist/cjs/fileRoute.cjs +41 -15
  42. package/dist/cjs/fileRoute.cjs.map +1 -1
  43. package/dist/cjs/fileRoute.d.cts +33 -108
  44. package/dist/cjs/history.d.cts +1 -0
  45. package/dist/cjs/index.cjs +216 -73
  46. package/dist/cjs/index.cjs.map +1 -1
  47. package/dist/cjs/index.d.cts +52 -29
  48. package/dist/cjs/lazyRouteComponent.cjs +40 -29
  49. package/dist/cjs/lazyRouteComponent.cjs.map +1 -1
  50. package/dist/cjs/lazyRouteComponent.d.cts +1 -1
  51. package/dist/cjs/link.cjs +212 -106
  52. package/dist/cjs/link.cjs.map +1 -1
  53. package/dist/cjs/link.d.cts +41 -86
  54. package/dist/cjs/matchContext.cjs +27 -0
  55. package/dist/cjs/matchContext.cjs.map +1 -0
  56. package/dist/cjs/matchContext.d.cts +3 -0
  57. package/dist/cjs/not-found.cjs +9 -15
  58. package/dist/cjs/not-found.cjs.map +1 -1
  59. package/dist/cjs/not-found.d.cts +5 -22
  60. package/dist/cjs/renderRouteNotFound.cjs +22 -0
  61. package/dist/cjs/renderRouteNotFound.cjs.map +1 -0
  62. package/dist/cjs/renderRouteNotFound.d.cts +2 -0
  63. package/dist/cjs/route.cjs +110 -79
  64. package/dist/cjs/route.cjs.map +1 -1
  65. package/dist/cjs/route.d.cts +64 -361
  66. package/dist/cjs/router.cjs +12 -1237
  67. package/dist/cjs/router.cjs.map +1 -1
  68. package/dist/cjs/router.d.cts +69 -237
  69. package/dist/cjs/routerContext.cjs +1 -1
  70. package/dist/cjs/routerContext.cjs.map +1 -1
  71. package/dist/cjs/routerContext.d.cts +7 -2
  72. package/dist/cjs/scroll-restoration.cjs +16 -177
  73. package/dist/cjs/scroll-restoration.cjs.map +1 -1
  74. package/dist/cjs/scroll-restoration.d.cts +1 -18
  75. package/dist/cjs/serializer.d.cts +6 -0
  76. package/dist/cjs/structuralSharing.d.cts +8 -0
  77. package/dist/cjs/typePrimitives.d.cts +16 -0
  78. package/dist/cjs/useBlocker.cjs +138 -9
  79. package/dist/cjs/useBlocker.cjs.map +1 -1
  80. package/dist/cjs/useBlocker.d.cts +64 -7
  81. package/dist/cjs/useCanGoBack.cjs +8 -0
  82. package/dist/cjs/useCanGoBack.cjs.map +1 -0
  83. package/dist/cjs/useCanGoBack.d.cts +1 -0
  84. package/dist/cjs/useLoaderData.cjs +15 -0
  85. package/dist/cjs/useLoaderData.cjs.map +1 -0
  86. package/dist/cjs/useLoaderData.d.cts +8 -0
  87. package/dist/cjs/useLoaderDeps.cjs +14 -0
  88. package/dist/cjs/useLoaderDeps.cjs.map +1 -0
  89. package/dist/cjs/useLoaderDeps.d.cts +8 -0
  90. package/dist/cjs/useLocation.cjs +10 -0
  91. package/dist/cjs/useLocation.cjs.map +1 -0
  92. package/dist/cjs/useLocation.d.cts +7 -0
  93. package/dist/cjs/useMatch.cjs +47 -0
  94. package/dist/cjs/useMatch.cjs.map +1 -0
  95. package/dist/cjs/useMatch.d.cts +10 -0
  96. package/dist/cjs/useNavigate.cjs +18 -19
  97. package/dist/cjs/useNavigate.cjs.map +1 -1
  98. package/dist/cjs/useNavigate.d.cts +4 -8
  99. package/dist/cjs/useParams.cjs +8 -8
  100. package/dist/cjs/useParams.cjs.map +1 -1
  101. package/dist/cjs/useParams.d.cts +9 -8
  102. package/dist/cjs/useRouteContext.cjs +3 -3
  103. package/dist/cjs/useRouteContext.cjs.map +1 -1
  104. package/dist/cjs/useRouteContext.d.cts +3 -7
  105. package/dist/cjs/useRouter.cjs.map +1 -1
  106. package/dist/cjs/useRouter.d.cts +3 -4
  107. package/dist/cjs/useRouterState.cjs +18 -1
  108. package/dist/cjs/useRouterState.cjs.map +1 -1
  109. package/dist/cjs/useRouterState.d.cts +8 -6
  110. package/dist/cjs/useSearch.cjs +7 -4
  111. package/dist/cjs/useSearch.cjs.map +1 -1
  112. package/dist/cjs/useSearch.d.cts +9 -7
  113. package/dist/cjs/utils.cjs +40 -122
  114. package/dist/cjs/utils.cjs.map +1 -1
  115. package/dist/cjs/utils.d.cts +46 -50
  116. package/dist/esm/Asset.d.ts +2 -0
  117. package/dist/esm/Asset.js +41 -0
  118. package/dist/esm/Asset.js.map +1 -0
  119. package/dist/esm/CatchBoundary.d.ts +8 -32
  120. package/dist/esm/CatchBoundary.js +16 -12
  121. package/dist/esm/CatchBoundary.js.map +1 -1
  122. package/dist/esm/ClientOnly.d.ts +29 -0
  123. package/dist/esm/ClientOnly.js +20 -0
  124. package/dist/esm/ClientOnly.js.map +1 -0
  125. package/dist/esm/HeadContent.d.ts +7 -0
  126. package/dist/esm/HeadContent.js +139 -0
  127. package/dist/esm/HeadContent.js.map +1 -0
  128. package/dist/esm/Match.d.ts +8 -0
  129. package/dist/esm/Match.js +235 -0
  130. package/dist/esm/Match.js.map +1 -0
  131. package/dist/esm/Matches.d.ts +23 -83
  132. package/dist/esm/Matches.js +36 -284
  133. package/dist/esm/Matches.js.map +1 -1
  134. package/dist/esm/RouterProvider.d.ts +8 -27
  135. package/dist/esm/RouterProvider.js +20 -126
  136. package/dist/esm/RouterProvider.js.map +1 -1
  137. package/dist/esm/SafeFragment.d.ts +1 -0
  138. package/dist/esm/SafeFragment.js +8 -0
  139. package/dist/esm/SafeFragment.js.map +1 -0
  140. package/dist/esm/ScriptOnce.d.ts +5 -0
  141. package/dist/esm/ScriptOnce.js +28 -0
  142. package/dist/esm/ScriptOnce.js.map +1 -0
  143. package/dist/esm/Scripts.d.ts +1 -0
  144. package/dist/esm/Scripts.js +51 -0
  145. package/dist/esm/Scripts.js.map +1 -0
  146. package/dist/esm/ScrollRestoration.d.ts +14 -0
  147. package/dist/esm/ScrollRestoration.js +39 -0
  148. package/dist/esm/ScrollRestoration.js.map +1 -0
  149. package/dist/esm/Transitioner.d.ts +1 -0
  150. package/dist/esm/Transitioner.js +98 -0
  151. package/dist/esm/Transitioner.js.map +1 -0
  152. package/dist/esm/awaited.d.ts +4 -4
  153. package/dist/esm/awaited.js +12 -65
  154. package/dist/esm/awaited.js.map +1 -1
  155. package/dist/esm/fileRoute.d.ts +33 -108
  156. package/dist/esm/fileRoute.js +38 -12
  157. package/dist/esm/fileRoute.js.map +1 -1
  158. package/dist/esm/history.d.ts +1 -0
  159. package/dist/esm/index.d.ts +52 -29
  160. package/dist/esm/index.js +41 -29
  161. package/dist/esm/index.js.map +1 -1
  162. package/dist/esm/lazyRouteComponent.d.ts +1 -1
  163. package/dist/esm/lazyRouteComponent.js +40 -29
  164. package/dist/esm/lazyRouteComponent.js.map +1 -1
  165. package/dist/esm/link.d.ts +41 -86
  166. package/dist/esm/link.js +212 -106
  167. package/dist/esm/link.js.map +1 -1
  168. package/dist/esm/matchContext.d.ts +3 -0
  169. package/dist/esm/matchContext.js +10 -0
  170. package/dist/esm/matchContext.js.map +1 -0
  171. package/dist/esm/not-found.d.ts +5 -22
  172. package/dist/esm/not-found.js +9 -15
  173. package/dist/esm/not-found.js.map +1 -1
  174. package/dist/esm/renderRouteNotFound.d.ts +2 -0
  175. package/dist/esm/renderRouteNotFound.js +22 -0
  176. package/dist/esm/renderRouteNotFound.js.map +1 -0
  177. package/dist/esm/route.d.ts +64 -361
  178. package/dist/esm/route.js +103 -72
  179. package/dist/esm/route.js.map +1 -1
  180. package/dist/esm/router.d.ts +69 -237
  181. package/dist/esm/router.js +13 -1238
  182. package/dist/esm/router.js.map +1 -1
  183. package/dist/esm/routerContext.d.ts +7 -2
  184. package/dist/esm/routerContext.js +1 -1
  185. package/dist/esm/routerContext.js.map +1 -1
  186. package/dist/esm/scroll-restoration.d.ts +1 -18
  187. package/dist/esm/scroll-restoration.js +17 -161
  188. package/dist/esm/scroll-restoration.js.map +1 -1
  189. package/dist/esm/serializer.d.ts +6 -0
  190. package/dist/esm/structuralSharing.d.ts +8 -0
  191. package/dist/esm/typePrimitives.d.ts +16 -0
  192. package/dist/esm/useBlocker.d.ts +64 -7
  193. package/dist/esm/useBlocker.js +138 -9
  194. package/dist/esm/useBlocker.js.map +1 -1
  195. package/dist/esm/useCanGoBack.d.ts +1 -0
  196. package/dist/esm/useCanGoBack.js +8 -0
  197. package/dist/esm/useCanGoBack.js.map +1 -0
  198. package/dist/esm/useLoaderData.d.ts +8 -0
  199. package/dist/esm/useLoaderData.js +15 -0
  200. package/dist/esm/useLoaderData.js.map +1 -0
  201. package/dist/esm/useLoaderDeps.d.ts +8 -0
  202. package/dist/esm/useLoaderDeps.js +14 -0
  203. package/dist/esm/useLoaderDeps.js.map +1 -0
  204. package/dist/esm/useLocation.d.ts +7 -0
  205. package/dist/esm/useLocation.js +10 -0
  206. package/dist/esm/useLocation.js.map +1 -0
  207. package/dist/esm/useMatch.d.ts +10 -0
  208. package/dist/esm/useMatch.js +30 -0
  209. package/dist/esm/useMatch.js.map +1 -0
  210. package/dist/esm/useNavigate.d.ts +4 -8
  211. package/dist/esm/useNavigate.js +18 -19
  212. package/dist/esm/useNavigate.js.map +1 -1
  213. package/dist/esm/useParams.d.ts +9 -8
  214. package/dist/esm/useParams.js +8 -8
  215. package/dist/esm/useParams.js.map +1 -1
  216. package/dist/esm/useRouteContext.d.ts +3 -7
  217. package/dist/esm/useRouteContext.js +2 -2
  218. package/dist/esm/useRouteContext.js.map +1 -1
  219. package/dist/esm/useRouter.d.ts +3 -4
  220. package/dist/esm/useRouter.js.map +1 -1
  221. package/dist/esm/useRouterState.d.ts +8 -6
  222. package/dist/esm/useRouterState.js +18 -1
  223. package/dist/esm/useRouterState.js.map +1 -1
  224. package/dist/esm/useSearch.d.ts +9 -7
  225. package/dist/esm/useSearch.js +6 -3
  226. package/dist/esm/useSearch.js.map +1 -1
  227. package/dist/esm/utils.d.ts +46 -50
  228. package/dist/esm/utils.js +41 -123
  229. package/dist/esm/utils.js.map +1 -1
  230. package/package.json +30 -31
  231. package/src/Asset.tsx +40 -0
  232. package/src/CatchBoundary.tsx +35 -19
  233. package/src/ClientOnly.tsx +68 -0
  234. package/src/HeadContent.tsx +174 -0
  235. package/src/Match.tsx +330 -0
  236. package/src/Matches.tsx +149 -558
  237. package/src/RouterProvider.tsx +58 -212
  238. package/src/SafeFragment.tsx +5 -0
  239. package/src/ScriptOnce.tsx +32 -0
  240. package/src/Scripts.tsx +65 -0
  241. package/src/ScrollRestoration.tsx +69 -0
  242. package/src/Transitioner.tsx +130 -0
  243. package/src/awaited.tsx +16 -87
  244. package/src/fileRoute.ts +145 -248
  245. package/src/history.ts +2 -1
  246. package/src/index.tsx +368 -30
  247. package/src/lazyRouteComponent.tsx +68 -54
  248. package/src/link.tsx +397 -522
  249. package/src/matchContext.tsx +8 -0
  250. package/src/not-found.tsx +13 -34
  251. package/src/renderRouteNotFound.tsx +27 -0
  252. package/src/route.tsx +572 -0
  253. package/src/router.ts +99 -2067
  254. package/src/routerContext.tsx +8 -2
  255. package/src/scroll-restoration.tsx +23 -224
  256. package/src/serializer.ts +7 -0
  257. package/src/structuralSharing.ts +47 -0
  258. package/src/typePrimitives.ts +84 -0
  259. package/src/useBlocker.tsx +297 -15
  260. package/src/useCanGoBack.ts +5 -0
  261. package/src/useLoaderData.tsx +80 -0
  262. package/src/useLoaderDeps.tsx +58 -0
  263. package/src/useLocation.tsx +41 -0
  264. package/src/useMatch.tsx +119 -0
  265. package/src/useNavigate.tsx +41 -61
  266. package/src/useParams.tsx +88 -23
  267. package/src/useRouteContext.ts +24 -18
  268. package/src/useRouter.tsx +4 -5
  269. package/src/useRouterState.tsx +52 -10
  270. package/src/useSearch.tsx +87 -24
  271. package/src/utils.ts +97 -312
  272. package/dist/cjs/createServerFn.cjs +0 -40
  273. package/dist/cjs/createServerFn.cjs.map +0 -1
  274. package/dist/cjs/createServerFn.d.cts +0 -44
  275. package/dist/cjs/defer.cjs +0 -30
  276. package/dist/cjs/defer.cjs.map +0 -1
  277. package/dist/cjs/defer.d.cts +0 -25
  278. package/dist/cjs/location.d.cts +0 -12
  279. package/dist/cjs/path.cjs +0 -213
  280. package/dist/cjs/path.cjs.map +0 -1
  281. package/dist/cjs/path.d.cts +0 -24
  282. package/dist/cjs/qss.cjs +0 -45
  283. package/dist/cjs/qss.cjs.map +0 -1
  284. package/dist/cjs/qss.d.cts +0 -2
  285. package/dist/cjs/redirects.cjs +0 -16
  286. package/dist/cjs/redirects.cjs.map +0 -1
  287. package/dist/cjs/redirects.d.cts +0 -18
  288. package/dist/cjs/routeInfo.d.cts +0 -31
  289. package/dist/cjs/searchParams.cjs +0 -63
  290. package/dist/cjs/searchParams.cjs.map +0 -1
  291. package/dist/cjs/searchParams.d.cts +0 -7
  292. package/dist/esm/createServerFn.d.ts +0 -44
  293. package/dist/esm/createServerFn.js +0 -40
  294. package/dist/esm/createServerFn.js.map +0 -1
  295. package/dist/esm/defer.d.ts +0 -25
  296. package/dist/esm/defer.js +0 -30
  297. package/dist/esm/defer.js.map +0 -1
  298. package/dist/esm/location.d.ts +0 -12
  299. package/dist/esm/path.d.ts +0 -24
  300. package/dist/esm/path.js +0 -213
  301. package/dist/esm/path.js.map +0 -1
  302. package/dist/esm/qss.d.ts +0 -2
  303. package/dist/esm/qss.js +0 -45
  304. package/dist/esm/qss.js.map +0 -1
  305. package/dist/esm/redirects.d.ts +0 -18
  306. package/dist/esm/redirects.js +0 -16
  307. package/dist/esm/redirects.js.map +0 -1
  308. package/dist/esm/routeInfo.d.ts +0 -31
  309. package/dist/esm/searchParams.d.ts +0 -7
  310. package/dist/esm/searchParams.js +0 -63
  311. package/dist/esm/searchParams.js.map +0 -1
  312. package/src/createServerFn.ts +0 -107
  313. package/src/defer.ts +0 -70
  314. package/src/location.ts +0 -13
  315. package/src/path.ts +0 -280
  316. package/src/qss.ts +0 -53
  317. package/src/redirects.ts +0 -56
  318. package/src/route.ts +0 -1356
  319. package/src/routeInfo.ts +0 -63
  320. package/src/searchParams.ts +0 -79
package/src/index.tsx CHANGED
@@ -1,33 +1,371 @@
1
- //
2
- export * from '@tanstack/history'
3
1
  export { default as invariant } from 'tiny-invariant'
4
2
  export { default as warning } from 'tiny-warning'
5
- export * from './awaited'
6
- export * from './defer'
7
- export * from './CatchBoundary'
8
- export * from './fileRoute'
3
+
4
+ export {
5
+ defer,
6
+ TSR_DEFERRED_PROMISE,
7
+ isMatch,
8
+ joinPaths,
9
+ cleanPath,
10
+ trimPathLeft,
11
+ trimPathRight,
12
+ trimPath,
13
+ resolvePath,
14
+ parsePathname,
15
+ interpolatePath,
16
+ matchPathname,
17
+ removeBasepath,
18
+ matchByPath,
19
+ encode,
20
+ decode,
21
+ rootRouteId,
22
+ defaultSerializeError,
23
+ defaultParseSearch,
24
+ defaultStringifySearch,
25
+ parseSearchWith,
26
+ stringifySearchWith,
27
+ escapeJSON, // SSR
28
+ pick,
29
+ functionalUpdate,
30
+ replaceEqualDeep,
31
+ isPlainObject,
32
+ isPlainArray,
33
+ deepEqual,
34
+ shallow,
35
+ createControlledPromise,
36
+ retainSearchParams,
37
+ stripSearchParams,
38
+ } from '@tanstack/router-core'
39
+
40
+ export type {
41
+ AnyRoute,
42
+ StartSerializer,
43
+ Serializable,
44
+ SerializerParse,
45
+ SerializerParseBy,
46
+ SerializerStringify,
47
+ SerializerStringifyBy,
48
+ DeferredPromiseState,
49
+ DeferredPromise,
50
+ ParsedLocation,
51
+ ParsePathParams,
52
+ RemoveTrailingSlashes,
53
+ RemoveLeadingSlashes,
54
+ ActiveOptions,
55
+ Segment,
56
+ ResolveRelativePath,
57
+ RootRouteId,
58
+ AnyPathParams,
59
+ ResolveParams,
60
+ SearchSchemaInput,
61
+ AnyContext,
62
+ RouteContext,
63
+ PreloadableObj,
64
+ RoutePathOptions,
65
+ StaticDataRouteOption,
66
+ RoutePathOptionsIntersection,
67
+ UpdatableStaticRouteOption,
68
+ MetaDescriptor,
69
+ RouteLinkEntry,
70
+ ParseParamsFn,
71
+ SearchFilter,
72
+ ResolveId,
73
+ InferFullSearchSchema,
74
+ InferFullSearchSchemaInput,
75
+ ErrorRouteProps,
76
+ ErrorComponentProps,
77
+ NotFoundRouteProps,
78
+ TrimPath,
79
+ TrimPathLeft,
80
+ TrimPathRight,
81
+ ParseSplatParams,
82
+ SplatParams,
83
+ StringifyParamsFn,
84
+ ParamsOptions,
85
+ InferAllParams,
86
+ InferAllContext,
87
+ LooseReturnType,
88
+ LooseAsyncReturnType,
89
+ ContextReturnType,
90
+ ContextAsyncReturnType,
91
+ ResolveLoaderData,
92
+ ResolveRouteContext,
93
+ SearchSerializer,
94
+ SearchParser,
95
+ TrailingSlashOption,
96
+ ExtractedEntry,
97
+ ExtractedStream,
98
+ ExtractedPromise,
99
+ StreamState,
100
+ Manifest,
101
+ RouterManagedTag,
102
+ ControlledPromise,
103
+ Constrain,
104
+ Expand,
105
+ MergeAll,
106
+ Assign,
107
+ IntersectAssign,
108
+ ResolveValidatorInput,
109
+ ResolveValidatorOutput,
110
+ Register,
111
+ AnyValidator,
112
+ DefaultValidator,
113
+ ValidatorFn,
114
+ AnySchema,
115
+ AnyValidatorAdapter,
116
+ AnyValidatorFn,
117
+ AnyValidatorObj,
118
+ ResolveValidatorInputFn,
119
+ ResolveValidatorOutputFn,
120
+ ResolveSearchValidatorInput,
121
+ ResolveSearchValidatorInputFn,
122
+ Validator,
123
+ ValidatorAdapter,
124
+ ValidatorObj,
125
+ FileRoutesByPath,
126
+ RouteById,
127
+ RootRouteOptions,
128
+ SerializerExtensions,
129
+ CreateFileRoute,
130
+ } from '@tanstack/router-core'
131
+
132
+ export type * from './serializer'
133
+
134
+ export {
135
+ createHistory,
136
+ createBrowserHistory,
137
+ createHashHistory,
138
+ createMemoryHistory,
139
+ } from '@tanstack/history'
140
+
141
+ export type {
142
+ BlockerFn,
143
+ HistoryLocation,
144
+ RouterHistory,
145
+ ParsedPath,
146
+ HistoryState,
147
+ } from '@tanstack/history'
148
+
149
+ export { useAwaited, Await } from './awaited'
150
+ export type { AwaitOptions } from './awaited'
151
+
152
+ export { CatchBoundary, ErrorComponent } from './CatchBoundary'
153
+ export { ClientOnly } from './ClientOnly'
154
+
155
+ export {
156
+ FileRoute,
157
+ createFileRoute,
158
+ FileRouteLoader,
159
+ LazyRoute,
160
+ createLazyRoute,
161
+ createLazyFileRoute,
162
+ } from './fileRoute'
163
+
9
164
  export * from './history'
10
- export * from './lazyRouteComponent'
11
- export * from './link'
12
- export * from './location'
13
- export * from './Matches'
14
- export * from './path'
15
- export * from './qss'
16
- export * from './redirects'
17
- export * from './route'
18
- export * from './routeInfo'
19
- export * from './router'
20
- export * from './RouterProvider'
21
- export * from './scroll-restoration'
22
- export * from './searchParams'
23
- export * from './useBlocker'
24
- export * from './useNavigate'
25
- export * from './useParams'
26
- export * from './useSearch'
27
- export * from './routerContext'
28
- export * from './useRouteContext'
29
- export * from './useRouter'
30
- export * from './useRouterState'
31
- export * from './utils'
32
- export * from './not-found'
33
- export * from './createServerFn'
165
+
166
+ export { lazyRouteComponent } from './lazyRouteComponent'
167
+
168
+ export { useLinkProps, createLink, Link, linkOptions } from './link'
169
+ export type {
170
+ InferDescendantToPaths,
171
+ RelativeToPath,
172
+ RelativeToParentPath,
173
+ RelativeToCurrentPath,
174
+ AbsoluteToPath,
175
+ RelativeToPathAutoComplete,
176
+ NavigateOptions,
177
+ ToOptions,
178
+ ToMaskOptions,
179
+ ToSubOptions,
180
+ ResolveRoute,
181
+ SearchParamOptions,
182
+ PathParamOptions,
183
+ ToPathOption,
184
+ LinkOptions,
185
+ MakeOptionalPathParams,
186
+ FileRouteTypes,
187
+ RouteContextParameter,
188
+ BeforeLoadContextParameter,
189
+ ResolveAllContext,
190
+ ResolveAllParamsFromParent,
191
+ ResolveFullSearchSchema,
192
+ ResolveFullSearchSchemaInput,
193
+ RouteIds,
194
+ NavigateFn,
195
+ BuildLocationFn,
196
+ FullSearchSchemaOption,
197
+ MakeRemountDepsOptionsUnion,
198
+ RemountDepsOptions,
199
+ ResolveFullPath,
200
+ AnyRouteWithContext,
201
+ AnyRouterWithContext,
202
+ CommitLocationOptions,
203
+ MatchLocation,
204
+ UseNavigateResult,
205
+ AnyRedirect,
206
+ Redirect,
207
+ ResolvedRedirect,
208
+ MakeRouteMatch,
209
+ MakeRouteMatchUnion,
210
+ RouteMatch,
211
+ AnyRouteMatch,
212
+ RouteContextFn,
213
+ RouteContextOptions,
214
+ BeforeLoadFn,
215
+ BeforeLoadContextOptions,
216
+ ContextOptions,
217
+ RouteOptions,
218
+ FileBaseRouteOptions,
219
+ BaseRouteOptions,
220
+ UpdatableRouteOptions,
221
+ RouteLoaderFn,
222
+ LoaderFnContext,
223
+ LazyRouteOptions,
224
+ AnyRouter,
225
+ RegisteredRouter,
226
+ RouterContextOptions,
227
+ ControllablePromise,
228
+ InjectedHtmlEntry,
229
+ RouterOptions,
230
+ RouterErrorSerializer,
231
+ RouterState,
232
+ ListenerFn,
233
+ BuildNextOptions,
234
+ RouterConstructorOptions,
235
+ RouterEvents,
236
+ RouterEvent,
237
+ RouterListener,
238
+ RouteConstraints,
239
+ RouteMask,
240
+ MatchRouteOptions,
241
+ CreateLazyFileRoute,
242
+ } from '@tanstack/router-core'
243
+ export type {
244
+ UseLinkPropsOptions,
245
+ ActiveLinkOptions,
246
+ LinkProps,
247
+ LinkComponent,
248
+ LinkComponentProps,
249
+ CreateLinkProps,
250
+ } from './link'
251
+
252
+ export {
253
+ Matches,
254
+ useMatchRoute,
255
+ MatchRoute,
256
+ useMatches,
257
+ useParentMatches,
258
+ useChildMatches,
259
+ } from './Matches'
260
+
261
+ export type { UseMatchRouteOptions, MakeMatchRouteOptions } from './Matches'
262
+
263
+ export { matchContext } from './matchContext'
264
+ export { Match, Outlet } from './Match'
265
+
266
+ export { useMatch } from './useMatch'
267
+ export { useLoaderDeps } from './useLoaderDeps'
268
+ export { useLoaderData } from './useLoaderData'
269
+
270
+ export { redirect, isRedirect } from '@tanstack/router-core'
271
+
272
+ export {
273
+ RouteApi,
274
+ getRouteApi,
275
+ Route,
276
+ createRoute,
277
+ RootRoute,
278
+ rootRouteWithContext,
279
+ createRootRoute,
280
+ createRootRouteWithContext,
281
+ createRouteMask,
282
+ NotFoundRoute,
283
+ } from './route'
284
+ export type {
285
+ AnyRootRoute,
286
+ ReactNode,
287
+ SyncRouteComponent,
288
+ AsyncRouteComponent,
289
+ RouteComponent,
290
+ ErrorRouteComponent,
291
+ NotFoundRouteComponent,
292
+ } from './route'
293
+
294
+ export { createRouter, Router } from './router'
295
+
296
+ export {
297
+ componentTypes,
298
+ lazyFn,
299
+ SearchParamError,
300
+ PathParamError,
301
+ getInitialRouterState,
302
+ } from '@tanstack/router-core'
303
+
304
+ export { RouterProvider, RouterContextProvider } from './RouterProvider'
305
+ export type { RouterProps } from './RouterProvider'
306
+
307
+ export {
308
+ useElementScrollRestoration,
309
+ ScrollRestoration,
310
+ } from './ScrollRestoration'
311
+
312
+ export type { UseBlockerOpts, ShouldBlockFn } from './useBlocker'
313
+ export { useBlocker, Block } from './useBlocker'
314
+
315
+ export { useNavigate, Navigate } from './useNavigate'
316
+
317
+ export { useParams } from './useParams'
318
+ export { useSearch } from './useSearch'
319
+
320
+ export {
321
+ getRouterContext, // SSR
322
+ } from './routerContext'
323
+
324
+ export { useRouteContext } from './useRouteContext'
325
+ export { useRouter } from './useRouter'
326
+ export { useRouterState } from './useRouterState'
327
+ export { useLocation } from './useLocation'
328
+ export { useCanGoBack } from './useCanGoBack'
329
+
330
+ export {
331
+ useLayoutEffect, // SSR
332
+ useStableCallback,
333
+ } from './utils'
334
+
335
+ export { CatchNotFound, DefaultGlobalNotFound } from './not-found'
336
+ export { notFound, isNotFound } from '@tanstack/router-core'
337
+ export type { NotFoundError } from '@tanstack/router-core'
338
+
339
+ export type {
340
+ ValidateLinkOptions,
341
+ InferStructuralSharing,
342
+ ValidateUseSearchOptions,
343
+ ValidateUseParamsOptions,
344
+ ValidateLinkOptionsArray,
345
+ } from './typePrimitives'
346
+
347
+ export type {
348
+ ValidateFromPath,
349
+ ValidateToPath,
350
+ ValidateSearch,
351
+ ValidateParams,
352
+ InferFrom,
353
+ InferTo,
354
+ InferMaskTo,
355
+ InferMaskFrom,
356
+ ValidateNavigateOptions,
357
+ ValidateNavigateOptionsArray,
358
+ ValidateRedirectOptions,
359
+ ValidateRedirectOptionsArray,
360
+ ValidateId,
361
+ InferStrict,
362
+ InferShouldThrow,
363
+ InferSelected,
364
+ ValidateUseSearchResult,
365
+ ValidateUseParamsResult,
366
+ } from '@tanstack/router-core'
367
+
368
+ export { ScriptOnce } from './ScriptOnce'
369
+ export { Asset } from './Asset'
370
+ export { HeadContent } from './HeadContent'
371
+ export { Scripts } from './Scripts'
@@ -1,5 +1,7 @@
1
1
  import * as React from 'react'
2
- import { AsyncRouteComponent } from './route'
2
+ import { Outlet } from './Match'
3
+ import { ClientOnly } from './ClientOnly'
4
+ import type { AsyncRouteComponent } from './route'
3
5
 
4
6
  // If the load fails due to module not found, it may mean a new version of
5
7
  // the build was deployed and the user's browser is still using an old version.
@@ -7,9 +9,14 @@ import { AsyncRouteComponent } from './route'
7
9
  // URL to the lazy module.
8
10
  // In that case, we want to attempt one window refresh to get the latest.
9
11
  function isModuleNotFoundError(error: any): boolean {
12
+ // chrome: "Failed to fetch dynamically imported module: http://localhost:5173/src/routes/posts.index.tsx?tsr-split"
13
+ // firefox: "error loading dynamically imported module: http://localhost:5173/src/routes/posts.index.tsx?tsr-split"
14
+ // safari: "Importing a module script failed."
15
+ if (typeof error?.message !== 'string') return false
10
16
  return (
11
- typeof error?.message === 'string' &&
12
- /Failed to fetch dynamically imported module/.test(error.message)
17
+ error.message.startsWith('Failed to fetch dynamically imported module') ||
18
+ error.message.startsWith('error loading dynamically imported module') ||
19
+ error.message.startsWith('Importing a module script failed')
13
20
  )
14
21
  }
15
22
 
@@ -19,73 +26,80 @@ export function lazyRouteComponent<
19
26
  >(
20
27
  importer: () => Promise<T>,
21
28
  exportName?: TKey,
29
+ ssr?: () => boolean,
22
30
  ): T[TKey] extends (props: infer TProps) => any
23
31
  ? AsyncRouteComponent<TProps>
24
32
  : never {
25
- let loadPromise: Promise<any> & {
26
- moduleNotFoundError?: Error
27
- }
33
+ let loadPromise: Promise<any> | undefined
34
+ let comp: T[TKey] | T['default']
35
+ let error: any
36
+ let reload: boolean
28
37
 
29
38
  const load = () => {
39
+ if (typeof document === 'undefined' && ssr?.() === false) {
40
+ comp = (() => null) as any
41
+ return Promise.resolve()
42
+ }
30
43
  if (!loadPromise) {
31
- loadPromise = importer().catch((error) => {
32
- if (isModuleNotFoundError(error)) {
44
+ loadPromise = importer()
45
+ .then((res) => {
46
+ loadPromise = undefined
47
+ comp = res[exportName ?? 'default']
48
+ })
49
+ .catch((err) => {
33
50
  // We don't want an error thrown from preload in this case, because
34
51
  // there's nothing we want to do about module not found during preload.
35
- // Record the error, recover the promise with a null return,
36
- // and we will attempt module not found resolution during the render path.
37
-
38
- loadPromise.moduleNotFoundError = error
39
-
40
- return null
41
- }
42
- throw error
43
- })
52
+ // Record the error, the rest is handled during the render path.
53
+ error = err
54
+ if (isModuleNotFoundError(error)) {
55
+ if (
56
+ error instanceof Error &&
57
+ typeof window !== 'undefined' &&
58
+ typeof sessionStorage !== 'undefined'
59
+ ) {
60
+ // Again, we want to reload one time on module not found error and not enter
61
+ // a reload loop if there is some other issue besides an old deploy.
62
+ // That's why we store our reload attempt in sessionStorage.
63
+ // Use error.message as key because it contains the module path that failed.
64
+ const storageKey = `tanstack_router_reload:${error.message}`
65
+ if (!sessionStorage.getItem(storageKey)) {
66
+ sessionStorage.setItem(storageKey, '1')
67
+ reload = true
68
+ }
69
+ }
70
+ }
71
+ })
44
72
  }
45
73
 
46
74
  return loadPromise
47
75
  }
48
76
 
49
- const lazyComp = React.lazy(async () => {
50
- try {
51
- const promise = load()
52
-
53
- // Now that we're out of preload and into actual render path,
54
- // throw the error if it was a module not found error during preload
55
- if (promise.moduleNotFoundError) {
56
- throw promise.moduleNotFoundError
57
- }
58
- const moduleExports = await promise
77
+ const lazyComp = function Lazy(props: any) {
78
+ // Now that we're out of preload and into actual render path,
79
+ if (reload) {
80
+ // If it was a module loading error,
81
+ // throw eternal suspense while we wait for window to reload
82
+ window.location.reload()
83
+ throw new Promise(() => {})
84
+ }
85
+ if (error) {
86
+ // Otherwise, just throw the error
87
+ throw error
88
+ }
59
89
 
60
- const comp = moduleExports[exportName ?? 'default']
61
- return {
62
- default: comp,
63
- }
64
- } catch (error) {
65
- if (
66
- error instanceof Error &&
67
- isModuleNotFoundError(error) &&
68
- typeof window !== 'undefined' &&
69
- typeof sessionStorage !== 'undefined'
70
- ) {
71
- // Again, we want to reload one time on module not found error and not enter
72
- // a reload loop if there is some other issue besides an old deploy.
73
- // That's why we store our reload attempt in sessionStorage.
74
- // Use error.message as key because it contains the module path that failed.
75
- const storageKey = `tanstack_router_reload:${error.message}`
76
- if (!sessionStorage.getItem(storageKey)) {
77
- sessionStorage.setItem(storageKey, '1')
78
- window.location.reload()
90
+ if (!comp) {
91
+ throw load()
92
+ }
79
93
 
80
- // Return empty component while we wait for window to reload
81
- return {
82
- default: () => null,
83
- }
84
- }
85
- }
86
- throw error
94
+ if (ssr?.() === false) {
95
+ return (
96
+ <ClientOnly fallback={<Outlet />}>
97
+ {React.createElement(comp, props)}
98
+ </ClientOnly>
99
+ )
87
100
  }
88
- })
101
+ return React.createElement(comp, props)
102
+ }
89
103
 
90
104
  ;(lazyComp as any).preload = load
91
105