@bleedingdev/modern-js-render 3.2.0-ultramodern.120 → 3.2.0-ultramodern.122

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/esm/rsc.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { decodeReply, loadServerAction, registerClientReference, registerServerReference, renderToReadableStream } from "react-server-dom-rspack/server.node";
1
+ import { decodeReply as server_node_decodeReply, loadServerAction as server_node_loadServerAction, registerClientReference, registerServerReference, renderToReadableStream } from "react-server-dom-rspack/server.node";
2
2
  const server_encoder = new TextEncoder();
3
3
  const closingTagsPattern = /<\/body>\s*<\/html>\s*$/i;
4
4
  function injectRSCPayload(rscStream, { injectClosingTags = true }) {
@@ -105,63 +105,68 @@ function injectCSS(cssFiles, { injectClosingTags = true } = {}) {
105
105
  }
106
106
  });
107
107
  }
108
- const renderRsc = (options)=>{
109
- const readable = renderToReadableStream(options.element);
110
- return readable;
111
- };
112
- const handleAction = async (req)=>{
113
- try {
114
- const serverReference = req.headers.get('x-rsc-action');
115
- if (!serverReference) return new Response('Cannot find server reference', {
116
- status: 404
117
- });
118
- const action = loadServerAction(serverReference);
119
- if ('function' != typeof action) {
120
- console.error('[RSC] Invalid action: server reference is not a function, serverReference:', serverReference);
121
- return new Response('Invalid action', {
122
- status: 400
123
- });
124
- }
125
- const contentType = req.headers.get('content-type');
126
- let args;
108
+ const createHandleAction = ({ decodeReply, loadServerAction, renderRsc })=>async (req)=>{
127
109
  try {
128
- if (contentType?.includes('multipart/form-data')) {
129
- const formData = await req.formData();
130
- args = await decodeReply(formData);
131
- } else {
132
- const text = await req.text();
133
- args = await decodeReply(text);
110
+ const serverReference = req.headers.get('x-rsc-action');
111
+ if (!serverReference) return new Response('Cannot find server reference', {
112
+ status: 404
113
+ });
114
+ const action = loadServerAction(serverReference);
115
+ if ('function' != typeof action) {
116
+ console.error('[RSC] Invalid action: server reference is not a function, serverReference:', serverReference);
117
+ return new Response('Invalid action', {
118
+ status: 400
119
+ });
120
+ }
121
+ const contentType = req.headers.get('content-type');
122
+ let args;
123
+ try {
124
+ if (contentType?.includes('multipart/form-data')) {
125
+ const formData = await req.formData();
126
+ args = await decodeReply(formData);
127
+ } else {
128
+ const text = await req.text();
129
+ args = await decodeReply(text);
130
+ }
131
+ } catch (error) {
132
+ console.error('[RSC] Failed to decode request arguments, error:', error instanceof Error ? error.message : String(error), 'contentType:', contentType || 'unknown');
133
+ return new Response('Failed to decode request arguments', {
134
+ status: 400
135
+ });
134
136
  }
137
+ const result = await Promise.resolve(action.apply(null, args));
138
+ const stream = renderRsc({
139
+ element: result
140
+ });
141
+ const response = new Response(stream, {
142
+ status: 200,
143
+ headers: {
144
+ 'Content-Type': 'text/html'
145
+ }
146
+ });
147
+ return response;
135
148
  } catch (error) {
136
- console.error('[RSC] Failed to decode request arguments, error:', error instanceof Error ? error.message : String(error), 'contentType:', contentType || 'unknown');
137
- return new Response('Failed to decode request arguments', {
138
- status: 400
149
+ const errorMessage = error instanceof Error ? error.message : String(error);
150
+ const errorStack = error instanceof Error ? error.stack : void 0;
151
+ console.error('[RSC] Error handling server action, error:', errorMessage, errorStack ? `\n${errorStack}` : '');
152
+ return new Response('Internal server error', {
153
+ status: 500
139
154
  });
140
155
  }
141
- const result = await Promise.resolve(action.apply(null, args));
142
- const stream = renderRsc({
143
- element: result
144
- });
145
- const response = new Response(stream, {
146
- status: 200,
147
- headers: {
148
- 'Content-Type': 'text/html'
149
- }
150
- });
151
- return response;
152
- } catch (error) {
153
- const errorMessage = error instanceof Error ? error.message : String(error);
154
- const errorStack = error instanceof Error ? error.stack : void 0;
155
- console.error('[RSC] Error handling server action, error:', errorMessage, errorStack ? `\n${errorStack}` : '');
156
- return new Response('Internal server error', {
157
- status: 500
158
- });
159
- }
156
+ };
157
+ const rsc_renderRsc = (options)=>{
158
+ const readable = renderToReadableStream(options.element);
159
+ return readable;
160
160
  };
161
+ const handleAction = createHandleAction({
162
+ decodeReply: server_node_decodeReply,
163
+ loadServerAction: server_node_loadServerAction,
164
+ renderRsc: rsc_renderRsc
165
+ });
161
166
  async function renderCSRWithRSC(options) {
162
167
  const entryCssFiles = __webpack_require__.rscM?.entryCssFiles;
163
168
  const cssFiles = entryCssFiles ? Object.values(entryCssFiles).flat() : [];
164
- const rscPayloadStream = renderRsc({
169
+ const rscPayloadStream = rsc_renderRsc({
165
170
  element: options.rscRoot
166
171
  });
167
172
  const htmlStream = new ReadableStream({
@@ -184,4 +189,4 @@ async function renderCSRWithRSC(options) {
184
189
  });
185
190
  }
186
191
  export { createFromReadableStream } from "react-server-dom-rspack/client.node";
187
- export { handleAction, registerClientReference, registerServerReference, renderCSRWithRSC, renderRsc, renderToReadableStream };
192
+ export { handleAction, registerClientReference, registerServerReference, renderCSRWithRSC, renderToReadableStream, rsc_renderRsc as renderRsc };
@@ -1,4 +1,4 @@
1
- import { renderToReadableStream } from "react-server-dom-rspack/server.node";
1
+ import { decodeReply as server_node_decodeReply, loadServerAction as server_node_loadServerAction, renderToReadableStream } from "react-server-dom-rspack/server.node";
2
2
  import { decodeReply as server_edge_decodeReply, loadServerAction as server_edge_loadServerAction, registerClientReference, registerServerReference, renderToReadableStream as server_edge_renderToReadableStream } from "react-server-dom-rspack/server.edge";
3
3
  const server_encoder = new TextEncoder();
4
4
  const closingTagsPattern = /<\/body>\s*<\/html>\s*$/i;
@@ -106,14 +106,68 @@ function injectCSS(cssFiles, { injectClosingTags = true } = {}) {
106
106
  }
107
107
  });
108
108
  }
109
- const renderRsc = (options)=>{
109
+ const createHandleAction = ({ decodeReply, loadServerAction, renderRsc })=>async (req)=>{
110
+ try {
111
+ const serverReference = req.headers.get('x-rsc-action');
112
+ if (!serverReference) return new Response('Cannot find server reference', {
113
+ status: 404
114
+ });
115
+ const action = loadServerAction(serverReference);
116
+ if ('function' != typeof action) {
117
+ console.error('[RSC] Invalid action: server reference is not a function, serverReference:', serverReference);
118
+ return new Response('Invalid action', {
119
+ status: 400
120
+ });
121
+ }
122
+ const contentType = req.headers.get('content-type');
123
+ let args;
124
+ try {
125
+ if (contentType?.includes('multipart/form-data')) {
126
+ const formData = await req.formData();
127
+ args = await decodeReply(formData);
128
+ } else {
129
+ const text = await req.text();
130
+ args = await decodeReply(text);
131
+ }
132
+ } catch (error) {
133
+ console.error('[RSC] Failed to decode request arguments, error:', error instanceof Error ? error.message : String(error), 'contentType:', contentType || 'unknown');
134
+ return new Response('Failed to decode request arguments', {
135
+ status: 400
136
+ });
137
+ }
138
+ const result = await Promise.resolve(action.apply(null, args));
139
+ const stream = renderRsc({
140
+ element: result
141
+ });
142
+ const response = new Response(stream, {
143
+ status: 200,
144
+ headers: {
145
+ 'Content-Type': 'text/html'
146
+ }
147
+ });
148
+ return response;
149
+ } catch (error) {
150
+ const errorMessage = error instanceof Error ? error.message : String(error);
151
+ const errorStack = error instanceof Error ? error.stack : void 0;
152
+ console.error('[RSC] Error handling server action, error:', errorMessage, errorStack ? `\n${errorStack}` : '');
153
+ return new Response('Internal server error', {
154
+ status: 500
155
+ });
156
+ }
157
+ };
158
+ const rsc_renderRsc = (options)=>{
110
159
  const readable = renderToReadableStream(options.element);
111
160
  return readable;
112
161
  };
162
+ createHandleAction({
163
+ decodeReply: server_node_decodeReply,
164
+ loadServerAction: server_node_loadServerAction,
165
+ renderRsc: rsc_renderRsc
166
+ });
113
167
  async function renderCSRWithRSC(options) {
114
168
  const entryCssFiles = __webpack_require__.rscM?.entryCssFiles;
115
169
  const cssFiles = entryCssFiles ? Object.values(entryCssFiles).flat() : [];
116
- const rscPayloadStream = renderRsc({
170
+ const rscPayloadStream = rsc_renderRsc({
117
171
  element: options.rscRoot
118
172
  });
119
173
  const htmlStream = new ReadableStream({
@@ -139,54 +193,10 @@ const rsc_worker_renderRsc = (options)=>{
139
193
  const readable = server_edge_renderToReadableStream(options.element);
140
194
  return readable;
141
195
  };
142
- const rsc_worker_handleAction = async (req)=>{
143
- try {
144
- const serverReference = req.headers.get('x-rsc-action');
145
- if (!serverReference) return new Response('Cannot find server reference', {
146
- status: 404
147
- });
148
- const action = server_edge_loadServerAction(serverReference);
149
- if ('function' != typeof action) {
150
- console.error('[RSC] Invalid action: server reference is not a function, serverReference:', serverReference);
151
- return new Response('Invalid action', {
152
- status: 400
153
- });
154
- }
155
- const contentType = req.headers.get('content-type');
156
- let args;
157
- try {
158
- if (contentType?.includes('multipart/form-data')) {
159
- const formData = await req.formData();
160
- args = await server_edge_decodeReply(formData);
161
- } else {
162
- const text = await req.text();
163
- args = await server_edge_decodeReply(text);
164
- }
165
- } catch (error) {
166
- console.error('[RSC] Failed to decode request arguments, error:', error instanceof Error ? error.message : String(error), 'contentType:', contentType || 'unknown');
167
- return new Response('Failed to decode request arguments', {
168
- status: 400
169
- });
170
- }
171
- const result = await Promise.resolve(action.apply(null, args));
172
- const stream = rsc_worker_renderRsc({
173
- element: result
174
- });
175
- const response = new Response(stream, {
176
- status: 200,
177
- headers: {
178
- 'Content-Type': 'text/html'
179
- }
180
- });
181
- return response;
182
- } catch (error) {
183
- const errorMessage = error instanceof Error ? error.message : String(error);
184
- const errorStack = error instanceof Error ? error.stack : void 0;
185
- console.error('[RSC] Error handling server action, error:', errorMessage, errorStack ? `\n${errorStack}` : '');
186
- return new Response('Internal server error', {
187
- status: 500
188
- });
189
- }
190
- };
196
+ const rsc_worker_handleAction = createHandleAction({
197
+ decodeReply: server_edge_decodeReply,
198
+ loadServerAction: server_edge_loadServerAction,
199
+ renderRsc: rsc_worker_renderRsc
200
+ });
191
201
  export { createFromReadableStream } from "react-server-dom-rspack/client.edge";
192
202
  export { registerClientReference, registerServerReference, renderCSRWithRSC, rsc_worker_handleAction as handleAction, rsc_worker_renderRsc as renderRsc, server_edge_renderToReadableStream as renderToReadableStream };
package/dist/esm/ssr.mjs CHANGED
@@ -26,11 +26,7 @@ const renderSSRStream = async (children, options)=>{
26
26
  identifierPrefix: SSR_HYDRATION_ID_PREFIX
27
27
  });
28
28
  try {
29
- const rscRuntime = 'edge' === process.env.MODERN_SSR_ENV ? Promise.resolve().then(function() {
30
- var e = new Error("Cannot find module '@modern-js/render/rsc-worker'");
31
- e.code = 'MODULE_NOT_FOUND';
32
- throw e;
33
- }) : import("@modern-js/render/rsc");
29
+ const rscRuntime = 'edge' === process.env.MODERN_SSR_ENV ? import("@modern-js/render/rsc-worker") : import("@modern-js/render/rsc");
34
30
  const [{ renderRsc }, { createFromReadableStream }, { injectRSCPayload }] = await Promise.all([
35
31
  rscRuntime,
36
32
  import("react-server-dom-rspack/client.edge"),
@@ -0,0 +1,9 @@
1
+ import type { ReactElement } from 'react';
2
+ export type RscActionRuntime = {
3
+ decodeReply: (body: string | FormData) => Promise<unknown[]>;
4
+ loadServerAction: (actionId: string) => unknown;
5
+ renderRsc: (options: {
6
+ element: ReactElement;
7
+ }) => ReadableStream<Uint8Array>;
8
+ };
9
+ export declare const createHandleAction: ({ decodeReply, loadServerAction, renderRsc }: RscActionRuntime) => (req: Request) => Promise<Response>;
package/package.json CHANGED
@@ -17,15 +17,15 @@
17
17
  "modern",
18
18
  "modern.js"
19
19
  ],
20
- "version": "3.2.0-ultramodern.120",
20
+ "version": "3.2.0-ultramodern.122",
21
21
  "files": [
22
22
  "dist",
23
23
  "hook.d.ts"
24
24
  ],
25
25
  "dependencies": {
26
26
  "@swc/helpers": "^0.5.23",
27
- "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.2.0-ultramodern.120",
28
- "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.2.0-ultramodern.120"
27
+ "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.2.0-ultramodern.122",
28
+ "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.2.0-ultramodern.122"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@rslib/core": "0.22.0",
@@ -35,8 +35,8 @@
35
35
  "react": "^19.2.7",
36
36
  "react-dom": "^19.2.7",
37
37
  "react-server-dom-rspack": "0.0.2",
38
- "@scripts/rstest-config": "2.66.0",
39
- "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.2.0-ultramodern.120"
38
+ "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.2.0-ultramodern.122",
39
+ "@scripts/rstest-config": "2.66.0"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "react": "^19.2.7",