@bleedingdev/modern-js-render 3.2.0-ultramodern.12 → 3.2.0-ultramodern.121

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.
@@ -1 +1 @@
1
- export { ElementsContext, RSCServerSlot, ResetRootContext, RscClientRoot, ServerElementsProvider, callServer, createFromFetch, createFromReadableStream, createServerReference, rscStream, setServerCallback } from "./647.mjs";
1
+ export { ElementsContext, RSCServerSlot, ResetRootContext, RscClientRoot, ServerElementsProvider, callServer, createFromFetch, createFromReadableStream, createServerReference, rscStream, setServerCallback } from "./712.mjs";
package/dist/esm/rsc.mjs CHANGED
@@ -1 +1,192 @@
1
- export { createFromReadableStream, handleAction, registerClientReference, registerServerReference, renderCSRWithRSC, renderRsc, renderToReadableStream } from "./130.mjs";
1
+ import { decodeReply as server_node_decodeReply, loadServerAction as server_node_loadServerAction, registerClientReference, registerServerReference, renderToReadableStream } from "react-server-dom-rspack/server.node";
2
+ const server_encoder = new TextEncoder();
3
+ const closingTagsPattern = /<\/body>\s*<\/html>\s*$/i;
4
+ function injectRSCPayload(rscStream, { injectClosingTags = true }) {
5
+ const decoder = new TextDecoder();
6
+ let resolveFlightDataPromise;
7
+ const flightDataPromise = new Promise((resolve)=>resolveFlightDataPromise = resolve);
8
+ let startedRSC = false;
9
+ const buffered = [];
10
+ let timeout = null;
11
+ function flushBufferedChunks(controller) {
12
+ for (const chunk of buffered){
13
+ let buf = decoder.decode(chunk);
14
+ if (closingTagsPattern.test(buf)) buf = buf.replace(closingTagsPattern, '');
15
+ controller.enqueue(server_encoder.encode(buf));
16
+ }
17
+ buffered.length = 0;
18
+ timeout = null;
19
+ }
20
+ return new TransformStream({
21
+ transform (chunk, controller) {
22
+ buffered.push(chunk);
23
+ if (timeout) return;
24
+ timeout = setTimeout(async ()=>{
25
+ flushBufferedChunks(controller);
26
+ if (!startedRSC) {
27
+ startedRSC = true;
28
+ writeRSCStream(rscStream, controller).catch((err)=>controller.error(err)).then(()=>resolveFlightDataPromise());
29
+ }
30
+ }, 0);
31
+ },
32
+ async flush (controller) {
33
+ await flightDataPromise;
34
+ if (timeout) {
35
+ clearTimeout(timeout);
36
+ flushBufferedChunks(controller);
37
+ }
38
+ if (injectClosingTags) controller.enqueue(server_encoder.encode('</body></html>'));
39
+ }
40
+ });
41
+ }
42
+ async function writeRSCStream(rscStream, controller) {
43
+ const decoder = new TextDecoder('utf-8', {
44
+ fatal: true
45
+ });
46
+ for await (const chunk of rscStream)try {
47
+ writeChunk(JSON.stringify(decoder.decode(chunk, {
48
+ stream: true
49
+ })), controller);
50
+ } catch (err) {
51
+ const base64 = JSON.stringify(btoa(String.fromCodePoint(...chunk)));
52
+ writeChunk(`Uint8Array.from(atob(${base64}), m => m.codePointAt(0))`, controller);
53
+ }
54
+ const remaining = decoder.decode();
55
+ if (remaining.length) writeChunk(JSON.stringify(remaining), controller);
56
+ }
57
+ function writeChunk(chunk, controller) {
58
+ controller.enqueue(server_encoder.encode(`<script>${escapeScript(`(self.__FLIGHT_DATA||=[]).push(${chunk})`)}</script>`));
59
+ }
60
+ function escapeScript(script) {
61
+ return script.replace(/<!--/g, '<\\!--').replace(/<\/(script)/gi, '</\\$1');
62
+ }
63
+ function injectCSS(cssFiles, { injectClosingTags = true } = {}) {
64
+ if (0 === cssFiles.length) return new TransformStream({
65
+ transform (chunk, controller) {
66
+ controller.enqueue(chunk);
67
+ },
68
+ flush (controller) {
69
+ if (injectClosingTags) controller.enqueue(server_encoder.encode('</body></html>'));
70
+ }
71
+ });
72
+ const decoder = new TextDecoder();
73
+ const headTrailer = '</head>';
74
+ const buffered = [];
75
+ let timeout = null;
76
+ let cssInjected = false;
77
+ const cssLinks = cssFiles.map((css)=>`<link href="${css}" rel="stylesheet" />`).join('');
78
+ function flushBufferedChunks(controller) {
79
+ for (const chunk of buffered){
80
+ let buf = decoder.decode(chunk);
81
+ if (!cssInjected && buf.includes(headTrailer)) {
82
+ buf = buf.replace(headTrailer, `${cssLinks}${headTrailer}`);
83
+ cssInjected = true;
84
+ }
85
+ controller.enqueue(server_encoder.encode(buf));
86
+ }
87
+ buffered.length = 0;
88
+ timeout = null;
89
+ }
90
+ return new TransformStream({
91
+ transform (chunk, controller) {
92
+ buffered.push(chunk);
93
+ if (timeout) return;
94
+ timeout = setTimeout(()=>{
95
+ flushBufferedChunks(controller);
96
+ }, 0);
97
+ },
98
+ async flush (controller) {
99
+ if (timeout) {
100
+ clearTimeout(timeout);
101
+ flushBufferedChunks(controller);
102
+ }
103
+ if (!cssInjected) controller.enqueue(server_encoder.encode(cssLinks));
104
+ if (injectClosingTags) controller.enqueue(server_encoder.encode('</body></html>'));
105
+ }
106
+ });
107
+ }
108
+ const createHandleAction = ({ decodeReply, loadServerAction, renderRsc })=>async (req)=>{
109
+ try {
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
+ });
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;
148
+ } catch (error) {
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
154
+ });
155
+ }
156
+ };
157
+ const rsc_renderRsc = (options)=>{
158
+ const readable = renderToReadableStream(options.element);
159
+ return readable;
160
+ };
161
+ const handleAction = createHandleAction({
162
+ decodeReply: server_node_decodeReply,
163
+ loadServerAction: server_node_loadServerAction,
164
+ renderRsc: rsc_renderRsc
165
+ });
166
+ async function renderCSRWithRSC(options) {
167
+ const entryCssFiles = __webpack_require__.rscM?.entryCssFiles;
168
+ const cssFiles = entryCssFiles ? Object.values(entryCssFiles).flat() : [];
169
+ const rscPayloadStream = rsc_renderRsc({
170
+ element: options.rscRoot
171
+ });
172
+ const htmlStream = new ReadableStream({
173
+ start (controller) {
174
+ const encoder = new TextEncoder();
175
+ controller.enqueue(encoder.encode(options.html));
176
+ controller.close();
177
+ }
178
+ });
179
+ const stream = htmlStream.pipeThrough(injectCSS(cssFiles, {
180
+ injectClosingTags: false
181
+ })).pipeThrough(injectRSCPayload(rscPayloadStream, {
182
+ injectClosingTags: true
183
+ }));
184
+ return new Response(stream, {
185
+ status: 200,
186
+ headers: new Headers({
187
+ 'content-type': 'text/html; charset=UTF-8'
188
+ })
189
+ });
190
+ }
191
+ export { createFromReadableStream } from "react-server-dom-rspack/client.node";
192
+ export { handleAction, registerClientReference, registerServerReference, renderCSRWithRSC, renderToReadableStream, rsc_renderRsc as renderRsc };
@@ -0,0 +1,202 @@
1
+ import { decodeReply as server_node_decodeReply, loadServerAction as server_node_loadServerAction, renderToReadableStream } from "react-server-dom-rspack/server.node";
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
+ const server_encoder = new TextEncoder();
4
+ const closingTagsPattern = /<\/body>\s*<\/html>\s*$/i;
5
+ function injectRSCPayload(rscStream, { injectClosingTags = true }) {
6
+ const decoder = new TextDecoder();
7
+ let resolveFlightDataPromise;
8
+ const flightDataPromise = new Promise((resolve)=>resolveFlightDataPromise = resolve);
9
+ let startedRSC = false;
10
+ const buffered = [];
11
+ let timeout = null;
12
+ function flushBufferedChunks(controller) {
13
+ for (const chunk of buffered){
14
+ let buf = decoder.decode(chunk);
15
+ if (closingTagsPattern.test(buf)) buf = buf.replace(closingTagsPattern, '');
16
+ controller.enqueue(server_encoder.encode(buf));
17
+ }
18
+ buffered.length = 0;
19
+ timeout = null;
20
+ }
21
+ return new TransformStream({
22
+ transform (chunk, controller) {
23
+ buffered.push(chunk);
24
+ if (timeout) return;
25
+ timeout = setTimeout(async ()=>{
26
+ flushBufferedChunks(controller);
27
+ if (!startedRSC) {
28
+ startedRSC = true;
29
+ writeRSCStream(rscStream, controller).catch((err)=>controller.error(err)).then(()=>resolveFlightDataPromise());
30
+ }
31
+ }, 0);
32
+ },
33
+ async flush (controller) {
34
+ await flightDataPromise;
35
+ if (timeout) {
36
+ clearTimeout(timeout);
37
+ flushBufferedChunks(controller);
38
+ }
39
+ if (injectClosingTags) controller.enqueue(server_encoder.encode('</body></html>'));
40
+ }
41
+ });
42
+ }
43
+ async function writeRSCStream(rscStream, controller) {
44
+ const decoder = new TextDecoder('utf-8', {
45
+ fatal: true
46
+ });
47
+ for await (const chunk of rscStream)try {
48
+ writeChunk(JSON.stringify(decoder.decode(chunk, {
49
+ stream: true
50
+ })), controller);
51
+ } catch (err) {
52
+ const base64 = JSON.stringify(btoa(String.fromCodePoint(...chunk)));
53
+ writeChunk(`Uint8Array.from(atob(${base64}), m => m.codePointAt(0))`, controller);
54
+ }
55
+ const remaining = decoder.decode();
56
+ if (remaining.length) writeChunk(JSON.stringify(remaining), controller);
57
+ }
58
+ function writeChunk(chunk, controller) {
59
+ controller.enqueue(server_encoder.encode(`<script>${escapeScript(`(self.__FLIGHT_DATA||=[]).push(${chunk})`)}</script>`));
60
+ }
61
+ function escapeScript(script) {
62
+ return script.replace(/<!--/g, '<\\!--').replace(/<\/(script)/gi, '</\\$1');
63
+ }
64
+ function injectCSS(cssFiles, { injectClosingTags = true } = {}) {
65
+ if (0 === cssFiles.length) return new TransformStream({
66
+ transform (chunk, controller) {
67
+ controller.enqueue(chunk);
68
+ },
69
+ flush (controller) {
70
+ if (injectClosingTags) controller.enqueue(server_encoder.encode('</body></html>'));
71
+ }
72
+ });
73
+ const decoder = new TextDecoder();
74
+ const headTrailer = '</head>';
75
+ const buffered = [];
76
+ let timeout = null;
77
+ let cssInjected = false;
78
+ const cssLinks = cssFiles.map((css)=>`<link href="${css}" rel="stylesheet" />`).join('');
79
+ function flushBufferedChunks(controller) {
80
+ for (const chunk of buffered){
81
+ let buf = decoder.decode(chunk);
82
+ if (!cssInjected && buf.includes(headTrailer)) {
83
+ buf = buf.replace(headTrailer, `${cssLinks}${headTrailer}`);
84
+ cssInjected = true;
85
+ }
86
+ controller.enqueue(server_encoder.encode(buf));
87
+ }
88
+ buffered.length = 0;
89
+ timeout = null;
90
+ }
91
+ return new TransformStream({
92
+ transform (chunk, controller) {
93
+ buffered.push(chunk);
94
+ if (timeout) return;
95
+ timeout = setTimeout(()=>{
96
+ flushBufferedChunks(controller);
97
+ }, 0);
98
+ },
99
+ async flush (controller) {
100
+ if (timeout) {
101
+ clearTimeout(timeout);
102
+ flushBufferedChunks(controller);
103
+ }
104
+ if (!cssInjected) controller.enqueue(server_encoder.encode(cssLinks));
105
+ if (injectClosingTags) controller.enqueue(server_encoder.encode('</body></html>'));
106
+ }
107
+ });
108
+ }
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)=>{
159
+ const readable = renderToReadableStream(options.element);
160
+ return readable;
161
+ };
162
+ createHandleAction({
163
+ decodeReply: server_node_decodeReply,
164
+ loadServerAction: server_node_loadServerAction,
165
+ renderRsc: rsc_renderRsc
166
+ });
167
+ async function renderCSRWithRSC(options) {
168
+ const entryCssFiles = __webpack_require__.rscM?.entryCssFiles;
169
+ const cssFiles = entryCssFiles ? Object.values(entryCssFiles).flat() : [];
170
+ const rscPayloadStream = rsc_renderRsc({
171
+ element: options.rscRoot
172
+ });
173
+ const htmlStream = new ReadableStream({
174
+ start (controller) {
175
+ const encoder = new TextEncoder();
176
+ controller.enqueue(encoder.encode(options.html));
177
+ controller.close();
178
+ }
179
+ });
180
+ const stream = htmlStream.pipeThrough(injectCSS(cssFiles, {
181
+ injectClosingTags: false
182
+ })).pipeThrough(injectRSCPayload(rscPayloadStream, {
183
+ injectClosingTags: true
184
+ }));
185
+ return new Response(stream, {
186
+ status: 200,
187
+ headers: new Headers({
188
+ 'content-type': 'text/html; charset=UTF-8'
189
+ })
190
+ });
191
+ }
192
+ const rsc_worker_renderRsc = (options)=>{
193
+ const readable = server_edge_renderToReadableStream(options.element);
194
+ return readable;
195
+ };
196
+ const rsc_worker_handleAction = createHandleAction({
197
+ decodeReply: server_edge_decodeReply,
198
+ loadServerAction: server_edge_loadServerAction,
199
+ renderRsc: rsc_worker_renderRsc
200
+ });
201
+ export { createFromReadableStream } from "react-server-dom-rspack/client.edge";
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
@@ -1,10 +1,10 @@
1
1
  import { SSR_HYDRATION_ID_PREFIX } from "@modern-js/utils/universal/constants";
