Skip to content

Commit 8ca54a2

Browse files
committed
wip
1 parent 531b335 commit 8ca54a2

2 files changed

Lines changed: 27 additions & 17 deletions

File tree

packages/vike-react/src/integration/onRenderClient.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ type OnUncaughtErrorArgs = Parameters<NonNullable<RootOptions['onUncaughtError']
105105

106106
// Inject componentStack to the error's stack trace
107107
// - Server counterpart: https://github.com/brillout/react-streaming/blob/e0a6210957e65dad2c92877ad075ebac4713d8fa/src/server/renderToStream/common.ts#L93
108-
type ErrorInfo = { componentStack?: string }
109-
function getErrorWithComponentStack(errorOriginal: unknown, errorInfo?: ErrorInfo) {
108+
type OnUncaughtErrorInfo = OnUncaughtErrorArgs[1]
109+
function getErrorWithComponentStack(errorOriginal: unknown, errorInfo?: OnUncaughtErrorInfo) {
110110
if (!errorInfo?.componentStack || !isObject(errorOriginal)) return errorOriginal
111111
const errorStackLines = String(errorOriginal.stack).split('\n')
112112

packages/vike-react/src/integration/onRenderHtml.tsx

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export { onRenderHtml }
33

44
import React from 'react'
55
import { renderToString, renderToStaticMarkup } from 'react-dom/server'
6-
import { renderToStream } from 'react-streaming/server'
6+
import { renderToStream, type RenderToStreamOptions } from 'react-streaming/server'
77
import { dangerouslySkipEscape, escapeInject } from 'vike/server'
88
import type { PageContextServer } from 'vike/types'
99
import { VikeReactProviderPageContext } from '../hooks/usePageContext.js'
@@ -80,29 +80,39 @@ async function renderPageToHtml(pageContext: PageContextServer) {
8080
const pageHtmlString = renderToString(pageContext.page, renderToStringOptions)
8181
pageContext.pageHtmlString = pageHtmlString
8282
} else {
83-
const pageHtmlStream = await renderToStream(pageContext.page, {
84-
webStream: !streamSetting.type
85-
? /* Let react-streaming decide which stream type to use.
86-
false
87-
*/
88-
undefined
89-
: streamSetting.type === 'web',
90-
userAgent:
83+
const renderOptions: RenderToStreamOptions = {
84+
...renderToStreamOptions,
85+
...(!streamSetting.type
86+
? {}
87+
: {
88+
webStream: streamSetting.type === 'web',
89+
}),
90+
...((
9191
pageContext.headers?.['user-agent'] ||
9292
// TO-DO/eventually: remove old way of acccessing the User Agent header.
9393
// @ts-ignore
94-
pageContext.userAgent,
95-
disable:
94+
pageContext.userAgent
95+
)
96+
? {
97+
userAgent:
98+
pageContext.headers?.['user-agent'] ||
99+
// TO-DO/eventually: remove old way of acccessing the User Agent header.
100+
// @ts-ignore
101+
pageContext.userAgent,
102+
}
103+
: {}),
104+
...(
96105
// +stream.require is true => default +stream.enable is true
97106
// +stream.require is false => default +stream.enable is false
98107
streamSetting.enable === false
99-
? true
108+
? { disable: true }
100109
: /* Don't override disabling when bot is detected.
101110
false,
102111
*/
103-
undefined,
104-
...renderToStreamOptions,
105-
})
112+
{}
113+
),
114+
}
115+
const pageHtmlStream = await renderToStream(pageContext.page, renderOptions)
106116
pageContext.pageHtmlStream = pageHtmlStream
107117
}
108118
}

0 commit comments

Comments
 (0)