@tanstack/solid-router 1.121.33 → 1.121.39

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 (127) hide show
  1. package/dist/cjs/Asset.cjs +13 -13
  2. package/dist/cjs/Asset.cjs.map +1 -1
  3. package/dist/cjs/CatchBoundary.cjs +13 -13
  4. package/dist/cjs/CatchBoundary.cjs.map +1 -1
  5. package/dist/cjs/ClientOnly.cjs +6 -6
  6. package/dist/cjs/ClientOnly.cjs.map +1 -1
  7. package/dist/cjs/HeadContent.cjs +5 -5
  8. package/dist/cjs/HeadContent.cjs.map +1 -1
  9. package/dist/cjs/Match.cjs +35 -35
  10. package/dist/cjs/Match.cjs.map +1 -1
  11. package/dist/cjs/Matches.cjs +11 -11
  12. package/dist/cjs/Matches.cjs.map +1 -1
  13. package/dist/cjs/RouterProvider.cjs +5 -5
  14. package/dist/cjs/RouterProvider.cjs.map +1 -1
  15. package/dist/cjs/SafeFragment.cjs +2 -2
  16. package/dist/cjs/SafeFragment.cjs.map +1 -1
  17. package/dist/cjs/ScriptOnce.cjs +3 -3
  18. package/dist/cjs/ScriptOnce.cjs.map +1 -1
  19. package/dist/cjs/Scripts.cjs +2 -2
  20. package/dist/cjs/Scripts.cjs.map +1 -1
  21. package/dist/cjs/awaited.cjs +2 -2
  22. package/dist/cjs/awaited.cjs.map +1 -1
  23. package/dist/cjs/index.d.cts +1 -1
  24. package/dist/cjs/lazyRouteComponent.cjs +6 -6
  25. package/dist/cjs/lazyRouteComponent.cjs.map +1 -1
  26. package/dist/cjs/link.cjs +3 -3
  27. package/dist/cjs/link.cjs.map +1 -1
  28. package/dist/cjs/not-found.cjs +3 -3
  29. package/dist/cjs/not-found.cjs.map +1 -1
  30. package/dist/cjs/renderRouteNotFound.cjs +4 -4
  31. package/dist/cjs/renderRouteNotFound.cjs.map +1 -1
  32. package/dist/cjs/route.cjs +4 -4
  33. package/dist/cjs/route.cjs.map +1 -1
  34. package/dist/cjs/scroll-restoration.cjs +2 -2
  35. package/dist/cjs/scroll-restoration.cjs.map +1 -1
  36. package/dist/cjs/ssr/RouterClient.cjs +45 -0
  37. package/dist/cjs/ssr/RouterClient.cjs.map +1 -0
  38. package/dist/cjs/ssr/RouterClient.d.cts +4 -0
  39. package/dist/cjs/ssr/RouterServer.cjs +56 -0
  40. package/dist/cjs/ssr/RouterServer.cjs.map +1 -0
  41. package/dist/cjs/ssr/RouterServer.d.cts +5 -0
  42. package/dist/cjs/ssr/client.cjs +5 -0
  43. package/dist/cjs/ssr/client.cjs.map +1 -0
  44. package/dist/cjs/ssr/client.d.cts +1 -0
  45. package/dist/cjs/ssr/defaultRenderHandler.cjs +18 -0
  46. package/dist/cjs/ssr/defaultRenderHandler.cjs.map +1 -0
  47. package/dist/cjs/ssr/defaultRenderHandler.d.cts +1 -0
  48. package/dist/cjs/ssr/defaultStreamHandler.cjs +20 -0
  49. package/dist/cjs/ssr/defaultStreamHandler.cjs.map +1 -0
  50. package/dist/cjs/ssr/defaultStreamHandler.d.cts +1 -0
  51. package/dist/cjs/ssr/renderRouterToStream.cjs +45 -0
  52. package/dist/cjs/ssr/renderRouterToStream.cjs.map +1 -0
  53. package/dist/cjs/ssr/renderRouterToStream.d.cts +8 -0
  54. package/dist/cjs/ssr/renderRouterToString.cjs +43 -0
  55. package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -0
  56. package/dist/cjs/ssr/renderRouterToString.d.cts +7 -0
  57. package/dist/cjs/ssr/server.cjs +20 -0
  58. package/dist/cjs/ssr/server.cjs.map +1 -0
  59. package/dist/cjs/ssr/server.d.cts +6 -0
  60. package/dist/cjs/useBlocker.cjs +2 -2
  61. package/dist/cjs/useBlocker.cjs.map +1 -1
  62. package/dist/esm/Match.js +1 -1
  63. package/dist/esm/Match.js.map +1 -1
  64. package/dist/esm/index.d.ts +1 -1
  65. package/dist/esm/ssr/RouterClient.d.ts +4 -0
  66. package/dist/esm/ssr/RouterClient.js +45 -0
  67. package/dist/esm/ssr/RouterClient.js.map +1 -0
  68. package/dist/esm/ssr/RouterServer.d.ts +5 -0
  69. package/dist/esm/ssr/RouterServer.js +56 -0
  70. package/dist/esm/ssr/RouterServer.js.map +1 -0
  71. package/dist/esm/ssr/client.d.ts +1 -0
  72. package/dist/esm/ssr/client.js +5 -0
  73. package/dist/esm/ssr/client.js.map +1 -0
  74. package/dist/esm/ssr/defaultRenderHandler.d.ts +1 -0
  75. package/dist/esm/ssr/defaultRenderHandler.js +18 -0
  76. package/dist/esm/ssr/defaultRenderHandler.js.map +1 -0
  77. package/dist/esm/ssr/defaultStreamHandler.d.ts +1 -0
  78. package/dist/esm/ssr/defaultStreamHandler.js +20 -0
  79. package/dist/esm/ssr/defaultStreamHandler.js.map +1 -0
  80. package/dist/esm/ssr/renderRouterToStream.d.ts +8 -0
  81. package/dist/esm/ssr/renderRouterToStream.js +28 -0
  82. package/dist/esm/ssr/renderRouterToStream.js.map +1 -0
  83. package/dist/esm/ssr/renderRouterToString.d.ts +7 -0
  84. package/dist/esm/ssr/renderRouterToString.js +26 -0
  85. package/dist/esm/ssr/renderRouterToString.js.map +1 -0
  86. package/dist/esm/ssr/server.d.ts +6 -0
  87. package/dist/esm/ssr/server.js +14 -0
  88. package/dist/esm/ssr/server.js.map +1 -0
  89. package/dist/source/Match.jsx +2 -2
  90. package/dist/source/Match.jsx.map +1 -1
  91. package/dist/source/index.d.ts +1 -1
  92. package/dist/source/index.jsx.map +1 -1
  93. package/dist/source/ssr/RouterClient.d.ts +4 -0
  94. package/dist/source/ssr/RouterClient.jsx +28 -0
  95. package/dist/source/ssr/RouterClient.jsx.map +1 -0
  96. package/dist/source/ssr/RouterServer.d.ts +5 -0
  97. package/dist/source/ssr/RouterServer.jsx +38 -0
  98. package/dist/source/ssr/RouterServer.jsx.map +1 -0
  99. package/dist/source/ssr/client.d.ts +1 -0
  100. package/dist/source/ssr/client.js +2 -0
  101. package/dist/source/ssr/client.js.map +1 -0
  102. package/dist/source/ssr/defaultRenderHandler.d.ts +1 -0
  103. package/dist/source/ssr/defaultRenderHandler.jsx +9 -0
  104. package/dist/source/ssr/defaultRenderHandler.jsx.map +1 -0
  105. package/dist/source/ssr/defaultStreamHandler.d.ts +1 -0
  106. package/dist/source/ssr/defaultStreamHandler.jsx +10 -0
  107. package/dist/source/ssr/defaultStreamHandler.jsx.map +1 -0
  108. package/dist/source/ssr/renderRouterToStream.d.ts +8 -0
  109. package/dist/source/ssr/renderRouterToStream.jsx +17 -0
  110. package/dist/source/ssr/renderRouterToStream.jsx.map +1 -0
  111. package/dist/source/ssr/renderRouterToString.d.ts +7 -0
  112. package/dist/source/ssr/renderRouterToString.jsx +20 -0
  113. package/dist/source/ssr/renderRouterToString.jsx.map +1 -0
  114. package/dist/source/ssr/server.d.ts +6 -0
  115. package/dist/source/ssr/server.js +7 -0
  116. package/dist/source/ssr/server.js.map +1 -0
  117. package/package.json +32 -3
  118. package/src/Match.tsx +2 -2
  119. package/src/index.tsx +1 -0
  120. package/src/ssr/RouterClient.tsx +43 -0
  121. package/src/ssr/RouterServer.tsx +60 -0
  122. package/src/ssr/client.ts +1 -0
  123. package/src/ssr/defaultRenderHandler.tsx +12 -0
  124. package/src/ssr/defaultStreamHandler.tsx +13 -0
  125. package/src/ssr/renderRouterToStream.tsx +36 -0
  126. package/src/ssr/renderRouterToString.tsx +31 -0
  127. package/src/ssr/server.ts +6 -0
