@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.
- package/LICENSE +21 -0
- package/README.md +32 -0
- package/dist/cjs/Asset.cjs +177 -0
- package/dist/cjs/Asset.cjs.map +1 -0
- package/dist/cjs/Asset.d.cts +5 -0
- package/dist/cjs/CatchBoundary.cjs +114 -0
- package/dist/cjs/CatchBoundary.cjs.map +1 -0
- package/dist/cjs/CatchBoundary.d.cts +12 -0
- package/dist/cjs/ClientOnly.cjs +21 -0
- package/dist/cjs/ClientOnly.cjs.map +1 -0
- package/dist/cjs/ClientOnly.d.cts +49 -0
- package/dist/cjs/HeadContent.cjs +15 -0
- package/dist/cjs/HeadContent.cjs.map +1 -0
- package/dist/cjs/HeadContent.d.cts +6 -0
- package/dist/cjs/HeadContent.dev.cjs +41 -0
- package/dist/cjs/HeadContent.dev.cjs.map +1 -0
- package/dist/cjs/HeadContent.dev.d.cts +10 -0
- package/dist/cjs/Match.cjs +255 -0
- package/dist/cjs/Match.cjs.map +1 -0
- package/dist/cjs/Match.d.cts +14 -0
- package/dist/cjs/Matches.cjs +138 -0
- package/dist/cjs/Matches.cjs.map +1 -0
- package/dist/cjs/Matches.d.cts +68 -0
- package/dist/cjs/RouterProvider.cjs +32 -0
- package/dist/cjs/RouterProvider.cjs.map +1 -0
- package/dist/cjs/RouterProvider.d.cts +23 -0
- package/dist/cjs/SafeFragment.cjs +8 -0
- package/dist/cjs/SafeFragment.cjs.map +1 -0
- package/dist/cjs/SafeFragment.d.cts +1 -0
- package/dist/cjs/ScriptOnce.cjs +22 -0
- package/dist/cjs/ScriptOnce.cjs.map +1 -0
- package/dist/cjs/ScriptOnce.d.cts +6 -0
- package/dist/cjs/Scripts.cjs +56 -0
- package/dist/cjs/Scripts.cjs.map +1 -0
- package/dist/cjs/Scripts.d.cts +5 -0
- package/dist/cjs/ScrollRestoration.cjs +38 -0
- package/dist/cjs/ScrollRestoration.cjs.map +1 -0
- package/dist/cjs/ScrollRestoration.d.cts +14 -0
- package/dist/cjs/Transitioner.cjs +119 -0
- package/dist/cjs/Transitioner.cjs.map +1 -0
- package/dist/cjs/Transitioner.d.cts +1 -0
- package/dist/cjs/awaited.cjs +51 -0
- package/dist/cjs/awaited.cjs.map +1 -0
- package/dist/cjs/awaited.d.cts +14 -0
- package/dist/cjs/fileRoute.cjs +109 -0
- package/dist/cjs/fileRoute.cjs.map +1 -0
- package/dist/cjs/fileRoute.d.cts +87 -0
- package/dist/cjs/headContentUtils.cjs +185 -0
- package/dist/cjs/headContentUtils.cjs.map +1 -0
- package/dist/cjs/headContentUtils.d.cts +7 -0
- package/dist/cjs/history.d.cts +8 -0
- package/dist/cjs/index.cjs +241 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.d.cts +51 -0
- package/dist/cjs/index.dev.cjs +241 -0
- package/dist/cjs/index.dev.cjs.map +1 -0
- package/dist/cjs/index.dev.d.cts +2 -0
- package/dist/cjs/lazyRouteComponent.cjs +70 -0
- package/dist/cjs/lazyRouteComponent.cjs.map +1 -0
- package/dist/cjs/lazyRouteComponent.d.cts +11 -0
- package/dist/cjs/link.cjs +573 -0
- package/dist/cjs/link.cjs.map +1 -0
- package/dist/cjs/link.d.cts +98 -0
- package/dist/cjs/matchContext.cjs +27 -0
- package/dist/cjs/matchContext.cjs.map +1 -0
- package/dist/cjs/matchContext.d.cts +3 -0
- package/dist/cjs/not-found.cjs +38 -0
- package/dist/cjs/not-found.cjs.map +1 -0
- package/dist/cjs/not-found.d.cts +9 -0
- package/dist/cjs/renderRouteNotFound.cjs +22 -0
- package/dist/cjs/renderRouteNotFound.cjs.map +1 -0
- package/dist/cjs/renderRouteNotFound.d.cts +10 -0
- package/dist/cjs/route.cjs +198 -0
- package/dist/cjs/route.cjs.map +1 -0
- package/dist/cjs/route.d.cts +142 -0
- package/dist/cjs/router.cjs +22 -0
- package/dist/cjs/router.cjs.map +1 -0
- package/dist/cjs/router.d.cts +83 -0
- package/dist/cjs/routerContext.cjs +23 -0
- package/dist/cjs/routerContext.cjs.map +1 -0
- package/dist/cjs/routerContext.d.cts +3 -0
- package/dist/cjs/scroll-restoration.cjs +39 -0
- package/dist/cjs/scroll-restoration.cjs.map +1 -0
- package/dist/cjs/scroll-restoration.d.cts +1 -0
- package/dist/cjs/ssr/RouterClient.cjs +25 -0
- package/dist/cjs/ssr/RouterClient.cjs.map +1 -0
- package/dist/cjs/ssr/RouterClient.d.cts +4 -0
- package/dist/cjs/ssr/RouterServer.cjs +9 -0
- package/dist/cjs/ssr/RouterServer.cjs.map +1 -0
- package/dist/cjs/ssr/RouterServer.d.cts +4 -0
- package/dist/cjs/ssr/client.cjs +12 -0
- package/dist/cjs/ssr/client.cjs.map +1 -0
- package/dist/cjs/ssr/client.d.cts +2 -0
- package/dist/cjs/ssr/defaultRenderHandler.cjs +15 -0
- package/dist/cjs/ssr/defaultRenderHandler.cjs.map +1 -0
- package/dist/cjs/ssr/defaultRenderHandler.d.cts +1 -0
- package/dist/cjs/ssr/defaultStreamHandler.cjs +16 -0
- package/dist/cjs/ssr/defaultStreamHandler.cjs.map +1 -0
- package/dist/cjs/ssr/defaultStreamHandler.d.cts +1 -0
- package/dist/cjs/ssr/renderRouterToStream.cjs +73 -0
- package/dist/cjs/ssr/renderRouterToStream.cjs.map +1 -0
- package/dist/cjs/ssr/renderRouterToStream.d.cts +8 -0
- package/dist/cjs/ssr/renderRouterToString.cjs +31 -0
- package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -0
- package/dist/cjs/ssr/renderRouterToString.d.cts +7 -0
- package/dist/cjs/ssr/serializer.d.cts +6 -0
- package/dist/cjs/ssr/server.cjs +20 -0
- package/dist/cjs/ssr/server.cjs.map +1 -0
- package/dist/cjs/ssr/server.d.cts +6 -0
- package/dist/cjs/structuralSharing.d.cts +8 -0
- package/dist/cjs/typePrimitives.d.cts +16 -0
- package/dist/cjs/useBlocker.cjs +171 -0
- package/dist/cjs/useBlocker.cjs.map +1 -0
- package/dist/cjs/useBlocker.d.cts +66 -0
- package/dist/cjs/useCanGoBack.cjs +8 -0
- package/dist/cjs/useCanGoBack.cjs.map +1 -0
- package/dist/cjs/useCanGoBack.d.cts +1 -0
- package/dist/cjs/useLoaderData.cjs +15 -0
- package/dist/cjs/useLoaderData.cjs.map +1 -0
- package/dist/cjs/useLoaderData.d.cts +19 -0
- package/dist/cjs/useLoaderDeps.cjs +14 -0
- package/dist/cjs/useLoaderDeps.cjs.map +1 -0
- package/dist/cjs/useLoaderDeps.d.cts +19 -0
- package/dist/cjs/useLocation.cjs +10 -0
- package/dist/cjs/useLocation.cjs.map +1 -0
- package/dist/cjs/useLocation.d.cts +18 -0
- package/dist/cjs/useMatch.cjs +47 -0
- package/dist/cjs/useMatch.cjs.map +1 -0
- package/dist/cjs/useMatch.d.cts +14 -0
- package/dist/cjs/useNavigate.cjs +49 -0
- package/dist/cjs/useNavigate.cjs.map +1 -0
- package/dist/cjs/useNavigate.d.cts +28 -0
- package/dist/cjs/useParams.cjs +17 -0
- package/dist/cjs/useParams.cjs.map +1 -0
- package/dist/cjs/useParams.d.cts +21 -0
- package/dist/cjs/useRouteContext.cjs +11 -0
- package/dist/cjs/useRouteContext.cjs.map +1 -0
- package/dist/cjs/useRouteContext.d.cts +3 -0
- package/dist/cjs/useRouter.cjs +32 -0
- package/dist/cjs/useRouter.cjs.map +1 -0
- package/dist/cjs/useRouter.d.cts +14 -0
- package/dist/cjs/useRouterState.cjs +38 -0
- package/dist/cjs/useRouterState.cjs.map +1 -0
- package/dist/cjs/useRouterState.d.cts +20 -0
- package/dist/cjs/useSearch.cjs +16 -0
- package/dist/cjs/useSearch.cjs.map +1 -0
- package/dist/cjs/useSearch.d.cts +21 -0
- package/dist/cjs/utils.cjs +62 -0
- package/dist/cjs/utils.cjs.map +1 -0
- package/dist/cjs/utils.d.cts +54 -0
- package/dist/esm/Asset.d.ts +5 -0
- package/dist/esm/Asset.js +160 -0
- package/dist/esm/Asset.js.map +1 -0
- package/dist/esm/CatchBoundary.d.ts +12 -0
- package/dist/esm/CatchBoundary.js +97 -0
- package/dist/esm/CatchBoundary.js.map +1 -0
- package/dist/esm/ClientOnly.d.ts +49 -0
- package/dist/esm/ClientOnly.js +21 -0
- package/dist/esm/ClientOnly.js.map +1 -0
- package/dist/esm/HeadContent.d.ts +6 -0
- package/dist/esm/HeadContent.dev.d.ts +10 -0
- package/dist/esm/HeadContent.dev.js +25 -0
- package/dist/esm/HeadContent.dev.js.map +1 -0
- package/dist/esm/HeadContent.js +15 -0
- package/dist/esm/HeadContent.js.map +1 -0
- package/dist/esm/Match.d.ts +14 -0
- package/dist/esm/Match.js +238 -0
- package/dist/esm/Match.js.map +1 -0
- package/dist/esm/Matches.d.ts +68 -0
- package/dist/esm/Matches.js +121 -0
- package/dist/esm/Matches.js.map +1 -0
- package/dist/esm/RouterProvider.d.ts +23 -0
- package/dist/esm/RouterProvider.js +32 -0
- package/dist/esm/RouterProvider.js.map +1 -0
- package/dist/esm/SafeFragment.d.ts +1 -0
- package/dist/esm/SafeFragment.js +8 -0
- package/dist/esm/SafeFragment.js.map +1 -0
- package/dist/esm/ScriptOnce.d.ts +6 -0
- package/dist/esm/ScriptOnce.js +22 -0
- package/dist/esm/ScriptOnce.js.map +1 -0
- package/dist/esm/Scripts.d.ts +5 -0
- package/dist/esm/Scripts.js +56 -0
- package/dist/esm/Scripts.js.map +1 -0
- package/dist/esm/ScrollRestoration.d.ts +14 -0
- package/dist/esm/ScrollRestoration.js +38 -0
- package/dist/esm/ScrollRestoration.js.map +1 -0
- package/dist/esm/Transitioner.d.ts +1 -0
- package/dist/esm/Transitioner.js +102 -0
- package/dist/esm/Transitioner.js.map +1 -0
- package/dist/esm/awaited.d.ts +14 -0
- package/dist/esm/awaited.js +34 -0
- package/dist/esm/awaited.js.map +1 -0
- package/dist/esm/fileRoute.d.ts +87 -0
- package/dist/esm/fileRoute.js +109 -0
- package/dist/esm/fileRoute.js.map +1 -0
- package/dist/esm/headContentUtils.d.ts +7 -0
- package/dist/esm/headContentUtils.js +168 -0
- package/dist/esm/headContentUtils.js.map +1 -0
- package/dist/esm/history.d.ts +8 -0
- package/dist/esm/index.d.ts +51 -0
- package/dist/esm/index.dev.d.ts +2 -0
- package/dist/esm/index.dev.js +133 -0
- package/dist/esm/index.dev.js.map +1 -0
- package/dist/esm/index.js +133 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lazyRouteComponent.d.ts +11 -0
- package/dist/esm/lazyRouteComponent.js +53 -0
- package/dist/esm/lazyRouteComponent.js.map +1 -0
- package/dist/esm/link.d.ts +98 -0
- package/dist/esm/link.js +556 -0
- package/dist/esm/link.js.map +1 -0
- package/dist/esm/matchContext.d.ts +3 -0
- package/dist/esm/matchContext.js +10 -0
- package/dist/esm/matchContext.js.map +1 -0
- package/dist/esm/not-found.d.ts +9 -0
- package/dist/esm/not-found.js +38 -0
- package/dist/esm/not-found.js.map +1 -0
- package/dist/esm/renderRouteNotFound.d.ts +10 -0
- package/dist/esm/renderRouteNotFound.js +22 -0
- package/dist/esm/renderRouteNotFound.js.map +1 -0
- package/dist/esm/route.d.ts +142 -0
- package/dist/esm/route.js +198 -0
- package/dist/esm/route.js.map +1 -0
- package/dist/esm/router.d.ts +83 -0
- package/dist/esm/router.js +22 -0
- package/dist/esm/router.js.map +1 -0
- package/dist/esm/routerContext.d.ts +3 -0
- package/dist/esm/routerContext.js +6 -0
- package/dist/esm/routerContext.js.map +1 -0
- package/dist/esm/scroll-restoration.d.ts +1 -0
- package/dist/esm/scroll-restoration.js +39 -0
- package/dist/esm/scroll-restoration.js.map +1 -0
- package/dist/esm/ssr/RouterClient.d.ts +4 -0
- package/dist/esm/ssr/RouterClient.js +25 -0
- package/dist/esm/ssr/RouterClient.js.map +1 -0
- package/dist/esm/ssr/RouterServer.d.ts +4 -0
- package/dist/esm/ssr/RouterServer.js +9 -0
- package/dist/esm/ssr/RouterServer.js.map +1 -0
- package/dist/esm/ssr/client.d.ts +2 -0
- package/dist/esm/ssr/client.js +6 -0
- package/dist/esm/ssr/client.js.map +1 -0
- package/dist/esm/ssr/defaultRenderHandler.d.ts +1 -0
- package/dist/esm/ssr/defaultRenderHandler.js +15 -0
- package/dist/esm/ssr/defaultRenderHandler.js.map +1 -0
- package/dist/esm/ssr/defaultStreamHandler.d.ts +1 -0
- package/dist/esm/ssr/defaultStreamHandler.js +16 -0
- package/dist/esm/ssr/defaultStreamHandler.js.map +1 -0
- package/dist/esm/ssr/renderRouterToStream.d.ts +8 -0
- package/dist/esm/ssr/renderRouterToStream.js +73 -0
- package/dist/esm/ssr/renderRouterToStream.js.map +1 -0
- package/dist/esm/ssr/renderRouterToString.d.ts +7 -0
- package/dist/esm/ssr/renderRouterToString.js +31 -0
- package/dist/esm/ssr/renderRouterToString.js.map +1 -0
- package/dist/esm/ssr/serializer.d.ts +6 -0
- package/dist/esm/ssr/server.d.ts +6 -0
- package/dist/esm/ssr/server.js +14 -0
- package/dist/esm/ssr/server.js.map +1 -0
- package/dist/esm/structuralSharing.d.ts +8 -0
- package/dist/esm/typePrimitives.d.ts +16 -0
- package/dist/esm/useBlocker.d.ts +66 -0
- package/dist/esm/useBlocker.js +154 -0
- package/dist/esm/useBlocker.js.map +1 -0
- package/dist/esm/useCanGoBack.d.ts +1 -0
- package/dist/esm/useCanGoBack.js +8 -0
- package/dist/esm/useCanGoBack.js.map +1 -0
- package/dist/esm/useLoaderData.d.ts +19 -0
- package/dist/esm/useLoaderData.js +15 -0
- package/dist/esm/useLoaderData.js.map +1 -0
- package/dist/esm/useLoaderDeps.d.ts +19 -0
- package/dist/esm/useLoaderDeps.js +14 -0
- package/dist/esm/useLoaderDeps.js.map +1 -0
- package/dist/esm/useLocation.d.ts +18 -0
- package/dist/esm/useLocation.js +10 -0
- package/dist/esm/useLocation.js.map +1 -0
- package/dist/esm/useMatch.d.ts +14 -0
- package/dist/esm/useMatch.js +30 -0
- package/dist/esm/useMatch.js.map +1 -0
- package/dist/esm/useNavigate.d.ts +28 -0
- package/dist/esm/useNavigate.js +32 -0
- package/dist/esm/useNavigate.js.map +1 -0
- package/dist/esm/useParams.d.ts +21 -0
- package/dist/esm/useParams.js +17 -0
- package/dist/esm/useParams.js.map +1 -0
- package/dist/esm/useRouteContext.d.ts +3 -0
- package/dist/esm/useRouteContext.js +11 -0
- package/dist/esm/useRouteContext.js.map +1 -0
- package/dist/esm/useRouter.d.ts +14 -0
- package/dist/esm/useRouter.js +15 -0
- package/dist/esm/useRouter.js.map +1 -0
- package/dist/esm/useRouterState.d.ts +20 -0
- package/dist/esm/useRouterState.js +38 -0
- package/dist/esm/useRouterState.js.map +1 -0
- package/dist/esm/useSearch.d.ts +21 -0
- package/dist/esm/useSearch.js +16 -0
- package/dist/esm/useSearch.js.map +1 -0
- package/dist/esm/utils.d.ts +54 -0
- package/dist/esm/utils.js +45 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/llms/index.d.ts +3 -0
- package/dist/llms/index.js +43 -0
- package/dist/llms/rules/api.d.ts +2 -0
- package/dist/llms/rules/api.js +4612 -0
- package/dist/llms/rules/guide.d.ts +2 -0
- package/dist/llms/rules/guide.js +10690 -0
- package/dist/llms/rules/installation.d.ts +2 -0
- package/dist/llms/rules/installation.js +1285 -0
- package/dist/llms/rules/routing.d.ts +2 -0
- package/dist/llms/rules/routing.js +1984 -0
- package/dist/llms/rules/setup-and-architecture.d.ts +2 -0
- package/dist/llms/rules/setup-and-architecture.js +920 -0
- package/package.json +142 -0
- package/src/Asset.tsx +219 -0
- package/src/CatchBoundary.tsx +120 -0
- package/src/ClientOnly.tsx +68 -0
- package/src/HeadContent.dev.tsx +46 -0
- package/src/HeadContent.tsx +22 -0
- package/src/Match.tsx +360 -0
- package/src/Matches.tsx +313 -0
- package/src/RouterProvider.tsx +92 -0
- package/src/SafeFragment.tsx +5 -0
- package/src/ScriptOnce.tsx +21 -0
- package/src/Scripts.tsx +80 -0
- package/src/ScrollRestoration.tsx +69 -0
- package/src/Transitioner.tsx +134 -0
- package/src/awaited.tsx +55 -0
- package/src/fileRoute.ts +313 -0
- package/src/headContentUtils.tsx +217 -0
- package/src/history.ts +9 -0
- package/src/index.dev.tsx +6 -0
- package/src/index.tsx +341 -0
- package/src/lazyRouteComponent.tsx +96 -0
- package/src/link.tsx +984 -0
- package/src/matchContext.tsx +8 -0
- package/src/not-found.tsx +43 -0
- package/src/renderRouteNotFound.tsx +35 -0
- package/src/route.tsx +740 -0
- package/src/router.ts +127 -0
- package/src/routerContext.tsx +4 -0
- package/src/scroll-restoration.tsx +45 -0
- package/src/ssr/RouterClient.tsx +22 -0
- package/src/ssr/RouterServer.tsx +9 -0
- package/src/ssr/client.ts +2 -0
- package/src/ssr/defaultRenderHandler.tsx +12 -0
- package/src/ssr/defaultStreamHandler.tsx +13 -0
- package/src/ssr/renderRouterToStream.tsx +90 -0
- package/src/ssr/renderRouterToString.tsx +36 -0
- package/src/ssr/serializer.ts +7 -0
- package/src/ssr/server.ts +6 -0
- package/src/structuralSharing.ts +47 -0
- package/src/typePrimitives.ts +84 -0
- package/src/useBlocker.tsx +320 -0
- package/src/useCanGoBack.ts +5 -0
- package/src/useLoaderData.tsx +91 -0
- package/src/useLoaderDeps.tsx +69 -0
- package/src/useLocation.tsx +52 -0
- package/src/useMatch.tsx +123 -0
- package/src/useNavigate.tsx +78 -0
- package/src/useParams.tsx +107 -0
- package/src/useRouteContext.ts +30 -0
- package/src/useRouter.tsx +25 -0
- package/src/useRouterState.tsx +86 -0
- package/src/useSearch.tsx +105 -0
- 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,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,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,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
|
+
}
|