Skip to content

Commit 5ad8713

Browse files
Add RSCWebpackPlugin for React Server Components
1 parent 7e8fc76 commit 5ad8713

File tree

5 files changed

+50
-5
lines changed

5 files changed

+50
-5
lines changed

knip.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const config: KnipConfig = {
99
'node_package/src/ReactOnRails.node.ts!',
1010
'node_package/src/ReactOnRailsRSC.ts!',
1111
'node_package/src/RSCWebpackLoader.ts!',
12+
'node_package/src/RSCWebpackPlugin.ts!',
1213
'node_package/src/registerServerComponent/client.ts!',
1314
'node_package/src/registerServerComponent/server.ts!',
1415
'node_package/src/RSCClientRoot.ts!',
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { Compiler } from "webpack";
2+
import RSCWebpackPluginLib from "react-server-dom-webpack/plugin";
3+
4+
type ClientReferenceSearchPath = {
5+
directory: string,
6+
recursive?: boolean,
7+
include: RegExp,
8+
exclude?: RegExp,
9+
};
10+
11+
type ClientReferencePath = string | ClientReferenceSearchPath;
12+
13+
export type Options = {
14+
isServer: boolean,
15+
clientReferences?: ClientReferencePath | ReadonlyArray<ClientReferencePath>,
16+
chunkName?: string,
17+
clientManifestFilename?: string,
18+
serverConsumerManifestFilename?: string,
19+
};
20+
21+
export class RSCWebpackPlugin {
22+
private plugin?: RSCWebpackPluginLib;
23+
24+
constructor(options: Options) {
25+
if (!options.isServer) {
26+
this.plugin = new RSCWebpackPluginLib(options);
27+
}
28+
}
29+
30+
apply(compiler: Compiler) {
31+
this.plugin?.apply(compiler);
32+
}
33+
}

node_package/types/react-server-dom-webpack.d.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,12 @@ declare module 'react-server-dom-webpack/client' {
4343

4444
export function createFromReadableStream<T>(stream: ReadableStream): Promise<T>;
4545
}
46+
47+
declare module 'react-server-dom-webpack/plugin' {
48+
import { Compiler } from "webpack";
49+
50+
export default class ReactFlightWebpackPlugin {
51+
constructor(options: unknown);
52+
apply(compiler: Compiler): void;
53+
}
54+
}

package.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"default": "./node_package/lib/ReactOnRails.js"
1010
},
1111
"./RSCWebpackLoader": "./node_package/lib/RSCWebpackLoader.js",
12+
"./RSCWebpackPlugin": "./node_package/lib/RSCWebpackPlugin.js",
1213
"./registerServerComponent/client": "./node_package/lib/registerServerComponent/client.js",
1314
"./registerServerComponent/server": "./node_package/lib/registerServerComponent/server.js"
1415
},
@@ -47,17 +48,18 @@
4748
"prop-types": "^15.8.1",
4849
"react": "^19.0.0",
4950
"react-dom": "^19.0.0",
50-
"react-server-dom-webpack": "19.0.0",
51+
"react-server-dom-webpack": "^19.0.0",
5152
"redux": "^4.2.1",
5253
"ts-jest": "^29.2.5",
5354
"typescript": "^5.6.2",
5455
"webpack": "^5.97.1"
5556
},
56-
"dependencies": {},
57+
"dependencies": {
58+
"react-server-dom-webpack": "^19.0.0"
59+
},
5760
"peerDependencies": {
5861
"react": ">= 16",
59-
"react-dom": ">= 16",
60-
"react-server-dom-webpack": ">= 18.3.0-canary-670811593-20240322"
62+
"react-dom": ">= 16"
6163
},
6264
"files": [
6365
"node_package/lib"

yarn.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5830,7 +5830,7 @@ react-is@^18.0.0:
58305830
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
58315831
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
58325832

5833-
5833+
react-server-dom-webpack@^19.0.0:
58345834
version "19.0.0"
58355835
resolved "https://registry.yarnpkg.com/react-server-dom-webpack/-/react-server-dom-webpack-19.0.0.tgz#c60819b6cb54e317e675ddc0c5959ff915b789d0"
58365836
integrity sha512-hLug9KEXLc8vnU9lDNe2b2rKKDaqrp5gNiES4uyu2Up3FZfZJZmdwLFXlWzdA9gTB/6/cWduSB2K1Lfag2pSvw==

0 commit comments

Comments
 (0)