@@ -0,0 +1,60 @@
1
+ import {
2
+ Hydration,
3
+ HydrationScript,
4
+ NoHydration,
5
+ ssr,
6
+ useAssets,
7
+ } from 'solid-js/web'
8
+ import { MetaProvider } from '@solidjs/meta'
9
+ import { Asset } from '../Asset'
10
+ import { useTags } from '../HeadContent'
11
+ import { RouterProvider } from '../RouterProvider'
12
+ import { Scripts } from '../Scripts'
13
+ import type { AnyRouter } from '@tanstack/router-core'
14
+
15
+ export function ServerHeadContent() {
16
+ const tags = useTags()
17
+ useAssets(() => {
18
+ return (
19
+ <MetaProvider>
20
+ {tags().map((tag) => (
21
+ <Asset {...tag} />
22
+ ))}
23
+ </MetaProvider>
24
+ )
25
+ })
26
+ return null
27
+ }
28
+
29
+ const docType = ssr('<!DOCTYPE html>')
30
+
31
+ export function RouterServer<TRouter extends AnyRouter>(props: {
32
+ router: TRouter
33
+ }) {
34
+ return (
35
+ <NoHydration>
36
+ {docType as any}
37
+ <html>
38
+ <head>
39
+ <HydrationScript />
40
+ </head>
41
+ <body>
42
+ <Hydration>
43
+ <RouterProvider
44
+ router={props.router}
45
+ InnerWrap={(props) => (
46
+ <NoHydration>
47
+ <MetaProvider>
48
+ <ServerHeadContent />
49
+ <Hydration>{props.children}</Hydration>
50
+ <Scripts />
51
+ </MetaProvider>
52
+ </NoHydration>
53
+ )}
54
+ />
55
+ </Hydration>
56
+ </body>
57
+ </html>
58
+ </NoHydration>
59
+ )
60
+ }
@@ -0,0 +1 @@
1
+ export { RouterClient } from './RouterClient'
@@ -0,0 +1,12 @@
1
+ import { defineHandlerCallback } from '@tanstack/router-core/ssr/server'
2
+ import { RouterServer } from './RouterServer'
3
+ import { renderRouterToString } from './renderRouterToString'
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,36 @@
1
+ import * as Solid from 'solid-js/web'
2
+ import { isbot } from 'isbot'
3
+ import { transformReadableStreamWithRouter } from '@tanstack/router-core/ssr/server'
4
+ import type { JSXElement } from 'solid-js'
5
+ import type { ReadableStream } from 'node:stream/web'
6
+ import type { AnyRouter } from '@tanstack/router-core'
7
+
8
+ export const renderRouterToStream = async ({
9
+ request,
10
+ router,
11
+ responseHeaders,
12
+ children,
13
+ }: {
14
+ request: Request
15
+ router: AnyRouter
16
+ responseHeaders: Headers
17
+ children: () => JSXElement
18
+ }) => {
19
+ const { writable, readable } = new TransformStream()
20
+
21
+ const stream = Solid.renderToStream(children)
22
+
23
+ if (isbot(request.headers.get('User-Agent'))) {
24
+ await stream
25
+ }
26
+ stream.pipeTo(writable)
27
+
28
+ const responseStream = transformReadableStreamWithRouter(
29
+ router,
30
+ readable as unknown as ReadableStream,
31
+ )
32
+ return new Response(responseStream as any, {
33
+ status: router.state.statusCode,
34
+ headers: responseHeaders,
35
+ })
36
+ }
@@ -0,0 +1,31 @@
1
+ import * as Solid from 'solid-js/web'
2
+ import type { JSXElement } from 'solid-js'
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: () => JSXElement
13
+ }) => {
14
+ try {
15
+ let html = Solid.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(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'