@modern-js/runtime 1.21.5 → 2.0.0-beta.1
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 +117 -18
- package/dist/js/modern/cli/index.js +3 -5
- package/dist/js/modern/core/app-config.js +2 -1
- package/dist/js/modern/core/compatible.js +47 -48
- package/dist/js/modern/core/index.js +4 -3
- package/dist/js/modern/core/loader/loaderManager.js +12 -34
- package/dist/js/modern/core/loader/useLoader.js +8 -26
- package/dist/js/modern/core/plugin.js +6 -28
- package/dist/js/modern/document/Body.js +17 -0
- package/dist/js/modern/document/DocumentContext.js +6 -0
- package/dist/js/modern/document/DocumentStructrueContext.js +7 -0
- package/dist/js/modern/document/Head.js +24 -0
- package/dist/js/modern/document/Html.js +92 -0
- package/dist/js/modern/document/Root.js +31 -0
- package/dist/js/modern/document/Scripts.js +10 -0
- package/dist/js/modern/document/cli/index.js +130 -0
- package/dist/js/modern/document/constants.js +19 -0
- package/dist/js/modern/document/index.js +8 -0
- package/dist/js/modern/index.js +2 -1
- package/dist/js/modern/router/cli/index.js +20 -20
- package/dist/js/modern/router/runtime/index.js +1 -1
- package/dist/js/modern/router/runtime/plugin.js +25 -52
- package/dist/js/modern/router/runtime/plugin.node.js +137 -0
- package/dist/js/modern/router/runtime/root/index.js +19 -0
- package/dist/js/modern/router/runtime/root/load.js +61 -0
- package/dist/js/modern/router/runtime/types.js +1 -0
- package/dist/js/modern/router/runtime/utils.js +99 -58
- package/dist/js/modern/router/runtime/withRouter.js +20 -0
- package/dist/js/modern/runtime-context.js +2 -1
- package/dist/js/modern/ssr/cli/index.js +35 -17
- package/dist/js/modern/ssr/index.js +64 -51
- package/dist/js/modern/ssr/index.node.js +6 -15
- package/dist/js/modern/ssr/prefetch.js +0 -7
- package/dist/js/modern/ssr/react/prerender/index.js +2 -23
- package/dist/js/modern/ssr/react/prerender/util.js +2 -17
- package/dist/js/modern/ssr/react/withCallback/index.js +0 -1
- package/dist/js/modern/ssr/serverRender/helmet.js +12 -20
- package/dist/js/modern/ssr/serverRender/index.js +12 -27
- package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.after.js +38 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.share.js +5 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/bulidTemplate.before.js +58 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/index.js +40 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/loadable.js +24 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +72 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/styledComponent.js +11 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/template.js +18 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/type.js +0 -0
- package/dist/js/modern/ssr/serverRender/{entry.js → renderToString/entry.js} +6 -40
- package/dist/js/modern/ssr/serverRender/renderToString/index.js +29 -0
- package/dist/js/modern/ssr/serverRender/{loadable.js → renderToString/loadable.js} +2 -24
- package/dist/js/modern/ssr/serverRender/{reduce.js → renderToString/reduce.js} +0 -2
- package/dist/js/modern/ssr/serverRender/{styledComponent.js → renderToString/styledComponent.js} +0 -0
- package/dist/js/modern/ssr/serverRender/{template.js → renderToString/template.js} +0 -15
- package/dist/js/modern/ssr/serverRender/{type.js → renderToString/type.js} +0 -2
- package/dist/js/modern/ssr/serverRender/types.js +2 -0
- package/dist/js/modern/ssr/serverRender/utils.js +20 -0
- package/dist/js/modern/ssr/utils.js +8 -13
- package/dist/js/modern/state/cli/index.js +0 -10
- package/dist/js/modern/state/runtime/plugin.js +1 -14
- package/dist/js/node/cli/index.js +3 -13
- package/dist/js/node/common.js +0 -2
- package/dist/js/node/core/app-config.js +2 -5
- package/dist/js/node/core/compatible.js +47 -66
- package/dist/js/node/core/index.js +8 -17
- package/dist/js/node/core/loader/index.js +0 -2
- package/dist/js/node/core/loader/loaderManager.js +12 -37
- package/dist/js/node/core/loader/useLoader.js +8 -31
- package/dist/js/node/core/plugin.js +5 -34
- package/dist/js/node/document/Body.js +26 -0
- package/dist/js/node/document/DocumentContext.js +14 -0
- package/dist/js/node/document/DocumentStructrueContext.js +15 -0
- package/dist/js/node/document/Head.js +33 -0
- package/dist/js/node/document/Html.js +98 -0
- package/dist/js/node/document/Root.js +41 -0
- package/dist/js/node/document/Scripts.js +17 -0
- package/dist/js/node/document/cli/index.js +140 -0
- package/dist/js/node/document/constants.js +36 -0
- package/dist/js/node/document/index.js +93 -0
- package/dist/js/node/exports/head.js +0 -5
- package/dist/js/node/exports/loadable.js +0 -5
- package/dist/js/node/exports/server.js +0 -2
- package/dist/js/node/exports/styled.js +0 -5
- package/dist/js/node/index.js +5 -5
- package/dist/js/node/router/cli/index.js +20 -24
- package/dist/js/node/router/index.js +0 -4
- package/dist/js/node/router/runtime/DefaultNotFound.js +1 -5
- package/dist/js/node/router/runtime/index.js +4 -9
- package/dist/js/node/router/runtime/plugin.js +23 -65
- package/dist/js/node/router/runtime/plugin.node.js +147 -0
- package/dist/js/node/router/runtime/root/index.js +26 -0
- package/dist/js/node/router/runtime/root/load.js +69 -0
- package/dist/js/node/router/runtime/types.js +5 -0
- package/dist/js/node/router/runtime/utils.js +101 -67
- package/dist/js/node/router/runtime/withRouter.js +26 -0
- package/dist/js/node/runtime-context.js +4 -4
- package/dist/js/node/ssr/cli/index.js +35 -21
- package/dist/js/node/ssr/index.js +63 -62
- package/dist/js/node/ssr/index.node.js +6 -25
- package/dist/js/node/ssr/prefetch.js +0 -11
- package/dist/js/node/ssr/react/index.js +0 -2
- package/dist/js/node/ssr/react/nossr/index.js +0 -6
- package/dist/js/node/ssr/react/prerender/index.js +2 -30
- package/dist/js/node/ssr/react/prerender/util.js +2 -25
- package/dist/js/node/ssr/react/withCallback/index.js +1 -4
- package/dist/js/node/ssr/serverRender/helmet.js +13 -20
- package/dist/js/node/ssr/serverRender/index.js +14 -39
- package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.after.js +45 -0
- package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.share.js +13 -0
- package/dist/js/node/ssr/serverRender/renderToStream/bulidTemplate.before.js +65 -0
- package/dist/js/node/ssr/serverRender/renderToStream/index.js +48 -0
- package/dist/js/node/ssr/serverRender/renderToStream/loadable.js +30 -0
- package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +79 -0
- package/dist/js/node/ssr/serverRender/renderToStream/styledComponent.js +17 -0
- package/dist/js/node/ssr/serverRender/renderToStream/template.js +25 -0
- package/dist/js/node/ssr/serverRender/renderToStream/type.js +0 -0
- package/dist/js/node/ssr/serverRender/{entry.js → renderToString/entry.js} +13 -64
- package/dist/js/node/ssr/serverRender/renderToString/index.js +37 -0
- package/dist/js/node/ssr/serverRender/{loadable.js → renderToString/loadable.js} +3 -28
- package/dist/js/node/ssr/serverRender/{reduce.js → renderToString/reduce.js} +0 -3
- package/dist/js/node/ssr/serverRender/{styledComponent.js → renderToString/styledComponent.js} +0 -3
- package/dist/js/node/ssr/serverRender/{template.js → renderToString/template.js} +0 -18
- package/dist/js/node/ssr/serverRender/{type.js → renderToString/type.js} +0 -2
- package/dist/js/node/ssr/serverRender/types.js +12 -0
- package/dist/js/node/ssr/serverRender/utils.js +28 -0
- package/dist/js/node/ssr/utils.js +10 -21
- package/dist/js/node/state/cli/index.js +0 -15
- package/dist/js/node/state/index.js +0 -4
- package/dist/js/node/state/plugins.js +0 -11
- package/dist/js/node/state/runtime/index.js +0 -7
- package/dist/js/node/state/runtime/plugin.js +1 -25
- package/dist/js/treeshaking/cli/index.js +3 -3
- package/dist/js/treeshaking/core/app-config.js +2 -1
- package/dist/js/treeshaking/core/compatible.js +50 -65
- package/dist/js/treeshaking/core/index.js +4 -3
- package/dist/js/treeshaking/core/loader/loaderManager.js +19 -51
- package/dist/js/treeshaking/core/loader/useLoader.js +11 -28
- package/dist/js/treeshaking/core/plugin.js +6 -51
- package/dist/js/treeshaking/document/Body.js +14 -0
- package/dist/js/treeshaking/document/DocumentContext.js +6 -0
- package/dist/js/treeshaking/document/DocumentStructrueContext.js +7 -0
- package/dist/js/treeshaking/document/Head.js +21 -0
- package/dist/js/treeshaking/document/Html.js +104 -0
- package/dist/js/treeshaking/document/Root.js +24 -0
- package/dist/js/treeshaking/document/Scripts.js +10 -0
- package/dist/js/treeshaking/document/cli/index.js +170 -0
- package/dist/js/treeshaking/document/constants.js +16 -0
- package/dist/js/treeshaking/document/index.js +8 -0
- package/dist/js/treeshaking/index.js +2 -1
- package/dist/js/treeshaking/router/cli/index.js +26 -22
- package/dist/js/treeshaking/router/runtime/index.js +1 -1
- package/dist/js/treeshaking/router/runtime/plugin.js +28 -54
- package/dist/js/treeshaking/router/runtime/plugin.node.js +161 -0
- package/dist/js/treeshaking/router/runtime/root/index.js +17 -0
- package/dist/js/treeshaking/router/runtime/root/load.js +102 -0
- package/dist/js/treeshaking/router/runtime/types.js +1 -0
- package/dist/js/treeshaking/router/runtime/utils.js +104 -58
- package/dist/js/treeshaking/router/runtime/withRouter.js +18 -0
- package/dist/js/treeshaking/runtime-context.js +2 -1
- package/dist/js/treeshaking/ssr/cli/index.js +43 -23
- package/dist/js/treeshaking/ssr/index.js +74 -59
- package/dist/js/treeshaking/ssr/index.node.js +18 -31
- package/dist/js/treeshaking/ssr/prefetch.js +0 -13
- package/dist/js/treeshaking/ssr/react/nossr/index.js +3 -4
- package/dist/js/treeshaking/ssr/react/prerender/index.js +2 -21
- package/dist/js/treeshaking/ssr/react/prerender/util.js +3 -20
- package/dist/js/treeshaking/ssr/react/withCallback/index.js +1 -2
- package/dist/js/treeshaking/ssr/serverRender/helmet.js +12 -11
- package/dist/js/treeshaking/ssr/serverRender/index.js +33 -55
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.after.js +32 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.share.js +7 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +60 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +50 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +22 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +68 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/styledComponent.js +10 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +22 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/type.js +0 -0
- package/dist/js/treeshaking/ssr/serverRender/{entry.js → renderToString/entry.js} +23 -76
- package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +44 -0
- package/dist/js/treeshaking/ssr/serverRender/{loadable.js → renderToString/loadable.js} +7 -34
- package/dist/js/treeshaking/ssr/serverRender/{reduce.js → renderToString/reduce.js} +0 -2
- package/dist/js/treeshaking/ssr/serverRender/{styledComponent.js → renderToString/styledComponent.js} +0 -0
- package/dist/js/treeshaking/ssr/serverRender/{template.js → renderToString/template.js} +2 -18
- package/dist/js/treeshaking/ssr/serverRender/{type.js → renderToString/type.js} +0 -2
- package/dist/js/treeshaking/ssr/serverRender/types.js +2 -0
- package/dist/js/treeshaking/ssr/serverRender/utils.js +28 -0
- package/dist/js/treeshaking/ssr/utils.js +20 -17
- package/dist/js/treeshaking/state/cli/index.js +3 -10
- package/dist/js/treeshaking/state/runtime/plugin.js +2 -10
- package/dist/types/cli/index.d.ts +0 -2
- package/dist/types/common.d.ts +0 -2
- package/dist/types/core/compatible.d.ts +2 -2
- package/dist/types/core/index.d.ts +2 -2
- package/dist/types/core/loader/loaderManager.d.ts +0 -1
- package/dist/types/core/loader/useLoader.d.ts +0 -5
- package/dist/types/core/plugin.d.ts +2 -14
- package/dist/types/document/Body.d.ts +4 -0
- package/dist/types/document/DocumentContext.d.ts +13 -0
- package/dist/types/document/DocumentStructrueContext.d.ts +10 -0
- package/dist/types/document/Head.d.ts +5 -0
- package/dist/types/document/Html.d.ts +4 -0
- package/dist/types/document/Root.d.ts +8 -0
- package/dist/types/document/Scripts.d.ts +2 -0
- package/dist/types/document/cli/index.d.ts +3 -0
- package/dist/types/document/constants.d.ts +14 -0
- package/dist/types/document/index.d.ts +8 -0
- package/dist/types/exports/server.d.ts +21 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/router/cli/index.d.ts +0 -2
- package/dist/types/router/runtime/DefaultNotFound.d.ts +1 -0
- package/dist/types/router/runtime/index.d.ts +3 -3
- package/dist/types/router/runtime/plugin.d.ts +2 -45
- package/dist/types/router/runtime/plugin.node.d.ts +8 -0
- package/dist/types/router/runtime/root/index.d.ts +8 -0
- package/dist/types/router/runtime/root/load.d.ts +22 -0
- package/dist/types/router/runtime/types.d.ts +36 -0
- package/dist/types/router/runtime/utils.d.ts +5 -2
- package/dist/types/router/runtime/withRouter.d.ts +8 -0
- package/dist/types/runtime-context.d.ts +3 -1
- package/dist/types/ssr/cli/index.d.ts +0 -2
- package/dist/types/ssr/index.d.ts +2 -2
- package/dist/types/ssr/index.node.d.ts +1 -1
- package/dist/types/ssr/prefetch.d.ts +2 -2
- package/dist/types/ssr/react/nossr/index.d.ts +3 -1
- package/dist/types/ssr/serverRender/index.d.ts +2 -3
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +7 -0
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.share.d.ts +3 -0
- package/dist/types/ssr/serverRender/renderToStream/bulidTemplate.before.d.ts +2 -0
- package/dist/types/ssr/serverRender/renderToStream/index.d.ts +6 -0
- package/dist/types/ssr/serverRender/renderToStream/loadable.d.ts +16 -0
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +8 -0
- package/dist/types/ssr/serverRender/renderToStream/styledComponent.d.ts +12 -0
- package/dist/types/ssr/serverRender/renderToStream/template.d.ts +3 -0
- package/dist/types/ssr/serverRender/renderToStream/type.d.ts +4 -0
- package/dist/types/ssr/serverRender/{entry.d.ts → renderToString/entry.d.ts} +2 -2
- package/dist/types/ssr/serverRender/renderToString/index.d.ts +6 -0
- package/dist/types/ssr/serverRender/{loadable.d.ts → renderToString/loadable.d.ts} +0 -0
- package/dist/types/ssr/serverRender/{reduce.d.ts → renderToString/reduce.d.ts} +0 -0
- package/dist/types/ssr/serverRender/{styledComponent.d.ts → renderToString/styledComponent.d.ts} +0 -0
- package/dist/types/ssr/serverRender/{template.d.ts → renderToString/template.d.ts} +0 -0
- package/dist/types/ssr/serverRender/{type.d.ts → renderToString/type.d.ts} +1 -8
- package/dist/types/ssr/serverRender/types.d.ts +15 -0
- package/dist/types/ssr/serverRender/utils.d.ts +3 -0
- package/dist/types/ssr/utils.d.ts +4 -2
- package/dist/types/state/cli/index.d.ts +0 -2
- package/dist/types/state/runtime/plugin.d.ts +1 -1
- package/dist/types/state/types.d.ts +0 -1
- package/package.json +63 -71
- package/types/index.d.ts +13 -0
- package/types/router.d.ts +14 -0
- package/dist/js/modern/ssr/serverRender/measure.js +0 -11
- package/dist/js/node/ssr/serverRender/measure.js +0 -20
- package/dist/js/treeshaking/ssr/serverRender/measure.js +0 -17
- package/dist/types/ssr/serverRender/measure.d.ts +0 -1
- package/lib/types.d.ts +0 -10
- package/type.d.ts +0 -5
|
@@ -1,63 +1,41 @@
|
|
|
1
1
|
import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
|
|
2
2
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
/* eslint-disable eslint-comments/disable-enable-pair */
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
5
|
+
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
6
|
+
|
|
7
|
+
import { isReact18 } from "../utils";
|
|
8
|
+
export default function serverRender(_x) {
|
|
9
|
+
return _serverRender.apply(this, arguments);
|
|
10
|
+
}
|
|
11
|
+
function _serverRender() {
|
|
12
|
+
_serverRender = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(options) {
|
|
13
|
+
var pipe, html;
|
|
14
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
11
15
|
while (1) {
|
|
12
|
-
switch (
|
|
16
|
+
switch (_context.prev = _context.next) {
|
|
13
17
|
case 0:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
case 5:
|
|
32
|
-
html = _context.sent;
|
|
33
|
-
cost = end();
|
|
34
|
-
entry.logger.info('App Render Total cost = %d ms', cost);
|
|
35
|
-
entry.metrics.emitTimer('app.render.cost', cost);
|
|
36
|
-
cacheConfig = PreRender.config();
|
|
37
|
-
|
|
38
|
-
if (cacheConfig) {
|
|
39
|
-
ctx.ssrContext.cacheConfig = cacheConfig;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return _context.abrupt("return", html);
|
|
43
|
-
|
|
44
|
-
case 12:
|
|
45
|
-
case "end":
|
|
46
|
-
return _context.stop();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}, _callee);
|
|
50
|
-
}))));
|
|
51
|
-
|
|
52
|
-
case 2:
|
|
18
|
+
if (!(isReact18() && options.config.mode === 'stream')) {
|
|
19
|
+
_context.next = 7;
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
_context.next = 3;
|
|
23
|
+
return require("./renderToStream").render(options);
|
|
24
|
+
case 3:
|
|
25
|
+
pipe = _context.sent;
|
|
26
|
+
return _context.abrupt("return", pipe);
|
|
27
|
+
case 7:
|
|
28
|
+
_context.next = 9;
|
|
29
|
+
return require("./renderToString").render(options);
|
|
30
|
+
case 9:
|
|
31
|
+
html = _context.sent;
|
|
32
|
+
return _context.abrupt("return", html);
|
|
33
|
+
case 11:
|
|
53
34
|
case "end":
|
|
54
|
-
return
|
|
35
|
+
return _context.stop();
|
|
55
36
|
}
|
|
56
37
|
}
|
|
57
|
-
},
|
|
38
|
+
}, _callee);
|
|
58
39
|
}));
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return _ref.apply(this, arguments);
|
|
62
|
-
};
|
|
63
|
-
}();
|
|
40
|
+
return _serverRender.apply(this, arguments);
|
|
41
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import serialize from 'serialize-javascript';
|
|
2
|
+
import { buildTemplate } from "./buildTemplate.share";
|
|
3
|
+
export function buildShellAfterTemplate(afterAppTemplate, options) {
|
|
4
|
+
var callbacks = [injectSSRDataScript];
|
|
5
|
+
return buildTemplate(afterAppTemplate, callbacks);
|
|
6
|
+
function injectSSRDataScript(template) {
|
|
7
|
+
var ssrDataScript = buildSSRDataScript();
|
|
8
|
+
return template.replace('<!--<?- SSRDataScript ?>-->', ssrDataScript);
|
|
9
|
+
function buildSSRDataScript() {
|
|
10
|
+
var ssrContext = options.ssrContext,
|
|
11
|
+
renderLevel = options.renderLevel;
|
|
12
|
+
var request = ssrContext.request;
|
|
13
|
+
var SSRData = {
|
|
14
|
+
context: {
|
|
15
|
+
request: {
|
|
16
|
+
params: request.params,
|
|
17
|
+
query: request.query,
|
|
18
|
+
pathname: request.pathname,
|
|
19
|
+
host: request.host,
|
|
20
|
+
url: request.url,
|
|
21
|
+
headers: request.headers,
|
|
22
|
+
cookieMap: request.cookieMap
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
renderLevel: renderLevel
|
|
26
|
+
};
|
|
27
|
+
return "\n <script>window._SSR_DATA = ".concat(serialize(SSRData, {
|
|
28
|
+
isJSON: true
|
|
29
|
+
}), "</script>\n ");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
|
+
import ReactHelmet from 'react-helmet';
|
|
4
|
+
import { matchRoutes } from 'react-router-dom';
|
|
5
|
+
import helmetReplace from "../helmet";
|
|
6
|
+
import { HEAD_REG_EXP, buildTemplate } from "./buildTemplate.share";
|
|
7
|
+
var CSS_CHUNKS_PLACEHOLDER = '<!--<?- chunksMap.css ?>-->';
|
|
8
|
+
|
|
9
|
+
// build head template
|
|
10
|
+
function getHeadTemplate(beforeEntryTemplate, context) {
|
|
11
|
+
var callbacks = [function (headTemplate) {
|
|
12
|
+
var helmetData = ReactHelmet.renderStatic();
|
|
13
|
+
return helmetData ? helmetReplace(headTemplate, helmetData) : headTemplate;
|
|
14
|
+
},
|
|
15
|
+
// @TODO: prefetch scripts of lazy component
|
|
16
|
+
injectCss];
|
|
17
|
+
var _ref = beforeEntryTemplate.match(HEAD_REG_EXP) || [],
|
|
18
|
+
_ref2 = _slicedToArray(_ref, 1),
|
|
19
|
+
_ref2$ = _ref2[0],
|
|
20
|
+
headTemplate = _ref2$ === void 0 ? '' : _ref2$;
|
|
21
|
+
if (!headTemplate.length) {
|
|
22
|
+
return '';
|
|
23
|
+
}
|
|
24
|
+
return buildTemplate(headTemplate, callbacks);
|
|
25
|
+
function injectCss(headTemplate) {
|
|
26
|
+
return headTemplate.replace(CSS_CHUNKS_PLACEHOLDER, getCssChunks());
|
|
27
|
+
function getCssChunks() {
|
|
28
|
+
var routeManifest = context.routeManifest,
|
|
29
|
+
routerContext = context.routerContext,
|
|
30
|
+
routes = context.routes;
|
|
31
|
+
if (!routeManifest || !routerContext || !routes) {
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
var routeAssets = routeManifest.routeAssets;
|
|
35
|
+
var cssChunks = [];
|
|
36
|
+
var matches = matchRoutes(routes, routerContext.location);
|
|
37
|
+
matches === null || matches === void 0 ? void 0 : matches.forEach(function (match) {
|
|
38
|
+
var routeId = match.route.id;
|
|
39
|
+
if (routeId) {
|
|
40
|
+
var _routeAssets$routeId$ = routeAssets[routeId].assets,
|
|
41
|
+
assets = _routeAssets$routeId$ === void 0 ? [] : _routeAssets$routeId$;
|
|
42
|
+
var _cssChunks = assets.filter(function (asset) {
|
|
43
|
+
return asset === null || asset === void 0 ? void 0 : asset.endsWith('.css');
|
|
44
|
+
});
|
|
45
|
+
cssChunks.push.apply(cssChunks, _toConsumableArray(_cssChunks));
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
var styleLinks = cssChunks.map(function (chunk) {
|
|
49
|
+
return "<link href=\"".concat(chunk, "\" rel=\"stylesheet\" />");
|
|
50
|
+
});
|
|
51
|
+
return "".concat(styleLinks.join(''));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// build script
|
|
57
|
+
export function buildShellBeforeTemplate(beforeAppTemplate, context) {
|
|
58
|
+
var headTemplate = getHeadTemplate(beforeAppTemplate, context);
|
|
59
|
+
return beforeAppTemplate.replace(HEAD_REG_EXP, headTemplate);
|
|
60
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
|
|
2
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
3
|
+
import { createElement } from 'react';
|
|
4
|
+
import { run } from '@modern-js/utils/ssr';
|
|
5
|
+
import { PreRender } from "../../react/prerender";
|
|
6
|
+
import { time } from "../utils";
|
|
7
|
+
import renderToPipe from "./renderToPipe";
|
|
8
|
+
export var render = function render(_ref) {
|
|
9
|
+
var App = _ref.App,
|
|
10
|
+
context = _ref.context;
|
|
11
|
+
var ssrContext = context.ssrContext;
|
|
12
|
+
if (!ssrContext) {
|
|
13
|
+
throw new Error('The "ssrContext" must not be undefined, but received undefined');
|
|
14
|
+
}
|
|
15
|
+
return run(ssrContext.request.headers, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
16
|
+
var end, rootElement, pipe;
|
|
17
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
18
|
+
while (1) {
|
|
19
|
+
switch (_context.prev = _context.next) {
|
|
20
|
+
case 0:
|
|
21
|
+
end = time();
|
|
22
|
+
rootElement = /*#__PURE__*/createElement(App, {
|
|
23
|
+
context: Object.assign(context || {}, {
|
|
24
|
+
ssr: true
|
|
25
|
+
})
|
|
26
|
+
});
|
|
27
|
+
pipe = renderToPipe(rootElement, context, {
|
|
28
|
+
onShellReady: function onShellReady() {
|
|
29
|
+
// set cacheConfig
|
|
30
|
+
var cacheConfig = PreRender.config();
|
|
31
|
+
if (cacheConfig) {
|
|
32
|
+
ssrContext.cacheConfig = cacheConfig;
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
onAllReady: function onAllReady() {
|
|
36
|
+
// calculate streaming ssr cost
|
|
37
|
+
var cost = end();
|
|
38
|
+
ssrContext.logger.debug('App Render To HTML cost = %d ms', cost);
|
|
39
|
+
ssrContext.metrics.emitTimer('app.render.html.cost', cost);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
return _context.abrupt("return", pipe);
|
|
43
|
+
case 4:
|
|
44
|
+
case "end":
|
|
45
|
+
return _context.stop();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}, _callee);
|
|
49
|
+
})));
|
|
50
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ChunkExtractor } from '@loadable/server';
|
|
2
|
+
export function getLoadableChunks(_ref) {
|
|
3
|
+
var context = _ref.context,
|
|
4
|
+
jsx = _ref.jsx;
|
|
5
|
+
var _ref2 = context.ssrContext,
|
|
6
|
+
loadableStats = _ref2.loadableStats,
|
|
7
|
+
entryName = _ref2.entryName;
|
|
8
|
+
if (!loadableStats) {
|
|
9
|
+
return {
|
|
10
|
+
jsx: jsx
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
var extractor = new ChunkExtractor({
|
|
14
|
+
stats: loadableStats,
|
|
15
|
+
entrypoints: [entryName]
|
|
16
|
+
});
|
|
17
|
+
var collectedJsx = extractor.collectChunks(jsx);
|
|
18
|
+
return {
|
|
19
|
+
jsx: collectedJsx,
|
|
20
|
+
chunkExtractor: extractor
|
|
21
|
+
};
|
|
22
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
import { Transform } from 'stream';
|
|
3
|
+
import { renderToPipeableStream } from 'react-dom/server';
|
|
4
|
+
import { RenderLevel } from "../types";
|
|
5
|
+
import { getTemplates } from "./template";
|
|
6
|
+
function renderToPipe(rootElement, context, options) {
|
|
7
|
+
var isShellStream = true;
|
|
8
|
+
var ssrContext = context.ssrContext;
|
|
9
|
+
var forUserPipe = function forUserPipe(stream) {
|
|
10
|
+
return new Promise(function (resolve) {
|
|
11
|
+
var _renderToPipeableStre = renderToPipeableStream(rootElement, _objectSpread(_objectSpread({}, options), {}, {
|
|
12
|
+
onShellReady: function onShellReady() {
|
|
13
|
+
var _options$onShellReady;
|
|
14
|
+
var _getTemplates = getTemplates(context, RenderLevel.SERVER_RENDER),
|
|
15
|
+
shellAfter = _getTemplates.shellAfter,
|
|
16
|
+
shellBefore = _getTemplates.shellBefore;
|
|
17
|
+
options === null || options === void 0 ? void 0 : (_options$onShellReady = options.onShellReady) === null || _options$onShellReady === void 0 ? void 0 : _options$onShellReady.call(options);
|
|
18
|
+
var injectableTransform = new Transform({
|
|
19
|
+
transform: function transform(chunk, _encoding, callback) {
|
|
20
|
+
try {
|
|
21
|
+
if (isShellStream) {
|
|
22
|
+
this.push(joinChunk(shellBefore, chunk, shellAfter));
|
|
23
|
+
isShellStream = false;
|
|
24
|
+
} else {
|
|
25
|
+
this.push(chunk);
|
|
26
|
+
}
|
|
27
|
+
callback();
|
|
28
|
+
} catch (e) {
|
|
29
|
+
if (e instanceof Error) {
|
|
30
|
+
callback(e);
|
|
31
|
+
} else {
|
|
32
|
+
callback(new Error('Received unkown error when streaming'));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
resolve(pipe(injectableTransform).pipe(stream));
|
|
38
|
+
},
|
|
39
|
+
onShellError: function onShellError(error) {
|
|
40
|
+
var _options$onShellError;
|
|
41
|
+
// Don't log error in `onShellError` callback, since it has been logged in `onError` callback
|
|
42
|
+
ssrContext.metrics.emitCounter('app.render.streaming.shell.error', 1);
|
|
43
|
+
var _getTemplates2 = getTemplates(context, RenderLevel.CLIENT_RENDER),
|
|
44
|
+
shellAfter = _getTemplates2.shellAfter,
|
|
45
|
+
shellBefore = _getTemplates2.shellBefore;
|
|
46
|
+
var fallbackHtml = "".concat(shellBefore).concat(shellAfter);
|
|
47
|
+
resolve(fallbackHtml);
|
|
48
|
+
options === null || options === void 0 ? void 0 : (_options$onShellError = options.onShellError) === null || _options$onShellError === void 0 ? void 0 : _options$onShellError.call(options, error);
|
|
49
|
+
},
|
|
50
|
+
onError: function onError(error) {
|
|
51
|
+
var _options$onError;
|
|
52
|
+
ssrContext.logger.error('An error occurs during streaming SSR', error);
|
|
53
|
+
ssrContext.metrics.emitCounter('app.render.streaming.error', 1);
|
|
54
|
+
options === null || options === void 0 ? void 0 : (_options$onError = options.onError) === null || _options$onError === void 0 ? void 0 : _options$onError.call(options, error);
|
|
55
|
+
}
|
|
56
|
+
})),
|
|
57
|
+
pipe = _renderToPipeableStre.pipe;
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
return forUserPipe;
|
|
61
|
+
function joinChunk() {
|
|
62
|
+
var before = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
63
|
+
var chunk = arguments.length > 1 ? arguments[1] : undefined;
|
|
64
|
+
var after = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
65
|
+
return "".concat(before).concat(chunk.toString()).concat(after);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export default renderToPipe;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ServerStyleSheet } from 'styled-components';
|
|
2
|
+
export function getStyledComponentCss(_ref) {
|
|
3
|
+
var jsx = _ref.jsx;
|
|
4
|
+
var sheet = new ServerStyleSheet();
|
|
5
|
+
var collectedJsx = sheet.collectStyles(jsx);
|
|
6
|
+
return {
|
|
7
|
+
styleSheet: sheet,
|
|
8
|
+
jsx: collectedJsx
|
|
9
|
+
};
|
|
10
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
+
import { buildShellAfterTemplate } from "./buildTemplate.after";
|
|
3
|
+
import { buildShellBeforeTemplate } from "./bulidTemplate.before";
|
|
4
|
+
var HTML_SEPARATOR = '<!--<?- html ?>-->';
|
|
5
|
+
export var getTemplates = function getTemplates(context, renderLevel) {
|
|
6
|
+
var ssrContext = context.ssrContext;
|
|
7
|
+
var _ref = ssrContext.template.split(HTML_SEPARATOR) || [],
|
|
8
|
+
_ref2 = _slicedToArray(_ref, 2),
|
|
9
|
+
_ref2$ = _ref2[0],
|
|
10
|
+
beforeAppTemplate = _ref2$ === void 0 ? '' : _ref2$,
|
|
11
|
+
_ref2$2 = _ref2[1],
|
|
12
|
+
afterAppHtmlTemplate = _ref2$2 === void 0 ? '' : _ref2$2;
|
|
13
|
+
var builtBeforeTemplate = buildShellBeforeTemplate(beforeAppTemplate, context);
|
|
14
|
+
var builtAfterTemplate = buildShellAfterTemplate(afterAppHtmlTemplate, {
|
|
15
|
+
ssrContext: ssrContext,
|
|
16
|
+
renderLevel: renderLevel
|
|
17
|
+
});
|
|
18
|
+
return {
|
|
19
|
+
shellBefore: builtBeforeTemplate,
|
|
20
|
+
shellAfter: builtAfterTemplate
|
|
21
|
+
};
|
|
22
|
+
};
|
|
File without changes
|
|
@@ -8,14 +8,14 @@ import React from 'react';
|
|
|
8
8
|
import ReactDomServer from 'react-dom/server';
|
|
9
9
|
import serialize from 'serialize-javascript';
|
|
10
10
|
import ReactHelmet from 'react-helmet';
|
|
11
|
+
import helmetReplace from "../helmet";
|
|
12
|
+
import { RenderLevel } from "../types";
|
|
13
|
+
import { time } from "../utils";
|
|
14
|
+
import _prefetch from "../../prefetch";
|
|
11
15
|
import { toFragments } from "./template";
|
|
12
|
-
import { RenderLevel } from "./type";
|
|
13
|
-
import helmetReplace from "./helmet";
|
|
14
16
|
import { reduce } from "./reduce";
|
|
15
17
|
import * as loadableRenderer from "./loadable";
|
|
16
18
|
import * as styledComponentRenderer from "./styledComponent";
|
|
17
|
-
import { time } from "./measure";
|
|
18
|
-
|
|
19
19
|
var buildTemplateData = function buildTemplateData(context, data, renderLevel) {
|
|
20
20
|
var request = context.request;
|
|
21
21
|
return {
|
|
@@ -34,32 +34,22 @@ var buildTemplateData = function buildTemplateData(context, data, renderLevel) {
|
|
|
34
34
|
renderLevel: renderLevel
|
|
35
35
|
};
|
|
36
36
|
};
|
|
37
|
-
|
|
38
37
|
var Entry = /*#__PURE__*/function () {
|
|
39
38
|
function Entry(options) {
|
|
40
39
|
_classCallCheck(this, Entry);
|
|
41
|
-
|
|
42
40
|
_defineProperty(this, "entryName", void 0);
|
|
43
|
-
|
|
44
41
|
_defineProperty(this, "result", void 0);
|
|
45
|
-
|
|
46
42
|
_defineProperty(this, "metrics", void 0);
|
|
47
|
-
|
|
48
43
|
_defineProperty(this, "logger", void 0);
|
|
49
|
-
|
|
50
44
|
_defineProperty(this, "App", void 0);
|
|
51
|
-
|
|
52
45
|
_defineProperty(this, "fragments", void 0);
|
|
53
|
-
|
|
54
46
|
_defineProperty(this, "pluginConfig", void 0);
|
|
55
|
-
|
|
56
47
|
_defineProperty(this, "host", void 0);
|
|
57
|
-
|
|
58
48
|
var ctx = options.ctx,
|
|
59
|
-
|
|
49
|
+
config = options.config;
|
|
60
50
|
var entryName = ctx.entryName,
|
|
61
|
-
|
|
62
|
-
|
|
51
|
+
template = ctx.template,
|
|
52
|
+
host = ctx.request.host;
|
|
63
53
|
this.fragments = toFragments(template, entryName);
|
|
64
54
|
this.entryName = entryName;
|
|
65
55
|
this.host = host;
|
|
@@ -76,62 +66,48 @@ var Entry = /*#__PURE__*/function () {
|
|
|
76
66
|
}
|
|
77
67
|
};
|
|
78
68
|
}
|
|
79
|
-
|
|
80
69
|
_createClass(Entry, [{
|
|
81
70
|
key: "renderToHtml",
|
|
82
71
|
value: function () {
|
|
83
72
|
var _renderToHtml = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(context) {
|
|
84
73
|
var ssrContext, prefetchData, html, templateData, SSRData, _iterator, _step, fragment, helmetData;
|
|
85
|
-
|
|
86
74
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
87
75
|
while (1) {
|
|
88
76
|
switch (_context.prev = _context.next) {
|
|
89
77
|
case 0:
|
|
90
78
|
ssrContext = context.ssrContext;
|
|
91
|
-
|
|
92
79
|
if (!ssrContext.redirection.url) {
|
|
93
80
|
_context.next = 3;
|
|
94
81
|
break;
|
|
95
82
|
}
|
|
96
|
-
|
|
97
83
|
return _context.abrupt("return", '');
|
|
98
|
-
|
|
99
84
|
case 3:
|
|
100
85
|
_context.next = 5;
|
|
101
86
|
return this.prefetch(context);
|
|
102
|
-
|
|
103
87
|
case 5:
|
|
104
88
|
prefetchData = _context.sent;
|
|
105
|
-
|
|
106
89
|
if (!ssrContext.redirection.url) {
|
|
107
90
|
_context.next = 8;
|
|
108
91
|
break;
|
|
109
92
|
}
|
|
110
|
-
|
|
111
93
|
return _context.abrupt("return", '');
|
|
112
|
-
|
|
113
94
|
case 8:
|
|
114
95
|
if (this.result.renderLevel >= RenderLevel.SERVER_PREFETCH) {
|
|
115
96
|
this.result.html = this.renderToString(context);
|
|
116
97
|
}
|
|
117
|
-
|
|
118
98
|
if (!ssrContext.redirection.url) {
|
|
119
99
|
_context.next = 11;
|
|
120
100
|
break;
|
|
121
101
|
}
|
|
122
|
-
|
|
123
102
|
return _context.abrupt("return", '');
|
|
124
|
-
|
|
125
103
|
case 11:
|
|
126
104
|
html = '';
|
|
127
105
|
templateData = buildTemplateData(ssrContext, prefetchData, this.result.renderLevel);
|
|
128
106
|
SSRData = this.getSSRDataScript(templateData);
|
|
129
107
|
_iterator = _createForOfIteratorHelper(this.fragments);
|
|
130
|
-
|
|
131
108
|
try {
|
|
132
109
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
133
110
|
fragment = _step.value;
|
|
134
|
-
|
|
135
111
|
if (fragment.isVariable && fragment.content === 'SSRDataScript') {
|
|
136
112
|
html += fragment.getValue(SSRData);
|
|
137
113
|
} else {
|
|
@@ -143,10 +119,8 @@ var Entry = /*#__PURE__*/function () {
|
|
|
143
119
|
} finally {
|
|
144
120
|
_iterator.f();
|
|
145
121
|
}
|
|
146
|
-
|
|
147
122
|
helmetData = ReactHelmet.renderStatic();
|
|
148
123
|
return _context.abrupt("return", helmetData ? helmetReplace(html, helmetData) : html);
|
|
149
|
-
|
|
150
124
|
case 18:
|
|
151
125
|
case "end":
|
|
152
126
|
return _context.stop();
|
|
@@ -154,73 +128,50 @@ var Entry = /*#__PURE__*/function () {
|
|
|
154
128
|
}
|
|
155
129
|
}, _callee, this);
|
|
156
130
|
}));
|
|
157
|
-
|
|
158
131
|
function renderToHtml(_x) {
|
|
159
132
|
return _renderToHtml.apply(this, arguments);
|
|
160
133
|
}
|
|
161
|
-
|
|
162
134
|
return renderToHtml;
|
|
163
135
|
}()
|
|
164
136
|
}, {
|
|
165
137
|
key: "prefetch",
|
|
166
138
|
value: function () {
|
|
167
|
-
var
|
|
168
|
-
var
|
|
139
|
+
var _prefetch2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(context) {
|
|
140
|
+
var prefetchData, end, prefetchCost;
|
|
169
141
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
170
142
|
while (1) {
|
|
171
143
|
switch (_context2.prev = _context2.next) {
|
|
172
144
|
case 0:
|
|
173
|
-
prefetch = this.App.prefetch;
|
|
174
145
|
end = time();
|
|
175
|
-
_context2.prev =
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
_context2.next = 6;
|
|
183
|
-
return prefetch(context);
|
|
184
|
-
|
|
185
|
-
case 6:
|
|
186
|
-
_context2.t0 = _context2.sent;
|
|
187
|
-
_context2.next = 10;
|
|
188
|
-
break;
|
|
189
|
-
|
|
190
|
-
case 9:
|
|
191
|
-
_context2.t0 = null;
|
|
192
|
-
|
|
193
|
-
case 10:
|
|
194
|
-
prefetchData = _context2.t0;
|
|
146
|
+
_context2.prev = 1;
|
|
147
|
+
_context2.next = 4;
|
|
148
|
+
return _prefetch(this.App, context);
|
|
149
|
+
case 4:
|
|
150
|
+
prefetchData = _context2.sent;
|
|
195
151
|
this.result.renderLevel = RenderLevel.SERVER_PREFETCH;
|
|
196
152
|
prefetchCost = end();
|
|
197
153
|
this.logger.debug("App Prefetch cost = %d ms", prefetchCost);
|
|
198
154
|
this.metrics.emitTimer('app.prefetch.cost', prefetchCost);
|
|
199
|
-
_context2.next =
|
|
155
|
+
_context2.next = 16;
|
|
200
156
|
break;
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
_context2.
|
|
204
|
-
_context2.t1 = _context2["catch"](2);
|
|
157
|
+
case 11:
|
|
158
|
+
_context2.prev = 11;
|
|
159
|
+
_context2.t0 = _context2["catch"](1);
|
|
205
160
|
this.result.renderLevel = RenderLevel.CLIENT_RENDER;
|
|
206
|
-
this.logger.error('App Prefetch Render', _context2.
|
|
161
|
+
this.logger.error('App Prefetch Render', _context2.t0);
|
|
207
162
|
this.metrics.emitCounter('app.prefetch.render.error', 1);
|
|
208
|
-
|
|
209
|
-
case 22:
|
|
163
|
+
case 16:
|
|
210
164
|
return _context2.abrupt("return", prefetchData || {});
|
|
211
|
-
|
|
212
|
-
case 23:
|
|
165
|
+
case 17:
|
|
213
166
|
case "end":
|
|
214
167
|
return _context2.stop();
|
|
215
168
|
}
|
|
216
169
|
}
|
|
217
|
-
}, _callee2, this, [[
|
|
170
|
+
}, _callee2, this, [[1, 11]]);
|
|
218
171
|
}));
|
|
219
|
-
|
|
220
172
|
function prefetch(_x2) {
|
|
221
|
-
return
|
|
173
|
+
return _prefetch2.apply(this, arguments);
|
|
222
174
|
}
|
|
223
|
-
|
|
224
175
|
return prefetch;
|
|
225
176
|
}()
|
|
226
177
|
}, {
|
|
@@ -229,7 +180,6 @@ var Entry = /*#__PURE__*/function () {
|
|
|
229
180
|
var html = '';
|
|
230
181
|
var end = time();
|
|
231
182
|
var ssrContext = context.ssrContext;
|
|
232
|
-
|
|
233
183
|
try {
|
|
234
184
|
var App = /*#__PURE__*/React.createElement(this.App, {
|
|
235
185
|
context: Object.assign(context, {
|
|
@@ -254,7 +204,6 @@ var Entry = /*#__PURE__*/function () {
|
|
|
254
204
|
this.logger.error('App Render To HTML', e);
|
|
255
205
|
this.metrics.emitCounter('app.render.html.error', 1);
|
|
256
206
|
}
|
|
257
|
-
|
|
258
207
|
return html;
|
|
259
208
|
}
|
|
260
209
|
}, {
|
|
@@ -267,8 +216,6 @@ var Entry = /*#__PURE__*/function () {
|
|
|
267
216
|
};
|
|
268
217
|
}
|
|
269
218
|
}]);
|
|
270
|
-
|
|
271
219
|
return Entry;
|
|
272
220
|
}();
|
|
273
|
-
|
|
274
221
|
export { Entry as default };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
|
|
2
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
3
|
+
import { run } from '@modern-js/utils/ssr';
|
|
4
|
+
import { PreRender } from "../../react/prerender";
|
|
5
|
+
import { time } from "../utils";
|
|
6
|
+
import SSREntry from "./entry";
|
|
7
|
+
export var render = function render(_ref) {
|
|
8
|
+
var App = _ref.App,
|
|
9
|
+
context = _ref.context,
|
|
10
|
+
config = _ref.config;
|
|
11
|
+
var ssrContext = context.ssrContext;
|
|
12
|
+
return run(ssrContext.request.headers, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
13
|
+
var entry, end, html, cost, cacheConfig;
|
|
14
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
15
|
+
while (1) {
|
|
16
|
+
switch (_context.prev = _context.next) {
|
|
17
|
+
case 0:
|
|
18
|
+
entry = new SSREntry({
|
|
19
|
+
ctx: ssrContext,
|
|
20
|
+
App: App,
|
|
21
|
+
config: config
|
|
22
|
+
});
|
|
23
|
+
entry.metrics.emitCounter('app.visit.count', 1);
|
|
24
|
+
end = time();
|
|
25
|
+
_context.next = 5;
|
|
26
|
+
return entry.renderToHtml(context);
|
|
27
|
+
case 5:
|
|
28
|
+
html = _context.sent;
|
|
29
|
+
cost = end();
|
|
30
|
+
entry.logger.info('App Render Total cost = %d ms', cost);
|
|
31
|
+
entry.metrics.emitTimer('app.render.cost', cost);
|
|
32
|
+
cacheConfig = PreRender.config();
|
|
33
|
+
if (cacheConfig) {
|
|
34
|
+
context.ssrContext.cacheConfig = cacheConfig;
|
|
35
|
+
}
|
|
36
|
+
return _context.abrupt("return", html);
|
|
37
|
+
case 12:
|
|
38
|
+
case "end":
|
|
39
|
+
return _context.stop();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}, _callee);
|
|
43
|
+
})));
|
|
44
|
+
};
|