@tanstack/react-router 1.121.0-alpha.22 → 1.121.0-alpha.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Asset.cjs +83 -16
- package/dist/cjs/Asset.cjs.map +1 -1
- package/dist/cjs/Asset.d.cts +2 -1
- package/dist/cjs/CatchBoundary.cjs.map +1 -1
- package/dist/cjs/ClientOnly.cjs.map +1 -1
- package/dist/cjs/ClientOnly.d.cts +1 -1
- package/dist/cjs/HeadContent.cjs +19 -17
- package/dist/cjs/HeadContent.cjs.map +1 -1
- package/dist/cjs/Match.cjs +61 -57
- package/dist/cjs/Match.cjs.map +1 -1
- package/dist/cjs/Matches.cjs +14 -16
- package/dist/cjs/Matches.cjs.map +1 -1
- package/dist/cjs/Matches.d.cts +2 -2
- package/dist/cjs/RouterProvider.cjs.map +1 -1
- package/dist/cjs/SafeFragment.cjs.map +1 -1
- package/dist/cjs/ScriptOnce.cjs +3 -10
- package/dist/cjs/ScriptOnce.cjs.map +1 -1
- package/dist/cjs/ScriptOnce.d.cts +1 -1
- package/dist/cjs/Scripts.cjs +7 -11
- package/dist/cjs/Scripts.cjs.map +1 -1
- package/dist/cjs/ScrollRestoration.cjs +3 -4
- package/dist/cjs/ScrollRestoration.cjs.map +1 -1
- package/dist/cjs/Transitioner.cjs +16 -15
- package/dist/cjs/Transitioner.cjs.map +1 -1
- package/dist/cjs/awaited.cjs.map +1 -1
- package/dist/cjs/fileRoute.cjs +8 -8
- package/dist/cjs/fileRoute.cjs.map +1 -1
- package/dist/cjs/index.cjs +0 -12
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +4 -8
- package/dist/cjs/lazyRouteComponent.cjs +3 -16
- package/dist/cjs/lazyRouteComponent.cjs.map +1 -1
- package/dist/cjs/lazyRouteComponent.d.cts +1 -1
- package/dist/cjs/link.cjs +106 -74
- package/dist/cjs/link.cjs.map +1 -1
- package/dist/cjs/link.d.cts +1 -5
- package/dist/cjs/matchContext.cjs.map +1 -1
- package/dist/cjs/not-found.cjs +2 -4
- package/dist/cjs/not-found.cjs.map +1 -1
- package/dist/cjs/renderRouteNotFound.cjs.map +1 -1
- package/dist/cjs/route.cjs +21 -21
- package/dist/cjs/route.cjs.map +1 -1
- package/dist/cjs/route.d.cts +14 -6
- package/dist/cjs/router.cjs.map +1 -1
- package/dist/cjs/routerContext.cjs.map +1 -1
- package/dist/cjs/scroll-restoration.cjs +9 -3
- package/dist/cjs/scroll-restoration.cjs.map +1 -1
- 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 +63 -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 +28 -0
- package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -0
- package/dist/cjs/ssr/renderRouterToString.d.cts +7 -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/useBlocker.cjs.map +1 -1
- package/dist/cjs/useCanGoBack.cjs.map +1 -1
- package/dist/cjs/useLoaderData.cjs.map +1 -1
- package/dist/cjs/useLoaderDeps.cjs.map +1 -1
- package/dist/cjs/useLocation.cjs +1 -1
- package/dist/cjs/useLocation.cjs.map +1 -1
- package/dist/cjs/useMatch.cjs.map +1 -1
- package/dist/cjs/useNavigate.cjs +2 -2
- package/dist/cjs/useNavigate.cjs.map +1 -1
- package/dist/cjs/useParams.cjs.map +1 -1
- package/dist/cjs/useRouter.cjs +1 -1
- package/dist/cjs/useRouter.cjs.map +1 -1
- package/dist/cjs/useRouterState.cjs +3 -3
- package/dist/cjs/useRouterState.cjs.map +1 -1
- package/dist/cjs/useSearch.cjs.map +1 -1
- package/dist/cjs/utils.cjs +4 -10
- package/dist/cjs/utils.cjs.map +1 -1
- package/dist/cjs/utils.d.cts +1 -1
- package/dist/esm/Asset.d.ts +2 -1
- package/dist/esm/Asset.js +66 -16
- package/dist/esm/Asset.js.map +1 -1
- package/dist/esm/CatchBoundary.js.map +1 -1
- package/dist/esm/ClientOnly.d.ts +1 -1
- package/dist/esm/ClientOnly.js.map +1 -1
- package/dist/esm/HeadContent.js +19 -17
- package/dist/esm/HeadContent.js.map +1 -1
- package/dist/esm/Match.js +63 -59
- package/dist/esm/Match.js.map +1 -1
- package/dist/esm/Matches.d.ts +2 -2
- package/dist/esm/Matches.js +14 -16
- package/dist/esm/Matches.js.map +1 -1
- package/dist/esm/RouterProvider.js.map +1 -1
- package/dist/esm/SafeFragment.js.map +1 -1
- package/dist/esm/ScriptOnce.d.ts +1 -1
- package/dist/esm/ScriptOnce.js +3 -10
- package/dist/esm/ScriptOnce.js.map +1 -1
- package/dist/esm/Scripts.js +7 -11
- package/dist/esm/Scripts.js.map +1 -1
- package/dist/esm/ScrollRestoration.js +3 -4
- package/dist/esm/ScrollRestoration.js.map +1 -1
- package/dist/esm/Transitioner.js +16 -15
- package/dist/esm/Transitioner.js.map +1 -1
- package/dist/esm/awaited.js.map +1 -1
- package/dist/esm/fileRoute.js +8 -8
- package/dist/esm/fileRoute.js.map +1 -1
- package/dist/esm/index.d.ts +4 -8
- package/dist/esm/index.js +2 -8
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lazyRouteComponent.d.ts +1 -1
- package/dist/esm/lazyRouteComponent.js +2 -15
- package/dist/esm/lazyRouteComponent.js.map +1 -1
- package/dist/esm/link.d.ts +1 -5
- package/dist/esm/link.js +107 -75
- package/dist/esm/link.js.map +1 -1
- package/dist/esm/matchContext.js.map +1 -1
- package/dist/esm/not-found.js +2 -4
- package/dist/esm/not-found.js.map +1 -1
- package/dist/esm/renderRouteNotFound.js.map +1 -1
- package/dist/esm/route.d.ts +14 -6
- package/dist/esm/route.js +21 -21
- package/dist/esm/route.js.map +1 -1
- package/dist/esm/router.js.map +1 -1
- package/dist/esm/routerContext.js.map +1 -1
- package/dist/esm/scroll-restoration.js +9 -3
- package/dist/esm/scroll-restoration.js.map +1 -1
- 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 +63 -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 +28 -0
- package/dist/esm/ssr/renderRouterToString.js.map +1 -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/useBlocker.js.map +1 -1
- package/dist/esm/useCanGoBack.js.map +1 -1
- package/dist/esm/useLoaderData.js.map +1 -1
- package/dist/esm/useLoaderDeps.js.map +1 -1
- package/dist/esm/useLocation.js +1 -1
- package/dist/esm/useLocation.js.map +1 -1
- package/dist/esm/useMatch.js.map +1 -1
- package/dist/esm/useNavigate.js +2 -2
- package/dist/esm/useNavigate.js.map +1 -1
- package/dist/esm/useParams.js.map +1 -1
- package/dist/esm/useRouter.js +1 -1
- package/dist/esm/useRouter.js.map +1 -1
- package/dist/esm/useRouterState.js +3 -3
- package/dist/esm/useRouterState.js.map +1 -1
- package/dist/esm/useSearch.js.map +1 -1
- package/dist/esm/utils.d.ts +1 -1
- package/dist/esm/utils.js +4 -10
- package/dist/esm/utils.js.map +1 -1
- package/dist/llms/index.d.ts +3 -0
- package/dist/llms/index.js +35 -0
- package/dist/llms/rules/api.d.ts +2 -0
- package/dist/llms/rules/api.js +4326 -0
- package/dist/llms/rules/guide.d.ts +2 -0
- package/dist/llms/rules/guide.js +7096 -0
- package/dist/llms/rules/routing.d.ts +2 -0
- package/dist/llms/rules/routing.js +1981 -0
- package/dist/llms/rules/setup-and-architecture.d.ts +2 -0
- package/dist/llms/rules/setup-and-architecture.js +945 -0
- package/package.json +32 -6
- package/src/Asset.tsx +95 -16
- package/src/ClientOnly.tsx +1 -1
- package/src/HeadContent.tsx +16 -0
- package/src/Match.tsx +86 -63
- package/src/Matches.tsx +24 -17
- package/src/ScriptOnce.tsx +2 -14
- package/src/Transitioner.tsx +13 -14
- package/src/index.tsx +3 -21
- package/src/lazyRouteComponent.tsx +6 -31
- package/src/link.tsx +130 -99
- package/src/not-found.tsx +1 -1
- package/src/route.tsx +18 -9
- package/src/scroll-restoration.tsx +10 -3
- 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 +79 -0
- package/src/ssr/renderRouterToString.tsx +31 -0
- package/src/ssr/server.ts +6 -0
- package/src/utils.ts +6 -14
- package/dist/cjs/serializer.d.cts +0 -6
- package/dist/esm/serializer.d.ts +0 -6
- package/src/serializer.ts +0 -7
|
@@ -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,79 @@
|
|
|
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
|
+
})
|
|
27
|
+
|
|
28
|
+
if (isbot(request.headers.get('User-Agent'))) {
|
|
29
|
+
await stream.allReady
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const responseStream = transformReadableStreamWithRouter(
|
|
33
|
+
router,
|
|
34
|
+
stream as unknown as ReadableStream,
|
|
35
|
+
)
|
|
36
|
+
return new Response(responseStream as any, {
|
|
37
|
+
status: router.state.statusCode,
|
|
38
|
+
headers: responseHeaders,
|
|
39
|
+
})
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (typeof ReactDOMServer.renderToPipeableStream === 'function') {
|
|
43
|
+
const reactAppPassthrough = new PassThrough()
|
|
44
|
+
|
|
45
|
+
try {
|
|
46
|
+
const pipeable = ReactDOMServer.renderToPipeableStream(children, {
|
|
47
|
+
...(isbot(request.headers.get('User-Agent'))
|
|
48
|
+
? {
|
|
49
|
+
onAllReady() {
|
|
50
|
+
pipeable.pipe(reactAppPassthrough)
|
|
51
|
+
},
|
|
52
|
+
}
|
|
53
|
+
: {
|
|
54
|
+
onShellReady() {
|
|
55
|
+
pipeable.pipe(reactAppPassthrough)
|
|
56
|
+
},
|
|
57
|
+
}),
|
|
58
|
+
onError: (error, info) => {
|
|
59
|
+
console.error('Error in renderToPipeableStream:', error, info)
|
|
60
|
+
},
|
|
61
|
+
})
|
|
62
|
+
} catch (e) {
|
|
63
|
+
console.error('Error in renderToPipeableStream:', e)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const responseStream = transformPipeableStreamWithRouter(
|
|
67
|
+
router,
|
|
68
|
+
reactAppPassthrough,
|
|
69
|
+
)
|
|
70
|
+
return new Response(responseStream as any, {
|
|
71
|
+
status: router.state.statusCode,
|
|
72
|
+
headers: responseHeaders,
|
|
73
|
+
})
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
throw new Error(
|
|
77
|
+
'No renderToReadableStream or renderToPipeableStream found in react-dom/server. Ensure you are using a version of react-dom that supports streaming.',
|
|
78
|
+
)
|
|
79
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
const injectedHtml = await Promise.all(router.serverSsr!.injectedHtml).then(
|
|
17
|
+
(htmls) => htmls.join(''),
|
|
18
|
+
)
|
|
19
|
+
html = html.replace(`</body>`, `${injectedHtml}</body>`)
|
|
20
|
+
return new Response(`<!DOCTYPE html>${html}`, {
|
|
21
|
+
status: router.state.statusCode,
|
|
22
|
+
headers: responseHeaders,
|
|
23
|
+
})
|
|
24
|
+
} catch (error) {
|
|
25
|
+
console.error('Render to string error:', error)
|
|
26
|
+
return new Response('Internal Server Error', {
|
|
27
|
+
status: 500,
|
|
28
|
+
headers: responseHeaders,
|
|
29
|
+
})
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -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'
|
package/src/utils.ts
CHANGED
|
@@ -69,34 +69,26 @@ export function useIntersectionObserver<T extends Element>(
|
|
|
69
69
|
callback: (entry: IntersectionObserverEntry | undefined) => void,
|
|
70
70
|
intersectionObserverOptions: IntersectionObserverInit = {},
|
|
71
71
|
options: { disabled?: boolean } = {},
|
|
72
|
-
)
|
|
73
|
-
const isIntersectionObserverAvailable = React.useRef(
|
|
74
|
-
typeof IntersectionObserver === 'function',
|
|
75
|
-
)
|
|
76
|
-
|
|
77
|
-
const observerRef = React.useRef<IntersectionObserver | null>(null)
|
|
78
|
-
|
|
72
|
+
) {
|
|
79
73
|
React.useEffect(() => {
|
|
80
74
|
if (
|
|
81
75
|
!ref.current ||
|
|
82
|
-
|
|
83
|
-
|
|
76
|
+
options.disabled ||
|
|
77
|
+
typeof IntersectionObserver !== 'function'
|
|
84
78
|
) {
|
|
85
79
|
return
|
|
86
80
|
}
|
|
87
81
|
|
|
88
|
-
|
|
82
|
+
const observer = new IntersectionObserver(([entry]) => {
|
|
89
83
|
callback(entry)
|
|
90
84
|
}, intersectionObserverOptions)
|
|
91
85
|
|
|
92
|
-
|
|
86
|
+
observer.observe(ref.current)
|
|
93
87
|
|
|
94
88
|
return () => {
|
|
95
|
-
|
|
89
|
+
observer.disconnect()
|
|
96
90
|
}
|
|
97
91
|
}, [callback, intersectionObserverOptions, options.disabled, ref])
|
|
98
|
-
|
|
99
|
-
return observerRef.current
|
|
100
92
|
}
|
|
101
93
|
|
|
102
94
|
/**
|
package/dist/esm/serializer.d.ts
DELETED