@@ -189,7 +189,7 @@ export function getRequestDependencies(ssrContext: SSRContext, rendererContext:
189
189
export function renderStyles ( ssrContext : SSRContext , rendererContext : RendererContext ) : string {
190
190
const { styles } = getRequestDependencies ( ssrContext , rendererContext )
191
191
return Object . values ( styles ) . map ( resource =>
192
- renderLinkToString ( { rel : 'stylesheet' , href : rendererContext . buildAssetsURL ( resource . file ) } ) ,
192
+ renderLinkToString ( { rel : 'stylesheet' , href : rendererContext . buildAssetsURL ( resource . file ) , crossorigin : '' } ) ,
193
193
) . join ( '' )
194
194
}
195
195
@@ -214,7 +214,7 @@ export function getPreloadLinks(ssrContext: SSRContext, rendererContext: Rendere
214
214
rel : resource . module ? 'modulepreload' : 'preload' ,
215
215
as : resource . resourceType ,
216
216
type : resource . mimeType ?? null ,
217
- crossorigin : resource . resourceType === 'font' || resource . resourceType === 'script' || resource . module ? '' : null ,
217
+ crossorigin : resource . resourceType === 'style' || resource . resourceType === ' font' || resource . resourceType === 'script' || resource . module ? '' : null ,
218
218
href : rendererContext . buildAssetsURL ( resource . file ) ,
219
219
} ) )
220
220
}
@@ -225,7 +225,7 @@ export function getPrefetchLinks(ssrContext: SSRContext, rendererContext: Render
225
225
rel : 'prefetch' ,
226
226
as : resource . resourceType ,
227
227
type : resource . mimeType ?? null ,
228
- crossorigin : resource . resourceType === 'font' || resource . resourceType === 'script' || resource . module ? '' : null ,
228
+ crossorigin : resource . resourceType === 'style' || resource . resourceType === ' font' || resource . resourceType === 'script' || resource . module ? '' : null ,
229
229
href : rendererContext . buildAssetsURL ( resource . file ) ,
230
230
} ) )
231
231
}
@@ -246,12 +246,24 @@ type CreateApp<App> = (ssrContext: SSRContext) => App | Promise<App>
246
246
type ImportOf < T > = T | { default : T } | Promise < T > | Promise < { default : T } >
247
247
248
248
type RenderToString < App > = ( app : App , ssrContext : SSRContext ) => string | Promise < string >
249
+ type RenderToStream < App > = ( app : App , ssrContext : SSRContext ) => ReadableStream
249
250
250
- export function createRenderer < App > ( createApp : ImportOf < CreateApp < App > > , renderOptions : RenderOptions & { renderToString : RenderToString < App > } ) {
251
+ export function createRenderer < App > ( createApp : ImportOf < CreateApp < App > > , renderOptions : RenderOptions & { renderToString : RenderToString < App > , renderToStream : RenderToStream < App > } ) {
251
252
const rendererContext = createRendererContext ( renderOptions )
252
253
253
254
return {
254
255
rendererContext,
256
+ async renderToStream ( ssrContext : SSRContext ) {
257
+ ssrContext . _registeredComponents = ssrContext . _registeredComponents || new Set ( )
258
+
259
+ const _createApp = await Promise . resolve ( createApp ) . then ( r => 'default' in r ? r . default : r )
260
+ const app = await _createApp ( ssrContext )
261
+ const stream = renderOptions . renderToStream ( app , ssrContext )
262
+
263
+ return {
264
+ stream,
265
+ }
266
+ } ,
255
267
async renderToString ( ssrContext : SSRContext ) {
256
268
ssrContext . _registeredComponents = ssrContext . _registeredComponents || new Set ( )
257
269
0 commit comments