@depup/tanstack__react-router 1.166.4-depup.0

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 (363) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -0
  3. package/dist/cjs/Asset.cjs +177 -0
  4. package/dist/cjs/Asset.cjs.map +1 -0
  5. package/dist/cjs/Asset.d.cts +5 -0
  6. package/dist/cjs/CatchBoundary.cjs +114 -0
  7. package/dist/cjs/CatchBoundary.cjs.map +1 -0
  8. package/dist/cjs/CatchBoundary.d.cts +12 -0
  9. package/dist/cjs/ClientOnly.cjs +21 -0
  10. package/dist/cjs/ClientOnly.cjs.map +1 -0
  11. package/dist/cjs/ClientOnly.d.cts +49 -0
  12. package/dist/cjs/HeadContent.cjs +15 -0
  13. package/dist/cjs/HeadContent.cjs.map +1 -0
  14. package/dist/cjs/HeadContent.d.cts +6 -0
  15. package/dist/cjs/HeadContent.dev.cjs +41 -0
  16. package/dist/cjs/HeadContent.dev.cjs.map +1 -0
  17. package/dist/cjs/HeadContent.dev.d.cts +10 -0
  18. package/dist/cjs/Match.cjs +255 -0
  19. package/dist/cjs/Match.cjs.map +1 -0
  20. package/dist/cjs/Match.d.cts +14 -0
  21. package/dist/cjs/Matches.cjs +138 -0
  22. package/dist/cjs/Matches.cjs.map +1 -0
  23. package/dist/cjs/Matches.d.cts +68 -0
  24. package/dist/cjs/RouterProvider.cjs +32 -0
  25. package/dist/cjs/RouterProvider.cjs.map +1 -0
  26. package/dist/cjs/RouterProvider.d.cts +23 -0
  27. package/dist/cjs/SafeFragment.cjs +8 -0
  28. package/dist/cjs/SafeFragment.cjs.map +1 -0
  29. package/dist/cjs/SafeFragment.d.cts +1 -0
  30. package/dist/cjs/ScriptOnce.cjs +22 -0
  31. package/dist/cjs/ScriptOnce.cjs.map +1 -0
  32. package/dist/cjs/ScriptOnce.d.cts +6 -0
  33. package/dist/cjs/Scripts.cjs +56 -0
  34. package/dist/cjs/Scripts.cjs.map +1 -0
  35. package/dist/cjs/Scripts.d.cts +5 -0
  36. package/dist/cjs/ScrollRestoration.cjs +38 -0
  37. package/dist/cjs/ScrollRestoration.cjs.map +1 -0
  38. package/dist/cjs/ScrollRestoration.d.cts +14 -0
  39. package/dist/cjs/Transitioner.cjs +119 -0
  40. package/dist/cjs/Transitioner.cjs.map +1 -0
  41. package/dist/cjs/Transitioner.d.cts +1 -0
  42. package/dist/cjs/awaited.cjs +51 -0
  43. package/dist/cjs/awaited.cjs.map +1 -0
  44. package/dist/cjs/awaited.d.cts +14 -0
  45. package/dist/cjs/fileRoute.cjs +109 -0
  46. package/dist/cjs/fileRoute.cjs.map +1 -0
  47. package/dist/cjs/fileRoute.d.cts +87 -0
  48. package/dist/cjs/headContentUtils.cjs +185 -0
  49. package/dist/cjs/headContentUtils.cjs.map +1 -0
  50. package/dist/cjs/headContentUtils.d.cts +7 -0
  51. package/dist/cjs/history.d.cts +8 -0
  52. package/dist/cjs/index.cjs +241 -0
  53. package/dist/cjs/index.cjs.map +1 -0
  54. package/dist/cjs/index.d.cts +51 -0
  55. package/dist/cjs/index.dev.cjs +241 -0
  56. package/dist/cjs/index.dev.cjs.map +1 -0
  57. package/dist/cjs/index.dev.d.cts +2 -0
  58. package/dist/cjs/lazyRouteComponent.cjs +70 -0
  59. package/dist/cjs/lazyRouteComponent.cjs.map +1 -0
  60. package/dist/cjs/lazyRouteComponent.d.cts +11 -0
  61. package/dist/cjs/link.cjs +573 -0
  62. package/dist/cjs/link.cjs.map +1 -0
  63. package/dist/cjs/link.d.cts +98 -0
  64. package/dist/cjs/matchContext.cjs +27 -0
  65. package/dist/cjs/matchContext.cjs.map +1 -0
  66. package/dist/cjs/matchContext.d.cts +3 -0
  67. package/dist/cjs/not-found.cjs +38 -0
  68. package/dist/cjs/not-found.cjs.map +1 -0
  69. package/dist/cjs/not-found.d.cts +9 -0
  70. package/dist/cjs/renderRouteNotFound.cjs +22 -0
  71. package/dist/cjs/renderRouteNotFound.cjs.map +1 -0
  72. package/dist/cjs/renderRouteNotFound.d.cts +10 -0
  73. package/dist/cjs/route.cjs +198 -0
  74. package/dist/cjs/route.cjs.map +1 -0
  75. package/dist/cjs/route.d.cts +142 -0
  76. package/dist/cjs/router.cjs +22 -0
  77. package/dist/cjs/router.cjs.map +1 -0
  78. package/dist/cjs/router.d.cts +83 -0
  79. package/dist/cjs/routerContext.cjs +23 -0
  80. package/dist/cjs/routerContext.cjs.map +1 -0
  81. package/dist/cjs/routerContext.d.cts +3 -0
  82. package/dist/cjs/scroll-restoration.cjs +39 -0
  83. package/dist/cjs/scroll-restoration.cjs.map +1 -0
  84. package/dist/cjs/scroll-restoration.d.cts +1 -0
  85. package/dist/cjs/ssr/RouterClient.cjs +25 -0
  86. package/dist/cjs/ssr/RouterClient.cjs.map +1 -0
  87. package/dist/cjs/ssr/RouterClient.d.cts +4 -0
  88. package/dist/cjs/ssr/RouterServer.cjs +9 -0
  89. package/dist/cjs/ssr/RouterServer.cjs.map +1 -0
  90. package/dist/cjs/ssr/RouterServer.d.cts +4 -0
  91. package/dist/cjs/ssr/client.cjs +12 -0
  92. package/dist/cjs/ssr/client.cjs.map +1 -0
  93. package/dist/cjs/ssr/client.d.cts +2 -0
  94. package/dist/cjs/ssr/defaultRenderHandler.cjs +15 -0
  95. package/dist/cjs/ssr/defaultRenderHandler.cjs.map +1 -0
  96. package/dist/cjs/ssr/defaultRenderHandler.d.cts +1 -0
  97. package/dist/cjs/ssr/defaultStreamHandler.cjs +16 -0
  98. package/dist/cjs/ssr/defaultStreamHandler.cjs.map +1 -0
  99. package/dist/cjs/ssr/defaultStreamHandler.d.cts +1 -0
  100. package/dist/cjs/ssr/renderRouterToStream.cjs +73 -0
  101. package/dist/cjs/ssr/renderRouterToStream.cjs.map +1 -0
  102. package/dist/cjs/ssr/renderRouterToStream.d.cts +8 -0
  103. package/dist/cjs/ssr/renderRouterToString.cjs +31 -0
  104. package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -0
  105. package/dist/cjs/ssr/renderRouterToString.d.cts +7 -0
  106. package/dist/cjs/ssr/serializer.d.cts +6 -0
  107. package/dist/cjs/ssr/server.cjs +20 -0
  108. package/dist/cjs/ssr/server.cjs.map +1 -0
  109. package/dist/cjs/ssr/server.d.cts +6 -0
  110. package/dist/cjs/structuralSharing.d.cts +8 -0
  111. package/dist/cjs/typePrimitives.d.cts +16 -0
  112. package/dist/cjs/useBlocker.cjs +171 -0
  113. package/dist/cjs/useBlocker.cjs.map +1 -0
  114. package/dist/cjs/useBlocker.d.cts +66 -0
  115. package/dist/cjs/useCanGoBack.cjs +8 -0
  116. package/dist/cjs/useCanGoBack.cjs.map +1 -0
  117. package/dist/cjs/useCanGoBack.d.cts +1 -0
  118. package/dist/cjs/useLoaderData.cjs +15 -0
  119. package/dist/cjs/useLoaderData.cjs.map +1 -0
  120. package/dist/cjs/useLoaderData.d.cts +19 -0
  121. package/dist/cjs/useLoaderDeps.cjs +14 -0
  122. package/dist/cjs/useLoaderDeps.cjs.map +1 -0
  123. package/dist/cjs/useLoaderDeps.d.cts +19 -0
  124. package/dist/cjs/useLocation.cjs +10 -0
  125. package/dist/cjs/useLocation.cjs.map +1 -0
  126. package/dist/cjs/useLocation.d.cts +18 -0
  127. package/dist/cjs/useMatch.cjs +47 -0
  128. package/dist/cjs/useMatch.cjs.map +1 -0
  129. package/dist/cjs/useMatch.d.cts +14 -0
  130. package/dist/cjs/useNavigate.cjs +49 -0
  131. package/dist/cjs/useNavigate.cjs.map +1 -0
  132. package/dist/cjs/useNavigate.d.cts +28 -0
  133. package/dist/cjs/useParams.cjs +17 -0
  134. package/dist/cjs/useParams.cjs.map +1 -0
  135. package/dist/cjs/useParams.d.cts +21 -0
  136. package/dist/cjs/useRouteContext.cjs +11 -0
  137. package/dist/cjs/useRouteContext.cjs.map +1 -0
  138. package/dist/cjs/useRouteContext.d.cts +3 -0
  139. package/dist/cjs/useRouter.cjs +32 -0
  140. package/dist/cjs/useRouter.cjs.map +1 -0
  141. package/dist/cjs/useRouter.d.cts +14 -0
  142. package/dist/cjs/useRouterState.cjs +38 -0
  143. package/dist/cjs/useRouterState.cjs.map +1 -0
  144. package/dist/cjs/useRouterState.d.cts +20 -0
  145. package/dist/cjs/useSearch.cjs +16 -0
  146. package/dist/cjs/useSearch.cjs.map +1 -0
  147. package/dist/cjs/useSearch.d.cts +21 -0
  148. package/dist/cjs/utils.cjs +62 -0
  149. package/dist/cjs/utils.cjs.map +1 -0
  150. package/dist/cjs/utils.d.cts +54 -0
  151. package/dist/esm/Asset.d.ts +5 -0
  152. package/dist/esm/Asset.js +160 -0
  153. package/dist/esm/Asset.js.map +1 -0
  154. package/dist/esm/CatchBoundary.d.ts +12 -0
  155. package/dist/esm/CatchBoundary.js +97 -0
  156. package/dist/esm/CatchBoundary.js.map +1 -0
  157. package/dist/esm/ClientOnly.d.ts +49 -0
  158. package/dist/esm/ClientOnly.js +21 -0
  159. package/dist/esm/ClientOnly.js.map +1 -0
  160. package/dist/esm/HeadContent.d.ts +6 -0
  161. package/dist/esm/HeadContent.dev.d.ts +10 -0
  162. package/dist/esm/HeadContent.dev.js +25 -0
  163. package/dist/esm/HeadContent.dev.js.map +1 -0
  164. package/dist/esm/HeadContent.js +15 -0
  165. package/dist/esm/HeadContent.js.map +1 -0
  166. package/dist/esm/Match.d.ts +14 -0
  167. package/dist/esm/Match.js +238 -0
  168. package/dist/esm/Match.js.map +1 -0
  169. package/dist/esm/Matches.d.ts +68 -0
  170. package/dist/esm/Matches.js +121 -0
  171. package/dist/esm/Matches.js.map +1 -0
  172. package/dist/esm/RouterProvider.d.ts +23 -0
  173. package/dist/esm/RouterProvider.js +32 -0
  174. package/dist/esm/RouterProvider.js.map +1 -0
  175. package/dist/esm/SafeFragment.d.ts +1 -0
  176. package/dist/esm/SafeFragment.js +8 -0
  177. package/dist/esm/SafeFragment.js.map +1 -0
  178. package/dist/esm/ScriptOnce.d.ts +6 -0
  179. package/dist/esm/ScriptOnce.js +22 -0
  180. package/dist/esm/ScriptOnce.js.map +1 -0
  181. package/dist/esm/Scripts.d.ts +5 -0
  182. package/dist/esm/Scripts.js +56 -0
  183. package/dist/esm/Scripts.js.map +1 -0
  184. package/dist/esm/ScrollRestoration.d.ts +14 -0
  185. package/dist/esm/ScrollRestoration.js +38 -0
  186. package/dist/esm/ScrollRestoration.js.map +1 -0
  187. package/dist/esm/Transitioner.d.ts +1 -0
  188. package/dist/esm/Transitioner.js +102 -0
  189. package/dist/esm/Transitioner.js.map +1 -0
  190. package/dist/esm/awaited.d.ts +14 -0
  191. package/dist/esm/awaited.js +34 -0
  192. package/dist/esm/awaited.js.map +1 -0
  193. package/dist/esm/fileRoute.d.ts +87 -0
  194. package/dist/esm/fileRoute.js +109 -0
  195. package/dist/esm/fileRoute.js.map +1 -0
  196. package/dist/esm/headContentUtils.d.ts +7 -0
  197. package/dist/esm/headContentUtils.js +168 -0
  198. package/dist/esm/headContentUtils.js.map +1 -0
  199. package/dist/esm/history.d.ts +8 -0
  200. package/dist/esm/index.d.ts +51 -0
  201. package/dist/esm/index.dev.d.ts +2 -0
  202. package/dist/esm/index.dev.js +133 -0
  203. package/dist/esm/index.dev.js.map +1 -0
  204. package/dist/esm/index.js +133 -0
  205. package/dist/esm/index.js.map +1 -0
  206. package/dist/esm/lazyRouteComponent.d.ts +11 -0
  207. package/dist/esm/lazyRouteComponent.js +53 -0
  208. package/dist/esm/lazyRouteComponent.js.map +1 -0
  209. package/dist/esm/link.d.ts +98 -0
  210. package/dist/esm/link.js +556 -0
  211. package/dist/esm/link.js.map +1 -0
  212. package/dist/esm/matchContext.d.ts +3 -0
  213. package/dist/esm/matchContext.js +10 -0
  214. package/dist/esm/matchContext.js.map +1 -0
  215. package/dist/esm/not-found.d.ts +9 -0
  216. package/dist/esm/not-found.js +38 -0
  217. package/dist/esm/not-found.js.map +1 -0
  218. package/dist/esm/renderRouteNotFound.d.ts +10 -0
  219. package/dist/esm/renderRouteNotFound.js +22 -0
  220. package/dist/esm/renderRouteNotFound.js.map +1 -0
  221. package/dist/esm/route.d.ts +142 -0
  222. package/dist/esm/route.js +198 -0
  223. package/dist/esm/route.js.map +1 -0
  224. package/dist/esm/router.d.ts +83 -0
  225. package/dist/esm/router.js +22 -0
  226. package/dist/esm/router.js.map +1 -0
  227. package/dist/esm/routerContext.d.ts +3 -0
  228. package/dist/esm/routerContext.js +6 -0
  229. package/dist/esm/routerContext.js.map +1 -0
  230. package/dist/esm/scroll-restoration.d.ts +1 -0
  231. package/dist/esm/scroll-restoration.js +39 -0
  232. package/dist/esm/scroll-restoration.js.map +1 -0
  233. package/dist/esm/ssr/RouterClient.d.ts +4 -0
  234. package/dist/esm/ssr/RouterClient.js +25 -0
  235. package/dist/esm/ssr/RouterClient.js.map +1 -0
  236. package/dist/esm/ssr/RouterServer.d.ts +4 -0
  237. package/dist/esm/ssr/RouterServer.js +9 -0
  238. package/dist/esm/ssr/RouterServer.js.map +1 -0
  239. package/dist/esm/ssr/client.d.ts +2 -0
  240. package/dist/esm/ssr/client.js +6 -0
  241. package/dist/esm/ssr/client.js.map +1 -0
  242. package/dist/esm/ssr/defaultRenderHandler.d.ts +1 -0
  243. package/dist/esm/ssr/defaultRenderHandler.js +15 -0
  244. package/dist/esm/ssr/defaultRenderHandler.js.map +1 -0
  245. package/dist/esm/ssr/defaultStreamHandler.d.ts +1 -0
  246. package/dist/esm/ssr/defaultStreamHandler.js +16 -0
  247. package/dist/esm/ssr/defaultStreamHandler.js.map +1 -0
  248. package/dist/esm/ssr/renderRouterToStream.d.ts +8 -0
  249. package/dist/esm/ssr/renderRouterToStream.js +73 -0
  250. package/dist/esm/ssr/renderRouterToStream.js.map +1 -0
  251. package/dist/esm/ssr/renderRouterToString.d.ts +7 -0
  252. package/dist/esm/ssr/renderRouterToString.js +31 -0
  253. package/dist/esm/ssr/renderRouterToString.js.map +1 -0
  254. package/dist/esm/ssr/serializer.d.ts +6 -0
  255. package/dist/esm/ssr/server.d.ts +6 -0
  256. package/dist/esm/ssr/server.js +14 -0
  257. package/dist/esm/ssr/server.js.map +1 -0
  258. package/dist/esm/structuralSharing.d.ts +8 -0
  259. package/dist/esm/typePrimitives.d.ts +16 -0
  260. package/dist/esm/useBlocker.d.ts +66 -0
  261. package/dist/esm/useBlocker.js +154 -0
  262. package/dist/esm/useBlocker.js.map +1 -0
  263. package/dist/esm/useCanGoBack.d.ts +1 -0
  264. package/dist/esm/useCanGoBack.js +8 -0
  265. package/dist/esm/useCanGoBack.js.map +1 -0
  266. package/dist/esm/useLoaderData.d.ts +19 -0
  267. package/dist/esm/useLoaderData.js +15 -0
  268. package/dist/esm/useLoaderData.js.map +1 -0
  269. package/dist/esm/useLoaderDeps.d.ts +19 -0
  270. package/dist/esm/useLoaderDeps.js +14 -0
  271. package/dist/esm/useLoaderDeps.js.map +1 -0
  272. package/dist/esm/useLocation.d.ts +18 -0
  273. package/dist/esm/useLocation.js +10 -0
  274. package/dist/esm/useLocation.js.map +1 -0
  275. package/dist/esm/useMatch.d.ts +14 -0
  276. package/dist/esm/useMatch.js +30 -0
  277. package/dist/esm/useMatch.js.map +1 -0
  278. package/dist/esm/useNavigate.d.ts +28 -0
  279. package/dist/esm/useNavigate.js +32 -0
  280. package/dist/esm/useNavigate.js.map +1 -0
  281. package/dist/esm/useParams.d.ts +21 -0
  282. package/dist/esm/useParams.js +17 -0
  283. package/dist/esm/useParams.js.map +1 -0
  284. package/dist/esm/useRouteContext.d.ts +3 -0
  285. package/dist/esm/useRouteContext.js +11 -0
  286. package/dist/esm/useRouteContext.js.map +1 -0
  287. package/dist/esm/useRouter.d.ts +14 -0
  288. package/dist/esm/useRouter.js +15 -0
  289. package/dist/esm/useRouter.js.map +1 -0
  290. package/dist/esm/useRouterState.d.ts +20 -0
  291. package/dist/esm/useRouterState.js +38 -0
  292. package/dist/esm/useRouterState.js.map +1 -0
  293. package/dist/esm/useSearch.d.ts +21 -0
  294. package/dist/esm/useSearch.js +16 -0
  295. package/dist/esm/useSearch.js.map +1 -0
  296. package/dist/esm/utils.d.ts +54 -0
  297. package/dist/esm/utils.js +45 -0
  298. package/dist/esm/utils.js.map +1 -0
  299. package/dist/llms/index.d.ts +3 -0
  300. package/dist/llms/index.js +43 -0
  301. package/dist/llms/rules/api.d.ts +2 -0
  302. package/dist/llms/rules/api.js +4612 -0
  303. package/dist/llms/rules/guide.d.ts +2 -0
  304. package/dist/llms/rules/guide.js +10690 -0
  305. package/dist/llms/rules/installation.d.ts +2 -0
  306. package/dist/llms/rules/installation.js +1285 -0
  307. package/dist/llms/rules/routing.d.ts +2 -0
  308. package/dist/llms/rules/routing.js +1984 -0
  309. package/dist/llms/rules/setup-and-architecture.d.ts +2 -0
  310. package/dist/llms/rules/setup-and-architecture.js +920 -0
  311. package/package.json +142 -0
  312. package/src/Asset.tsx +219 -0
  313. package/src/CatchBoundary.tsx +120 -0
  314. package/src/ClientOnly.tsx +68 -0
  315. package/src/HeadContent.dev.tsx +46 -0
  316. package/src/HeadContent.tsx +22 -0
  317. package/src/Match.tsx +360 -0
  318. package/src/Matches.tsx +313 -0
  319. package/src/RouterProvider.tsx +92 -0
  320. package/src/SafeFragment.tsx +5 -0
  321. package/src/ScriptOnce.tsx +21 -0
  322. package/src/Scripts.tsx +80 -0
  323. package/src/ScrollRestoration.tsx +69 -0
  324. package/src/Transitioner.tsx +134 -0
  325. package/src/awaited.tsx +55 -0
  326. package/src/fileRoute.ts +313 -0
  327. package/src/headContentUtils.tsx +217 -0
  328. package/src/history.ts +9 -0
  329. package/src/index.dev.tsx +6 -0
  330. package/src/index.tsx +341 -0
  331. package/src/lazyRouteComponent.tsx +96 -0
  332. package/src/link.tsx +984 -0
  333. package/src/matchContext.tsx +8 -0
  334. package/src/not-found.tsx +43 -0
  335. package/src/renderRouteNotFound.tsx +35 -0
  336. package/src/route.tsx +740 -0
  337. package/src/router.ts +127 -0
  338. package/src/routerContext.tsx +4 -0
  339. package/src/scroll-restoration.tsx +45 -0
  340. package/src/ssr/RouterClient.tsx +22 -0
  341. package/src/ssr/RouterServer.tsx +9 -0
  342. package/src/ssr/client.ts +2 -0
  343. package/src/ssr/defaultRenderHandler.tsx +12 -0
  344. package/src/ssr/defaultStreamHandler.tsx +13 -0
  345. package/src/ssr/renderRouterToStream.tsx +90 -0
  346. package/src/ssr/renderRouterToString.tsx +36 -0
  347. package/src/ssr/serializer.ts +7 -0
  348. package/src/ssr/server.ts +6 -0
  349. package/src/structuralSharing.ts +47 -0
  350. package/src/typePrimitives.ts +84 -0
  351. package/src/useBlocker.tsx +320 -0
  352. package/src/useCanGoBack.ts +5 -0
  353. package/src/useLoaderData.tsx +91 -0
  354. package/src/useLoaderDeps.tsx +69 -0
  355. package/src/useLocation.tsx +52 -0
  356. package/src/useMatch.tsx +123 -0
  357. package/src/useNavigate.tsx +78 -0
  358. package/src/useParams.tsx +107 -0
  359. package/src/useRouteContext.ts +30 -0
  360. package/src/useRouter.tsx +25 -0
  361. package/src/useRouterState.tsx +86 -0
  362. package/src/useSearch.tsx +105 -0
  363. package/src/utils.ts +125 -0
