deno.land / x / ultra@v2.3.8 / lib / render.ts

نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import * as React from "react";import * as ReactDOMServer from "react-dom/server";import { UltraProvider } from "./provider.ts";import { getServerInsertedHTML } from "./context/serverInsertedHtml.ts";import { createFlushDataStreamHandler } from "./context/dataStream.ts";import type { Context, Mode } from "./types.ts";import { log } from "./logger.ts";import { continueFromInitialStream, renderToInitialStream, streamToString,} from "./stream.ts";import { ImportMap } from "./types.ts";
type RenderToStreamOptions = ReactDOMServer.RenderToReadableStreamOptions & { mode?: Mode; baseUrl: string; importMap: ImportMap | undefined; assetManifest: Map<string, string> | undefined; enableEsModuleShims?: boolean; esModuleShimsPath?: string; generateStaticHTML?: boolean; serverInsertedHTMLToHead?: boolean; disableHydration?: boolean;};
log.debug(`react: ${React.version} ${import.meta.resolve("react")}`);log.debug( `react-dom/server: ${ReactDOMServer.version} ${ import.meta.resolve("react-dom/server") }`,);
export async function renderToString(element: React.ReactElement) { const renderStream = await ReactDOMServer.renderToReadableStream(element); await renderStream.allReady;
return streamToString(renderStream);}
export async function renderToStream( App: JSX.Element, context: Context | undefined, options: RenderToStreamOptions,) { const { mode, baseUrl, generateStaticHTML = false, disableHydration = false, serverInsertedHTMLToHead = true, importMap, enableEsModuleShims, esModuleShimsPath, assetManifest, } = options;
options.bootstrapModules = disableHydration ? undefined : options.bootstrapModules;
options.onError = (error) => { log.error(error); };
const renderStream = await renderToInitialStream({ element: React.createElement( UltraProvider, { baseUrl, context, assetManifest, children: App, }, ), options, });
const dataStream = new TransformStream<Uint8Array, Uint8Array>(); const flushDataStreamHandler = createFlushDataStreamHandler( dataStream.writable.getWriter(), );
return await continueFromInitialStream(renderStream, { mode, generateStaticHTML, disableHydration, getServerInsertedHTML, serverInsertedHTMLToHead, flushDataStreamHandler, dataStream, importMap, enableEsModuleShims, esModuleShimsPath, });}
ultra

Version Info

Tagged at
8 months ago