@@ -20,13 +20,13 @@ export interface RenderStreamWithRenderResult<
20
20
Snapshot extends ValidSnapshot = void ,
21
21
Q extends Queries = SyncQueries ,
22
22
> extends RenderStream < Snapshot , Q > {
23
- renderResultPromise : Promise < BaseResult < Q > >
23
+ utils : BaseResult < Q >
24
24
}
25
25
26
26
/**
27
27
* Render into a container which is appended to document.body. It should be used with cleanup.
28
28
*/
29
- export function renderToRenderStream <
29
+ export async function renderToRenderStream <
30
30
Snapshot extends ValidSnapshot = void ,
31
31
Q extends Queries = SyncQueries ,
32
32
> (
@@ -39,19 +39,20 @@ export function renderToRenderStream<
39
39
queries,
40
40
...options
41
41
} : RenderOptions < Snapshot , Q > = { } ,
42
- ) : RenderStreamWithRenderResult < Snapshot , Q > {
42
+ ) : Promise < RenderStreamWithRenderResult < Snapshot , Q > > {
43
43
const { render, ...stream } = createRenderStream < Snapshot , Q > ( {
44
44
onRender,
45
45
snapshotDOM,
46
46
initialSnapshot,
47
47
skipNonTrackingRenders,
48
48
queries,
49
49
} )
50
- // `render` needs to be called asynchronously here, because the definition of `ui`
50
+
51
+ // We need to wait a tick before calling `render` here, because the definition of `ui`
51
52
// might contain components that reference the return value of `renderToRenderStream`
52
53
// itself, e.g. `replaceSnapshot` or `mergeSnapshot`.
53
- const renderResultPromise = Promise . resolve ( ) . then ( ( ) =>
54
- render < Q > ( ui , { ...options , queries} ) ,
55
- )
56
- return { ...stream , renderResultPromise }
54
+ await Promise . resolve ( )
55
+ const utils = await render < Q > ( ui , { ...options , queries} )
56
+
57
+ return { ...stream , utils }
57
58
}
0 commit comments