Skip to content

Commit 713033b

Browse files
tmp
1 parent 43accf3 commit 713033b

File tree

5 files changed

+67
-2
lines changed

5 files changed

+67
-2
lines changed

packages/react-on-rails-pro/package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,9 @@
7575
"bugs": {
7676
"url": "https://github.com/shakacode/react_on_rails/issues"
7777
},
78-
"homepage": "https://github.com/shakacode/react_on_rails#readme"
78+
"homepage": "https://github.com/shakacode/react_on_rails#readme",
79+
"devDependencies": {
80+
"@types/mock-fs": "^4.13.4",
81+
"mock-fs": "^5.5.0"
82+
}
7983
}

packages/react-on-rails-pro/src/streamingUtils.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ export const transformRenderStreamChunksToResultObject = (renderState: StreamRen
111111

112112
const transformStream = new PassThrough({
113113
transform(chunk: Buffer, _, callback) {
114+
console.log("Stream working");
114115
const htmlChunk = chunk.toString();
115116
const consoleReplayScript = buildConsoleReplay(consoleHistory, previouslyReplayedConsoleMessages);
116117
previouslyReplayedConsoleMessages = consoleHistory?.length || 0;
@@ -125,6 +126,9 @@ export const transformRenderStreamChunksToResultObject = (renderState: StreamRen
125126

126127
callback();
127128
},
129+
flush() {
130+
console.log("Stream flushed");
131+
},
128132
});
129133

130134
let pipedStream: PipeableOrReadableStream | null = null;
@@ -141,6 +145,7 @@ export const transformRenderStreamChunksToResultObject = (renderState: StreamRen
141145

142146
const writeChunk = (chunk: string) => transformStream.write(chunk);
143147
const endStream = () => {
148+
console.log("Stream ended");
144149
transformStream.end();
145150
if (pipedStream && 'abort' in pipedStream) {
146151
pipedStream.abort();
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/**
2+
* @jest-environment node
3+
*/
4+
5+
import * as mock from 'mock-fs';
6+
import * as fs from 'fs';
7+
import * as path from 'path';
8+
import { pipeline, finished } from 'stream';
9+
import ReactOnRails, { RailsContextWithServerStreamingCapabilities } from '../src/ReactOnRailsRSC.ts';
10+
11+
const Component1 = () => <div>HelloWorld</div>;
12+
13+
ReactOnRails.register({ Component1 });
14+
15+
mock({
16+
'./src/react-client-manifest.json': '{}'
17+
});
18+
19+
afterAll(() => {
20+
mock.restore();
21+
})
22+
23+
test('eeee', async () => {
24+
console.log(path.resolve('./src/react-client-manifest.json'));
25+
expect(fs.readFileSync('./src/react-client-manifest.json').toString()).toEqual('{}');
26+
const readable = ReactOnRails.serverRenderRSCReactComponent({
27+
railsContext: {
28+
reactClientManifestFileName: 'react-client-manifest.json',
29+
reactServerClientManifestFileName: 'react-server-client-manifest.json',
30+
} as unknown as RailsContextWithServerStreamingCapabilities,
31+
name: 'Component1',
32+
renderingReturnsPromises: true,
33+
throwJsErrors: true,
34+
domNodeId: 'dom-id',
35+
});
36+
37+
const decoder = new TextDecoder();
38+
readable.on('data', chunk => {
39+
console.log(decoder.decode(chunk));
40+
})
41+
await new Promise((resolve, reject) => {
42+
readable.on('end', resolve);
43+
readable.on('error', reject);
44+
})
45+
}, 100000)

packages/react-on-rails/src/types/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,6 @@ export interface RenderParams extends Params {
225225

226226
export interface RSCRenderParams extends Omit<RenderParams, 'railsContext'> {
227227
railsContext: RailsContextWithServerStreamingCapabilities;
228-
reactClientManifestFileName: string;
229228
}
230229

231230
export interface CreateParams extends Params {

yarn.lock

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1654,6 +1654,13 @@
16541654
resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz"
16551655
integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
16561656

1657+
"@types/mock-fs@^4.13.4":
1658+
version "4.13.4"
1659+
resolved "https://registry.yarnpkg.com/@types/mock-fs/-/mock-fs-4.13.4.tgz#e73edb4b4889d44d23f1ea02d6eebe50aa30b09a"
1660+
integrity sha512-mXmM0o6lULPI8z3XNnQCpL0BGxPwx1Ul1wXYEPBGl4efShyxW2Rln0JOPEWGyZaYZMM6OVXM/15zUuFMY52ljg==
1661+
dependencies:
1662+
"@types/node" "*"
1663+
16571664
"@types/node@*", "@types/node@^20.17.16":
16581665
version "20.17.16"
16591666
resolved "https://registry.npmjs.org/@types/node/-/node-20.17.16.tgz"
@@ -4729,6 +4736,11 @@ minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8:
47294736
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
47304737
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
47314738

4739+
mock-fs@^5.5.0:
4740+
version "5.5.0"
4741+
resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-5.5.0.tgz#94a46d299aaa588e735a201cbe823c876e91f385"
4742+
integrity sha512-d/P1M/RacgM3dB0sJ8rjeRNXxtapkPCUnMGmIN0ixJ16F/E4GUZCvWcSGfWGz8eaXYvn1s9baUwNjI4LOPEjiA==
4743+
47324744
mri@^1.1.0:
47334745
version "1.2.0"
47344746
resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz"

0 commit comments

Comments
 (0)