package/src/router.ts ADDED
@@ -0,0 +1,127 @@
1
+ import { RouterCore } from '@tanstack/router-core'
2
+ import { createFileRoute, createLazyFileRoute } from './fileRoute'
3
+ import type { RouterHistory } from '@tanstack/history'
4
+ import type {
5
+ AnyRoute,
6
+ CreateRouterFn,
7
+ RouterConstructorOptions,
8
+ TrailingSlashOption,
9
+ } from '@tanstack/router-core'
10
+
11
+ import type {
12
+ ErrorRouteComponent,
13
+ NotFoundRouteComponent,
14
+ RouteComponent,
15
+ } from './route'
16
+
17
+ declare module '@tanstack/router-core' {
18
+ export interface RouterOptionsExtensions {
19
+ /**
20
+ * The default `component` a route should use if no component is provided.
21
+ *
22
+ * @default Outlet
23
+ * @link [API Docs](https://tanstack.com/router/latest/docs/framework/react/api/router/RouterOptionsType#defaultcomponent-property)
24
+ */
25
+ defaultComponent?: RouteComponent
26
+ /**
27
+ * The default `errorComponent` a route should use if no error component is provided.
28
+ *
29
+ * @default ErrorComponent
30
+ * @link [API Docs](https://tanstack.com/router/latest/docs/framework/react/api/router/RouterOptionsType#defaulterrorcomponent-property)
31
+ * @link [Guide](https://tanstack.com/router/latest/docs/framework/react/guide/data-loading#handling-errors-with-routeoptionserrorcomponent)
32
+ */
33
+ defaultErrorComponent?: ErrorRouteComponent
34
+ /**
35
+ * The default `pendingComponent` a route should use if no pending component is provided.
36
+ *
37
+ * @link [API Docs](https://tanstack.com/router/latest/docs/framework/react/api/router/RouterOptionsType#defaultpendingcomponent-property)
38
+ * @link [Guide](https://tanstack.com/router/latest/docs/framework/react/guide/data-loading#showing-a-pending-component)
39
+ */
40
+ defaultPendingComponent?: RouteComponent
41
+ /**
42
+ * The default `notFoundComponent` a route should use if no notFound component is provided.
43
+ *
44
+ * @default NotFound
45
+ * @link [API Docs](https://tanstack.com/router/latest/docs/framework/react/api/router/RouterOptionsType#defaultnotfoundcomponent-property)
46
+ * @link [Guide](https://tanstack.com/router/latest/docs/framework/react/guide/not-found-errors#default-router-wide-not-found-handling)
47
+ */
48
+ defaultNotFoundComponent?: NotFoundRouteComponent
49
+ /**
50
+ * A component that will be used to wrap the entire router.
51
+ *
52
+ * This is useful for providing a context to the entire router.
53
+ *
54
+ * Only non-DOM-rendering components like providers should be used, anything else will cause a hydration error.
55
+ *
56
+ * @link [API Docs](https://tanstack.com/router/latest/docs/framework/react/api/router/RouterOptionsType#wrap-property)
57
+ */
58
+ Wrap?: (props: { children: any }) => React.JSX.Element
59
+ /**
60
+ * A component that will be used to wrap the inner contents of the router.
61
+ *
62
+ * This is useful for providing a context to the inner contents of the router where you also need access to the router context and hooks.
63
+ *
64
+ * Only non-DOM-rendering components like providers should be used, anything else will cause a hydration error.
65
+ *
66
+ * @link [API Docs](https://tanstack.com/router/latest/docs/framework/react/api/router/RouterOptionsType#innerwrap-property)
67
+ */
68
+ InnerWrap?: (props: { children: any }) => React.JSX.Element
69
+
70
+ /**
71
+ * The default `onCatch` handler for errors caught by the Router ErrorBoundary
72
+ *
73
+ * @link [API Docs](https://tanstack.com/router/latest/docs/framework/react/api/router/RouterOptionsType#defaultoncatch-property)
74
+ * @link [Guide](https://tanstack.com/router/latest/docs/framework/react/guide/data-loading#handling-errors-with-routeoptionsoncatch)
75
+ */
76
+ defaultOnCatch?: (error: Error, errorInfo: React.ErrorInfo) => void
77
+ }
78
+ }
79
+
80
+ /**
81
+ * Creates a new Router instance for React.
82
+ *
83
+ * Pass the returned router to `RouterProvider` to enable routing.
84
+ * Notable options: `routeTree` (your route definitions) and `context`
85
+ * (required if the root route was created with `createRootRouteWithContext`).
86
+ *
87
+ * @param options Router options used to configure the router.
88
+ * @returns A Router instance to be provided to `RouterProvider`.
89
+ * @link https://tanstack.com/router/latest/docs/framework/react/api/router/createRouterFunction
90
+ */
91
+ export const createRouter: CreateRouterFn = (options) => {
92
+ return new Router(options)
93
+ }
94
+
95
+ export class Router<
96
+ in out TRouteTree extends AnyRoute,
97
+ in out TTrailingSlashOption extends TrailingSlashOption = 'never',
98
+ in out TDefaultStructuralSharingOption extends boolean = false,
99
+ in out TRouterHistory extends RouterHistory = RouterHistory,
100
+ in out TDehydrated extends Record<string, any> = Record<string, any>,
101
+ > extends RouterCore<
102
+ TRouteTree,
103
+ TTrailingSlashOption,
104
+ TDefaultStructuralSharingOption,
105
+ TRouterHistory,
106
+ TDehydrated
107
+ > {
108
+ constructor(
109
+ options: RouterConstructorOptions<
110
+ TRouteTree,
111
+ TTrailingSlashOption,
112
+ TDefaultStructuralSharingOption,
113
+ TRouterHistory,
114
+ TDehydrated
115
+ >,
116
+ ) {
117
+ super(options)
118
+ }
119
+ }
120
+
121
+ if (typeof globalThis !== 'undefined') {
122
+ ;(globalThis as any).createFileRoute = createFileRoute
123
+ ;(globalThis as any).createLazyFileRoute = createLazyFileRoute
124
+ } else if (typeof window !== 'undefined') {
125
+ ;(window as any).createFileRoute = createFileRoute
126
+ ;(window as any).createLazyFileRoute = createLazyFileRoute
127
+ }
@@ -0,0 +1,4 @@
1
+ import * as React from 'react'
2
+ import type { AnyRouter } from '@tanstack/router-core'
3
+
4
+ export const routerContext = React.createContext<AnyRouter>(null!)
@@ -0,0 +1,45 @@
1
+ import {
2
+ defaultGetScrollRestorationKey,
3
+ escapeHtml,
4
+ restoreScroll,
5
+ storageKey,
6
+ } from '@tanstack/router-core'
7
+ import { isServer } from '@tanstack/router-core/isServer'
8
+ import { useRouter } from './useRouter'
9
+ import { ScriptOnce } from './ScriptOnce'
10
+
11
+ export function ScrollRestoration() {
12
+ const router = useRouter()
13
+ if (!router.isScrollRestoring || !(isServer ?? router.isServer)) {
14
+ return null
15
+ }
16
+ if (typeof router.options.scrollRestoration === 'function') {
17
+ const shouldRestore = router.options.scrollRestoration({
18
+ location: router.latestLocation,
19
+ })
20
+ if (!shouldRestore) {
21
+ return null
22
+ }
23
+ }
24
+ const getKey =
25
+ router.options.getScrollRestorationKey || defaultGetScrollRestorationKey
26
+ const userKey = getKey(router.latestLocation)
27
+ const resolvedKey =
28
+ userKey !== defaultGetScrollRestorationKey(router.latestLocation)
29
+ ? userKey
30
+ : undefined
31
+
32
+ const restoreScrollOptions: Parameters<typeof restoreScroll>[0] = {
33
+ storageKey,
34
+ shouldScrollRestoration: true,
35
+ }
36
+ if (resolvedKey) {
37
+ restoreScrollOptions.key = resolvedKey
38
+ }
39
+
40
+ return (
41
+ <ScriptOnce
42
+ children={`(${restoreScroll.toString()})(${escapeHtml(JSON.stringify(restoreScrollOptions))})`}
43
+ />
44
+ )
45
+ }
@@ -0,0 +1,22 @@
1
+ import { hydrate } from '@tanstack/router-core/ssr/client'
2
+ import { Await } from '../awaited'
3
+ import { RouterProvider } from '../RouterProvider'
4
+ import type { AnyRouter } from '@tanstack/router-core'
5
+
6
+ let hydrationPromise: Promise<void | Array<Array<void>>> | undefined
7
+
8
+ export function RouterClient(props: { router: AnyRouter }) {
9
+ if (!hydrationPromise) {
10
+ if (!props.router.state.matches.length) {
11
+ hydrationPromise = hydrate(props.router)
12
+ } else {
13
+ hydrationPromise = Promise.resolve()
14
+ }
15
+ }
16
+ return (
17
+ <Await
18
+ promise={hydrationPromise}
19
+ children={() => <RouterProvider router={props.router} />}
20
+ />
21
+ )
22
+ }
@@ -0,0 +1,9 @@
1
+ import * as React from 'react'
2
+ import { RouterProvider } from '../RouterProvider'
3
+ import type { AnyRouter } from '@tanstack/router-core'
4
+
5
+ export function RouterServer<TRouter extends AnyRouter>(props: {
6
+ router: TRouter
7
+ }) {
8
+ return <RouterProvider router={props.router} />
9
+ }
@@ -0,0 +1,2 @@
1
+ export { RouterClient } from './RouterClient'
2
+ export * from '@tanstack/router-core/ssr/client'
@@ -0,0 +1,12 @@
1
+ import { defineHandlerCallback } from '@tanstack/router-core/ssr/server'
2
+ import { renderRouterToString } from './renderRouterToString'
3
+ import { RouterServer } from './RouterServer'
4
+
5
+ export const defaultRenderHandler = defineHandlerCallback(
6
+ ({ router, responseHeaders }) =>
7
+ renderRouterToString({
8
+ router,
9
+ responseHeaders,
10
+ children: <RouterServer router={router} />,
11
+ }),
12
+ )
@@ -0,0 +1,13 @@
1
+ import { defineHandlerCallback } from '@tanstack/router-core/ssr/server'
2
+ import { RouterServer } from './RouterServer'
3
+ import { renderRouterToStream } from './renderRouterToStream'
4
+
5
+ export const defaultStreamHandler = defineHandlerCallback(
6
+ ({ request, router, responseHeaders }) =>
7
+ renderRouterToStream({
8
+ request,
9
+ router,
10
+ responseHeaders,
11
+ children: <RouterServer router={router} />,
12
+ }),
13
+ )
@@ -0,0 +1,90 @@
1
+ import { PassThrough } from 'node:stream'
2
+ import ReactDOMServer from 'react-dom/server'
3
+ import { isbot } from 'isbot'
4
+ import {
5
+ transformPipeableStreamWithRouter,
6
+ transformReadableStreamWithRouter,
7
+ } from '@tanstack/router-core/ssr/server'
8
+ import type { AnyRouter } from '@tanstack/router-core'
9
+ import type { ReadableStream } from 'node:stream/web'
10
+ import type { ReactNode } from 'react'
11
+
12
+ export const renderRouterToStream = async ({
13
+ request,
14
+ router,
15
+ responseHeaders,
16
+ children,
17
+ }: {
18
+ request: Request
19
+ router: AnyRouter
20
+ responseHeaders: Headers
21
+ children: ReactNode
22
+ }) => {
23
+ if (typeof ReactDOMServer.renderToReadableStream === 'function') {
24
+ const stream = await ReactDOMServer.renderToReadableStream(children, {
25
+ signal: request.signal,
26
+ nonce: router.options.ssr?.nonce,
27
+ progressiveChunkSize: Number.POSITIVE_INFINITY,
28
+ })
29
+
30
+ if (isbot(request.headers.get('User-Agent'))) {
31
+ await stream.allReady
32
+ }
33
+
34
+ const responseStream = transformReadableStreamWithRouter(
35
+ router,
36
+ stream as unknown as ReadableStream,
37
+ )
38
+ return new Response(responseStream as any, {
39
+ status: router.state.statusCode,
40
+ headers: responseHeaders,
41
+ })
42
+ }
43
+
44
+ if (typeof ReactDOMServer.renderToPipeableStream === 'function') {
45
+ const reactAppPassthrough = new PassThrough()
46
+
47
+ try {
48
+ const pipeable = ReactDOMServer.renderToPipeableStream(children, {
49
+ nonce: router.options.ssr?.nonce,
50
+ progressiveChunkSize: Number.POSITIVE_INFINITY,
51
+ ...(isbot(request.headers.get('User-Agent'))
52
+ ? {
53
+ onAllReady() {
54
+ pipeable.pipe(reactAppPassthrough)
55
+ },
56
+ }
57
+ : {
58
+ onShellReady() {
59
+ pipeable.pipe(reactAppPassthrough)
60
+ },
61
+ }),
62
+ onError: (error, info) => {
63
+ console.error('Error in renderToPipeableStream:', error, info)
64
+ // Destroy the passthrough stream on error
65
+ if (!reactAppPassthrough.destroyed) {
66
+ reactAppPassthrough.destroy(
67
+ error instanceof Error ? error : new Error(String(error)),
68
+ )
69
+ }
70
+ },
71
+ })
72
+ } catch (e) {
73
+ console.error('Error in renderToPipeableStream:', e)
74
+ reactAppPassthrough.destroy(e instanceof Error ? e : new Error(String(e)))
75
+ }
76
+
77
+ const responseStream = transformPipeableStreamWithRouter(
78
+ router,
79
+ reactAppPassthrough,
80
+ )
81
+ return new Response(responseStream as any, {
82
+ status: router.state.statusCode,
83
+ headers: responseHeaders,
84
+ })
85
+ }
86
+
87
+ throw new Error(
88
+ 'No renderToReadableStream or renderToPipeableStream found in react-dom/server. Ensure you are using a version of react-dom that supports streaming.',
89
+ )
90
+ }
@@ -0,0 +1,36 @@
1
+ import ReactDOMServer from 'react-dom/server'
2
+ import type { ReactNode } from 'react'
3
+ import type { AnyRouter } from '@tanstack/router-core'
4
+
5
+ export const renderRouterToString = async ({
6
+ router,
7
+ responseHeaders,
8
+ children,
9
+ }: {
10
+ router: AnyRouter
11
+ responseHeaders: Headers
12
+ children: ReactNode
13
+ }) => {
14
+ try {
15
+ let html = ReactDOMServer.renderToString(children)
16
+ router.serverSsr!.setRenderFinished()
17
+
18
+ const injectedHtml = router.serverSsr!.takeBufferedHtml()
19
+ if (injectedHtml) {
20
+ html = html.replace(`</body>`, () => `${injectedHtml}</body>`)
21
+ }
22
+
23
+ return new Response(`<!DOCTYPE html>${html}`, {
24
+ status: router.state.statusCode,
25
+ headers: responseHeaders,
26
+ })
27
+ } catch (error) {
28
+ console.error('Render to string error:', error)
29
+ return new Response('Internal Server Error', {
30
+ status: 500,
31
+ headers: responseHeaders,
32
+ })
33
+ } finally {
34
+ router.serverSsr?.cleanup()
35
+ }
36
+ }
@@ -0,0 +1,7 @@
1
+ import type * as React from 'react'
2
+
3
+ declare module '@tanstack/router-core' {
4
+ export interface SerializerExtensions {
5
+ ReadableStream: React.JSX.Element
6
+ }
7
+ }
@@ -0,0 +1,6 @@
1
+ export { RouterServer } from './RouterServer'
2
+ export { defaultRenderHandler } from './defaultRenderHandler'
3
+ export { defaultStreamHandler } from './defaultStreamHandler'
4
+ export { renderRouterToStream } from './renderRouterToStream'
5
+ export { renderRouterToString } from './renderRouterToString'
6
+ export * from '@tanstack/router-core/ssr/server'
@@ -0,0 +1,47 @@
1
+ import type {
2
+ AnyRouter,
3
+ Constrain,
4
+ OptionalStructuralSharing,
5
+ ValidateJSON,
6
+ } from '@tanstack/router-core'
7
+
8
+ export type DefaultStructuralSharingEnabled<TRouter extends AnyRouter> =
9
+ boolean extends TRouter['options']['defaultStructuralSharing']
10
+ ? // for now, default to false.
11
+ // TODO in V2: default to true
12
+ false
13
+ : NonNullable<TRouter['options']['defaultStructuralSharing']>
14
+
15
+ export interface RequiredStructuralSharing<TStructuralSharing, TConstraint> {
16
+ readonly structuralSharing: Constrain<TStructuralSharing, TConstraint>
17
+ }
18
+
19
+ export type StructuralSharingOption<
20
+ TRouter extends AnyRouter,
21
+ TSelected,
22
+ TStructuralSharing,
23
+ > = unknown extends TSelected
24
+ ? OptionalStructuralSharing<TStructuralSharing, boolean>
25
+ : unknown extends TRouter['routeTree']
26
+ ? OptionalStructuralSharing<TStructuralSharing, boolean>
27
+ : TSelected extends ValidateJSON<TSelected>
28
+ ? OptionalStructuralSharing<TStructuralSharing, boolean>
29
+ : DefaultStructuralSharingEnabled<TRouter> extends true
30
+ ? RequiredStructuralSharing<TStructuralSharing, false>
31
+ : OptionalStructuralSharing<TStructuralSharing, false>
32
+
33
+ export type StructuralSharingEnabled<
34
+ TRouter extends AnyRouter,
35
+ TStructuralSharing,
36
+ > = boolean extends TStructuralSharing
37
+ ? DefaultStructuralSharingEnabled<TRouter>
38
+ : TStructuralSharing
39
+
40
+ export type ValidateSelected<
41
+ TRouter extends AnyRouter,
42
+ TSelected,
43
+ TStructuralSharing,
44
+ > =
45
+ StructuralSharingEnabled<TRouter, TStructuralSharing> extends true
46
+ ? ValidateJSON<TSelected>
47
+ : TSelected
@@ -0,0 +1,84 @@
1
+ import type {
2
+ AnyRouter,
3
+ Constrain,
4
+ InferFrom,
5
+ InferMaskFrom,
6
+ InferMaskTo,
7
+ InferSelected,
8
+ InferShouldThrow,
9
+ InferStrict,
10
+ InferTo,
11
+ RegisteredRouter,
12
+ } from '@tanstack/router-core'
13
+ import type { LinkComponentProps } from './link'
14
+ import type { UseParamsOptions } from './useParams'
15
+ import type { UseSearchOptions } from './useSearch'
16
+
17
+ export type ValidateLinkOptions<
18
+ TRouter extends AnyRouter = RegisteredRouter,
19
+ TOptions = unknown,
20
+ TDefaultFrom extends string = string,
21
+ TComp = 'a',
22
+ > = Constrain<
23
+ TOptions,
24
+ LinkComponentProps<
25
+ TComp,
26
+ TRouter,
27
+ InferFrom<TOptions, TDefaultFrom>,
28
+ InferTo<TOptions>,
29
+ InferMaskFrom<TOptions>,
30
+ InferMaskTo<TOptions>
31
+ >
32
+ >
33
+
34
+ /**
35
+ * @private
36
+ */
37
+ export type InferStructuralSharing<TOptions> = TOptions extends {
38
+ structuralSharing: infer TStructuralSharing
39
+ }
40
+ ? TStructuralSharing
41
+ : unknown
42
+
43
+ export type ValidateUseSearchOptions<
44
+ TOptions,
45
+ TRouter extends AnyRouter = RegisteredRouter,
46
+ > = Constrain<
47
+ TOptions,
48
+ UseSearchOptions<
49
+ TRouter,
50
+ InferFrom<TOptions>,
51
+ InferStrict<TOptions>,
52
+ InferShouldThrow<TOptions>,
53
+ InferSelected<TOptions>,
54
+ InferStructuralSharing<TOptions>
55
+ >
56
+ >
57
+
58
+ export type ValidateUseParamsOptions<
59
+ TOptions,
60
+ TRouter extends AnyRouter = RegisteredRouter,
61
+ > = Constrain<
62
+ TOptions,
63
+ UseParamsOptions<
64
+ TRouter,
65
+ InferFrom<TOptions>,
66
+ InferStrict<TOptions>,
67
+ InferShouldThrow<TOptions>,
68
+ InferSelected<TOptions>,
69
+ InferSelected<TOptions>
70
+ >
71
+ >
72
+ export type ValidateLinkOptionsArray<
73
+ TRouter extends AnyRouter = RegisteredRouter,
74
+ TOptions extends ReadonlyArray<any> = ReadonlyArray<unknown>,
75
+ TDefaultFrom extends string = string,
76
+ TComp = 'a',
77
+ > = {
78
+ [K in keyof TOptions]: ValidateLinkOptions<
79
+ TRouter,
80
+ TOptions[K],
81
+ TDefaultFrom,
82
+ TComp
83
+ >
84
+ }