@modern-js/render 0.0.0-next-20250108080920
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/LICENSE +21 -0
- package/README.md +26 -0
- package/dist/cjs/client/callServer.js +110 -0
- package/dist/cjs/client/index.js +71 -0
- package/dist/cjs/rsc-html-stream/server.js +98 -0
- package/dist/cjs/server/rsc/index.js +22 -0
- package/dist/cjs/server/rsc/rsc.js +82 -0
- package/dist/cjs/server/ssr/index.js +22 -0
- package/dist/cjs/server/ssr/ssr.js +80 -0
- package/dist/esm/client/callServer.js +165 -0
- package/dist/esm/client/index.js +43 -0
- package/dist/esm/rsc-html-stream/server.js +216 -0
- package/dist/esm/server/rsc/index.js +1 -0
- package/dist/esm/server/rsc/rsc.js +105 -0
- package/dist/esm/server/ssr/index.js +1 -0
- package/dist/esm/server/ssr/ssr.js +112 -0
- package/dist/esm-node/client/callServer.js +85 -0
- package/dist/esm-node/client/index.js +40 -0
- package/dist/esm-node/rsc-html-stream/server.js +74 -0
- package/dist/esm-node/server/rsc/index.js +1 -0
- package/dist/esm-node/server/rsc/rsc.js +53 -0
- package/dist/esm-node/server/ssr/index.js +1 -0
- package/dist/esm-node/server/ssr/ssr.js +46 -0
- package/dist/types/client/callServer.d.ts +3 -0
- package/dist/types/client/index.d.ts +21 -0
- package/dist/types/rsc-html-stream/server.d.ts +3 -0
- package/dist/types/server/rsc/index.d.ts +1 -0
- package/dist/types/server/rsc/rsc.d.ts +14 -0
- package/dist/types/server/ssr/index.d.ts +1 -0
- package/dist/types/server/ssr/ssr.d.ts +11 -0
- package/package.json +86 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
|
|
2
|
+
import { _ as _call_super } from "@swc/helpers/_/_call_super";
|
|
3
|
+
import { _ as _class_call_check } from "@swc/helpers/_/_class_call_check";
|
|
4
|
+
import { _ as _class_private_field_get } from "@swc/helpers/_/_class_private_field_get";
|
|
5
|
+
import { _ as _class_private_field_init } from "@swc/helpers/_/_class_private_field_init";
|
|
6
|
+
import { _ as _class_private_field_set } from "@swc/helpers/_/_class_private_field_set";
|
|
7
|
+
import { _ as _create_class } from "@swc/helpers/_/_create_class";
|
|
8
|
+
import { _ as _inherits } from "@swc/helpers/_/_inherits";
|
|
9
|
+
import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
|
|
10
|
+
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
11
|
+
import { _ as _wrap_native_super } from "@swc/helpers/_/_wrap_native_super";
|
|
12
|
+
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
13
|
+
import { createFromFetch, encodeReply } from "react-server-dom-webpack/client.browser";
|
|
14
|
+
var _statusCode = /* @__PURE__ */ new WeakMap(), _url = /* @__PURE__ */ new WeakMap(), _details = /* @__PURE__ */ new WeakMap();
|
|
15
|
+
var CallServerError = /* @__PURE__ */ function(Error1) {
|
|
16
|
+
"use strict";
|
|
17
|
+
_inherits(CallServerError2, Error1);
|
|
18
|
+
function CallServerError2(message, statusCode) {
|
|
19
|
+
var url = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "", details = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
|
|
20
|
+
_class_call_check(this, CallServerError2);
|
|
21
|
+
var _this;
|
|
22
|
+
var formattedMessage = "Call Server Action failed (".concat(statusCode, "): ").concat(message, "\nURL: ").concat(url);
|
|
23
|
+
_this = _call_super(this, CallServerError2, [
|
|
24
|
+
formattedMessage
|
|
25
|
+
]), _class_private_field_init(_this, _statusCode, {
|
|
26
|
+
writable: true,
|
|
27
|
+
value: void 0
|
|
28
|
+
}), _class_private_field_init(_this, _url, {
|
|
29
|
+
writable: true,
|
|
30
|
+
value: void 0
|
|
31
|
+
}), _class_private_field_init(_this, _details, {
|
|
32
|
+
writable: true,
|
|
33
|
+
value: void 0
|
|
34
|
+
});
|
|
35
|
+
_this.name = "CallServerError";
|
|
36
|
+
_class_private_field_set(_this, _statusCode, statusCode);
|
|
37
|
+
_class_private_field_set(_this, _url, url);
|
|
38
|
+
_class_private_field_set(_this, _details, details);
|
|
39
|
+
return _this;
|
|
40
|
+
}
|
|
41
|
+
var _proto = CallServerError2.prototype;
|
|
42
|
+
_proto.toJSON = function toJSON() {
|
|
43
|
+
return {
|
|
44
|
+
name: this.name,
|
|
45
|
+
message: this.message,
|
|
46
|
+
statusCode: _class_private_field_get(this, _statusCode),
|
|
47
|
+
url: _class_private_field_get(this, _url),
|
|
48
|
+
details: _class_private_field_get(this, _details)
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
_create_class(CallServerError2, [
|
|
52
|
+
{
|
|
53
|
+
key: "statusCode",
|
|
54
|
+
get: function get() {
|
|
55
|
+
return _class_private_field_get(this, _statusCode);
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
key: "url",
|
|
60
|
+
get: function get() {
|
|
61
|
+
return _class_private_field_get(this, _url);
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
key: "details",
|
|
66
|
+
get: function get() {
|
|
67
|
+
return _object_spread({}, _class_private_field_get(this, _details));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
]);
|
|
71
|
+
return CallServerError2;
|
|
72
|
+
}(_wrap_native_super(Error));
|
|
73
|
+
function requestCallServer(id, args) {
|
|
74
|
+
return _requestCallServer.apply(this, arguments);
|
|
75
|
+
}
|
|
76
|
+
function _requestCallServer() {
|
|
77
|
+
_requestCallServer = _async_to_generator(function(id, args) {
|
|
78
|
+
var entryName, url, response, _tmp, _tmp1, error;
|
|
79
|
+
return _ts_generator(this, function(_state) {
|
|
80
|
+
switch (_state.label) {
|
|
81
|
+
case 0:
|
|
82
|
+
entryName = window.__MODERN_JS_ENTRY_NAME;
|
|
83
|
+
url = entryName === "main" ? "/" : "/".concat(entryName);
|
|
84
|
+
_state.label = 1;
|
|
85
|
+
case 1:
|
|
86
|
+
_state.trys.push([
|
|
87
|
+
1,
|
|
88
|
+
4,
|
|
89
|
+
,
|
|
90
|
+
5
|
|
91
|
+
]);
|
|
92
|
+
_tmp = [
|
|
93
|
+
url
|
|
94
|
+
];
|
|
95
|
+
_tmp1 = {
|
|
96
|
+
method: "POST",
|
|
97
|
+
headers: {
|
|
98
|
+
Accept: "text/x-component",
|
|
99
|
+
"x-rsc-action": id
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
return [
|
|
103
|
+
4,
|
|
104
|
+
encodeReply(args)
|
|
105
|
+
];
|
|
106
|
+
case 2:
|
|
107
|
+
return [
|
|
108
|
+
4,
|
|
109
|
+
fetch.apply(void 0, _tmp.concat([
|
|
110
|
+
(_tmp1.body = _state.sent(), _tmp1)
|
|
111
|
+
]))
|
|
112
|
+
];
|
|
113
|
+
case 3:
|
|
114
|
+
response = _state.sent();
|
|
115
|
+
if (!response.ok) {
|
|
116
|
+
throw new CallServerError(response.statusText, response.status, url, {
|
|
117
|
+
id,
|
|
118
|
+
args
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
return [
|
|
122
|
+
2,
|
|
123
|
+
response
|
|
124
|
+
];
|
|
125
|
+
case 4:
|
|
126
|
+
error = _state.sent();
|
|
127
|
+
if (_instanceof(error, CallServerError)) {
|
|
128
|
+
throw error;
|
|
129
|
+
}
|
|
130
|
+
throw new CallServerError(_instanceof(error, Error) ? error.message : "Unknown error", 1, url, {
|
|
131
|
+
id,
|
|
132
|
+
args
|
|
133
|
+
});
|
|
134
|
+
case 5:
|
|
135
|
+
return [
|
|
136
|
+
2
|
|
137
|
+
];
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
return _requestCallServer.apply(this, arguments);
|
|
142
|
+
}
|
|
143
|
+
function callServer(id, args) {
|
|
144
|
+
return _callServer.apply(this, arguments);
|
|
145
|
+
}
|
|
146
|
+
function _callServer() {
|
|
147
|
+
_callServer = _async_to_generator(function(id, args) {
|
|
148
|
+
var response, res;
|
|
149
|
+
return _ts_generator(this, function(_state) {
|
|
150
|
+
response = requestCallServer(id, args);
|
|
151
|
+
res = createFromFetch(response, {
|
|
152
|
+
callServer
|
|
153
|
+
});
|
|
154
|
+
return [
|
|
155
|
+
2,
|
|
156
|
+
res
|
|
157
|
+
];
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
return _callServer.apply(this, arguments);
|
|
161
|
+
}
|
|
162
|
+
export {
|
|
163
|
+
callServer,
|
|
164
|
+
requestCallServer
|
|
165
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, use, useState } from "react";
|
|
4
|
+
import { createFromReadableStream, createServerReference } from "react-server-dom-webpack/client.browser";
|
|
5
|
+
import { rscStream } from "rsc-html-stream/client";
|
|
6
|
+
import { callServer } from "./callServer";
|
|
7
|
+
import { createFromFetch } from "react-server-dom-webpack/client.browser";
|
|
8
|
+
function RscClientRoot(param) {
|
|
9
|
+
var data = param.data;
|
|
10
|
+
var elements = use(data);
|
|
11
|
+
var _useState = _sliced_to_array(useState(elements), 2), root = _useState[0], setRoot = _useState[1];
|
|
12
|
+
return /* @__PURE__ */ _jsx(_Fragment, {
|
|
13
|
+
children: root
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
var ElementsContext = /* @__PURE__ */ createContext(null);
|
|
17
|
+
var JSX_SHELL_STREAM_END_MARK = "<!--<?- SHELL_STREAM_END ?>-->";
|
|
18
|
+
var ServerElementsProvider = function(param) {
|
|
19
|
+
var elements = param.elements, children = param.children;
|
|
20
|
+
return /* @__PURE__ */ _jsxs(_Fragment, {
|
|
21
|
+
children: [
|
|
22
|
+
/* @__PURE__ */ _jsx(ElementsContext.Provider, {
|
|
23
|
+
value: elements,
|
|
24
|
+
children
|
|
25
|
+
}),
|
|
26
|
+
JSX_SHELL_STREAM_END_MARK
|
|
27
|
+
]
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
var RSCServerSlot = function() {
|
|
31
|
+
var elements = use(ElementsContext);
|
|
32
|
+
return elements;
|
|
33
|
+
};
|
|
34
|
+
export {
|
|
35
|
+
RSCServerSlot,
|
|
36
|
+
RscClientRoot,
|
|
37
|
+
ServerElementsProvider,
|
|
38
|
+
callServer,
|
|
39
|
+
createFromFetch,
|
|
40
|
+
createFromReadableStream,
|
|
41
|
+
createServerReference,
|
|
42
|
+
rscStream
|
|
43
|
+
};
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { _ as _async_iterator } from "@swc/helpers/_/_async_iterator";
|
|
2
|
+
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
|
|
3
|
+
import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
|
|
4
|
+
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
5
|
+
var encoder = new TextEncoder();
|
|
6
|
+
var trailer = "</body></html>";
|
|
7
|
+
function injectRSCPayload(rscStream, param) {
|
|
8
|
+
var _param_injectClosingTags = param.injectClosingTags, injectClosingTags = _param_injectClosingTags === void 0 ? true : _param_injectClosingTags;
|
|
9
|
+
var decoder = new TextDecoder();
|
|
10
|
+
var resolveFlightDataPromise;
|
|
11
|
+
var flightDataPromise = new Promise(function(resolve) {
|
|
12
|
+
return resolveFlightDataPromise = resolve;
|
|
13
|
+
});
|
|
14
|
+
var startedRSC = false;
|
|
15
|
+
var buffered = [];
|
|
16
|
+
var timeout = null;
|
|
17
|
+
function flushBufferedChunks(controller) {
|
|
18
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
19
|
+
try {
|
|
20
|
+
for (var _iterator = buffered[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
21
|
+
var chunk = _step.value;
|
|
22
|
+
var buf = decoder.decode(chunk);
|
|
23
|
+
if (buf.endsWith(trailer)) {
|
|
24
|
+
buf = buf.slice(0, -trailer.length);
|
|
25
|
+
}
|
|
26
|
+
controller.enqueue(encoder.encode(buf));
|
|
27
|
+
}
|
|
28
|
+
} catch (err) {
|
|
29
|
+
_didIteratorError = true;
|
|
30
|
+
_iteratorError = err;
|
|
31
|
+
} finally {
|
|
32
|
+
try {
|
|
33
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
34
|
+
_iterator.return();
|
|
35
|
+
}
|
|
36
|
+
} finally {
|
|
37
|
+
if (_didIteratorError) {
|
|
38
|
+
throw _iteratorError;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
buffered.length = 0;
|
|
43
|
+
timeout = null;
|
|
44
|
+
}
|
|
45
|
+
return new TransformStream({
|
|
46
|
+
transform: function transform(chunk, controller) {
|
|
47
|
+
buffered.push(chunk);
|
|
48
|
+
if (timeout) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
timeout = setTimeout(/* @__PURE__ */ _async_to_generator(function() {
|
|
52
|
+
return _ts_generator(this, function(_state) {
|
|
53
|
+
flushBufferedChunks(controller);
|
|
54
|
+
if (!startedRSC) {
|
|
55
|
+
startedRSC = true;
|
|
56
|
+
writeRSCStream(rscStream, controller).catch(function(err) {
|
|
57
|
+
return controller.error(err);
|
|
58
|
+
}).then(function() {
|
|
59
|
+
return resolveFlightDataPromise();
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return [
|
|
63
|
+
2
|
|
64
|
+
];
|
|
65
|
+
});
|
|
66
|
+
}), 0);
|
|
67
|
+
},
|
|
68
|
+
flush: function flush(controller) {
|
|
69
|
+
return _async_to_generator(function() {
|
|
70
|
+
return _ts_generator(this, function(_state) {
|
|
71
|
+
switch (_state.label) {
|
|
72
|
+
case 0:
|
|
73
|
+
return [
|
|
74
|
+
4,
|
|
75
|
+
flightDataPromise
|
|
76
|
+
];
|
|
77
|
+
case 1:
|
|
78
|
+
_state.sent();
|
|
79
|
+
if (timeout) {
|
|
80
|
+
clearTimeout(timeout);
|
|
81
|
+
flushBufferedChunks(controller);
|
|
82
|
+
}
|
|
83
|
+
if (injectClosingTags) {
|
|
84
|
+
controller.enqueue(encoder.encode("</body></html>"));
|
|
85
|
+
}
|
|
86
|
+
return [
|
|
87
|
+
2
|
|
88
|
+
];
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
})();
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
function writeRSCStream(rscStream, controller) {
|
|
96
|
+
return _writeRSCStream.apply(this, arguments);
|
|
97
|
+
}
|
|
98
|
+
function _writeRSCStream() {
|
|
99
|
+
_writeRSCStream = _async_to_generator(function(rscStream, controller) {
|
|
100
|
+
var decoder, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, chunk, _String, base64, err, remaining;
|
|
101
|
+
return _ts_generator(this, function(_state) {
|
|
102
|
+
switch (_state.label) {
|
|
103
|
+
case 0:
|
|
104
|
+
decoder = new TextDecoder("utf-8", {
|
|
105
|
+
fatal: true
|
|
106
|
+
});
|
|
107
|
+
_iteratorAbruptCompletion = false, _didIteratorError = false;
|
|
108
|
+
_state.label = 1;
|
|
109
|
+
case 1:
|
|
110
|
+
_state.trys.push([
|
|
111
|
+
1,
|
|
112
|
+
6,
|
|
113
|
+
7,
|
|
114
|
+
12
|
|
115
|
+
]);
|
|
116
|
+
_iterator = _async_iterator(rscStream);
|
|
117
|
+
_state.label = 2;
|
|
118
|
+
case 2:
|
|
119
|
+
return [
|
|
120
|
+
4,
|
|
121
|
+
_iterator.next()
|
|
122
|
+
];
|
|
123
|
+
case 3:
|
|
124
|
+
if (!(_iteratorAbruptCompletion = !(_step = _state.sent()).done))
|
|
125
|
+
return [
|
|
126
|
+
3,
|
|
127
|
+
5
|
|
128
|
+
];
|
|
129
|
+
_value = _step.value;
|
|
130
|
+
chunk = _value;
|
|
131
|
+
try {
|
|
132
|
+
writeChunk(JSON.stringify(decoder.decode(chunk, {
|
|
133
|
+
stream: true
|
|
134
|
+
})), controller);
|
|
135
|
+
} catch (err2) {
|
|
136
|
+
;
|
|
137
|
+
base64 = JSON.stringify(btoa((_String = String).fromCodePoint.apply(_String, _to_consumable_array(chunk))));
|
|
138
|
+
writeChunk("Uint8Array.from(atob(".concat(base64, "), m => m.codePointAt(0))"), controller);
|
|
139
|
+
}
|
|
140
|
+
_state.label = 4;
|
|
141
|
+
case 4:
|
|
142
|
+
_iteratorAbruptCompletion = false;
|
|
143
|
+
return [
|
|
144
|
+
3,
|
|
145
|
+
2
|
|
146
|
+
];
|
|
147
|
+
case 5:
|
|
148
|
+
return [
|
|
149
|
+
3,
|
|
150
|
+
12
|
|
151
|
+
];
|
|
152
|
+
case 6:
|
|
153
|
+
err = _state.sent();
|
|
154
|
+
_didIteratorError = true;
|
|
155
|
+
_iteratorError = err;
|
|
156
|
+
return [
|
|
157
|
+
3,
|
|
158
|
+
12
|
|
159
|
+
];
|
|
160
|
+
case 7:
|
|
161
|
+
_state.trys.push([
|
|
162
|
+
7,
|
|
163
|
+
,
|
|
164
|
+
10,
|
|
165
|
+
11
|
|
166
|
+
]);
|
|
167
|
+
if (!(_iteratorAbruptCompletion && _iterator.return != null))
|
|
168
|
+
return [
|
|
169
|
+
3,
|
|
170
|
+
9
|
|
171
|
+
];
|
|
172
|
+
return [
|
|
173
|
+
4,
|
|
174
|
+
_iterator.return()
|
|
175
|
+
];
|
|
176
|
+
case 8:
|
|
177
|
+
_state.sent();
|
|
178
|
+
_state.label = 9;
|
|
179
|
+
case 9:
|
|
180
|
+
return [
|
|
181
|
+
3,
|
|
182
|
+
11
|
|
183
|
+
];
|
|
184
|
+
case 10:
|
|
185
|
+
if (_didIteratorError) {
|
|
186
|
+
throw _iteratorError;
|
|
187
|
+
}
|
|
188
|
+
return [
|
|
189
|
+
7
|
|
190
|
+
];
|
|
191
|
+
case 11:
|
|
192
|
+
return [
|
|
193
|
+
7
|
|
194
|
+
];
|
|
195
|
+
case 12:
|
|
196
|
+
remaining = decoder.decode();
|
|
197
|
+
if (remaining.length) {
|
|
198
|
+
writeChunk(JSON.stringify(remaining), controller);
|
|
199
|
+
}
|
|
200
|
+
return [
|
|
201
|
+
2
|
|
202
|
+
];
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
return _writeRSCStream.apply(this, arguments);
|
|
207
|
+
}
|
|
208
|
+
function writeChunk(chunk, controller) {
|
|
209
|
+
controller.enqueue(encoder.encode("<script>".concat(escapeScript("(self.__FLIGHT_DATA||=[]).push(".concat(chunk, ")")), "</script>")));
|
|
210
|
+
}
|
|
211
|
+
function escapeScript(script) {
|
|
212
|
+
return script.replace(/<!--/g, "<\\!--").replace(/<\/(script)/gi, "</\\$1");
|
|
213
|
+
}
|
|
214
|
+
export {
|
|
215
|
+
injectRSCPayload
|
|
216
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./rsc";
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
|
|
2
|
+
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
|
|
3
|
+
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
4
|
+
import { renderToReadableStream } from "react-server-dom-webpack/server.edge";
|
|
5
|
+
import { renderToReadableStream as renderToReadableStream2 } from "react-server-dom-webpack/server.edge";
|
|
6
|
+
import { decodeReply } from "react-server-dom-webpack/server.edge";
|
|
7
|
+
import { createFromReadableStream } from "react-server-dom-webpack/client.edge";
|
|
8
|
+
import { registerClientReference, registerServerReference } from "react-server-dom-webpack/server";
|
|
9
|
+
var renderRsc = function(options) {
|
|
10
|
+
var payload = options.returnValue ? {
|
|
11
|
+
returnValue: options.returnValue,
|
|
12
|
+
root: options.element
|
|
13
|
+
} : options.element;
|
|
14
|
+
var readable = renderToReadableStream2(payload, options.clientManifest);
|
|
15
|
+
return readable;
|
|
16
|
+
};
|
|
17
|
+
var handleAction = function() {
|
|
18
|
+
var _ref = _async_to_generator(function(req, options) {
|
|
19
|
+
var serverReference, _serverReference_split, filepath, name, action, clientManifest, contentType, args, formData, text, result, stream, response;
|
|
20
|
+
return _ts_generator(this, function(_state) {
|
|
21
|
+
switch (_state.label) {
|
|
22
|
+
case 0:
|
|
23
|
+
serverReference = req.headers.get("x-rsc-action");
|
|
24
|
+
if (!serverReference)
|
|
25
|
+
return [
|
|
26
|
+
3,
|
|
27
|
+
7
|
|
28
|
+
];
|
|
29
|
+
_serverReference_split = _sliced_to_array(serverReference.split("#"), 2), filepath = _serverReference_split[0], name = _serverReference_split[1];
|
|
30
|
+
action = __webpack_require__(filepath)[name || "default"];
|
|
31
|
+
if (action.$$typeof !== Symbol.for("react.server.reference")) {
|
|
32
|
+
throw new Error("Invalid action");
|
|
33
|
+
}
|
|
34
|
+
clientManifest = options.clientManifest;
|
|
35
|
+
contentType = req.headers.get("content-type");
|
|
36
|
+
if (!(contentType === null || contentType === void 0 ? void 0 : contentType.includes("multipart/form-data")))
|
|
37
|
+
return [
|
|
38
|
+
3,
|
|
39
|
+
3
|
|
40
|
+
];
|
|
41
|
+
return [
|
|
42
|
+
4,
|
|
43
|
+
req.formData()
|
|
44
|
+
];
|
|
45
|
+
case 1:
|
|
46
|
+
formData = _state.sent();
|
|
47
|
+
return [
|
|
48
|
+
4,
|
|
49
|
+
decodeReply(formData)
|
|
50
|
+
];
|
|
51
|
+
case 2:
|
|
52
|
+
args = _state.sent();
|
|
53
|
+
return [
|
|
54
|
+
3,
|
|
55
|
+
6
|
|
56
|
+
];
|
|
57
|
+
case 3:
|
|
58
|
+
return [
|
|
59
|
+
4,
|
|
60
|
+
req.text()
|
|
61
|
+
];
|
|
62
|
+
case 4:
|
|
63
|
+
text = _state.sent();
|
|
64
|
+
return [
|
|
65
|
+
4,
|
|
66
|
+
decodeReply(text)
|
|
67
|
+
];
|
|
68
|
+
case 5:
|
|
69
|
+
args = _state.sent();
|
|
70
|
+
_state.label = 6;
|
|
71
|
+
case 6:
|
|
72
|
+
result = action.apply(null, args);
|
|
73
|
+
stream = renderToReadableStream2(result, clientManifest);
|
|
74
|
+
response = new Response(stream, {
|
|
75
|
+
status: 200,
|
|
76
|
+
headers: {
|
|
77
|
+
"Content-Type": "text/html"
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
return [
|
|
81
|
+
2,
|
|
82
|
+
response
|
|
83
|
+
];
|
|
84
|
+
case 7:
|
|
85
|
+
return [
|
|
86
|
+
2,
|
|
87
|
+
new Response("Cannot find server reference", {
|
|
88
|
+
status: 404
|
|
89
|
+
})
|
|
90
|
+
];
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
return function handleAction2(req, options) {
|
|
95
|
+
return _ref.apply(this, arguments);
|
|
96
|
+
};
|
|
97
|
+
}();
|
|
98
|
+
export {
|
|
99
|
+
createFromReadableStream,
|
|
100
|
+
handleAction,
|
|
101
|
+
registerClientReference,
|
|
102
|
+
registerServerReference,
|
|
103
|
+
renderRsc,
|
|
104
|
+
renderToReadableStream
|
|
105
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./ssr";
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
|
|
2
|
+
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
|
|
3
|
+
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
import { renderToReadableStream } from "react-dom/server.edge";
|
|
6
|
+
import { ServerElementsProvider } from "../../client";
|
|
7
|
+
function wrapStream(stream, originalStream) {
|
|
8
|
+
var wrappedStream = Object.create(stream);
|
|
9
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
10
|
+
try {
|
|
11
|
+
for (var _iterator = Object.keys(originalStream)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
12
|
+
var prop = _step.value;
|
|
13
|
+
if (!(prop in wrappedStream)) {
|
|
14
|
+
wrappedStream[prop] = originalStream[prop];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
} catch (err) {
|
|
18
|
+
_didIteratorError = true;
|
|
19
|
+
_iteratorError = err;
|
|
20
|
+
} finally {
|
|
21
|
+
try {
|
|
22
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
23
|
+
_iterator.return();
|
|
24
|
+
}
|
|
25
|
+
} finally {
|
|
26
|
+
if (_didIteratorError) {
|
|
27
|
+
throw _iteratorError;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return wrappedStream;
|
|
32
|
+
}
|
|
33
|
+
var renderSSRStream = function() {
|
|
34
|
+
var _ref = _async_to_generator(function(element, options) {
|
|
35
|
+
var clientManifest, ssrManifest, rscRoot, _ref2, renderRsc, createFromReadableStream, injectRSCPayload, rscStream, _rscStream_tee, rscElementStream, rscPayloadStream, elements, htmlStream, error;
|
|
36
|
+
return _ts_generator(this, function(_state) {
|
|
37
|
+
switch (_state.label) {
|
|
38
|
+
case 0:
|
|
39
|
+
clientManifest = options.clientManifest, ssrManifest = options.ssrManifest, rscRoot = options.rscRoot;
|
|
40
|
+
if (!clientManifest || !ssrManifest) {
|
|
41
|
+
return [
|
|
42
|
+
2,
|
|
43
|
+
renderToReadableStream(element, options)
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
_state.label = 1;
|
|
47
|
+
case 1:
|
|
48
|
+
_state.trys.push([
|
|
49
|
+
1,
|
|
50
|
+
5,
|
|
51
|
+
,
|
|
52
|
+
6
|
|
53
|
+
]);
|
|
54
|
+
return [
|
|
55
|
+
4,
|
|
56
|
+
Promise.all([
|
|
57
|
+
import("../rsc"),
|
|
58
|
+
import("react-server-dom-webpack/client.edge"),
|
|
59
|
+
import("../../rsc-html-stream/server")
|
|
60
|
+
])
|
|
61
|
+
];
|
|
62
|
+
case 2:
|
|
63
|
+
_ref2 = _sliced_to_array.apply(void 0, [
|
|
64
|
+
_state.sent(),
|
|
65
|
+
3
|
|
66
|
+
]), renderRsc = _ref2[0].renderRsc, createFromReadableStream = _ref2[1].createFromReadableStream, injectRSCPayload = _ref2[2].injectRSCPayload;
|
|
67
|
+
return [
|
|
68
|
+
4,
|
|
69
|
+
renderRsc({
|
|
70
|
+
element: rscRoot || element,
|
|
71
|
+
clientManifest
|
|
72
|
+
})
|
|
73
|
+
];
|
|
74
|
+
case 3:
|
|
75
|
+
rscStream = _state.sent();
|
|
76
|
+
_rscStream_tee = _sliced_to_array(rscStream.tee(), 2), rscElementStream = _rscStream_tee[0], rscPayloadStream = _rscStream_tee[1];
|
|
77
|
+
elements = createFromReadableStream(rscElementStream, {
|
|
78
|
+
serverConsumerManifest: ssrManifest
|
|
79
|
+
});
|
|
80
|
+
return [
|
|
81
|
+
4,
|
|
82
|
+
renderToReadableStream(/* @__PURE__ */ _jsx(ServerElementsProvider, {
|
|
83
|
+
elements,
|
|
84
|
+
children: element
|
|
85
|
+
}), options)
|
|
86
|
+
];
|
|
87
|
+
case 4:
|
|
88
|
+
htmlStream = _state.sent();
|
|
89
|
+
return [
|
|
90
|
+
2,
|
|
91
|
+
wrapStream(htmlStream.pipeThrough(injectRSCPayload(rscPayloadStream, {
|
|
92
|
+
injectClosingTags: false
|
|
93
|
+
})), htmlStream)
|
|
94
|
+
];
|
|
95
|
+
case 5:
|
|
96
|
+
error = _state.sent();
|
|
97
|
+
console.error(error);
|
|
98
|
+
throw error;
|
|
99
|
+
case 6:
|
|
100
|
+
return [
|
|
101
|
+
2
|
|
102
|
+
];
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
return function renderSSRStream2(element, options) {
|
|
107
|
+
return _ref.apply(this, arguments);
|
|
108
|
+
};
|
|
109
|
+
}();
|
|
110
|
+
export {
|
|
111
|
+
renderSSRStream
|
|
112
|
+
};
|