@modern-js/runtime 2.4.0 → 2.4.1-beta.0
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/CHANGELOG.md +17 -0
- package/dist/js/modern/core/compatible.js +1 -0
- package/dist/js/modern/router/runtime/fetch.js +5 -0
- package/dist/js/modern/router/runtime/fetch.node.js +4 -0
- package/dist/js/modern/router/runtime/fetch.worker.js +5 -0
- package/dist/js/modern/router/runtime/plugin.node.js +2 -2
- package/dist/js/modern/ssr/cli/index.js +2 -2
- package/dist/js/modern/ssr/prefetch.worker.js +66 -0
- package/dist/js/modern/ssr/react/nossr/index.js +6 -2
- package/dist/js/modern/ssr/serverRender/renderToStream/index.js +1 -1
- package/dist/js/modern/ssr/serverRender/renderToStream/index.worker.js +35 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.worker.js +110 -0
- package/dist/js/modern/ssr/serverRender/renderToString/entry.js +5 -4
- package/dist/js/modern/ssr/serverRender/renderToString/index.js +1 -1
- package/dist/js/modern/ssr/serverRender/renderToString/index.worker.js +49 -0
- package/dist/js/modern/ssr/serverRender/time.js +13 -0
- package/dist/js/modern/ssr/serverRender/time.worker.js +28 -0
- package/dist/js/modern/ssr/serverRender/utils.js +1 -12
- package/dist/js/node/core/compatible.js +1 -0
- package/dist/js/node/router/runtime/fetch.js +28 -0
- package/dist/js/node/router/runtime/fetch.node.js +27 -0
- package/dist/js/node/router/runtime/fetch.worker.js +28 -0
- package/dist/js/node/router/runtime/plugin.node.js +3 -3
- package/dist/js/node/ssr/cli/index.js +2 -2
- package/dist/js/node/ssr/prefetch.worker.js +87 -0
- package/dist/js/node/ssr/react/nossr/index.js +6 -2
- package/dist/js/node/ssr/serverRender/renderToStream/index.js +2 -2
- package/dist/js/node/ssr/serverRender/renderToStream/index.worker.js +64 -0
- package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.worker.js +129 -0
- package/dist/js/node/ssr/serverRender/renderToString/entry.js +7 -6
- package/dist/js/node/ssr/serverRender/renderToString/index.js +2 -2
- package/dist/js/node/ssr/serverRender/renderToString/index.worker.js +78 -0
- package/dist/js/node/ssr/serverRender/time.js +36 -0
- package/dist/js/node/ssr/serverRender/time.worker.js +51 -0
- package/dist/js/node/ssr/serverRender/utils.js +2 -14
- package/dist/js/treeshaking/core/compatible.js +8 -7
- package/dist/js/treeshaking/core/loader/loaderManager.js +3 -3
- package/dist/js/treeshaking/core/loader/useLoader.js +15 -15
- package/dist/js/treeshaking/document/Head.js +1 -1
- package/dist/js/treeshaking/document/Html.js +2 -2
- package/dist/js/treeshaking/document/Root.js +2 -2
- package/dist/js/treeshaking/document/cli/index.js +4 -4
- package/dist/js/treeshaking/router/cli/index.js +2 -2
- package/dist/js/treeshaking/router/runtime/fetch.js +2 -0
- package/dist/js/treeshaking/router/runtime/fetch.node.js +2 -0
- package/dist/js/treeshaking/router/runtime/fetch.worker.js +2 -0
- package/dist/js/treeshaking/router/runtime/plugin.js +3 -3
- package/dist/js/treeshaking/router/runtime/plugin.node.js +5 -5
- package/dist/js/treeshaking/router/runtime/utils.js +3 -3
- package/dist/js/treeshaking/ssr/cli/index.js +5 -5
- package/dist/js/treeshaking/ssr/index.js +6 -6
- package/dist/js/treeshaking/ssr/index.node.js +1 -1
- package/dist/js/treeshaking/ssr/prefetch.js +2 -2
- package/dist/js/treeshaking/ssr/prefetch.worker.js +191 -0
- package/dist/js/treeshaking/ssr/react/nossr/index.js +3 -3
- package/dist/js/treeshaking/ssr/react/prerender/index.js +2 -2
- package/dist/js/treeshaking/ssr/react/prerender/util.js +2 -2
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +2 -2
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +1 -1
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.worker.js +32 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +1 -1
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +8 -8
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.worker.js +280 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +1 -1
- package/dist/js/treeshaking/ssr/serverRender/renderToString/entry.js +5 -5
- package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +1 -1
- package/dist/js/treeshaking/ssr/serverRender/renderToString/index.worker.js +167 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToString/loadable.js +1 -1
- package/dist/js/treeshaking/ssr/serverRender/time.js +57 -0
- package/dist/js/treeshaking/ssr/serverRender/time.worker.js +75 -0
- package/dist/js/treeshaking/ssr/serverRender/utils.js +1 -57
- package/dist/js/treeshaking/ssr/utils.js +5 -5
- package/dist/js/treeshaking/state/cli/index.js +2 -2
- package/dist/js/treeshaking/state/runtime/plugin.js +3 -3
- package/dist/types/router/runtime/fetch.d.ts +2 -0
- package/dist/types/router/runtime/fetch.node.d.ts +2 -0
- package/dist/types/router/runtime/fetch.worker.d.ts +2 -0
- package/dist/types/ssr/prefetch.worker.d.ts +13 -0
- package/dist/types/ssr/react/nossr/index.d.ts +4 -2
- package/dist/types/ssr/serverRender/renderToStream/index.worker.d.ts +6 -0
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.worker.d.ts +8 -0
- package/dist/types/ssr/serverRender/renderToString/index.worker.d.ts +6 -0
- package/dist/types/ssr/serverRender/time.d.ts +1 -0
- package/dist/types/ssr/serverRender/time.worker.d.ts +1 -0
- package/dist/types/ssr/serverRender/utils.d.ts +2 -3
- package/package.json +6 -5
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createElement } from "react";
|
|
2
|
+
import { PreRender } from "../../react/prerender";
|
|
3
|
+
import { time } from "../time";
|
|
4
|
+
import renderToPipe from "./renderToPipe";
|
|
5
|
+
var render = function(param) {
|
|
6
|
+
var App = param.App, context = param.context;
|
|
7
|
+
var ssrContext = context.ssrContext;
|
|
8
|
+
if (!ssrContext) {
|
|
9
|
+
throw new Error('The "ssrContext" must not be undefined, but received undefined');
|
|
10
|
+
}
|
|
11
|
+
var end = time();
|
|
12
|
+
var rootElement = createElement(App, {
|
|
13
|
+
context: Object.assign(context || {}, {
|
|
14
|
+
ssr: true
|
|
15
|
+
})
|
|
16
|
+
});
|
|
17
|
+
var pipe = renderToPipe(rootElement, context, {
|
|
18
|
+
onShellReady: function onShellReady() {
|
|
19
|
+
var cacheConfig = PreRender.config();
|
|
20
|
+
if (cacheConfig) {
|
|
21
|
+
ssrContext.cacheConfig = cacheConfig;
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
onAllReady: function onAllReady() {
|
|
25
|
+
var cost = end();
|
|
26
|
+
ssrContext.logger.debug("App Render To HTML cost = %d ms", cost);
|
|
27
|
+
ssrContext.metrics.emitTimer("app.render.html.cost", cost);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
return pipe;
|
|
31
|
+
};
|
|
32
|
+
export { render };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChunkExtractor } from "@loadable/server";
|
|
2
2
|
function getLoadableChunks(param) {
|
|
3
3
|
var context = param.context, jsx = param.jsx;
|
|
4
|
-
var
|
|
4
|
+
var _context_ssrContext = context.ssrContext, loadableStats = _context_ssrContext.loadableStats, entryName = _context_ssrContext.entryName;
|
|
5
5
|
if (!loadableStats) {
|
|
6
6
|
return {
|
|
7
7
|
jsx: jsx
|
|
@@ -75,9 +75,9 @@ function renderToPipe(rootElement, context, options) {
|
|
|
75
75
|
} catch (e) {}
|
|
76
76
|
var pipe = renderToPipeableStream(rootElement, _objectSpreadProps(_objectSpread({}, options), {
|
|
77
77
|
onShellReady: function onShellReady() {
|
|
78
|
-
var
|
|
79
|
-
var
|
|
80
|
-
options === null || options === void 0 ? void 0 : (
|
|
78
|
+
var _options_onShellReady;
|
|
79
|
+
var _getTemplates = getTemplates(context, RenderLevel.SERVER_RENDER), shellAfter = _getTemplates.shellAfter, shellBefore = _getTemplates.shellBefore;
|
|
80
|
+
options === null || options === void 0 ? void 0 : (_options_onShellReady = options.onShellReady) === null || _options_onShellReady === void 0 ? void 0 : _options_onShellReady.call(options);
|
|
81
81
|
var injectableTransform = new Transform({
|
|
82
82
|
transform: function transform(chunk, _encoding, callback) {
|
|
83
83
|
try {
|
|
@@ -100,18 +100,18 @@ function renderToPipe(rootElement, context, options) {
|
|
|
100
100
|
resolve(pipe(injectableTransform).pipe(stream));
|
|
101
101
|
},
|
|
102
102
|
onShellError: function onShellError(error) {
|
|
103
|
-
var
|
|
103
|
+
var _options_onShellError;
|
|
104
104
|
ssrContext.metrics.emitCounter("app.render.streaming.shell.error", 1);
|
|
105
|
-
var
|
|
105
|
+
var _getTemplates = getTemplates(context, RenderLevel.CLIENT_RENDER), shellAfter = _getTemplates.shellAfter, shellBefore = _getTemplates.shellBefore;
|
|
106
106
|
var fallbackHtml = "".concat(shellBefore).concat(shellAfter);
|
|
107
107
|
resolve(fallbackHtml);
|
|
108
|
-
options === null || options === void 0 ? void 0 : (
|
|
108
|
+
options === null || options === void 0 ? void 0 : (_options_onShellError = options.onShellError) === null || _options_onShellError === void 0 ? void 0 : _options_onShellError.call(options, error);
|
|
109
109
|
},
|
|
110
110
|
onError: function onError(error) {
|
|
111
|
-
var
|
|
111
|
+
var _options_onError;
|
|
112
112
|
ssrContext.logger.error("An error occurs during streaming SSR", error);
|
|
113
113
|
ssrContext.metrics.emitCounter("app.render.streaming.error", 1);
|
|
114
|
-
options === null || options === void 0 ? void 0 : (
|
|
114
|
+
options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, error);
|
|
115
115
|
}
|
|
116
116
|
})).pipe;
|
|
117
117
|
});
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
2
|
+
try {
|
|
3
|
+
var info = gen[key](arg);
|
|
4
|
+
var value = info.value;
|
|
5
|
+
} catch (error) {
|
|
6
|
+
reject(error);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
if (info.done) {
|
|
10
|
+
resolve(value);
|
|
11
|
+
} else {
|
|
12
|
+
Promise.resolve(value).then(_next, _throw);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function _asyncToGenerator(fn) {
|
|
16
|
+
return function() {
|
|
17
|
+
var self = this, args = arguments;
|
|
18
|
+
return new Promise(function(resolve, reject) {
|
|
19
|
+
var gen = fn.apply(self, args);
|
|
20
|
+
function _next(value) {
|
|
21
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
22
|
+
}
|
|
23
|
+
function _throw(err) {
|
|
24
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
25
|
+
}
|
|
26
|
+
_next(undefined);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function _defineProperty(obj, key, value) {
|
|
31
|
+
if (key in obj) {
|
|
32
|
+
Object.defineProperty(obj, key, {
|
|
33
|
+
value: value,
|
|
34
|
+
enumerable: true,
|
|
35
|
+
configurable: true,
|
|
36
|
+
writable: true
|
|
37
|
+
});
|
|
38
|
+
} else {
|
|
39
|
+
obj[key] = value;
|
|
40
|
+
}
|
|
41
|
+
return obj;
|
|
42
|
+
}
|
|
43
|
+
function _objectSpread(target) {
|
|
44
|
+
for(var i = 1; i < arguments.length; i++){
|
|
45
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
46
|
+
var ownKeys = Object.keys(source);
|
|
47
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
48
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
49
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
ownKeys.forEach(function(key) {
|
|
53
|
+
_defineProperty(target, key, source[key]);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return target;
|
|
57
|
+
}
|
|
58
|
+
function ownKeys(object, enumerableOnly) {
|
|
59
|
+
var keys = Object.keys(object);
|
|
60
|
+
if (Object.getOwnPropertySymbols) {
|
|
61
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
62
|
+
if (enumerableOnly) {
|
|
63
|
+
symbols = symbols.filter(function(sym) {
|
|
64
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
keys.push.apply(keys, symbols);
|
|
68
|
+
}
|
|
69
|
+
return keys;
|
|
70
|
+
}
|
|
71
|
+
function _objectSpreadProps(target, source) {
|
|
72
|
+
source = source != null ? source : {};
|
|
73
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
74
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
75
|
+
} else {
|
|
76
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
77
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return target;
|
|
81
|
+
}
|
|
82
|
+
var __generator = this && this.__generator || function(thisArg, body) {
|
|
83
|
+
var f, y, t, g, _ = {
|
|
84
|
+
label: 0,
|
|
85
|
+
sent: function() {
|
|
86
|
+
if (t[0] & 1) throw t[1];
|
|
87
|
+
return t[1];
|
|
88
|
+
},
|
|
89
|
+
trys: [],
|
|
90
|
+
ops: []
|
|
91
|
+
};
|
|
92
|
+
return(g = {
|
|
93
|
+
next: verb(0),
|
|
94
|
+
"throw": verb(1),
|
|
95
|
+
"return": verb(2)
|
|
96
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
97
|
+
return this;
|
|
98
|
+
}), g);
|
|
99
|
+
function verb(n) {
|
|
100
|
+
return function(v) {
|
|
101
|
+
return step([
|
|
102
|
+
n,
|
|
103
|
+
v
|
|
104
|
+
]);
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function step(op) {
|
|
108
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
109
|
+
while(_)try {
|
|
110
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
111
|
+
if (y = 0, t) op = [
|
|
112
|
+
op[0] & 2,
|
|
113
|
+
t.value
|
|
114
|
+
];
|
|
115
|
+
switch(op[0]){
|
|
116
|
+
case 0:
|
|
117
|
+
case 1:
|
|
118
|
+
t = op;
|
|
119
|
+
break;
|
|
120
|
+
case 4:
|
|
121
|
+
_.label++;
|
|
122
|
+
return {
|
|
123
|
+
value: op[1],
|
|
124
|
+
done: false
|
|
125
|
+
};
|
|
126
|
+
case 5:
|
|
127
|
+
_.label++;
|
|
128
|
+
y = op[1];
|
|
129
|
+
op = [
|
|
130
|
+
0
|
|
131
|
+
];
|
|
132
|
+
continue;
|
|
133
|
+
case 7:
|
|
134
|
+
op = _.ops.pop();
|
|
135
|
+
_.trys.pop();
|
|
136
|
+
continue;
|
|
137
|
+
default:
|
|
138
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
139
|
+
_ = 0;
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
143
|
+
_.label = op[1];
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
147
|
+
_.label = t[1];
|
|
148
|
+
t = op;
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
if (t && _.label < t[2]) {
|
|
152
|
+
_.label = t[2];
|
|
153
|
+
_.ops.push(op);
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
if (t[2]) _.ops.pop();
|
|
157
|
+
_.trys.pop();
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
op = body.call(thisArg, _);
|
|
161
|
+
} catch (e) {
|
|
162
|
+
op = [
|
|
163
|
+
6,
|
|
164
|
+
e
|
|
165
|
+
];
|
|
166
|
+
y = 0;
|
|
167
|
+
} finally{
|
|
168
|
+
f = t = 0;
|
|
169
|
+
}
|
|
170
|
+
if (op[0] & 5) throw op[1];
|
|
171
|
+
return {
|
|
172
|
+
value: op[0] ? op[1] : void 0,
|
|
173
|
+
done: true
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
import { RenderLevel } from "../types";
|
|
178
|
+
import { getTemplates } from "./template";
|
|
179
|
+
function renderToPipe(rootElement, context, options) {
|
|
180
|
+
var isShellStream = true;
|
|
181
|
+
var ssrContext = context.ssrContext;
|
|
182
|
+
var forUserPipe = function() {
|
|
183
|
+
var _ref = _asyncToGenerator(function(stream) {
|
|
184
|
+
var renderToReadableStream, _getTemplates, shellAfter, shellBefore, readableOriginal, reader, injectableStream, err, _getTemplates1, shellAfter2, shellBefore2, fallbackHtml;
|
|
185
|
+
return __generator(this, function(_state) {
|
|
186
|
+
switch(_state.label){
|
|
187
|
+
case 0:
|
|
188
|
+
try {
|
|
189
|
+
renderToReadableStream = require("react-dom/server").renderToReadableStream;
|
|
190
|
+
} catch (e) {}
|
|
191
|
+
_getTemplates = getTemplates(context, RenderLevel.SERVER_RENDER), shellAfter = _getTemplates.shellAfter, shellBefore = _getTemplates.shellBefore;
|
|
192
|
+
_state.label = 1;
|
|
193
|
+
case 1:
|
|
194
|
+
_state.trys.push([
|
|
195
|
+
1,
|
|
196
|
+
3,
|
|
197
|
+
,
|
|
198
|
+
4
|
|
199
|
+
]);
|
|
200
|
+
return [
|
|
201
|
+
4,
|
|
202
|
+
renderToReadableStream(rootElement, _objectSpreadProps(_objectSpread({}, options), {
|
|
203
|
+
onError: function onError(error) {
|
|
204
|
+
var _options_onError;
|
|
205
|
+
ssrContext.logger.error("An error occurs during streaming SSR", error);
|
|
206
|
+
ssrContext.metrics.emitCounter("app.render.streaming.error", 1);
|
|
207
|
+
options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, error);
|
|
208
|
+
}
|
|
209
|
+
}))
|
|
210
|
+
];
|
|
211
|
+
case 2:
|
|
212
|
+
readableOriginal = _state.sent();
|
|
213
|
+
reader = readableOriginal.getReader();
|
|
214
|
+
injectableStream = new ReadableStream({
|
|
215
|
+
start: function start(controller) {
|
|
216
|
+
return _asyncToGenerator(function() {
|
|
217
|
+
var value;
|
|
218
|
+
return __generator(this, function(_state) {
|
|
219
|
+
switch(_state.label){
|
|
220
|
+
case 0:
|
|
221
|
+
return [
|
|
222
|
+
4,
|
|
223
|
+
reader.read()
|
|
224
|
+
];
|
|
225
|
+
case 1:
|
|
226
|
+
value = _state.sent().value;
|
|
227
|
+
if (isShellStream) {
|
|
228
|
+
controller.enqueue(encodeForWebStream(shellBefore));
|
|
229
|
+
controller.enqueue(value);
|
|
230
|
+
controller.enqueue(encodeForWebStream(shellAfter));
|
|
231
|
+
isShellStream = false;
|
|
232
|
+
} else {
|
|
233
|
+
controller.enqueue(value);
|
|
234
|
+
}
|
|
235
|
+
return [
|
|
236
|
+
2
|
|
237
|
+
];
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
})();
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
return [
|
|
244
|
+
2,
|
|
245
|
+
readableOriginal(injectableStream).readableOriginal(stream)
|
|
246
|
+
];
|
|
247
|
+
case 3:
|
|
248
|
+
err = _state.sent();
|
|
249
|
+
ssrContext.metrics.emitCounter("app.render.streaming.shell.error", 1);
|
|
250
|
+
_getTemplates1 = getTemplates(context, RenderLevel.CLIENT_RENDER), shellAfter2 = _getTemplates1.shellAfter, shellBefore2 = _getTemplates1.shellBefore;
|
|
251
|
+
fallbackHtml = "".concat(shellBefore2).concat(shellAfter2);
|
|
252
|
+
return [
|
|
253
|
+
2,
|
|
254
|
+
fallbackHtml
|
|
255
|
+
];
|
|
256
|
+
case 4:
|
|
257
|
+
return [
|
|
258
|
+
2
|
|
259
|
+
];
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
return function forUserPipe(stream) {
|
|
264
|
+
return _ref.apply(this, arguments);
|
|
265
|
+
};
|
|
266
|
+
}();
|
|
267
|
+
return forUserPipe;
|
|
268
|
+
}
|
|
269
|
+
var encoder;
|
|
270
|
+
function encodeForWebStream(thing) {
|
|
271
|
+
if (!encoder) {
|
|
272
|
+
encoder = new TextEncoder();
|
|
273
|
+
}
|
|
274
|
+
if (typeof thing === "string") {
|
|
275
|
+
return encoder.encode(thing);
|
|
276
|
+
}
|
|
277
|
+
return thing;
|
|
278
|
+
}
|
|
279
|
+
var renderToPipe_worker_default = renderToPipe;
|
|
280
|
+
export { renderToPipe_worker_default as default };
|
|
@@ -49,7 +49,7 @@ import { buildShellBeforeTemplate } from "./bulidTemplate.before";
|
|
|
49
49
|
var HTML_SEPARATOR = "<!--<?- html ?>-->";
|
|
50
50
|
var getTemplates = function(context, renderLevel) {
|
|
51
51
|
var ssrContext = context.ssrContext;
|
|
52
|
-
var
|
|
52
|
+
var _ref = _slicedToArray(ssrContext.template.split(HTML_SEPARATOR) || [], 2), tmp = _ref[0], beforeAppTemplate = tmp === void 0 ? "" : tmp, tmp1 = _ref[1], afterAppHtmlTemplate = tmp1 === void 0 ? "" : tmp1;
|
|
53
53
|
var builtBeforeTemplate = buildShellBeforeTemplate(beforeAppTemplate, context);
|
|
54
54
|
var builtAfterTemplate = buildShellAfterTemplate(afterAppHtmlTemplate, {
|
|
55
55
|
ssrContext: ssrContext,
|
|
@@ -160,7 +160,7 @@ import serialize from "serialize-javascript";
|
|
|
160
160
|
import ReactHelmet from "react-helmet";
|
|
161
161
|
import helmetReplace from "../helmet";
|
|
162
162
|
import { RenderLevel } from "../types";
|
|
163
|
-
import { time } from "../
|
|
163
|
+
import { time } from "../time";
|
|
164
164
|
import prefetch from "../../prefetch";
|
|
165
165
|
import { toFragments } from "./template";
|
|
166
166
|
import { reduce } from "./reduce";
|
|
@@ -220,12 +220,12 @@ var Entry = /*#__PURE__*/ function() {
|
|
|
220
220
|
value: function renderToHtml(context) {
|
|
221
221
|
var _this = this;
|
|
222
222
|
return _asyncToGenerator(function() {
|
|
223
|
-
var ssrContext, prefetchData, html, templateData, SSRData, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, fragment, helmetData;
|
|
223
|
+
var _ssrContext_redirection, _ssrContext_redirection1, _ssrContext_redirection2, ssrContext, prefetchData, html, templateData, SSRData, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, fragment, helmetData;
|
|
224
224
|
return __generator(this, function(_state) {
|
|
225
225
|
switch(_state.label){
|
|
226
226
|
case 0:
|
|
227
227
|
ssrContext = context.ssrContext;
|
|
228
|
-
if (ssrContext.redirection.url) {
|
|
228
|
+
if ((_ssrContext_redirection = ssrContext.redirection) === null || _ssrContext_redirection === void 0 ? void 0 : _ssrContext_redirection.url) {
|
|
229
229
|
return [
|
|
230
230
|
2,
|
|
231
231
|
""
|
|
@@ -237,7 +237,7 @@ var Entry = /*#__PURE__*/ function() {
|
|
|
237
237
|
];
|
|
238
238
|
case 1:
|
|
239
239
|
prefetchData = _state.sent();
|
|
240
|
-
if (ssrContext.redirection.url) {
|
|
240
|
+
if ((_ssrContext_redirection1 = ssrContext.redirection) === null || _ssrContext_redirection1 === void 0 ? void 0 : _ssrContext_redirection1.url) {
|
|
241
241
|
return [
|
|
242
242
|
2,
|
|
243
243
|
""
|
|
@@ -246,7 +246,7 @@ var Entry = /*#__PURE__*/ function() {
|
|
|
246
246
|
if (_this.result.renderLevel >= RenderLevel.SERVER_PREFETCH) {
|
|
247
247
|
_this.result.html = _this.renderToString(context);
|
|
248
248
|
}
|
|
249
|
-
if (ssrContext.redirection.url) {
|
|
249
|
+
if ((_ssrContext_redirection2 = ssrContext.redirection) === null || _ssrContext_redirection2 === void 0 ? void 0 : _ssrContext_redirection2.url) {
|
|
250
250
|
return [
|
|
251
251
|
2,
|
|
252
252
|
""
|
|
@@ -124,7 +124,7 @@ var __generator = this && this.__generator || function(thisArg, body) {
|
|
|
124
124
|
};
|
|
125
125
|
import { run } from "@modern-js/utils/ssr";
|
|
126
126
|
import { PreRender } from "../../react/prerender";
|
|
127
|
-
import { time } from "../
|
|
127
|
+
import { time } from "../time";
|
|
128
128
|
import SSREntry from "./entry";
|
|
129
129
|
var render = function(param) {
|
|
130
130
|
var App = param.App, context = param.context, config = param.config;
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
2
|
+
try {
|
|
3
|
+
var info = gen[key](arg);
|
|
4
|
+
var value = info.value;
|
|
5
|
+
} catch (error) {
|
|
6
|
+
reject(error);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
if (info.done) {
|
|
10
|
+
resolve(value);
|
|
11
|
+
} else {
|
|
12
|
+
Promise.resolve(value).then(_next, _throw);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function _asyncToGenerator(fn) {
|
|
16
|
+
return function() {
|
|
17
|
+
var self = this, args = arguments;
|
|
18
|
+
return new Promise(function(resolve, reject) {
|
|
19
|
+
var gen = fn.apply(self, args);
|
|
20
|
+
function _next(value) {
|
|
21
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
22
|
+
}
|
|
23
|
+
function _throw(err) {
|
|
24
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
25
|
+
}
|
|
26
|
+
_next(undefined);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
var __generator = this && this.__generator || function(thisArg, body) {
|
|
31
|
+
var f, y, t, g, _ = {
|
|
32
|
+
label: 0,
|
|
33
|
+
sent: function() {
|
|
34
|
+
if (t[0] & 1) throw t[1];
|
|
35
|
+
return t[1];
|
|
36
|
+
},
|
|
37
|
+
trys: [],
|
|
38
|
+
ops: []
|
|
39
|
+
};
|
|
40
|
+
return(g = {
|
|
41
|
+
next: verb(0),
|
|
42
|
+
"throw": verb(1),
|
|
43
|
+
"return": verb(2)
|
|
44
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
45
|
+
return this;
|
|
46
|
+
}), g);
|
|
47
|
+
function verb(n) {
|
|
48
|
+
return function(v) {
|
|
49
|
+
return step([
|
|
50
|
+
n,
|
|
51
|
+
v
|
|
52
|
+
]);
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function step(op) {
|
|
56
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
57
|
+
while(_)try {
|
|
58
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
59
|
+
if (y = 0, t) op = [
|
|
60
|
+
op[0] & 2,
|
|
61
|
+
t.value
|
|
62
|
+
];
|
|
63
|
+
switch(op[0]){
|
|
64
|
+
case 0:
|
|
65
|
+
case 1:
|
|
66
|
+
t = op;
|
|
67
|
+
break;
|
|
68
|
+
case 4:
|
|
69
|
+
_.label++;
|
|
70
|
+
return {
|
|
71
|
+
value: op[1],
|
|
72
|
+
done: false
|
|
73
|
+
};
|
|
74
|
+
case 5:
|
|
75
|
+
_.label++;
|
|
76
|
+
y = op[1];
|
|
77
|
+
op = [
|
|
78
|
+
0
|
|
79
|
+
];
|
|
80
|
+
continue;
|
|
81
|
+
case 7:
|
|
82
|
+
op = _.ops.pop();
|
|
83
|
+
_.trys.pop();
|
|
84
|
+
continue;
|
|
85
|
+
default:
|
|
86
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
87
|
+
_ = 0;
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
91
|
+
_.label = op[1];
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
95
|
+
_.label = t[1];
|
|
96
|
+
t = op;
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
if (t && _.label < t[2]) {
|
|
100
|
+
_.label = t[2];
|
|
101
|
+
_.ops.push(op);
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
if (t[2]) _.ops.pop();
|
|
105
|
+
_.trys.pop();
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
op = body.call(thisArg, _);
|
|
109
|
+
} catch (e) {
|
|
110
|
+
op = [
|
|
111
|
+
6,
|
|
112
|
+
e
|
|
113
|
+
];
|
|
114
|
+
y = 0;
|
|
115
|
+
} finally{
|
|
116
|
+
f = t = 0;
|
|
117
|
+
}
|
|
118
|
+
if (op[0] & 5) throw op[1];
|
|
119
|
+
return {
|
|
120
|
+
value: op[0] ? op[1] : void 0,
|
|
121
|
+
done: true
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
import { PreRender } from "../../react/prerender";
|
|
126
|
+
import { time } from "../time";
|
|
127
|
+
import SSREntry from "./entry";
|
|
128
|
+
var render = function() {
|
|
129
|
+
var _ref = _asyncToGenerator(function(param) {
|
|
130
|
+
var App, context, config, ssrContext, entry, end, html, cost, cacheConfig;
|
|
131
|
+
return __generator(this, function(_state) {
|
|
132
|
+
switch(_state.label){
|
|
133
|
+
case 0:
|
|
134
|
+
App = param.App, context = param.context, config = param.config;
|
|
135
|
+
ssrContext = context.ssrContext;
|
|
136
|
+
entry = new SSREntry({
|
|
137
|
+
ctx: ssrContext,
|
|
138
|
+
App: App,
|
|
139
|
+
config: config
|
|
140
|
+
});
|
|
141
|
+
entry.metrics.emitCounter("app.visit.count", 1);
|
|
142
|
+
end = time();
|
|
143
|
+
return [
|
|
144
|
+
4,
|
|
145
|
+
entry.renderToHtml(context)
|
|
146
|
+
];
|
|
147
|
+
case 1:
|
|
148
|
+
html = _state.sent();
|
|
149
|
+
cost = end();
|
|
150
|
+
entry.logger.info("App Render Total cost = %d ms", cost);
|
|
151
|
+
entry.metrics.emitTimer("app.render.cost", cost);
|
|
152
|
+
cacheConfig = PreRender.config();
|
|
153
|
+
if (cacheConfig) {
|
|
154
|
+
context.ssrContext.cacheConfig = cacheConfig;
|
|
155
|
+
}
|
|
156
|
+
return [
|
|
157
|
+
2,
|
|
158
|
+
html
|
|
159
|
+
];
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
return function render(_) {
|
|
164
|
+
return _ref.apply(this, arguments);
|
|
165
|
+
};
|
|
166
|
+
}();
|
|
167
|
+
export { render };
|
|
@@ -8,7 +8,7 @@ var extname = function(uri) {
|
|
|
8
8
|
return ".".concat(uri === null || uri === void 0 ? void 0 : uri.split(".").pop()) || "";
|
|
9
9
|
};
|
|
10
10
|
var toHtml = function(jsx, renderer, next) {
|
|
11
|
-
var stats = renderer.stats, chunksMap = renderer.result.chunksMap, host = renderer.host,
|
|
11
|
+
var stats = renderer.stats, chunksMap = renderer.result.chunksMap, host = renderer.host, _renderer_config = renderer.config, config = _renderer_config === void 0 ? {} : _renderer_config;
|
|
12
12
|
if (!stats || chunksMap.js) {
|
|
13
13
|
return next(jsx);
|
|
14
14
|
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
function _arrayLikeToArray(arr, len) {
|
|
2
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
3
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
4
|
+
return arr2;
|
|
5
|
+
}
|
|
6
|
+
function _arrayWithHoles(arr) {
|
|
7
|
+
if (Array.isArray(arr)) return arr;
|
|
8
|
+
}
|
|
9
|
+
function _iterableToArrayLimit(arr, i) {
|
|
10
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
11
|
+
if (_i == null) return;
|
|
12
|
+
var _arr = [];
|
|
13
|
+
var _n = true;
|
|
14
|
+
var _d = false;
|
|
15
|
+
var _s, _e;
|
|
16
|
+
try {
|
|
17
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
18
|
+
_arr.push(_s.value);
|
|
19
|
+
if (i && _arr.length === i) break;
|
|
20
|
+
}
|
|
21
|
+
} catch (err) {
|
|
22
|
+
_d = true;
|
|
23
|
+
_e = err;
|
|
24
|
+
} finally{
|
|
25
|
+
try {
|
|
26
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
27
|
+
} finally{
|
|
28
|
+
if (_d) throw _e;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return _arr;
|
|
32
|
+
}
|
|
33
|
+
function _nonIterableRest() {
|
|
34
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
35
|
+
}
|
|
36
|
+
function _slicedToArray(arr, i) {
|
|
37
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
38
|
+
}
|
|
39
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
40
|
+
if (!o) return;
|
|
41
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
42
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
43
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
44
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
45
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
46
|
+
}
|
|
47
|
+
var getLatency = function(hrtime) {
|
|
48
|
+
var _process_hrtime = _slicedToArray(process.hrtime(hrtime), 2), s = _process_hrtime[0], ns = _process_hrtime[1];
|
|
49
|
+
return s * 1e3 + ns / 1e6;
|
|
50
|
+
};
|
|
51
|
+
var time = function() {
|
|
52
|
+
var hrtime = process.hrtime();
|
|
53
|
+
return function() {
|
|
54
|
+
return getLatency(hrtime);
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
export { time };
|