@@ -2,12 +2,12 @@ import type { ReactElement } from 'react';
2
2
// @ts -expect-error will define this module types later
3
3
import { renderToReadableStream } from 'react-server-dom-webpack/server.edge' ;
4
4
import { PassThrough } from 'stream' ;
5
+ import fs from 'fs' ;
5
6
6
7
import { RenderParams } from './types' ;
7
8
import ComponentRegistry from './ComponentRegistry' ;
8
9
import createReactOutput from './createReactOutput' ;
9
10
import { isPromise , isServerRenderHash } from './isServerRenderResult' ;
10
- import handleError from './handleError' ;
11
11
import ReactOnRails from './ReactOnRails' ;
12
12
13
13
( async ( ) => {
@@ -26,6 +26,16 @@ const stringToStream = (str: string) => {
26
26
return stream ;
27
27
} ;
28
28
29
+ const getBundleConfig = ( ) => {
30
+ const bundleConfig = JSON . parse ( fs . readFileSync ( './public/webpack/development/react-client-manifest.json' , 'utf8' ) ) ;
31
+ // remove file:// from keys
32
+ const newBundleConfig : { [ key : string ] : any } = { } ;
33
+ for ( const [ key , value ] of Object . entries ( bundleConfig ) ) {
34
+ newBundleConfig [ key . replace ( 'file://' , '' ) ] = value ;
35
+ }
36
+ return newBundleConfig ;
37
+ }
38
+
29
39
ReactOnRails . serverRenderRSCReactComponent = ( options : RenderParams ) => {
30
40
const { name, domNodeId, trace, props, railsContext, throwJsErrors } = options ;
31
41
@@ -52,7 +62,7 @@ See https://github.com/shakacode/react_on_rails#renderer-functions`);
52
62
}
53
63
54
64
renderResult = new PassThrough ( ) ;
55
- const streamReader = renderToReadableStream ( reactRenderingResult as ReactElement ) . getReader ( ) ;
65
+ const streamReader = renderToReadableStream ( reactRenderingResult , getBundleConfig ( ) ) . getReader ( ) ;
56
66
const processStream = async ( ) => {
57
67
const { done, value } = await streamReader . read ( ) ;
58
68
if ( done ) {
0 commit comments