2
+ import react from "react";
2
3
  import { renderToReadableStream } from "react-dom/server.edge";
3
- import { __webpack_require__ } from "./rslib-runtime.mjs";
4
- import { ServerElementsProvider } from "./647.mjs";
4
+ import { ServerElementsProvider } from "./712.mjs";
5
5
  function CSSLinks({ cssFiles }) {
6
6
  if (0 === cssFiles.length) return null;
7
- return /*#__PURE__*/ React.createElement(React.Fragment, null, cssFiles.map((css)=>/*#__PURE__*/ React.createElement("link", {
7
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, cssFiles.map((css)=>/*#__PURE__*/ react.createElement("link", {
8
8
  key: css,
9
9
  href: css,
10
10
  rel: "stylesheet"
@@ -16,20 +16,21 @@ function wrapStream(stream, originalStream) {
16
16
  return wrappedStream;
17
17
  }
18
18
  const renderSSRStream = async (children, options)=>{
19
- const { rscRoot, routes } = options;
20
- const clientManifest = __webpack_require__.rscM?.clientManifest;
21
- const serverConsumerModuleMap = __webpack_require__.rscM?.serverConsumerModuleMap;
22
- const entryCssFiles = __webpack_require__.rscM?.entryCssFiles;
19
+ const { rscManifest, rscRoot, routes } = options;
20
+ const clientManifest = rscManifest?.clientManifest;
21
+ const serverConsumerModuleMap = rscManifest?.serverConsumerModuleMap;
22
+ const entryCssFiles = rscManifest?.entryCssFiles;
23
23
  const hasRoutes = Boolean(routes && routes.length > 0);
24
24
  if (!clientManifest || !serverConsumerModuleMap) return renderToReadableStream(children, {
25
25
  ...options,
26
26
  identifierPrefix: SSR_HYDRATION_ID_PREFIX
27
27
  });
28
28
  try {
29
+ const rscRuntime = 'edge' === process.env.MODERN_SSR_ENV ? import("@modern-js/render/rsc-worker") : import("@modern-js/render/rsc");
29
30
  const [{ renderRsc }, { createFromReadableStream }, { injectRSCPayload }] = await Promise.all([
30
- import("./130.mjs").then((m)=>m.rsc_namespaceObject),
31
+ rscRuntime,
31
32
  import("react-server-dom-rspack/client.edge"),
32
- import("./940.mjs")
33
+ import("./0~server.mjs")
33
34
  ]);
34
35
  const rscStream = await renderRsc({
35
36
  element: rscRoot || children
@@ -38,9 +39,9 @@ const renderSSRStream = async (children, options)=>{
38
39
  const elements = createFromReadableStream(rscElementStream);
39
40
  let cssFiles = [];
40
41
  if (!hasRoutes && entryCssFiles) cssFiles = Object.values(entryCssFiles).flat();
41
- const htmlStream = await renderToReadableStream(/*#__PURE__*/ React.createElement(ServerElementsProvider, {
42
+ const htmlStream = await renderToReadableStream(/*#__PURE__*/ react.createElement(ServerElementsProvider, {
42
43
  elements: elements
43
- }, /*#__PURE__*/ React.createElement(CSSLinks, {
44
+ }, /*#__PURE__*/ react.createElement(CSSLinks, {
44
45
  cssFiles: cssFiles
45
46
  }), children), {
46
47
  ...options,
@@ -0,0 +1,2 @@
1
+ export * from './server/rsc/csr';
2
+ export * from './server/rsc/rsc.worker';
@@ -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>;
@@ -0,0 +1,8 @@
1
+ export { renderToReadableStream } from 'react-server-dom-rspack/server.edge';
2
+ export { createFromReadableStream } from 'react-server-dom-rspack/client.edge';
3
+ export { registerClientReference, registerServerReference, } from 'react-server-dom-rspack/server.edge';
4
+ type RenderRscOptions = {
5
+ element: React.ReactElement;
6
+ };
7
+ export declare const renderRsc: (options: RenderRscOptions) => ReadableStream<Uint8Array<ArrayBufferLike>>;
8
+ export declare const handleAction: (req: Request) => Promise<Response>;
@@ -1,7 +1,15 @@
1
+ import type { ClientManifest } from '@modern-js/types/server';
2
+ import React from 'react';
1
3
  import { renderToReadableStream } from 'react-dom/server.edge';
2
4
  type Options = {
3
5
  request: Request;
4
6
  routes?: unknown[];
7
+ rscManifest?: {
8
+ clientManifest?: ClientManifest;
9
+ serverConsumerModuleMap?: unknown;
10
+ serverManifest?: unknown;
11
+ entryCssFiles?: Record<string, string[]>;
12
+ };
5
13
  } & Parameters<typeof renderToReadableStream>[1];
6
14
  export declare const renderSSRStream: (children: React.ReactNode, options: Options & {
7
15
  rscRoot: React.ReactElement;
package/package.json CHANGED
@@ -17,30 +17,30 @@
17
17
  "modern",
18
18
  "modern.js"
19
19
  ],
20
- "version": "3.2.0-ultramodern.12",
20
+ "version": "3.2.0-ultramodern.121",
21
21
  "files": [
22
22
  "dist",
23
23
  "hook.d.ts"
24
24
  ],
25
25
  "dependencies": {
26
- "@swc/helpers": "^0.5.21",
27
- "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.2.0-ultramodern.12",
28
- "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.2.0-ultramodern.12"
26
+ "@swc/helpers": "^0.5.23",
27
+ "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.2.0-ultramodern.121",
28
+ "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.2.0-ultramodern.121"
29
29
  },
30
30
  "devDependencies": {
31
- "@rslib/core": "0.21.5",
32
- "@types/react": "^19.2.14",
31
+ "@rslib/core": "0.22.0",
32
+ "@types/react": "^19.2.17",
33
33
  "@types/react-dom": "^19.2.3",
34
- "@typescript/native-preview": "7.0.0-dev.20260516.1",
35
- "react": "^19.2.6",
36
- "react-dom": "^19.2.6",
34
+ "@typescript/native-preview": "7.0.0-dev.20260610.1",
35
+ "react": "^19.2.7",
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.12"
38
+ "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.2.0-ultramodern.121",
39
+ "@scripts/rstest-config": "2.66.0"
40
40
  },
41
41
  "peerDependencies": {
42
- "react": "^19.2.6",
43
- "react-dom": "^19.2.6",
42
+ "react": "^19.2.7",
43
+ "react-dom": "^19.2.7",
44
44
  "react-server-dom-rspack": "0.0.2"
45
45
  },
46
46
  "exports": {
@@ -52,6 +52,10 @@
52
52
  "types": "./dist/types/server/rsc/index.d.ts",
53
53
  "default": "./dist/esm/rsc.mjs"
54
54
  },
55
+ "./rsc-worker": {
56
+ "types": "./dist/types/rsc.worker.d.ts",
57
+ "default": "./dist/esm/rscWorker.mjs"
58
+ },
55
59
  "./client": {
56
60
  "types": "./dist/types/client/index.d.ts",
57
61
  "default": "./dist/esm/client.mjs"
@@ -65,6 +69,9 @@
65
69
  "rsc": [
66
70
  "./dist/types/server/rsc/index.d.ts"
67
71
  ],
72
+ "rsc-worker": [
73
+ "./dist/types/rsc.worker.d.ts"
74
+ ],
68
75
  "client": [
69
76
  "./dist/types/client/index.d.ts"
70
77
  ]
package/dist/esm/130.mjs DELETED
@@ -1,95 +0,0 @@
1
- import { decodeReply, loadServerAction, registerClientReference, registerServerReference, renderToReadableStream } from "react-server-dom-rspack/server.node";
2
- import { __webpack_require__ } from "./rslib-runtime.mjs";
3
- import { createFromReadableStream as createFromReadableStream_0 } from "react-server-dom-rspack/client.node";
4
- import { injectCSS, injectRSCPayload } from "./940.mjs";
5
- var rsc_namespaceObject = {};
6
- __webpack_require__.r(rsc_namespaceObject);
7
- __webpack_require__.d(rsc_namespaceObject, {
8
- createFromReadableStream: ()=>createFromReadableStream_0,
9
- handleAction: ()=>handleAction,
10
- registerClientReference: ()=>registerClientReference,
11
- registerServerReference: ()=>registerServerReference,
12
- renderCSRWithRSC: ()=>renderCSRWithRSC,
13
- renderRsc: ()=>renderRsc,
14
- renderToReadableStream: ()=>renderToReadableStream
15
- });
16
- const renderRsc = (options)=>{
17
- const readable = renderToReadableStream(options.element);
18
- return readable;
19
- };
20
- const handleAction = async (req)=>{
21
- try {
22
- const serverReference = req.headers.get('x-rsc-action');
23
- if (!serverReference) return new Response('Cannot find server reference', {
24
- status: 404
25
- });
26
- const action = loadServerAction(serverReference);
27
- if ('function' != typeof action) {
28
- console.error('[RSC] Invalid action: server reference is not a function, serverReference:', serverReference);
29
- return new Response('Invalid action', {
30
- status: 400
31
- });
32
- }
33
- const contentType = req.headers.get('content-type');
34
- let args;
35
- try {
36
- if (contentType?.includes('multipart/form-data')) {
37
- const formData = await req.formData();
38
- args = await decodeReply(formData);
39
- } else {
40
- const text = await req.text();
41
- args = await decodeReply(text);
42
- }
43
- } catch (error) {
44
- console.error('[RSC] Failed to decode request arguments, error:', error instanceof Error ? error.message : String(error), 'contentType:', contentType || 'unknown');
45
- return new Response('Failed to decode request arguments', {
46
- status: 400
47
- });
48
- }
49
- const result = await Promise.resolve(action.apply(null, args));
50
- const stream = renderRsc({
51
- element: result
52
- });
53
- const response = new Response(stream, {
54
- status: 200,
55
- headers: {
56
- 'Content-Type': 'text/html'
57
- }
58
- });
59
- return response;
60
- } catch (error) {
61
- const errorMessage = error instanceof Error ? error.message : String(error);
62
- const errorStack = error instanceof Error ? error.stack : void 0;
63
- console.error('[RSC] Error handling server action, error:', errorMessage, errorStack ? `\n${errorStack}` : '');
64
- return new Response('Internal server error', {
65
- status: 500
66
- });
67
- }
68
- };
69
- async function renderCSRWithRSC(options) {
70
- const entryCssFiles = __webpack_require__.rscM?.entryCssFiles;
71
- const cssFiles = entryCssFiles ? Object.values(entryCssFiles).flat() : [];
72
- const rscPayloadStream = renderRsc({
73
- element: options.rscRoot
74
- });
75
- const htmlStream = new ReadableStream({
76
- start (controller) {
77
- const encoder = new TextEncoder();
78
- controller.enqueue(encoder.encode(options.html));
79
- controller.close();
80
- }
81
- });
82
- const stream = htmlStream.pipeThrough(injectCSS(cssFiles, {
83
- injectClosingTags: false
84
- })).pipeThrough(injectRSCPayload(rscPayloadStream, {
85
- injectClosingTags: true
86
- }));
87
- return new Response(stream, {
88
- status: 200,
89
- headers: new Headers({
90
- 'content-type': 'text/html; charset=UTF-8'
91
- })
92
- });
93
- }
94
- export { createFromReadableStream } from "react-server-dom-rspack/client.node";
95
- export { handleAction, registerClientReference, registerServerReference, renderCSRWithRSC, renderRsc, renderToReadableStream, rsc_namespaceObject };
@@ -1,23 +0,0 @@
1
- var __webpack_require__ = {};
2
- (()=>{
3
- __webpack_require__.d = (exports, definition)=>{
4
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, {
5
- enumerable: true,
6
- get: definition[key]
7
- });
8
- };
9
- })();
10
- (()=>{
11
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
12
- })();
13
- (()=>{
14
- __webpack_require__.r = (exports)=>{
15
- if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports, Symbol.toStringTag, {
16
- value: 'Module'
17
- });
18
- Object.defineProperty(exports, '__esModule', {
19
- value: true
20
- });
21
- };
22
- })();
23
- export { __webpack_require__ };
File without changes
File without changes