@modern-js/runtime 2.54.6 → 2.55.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/dist/cjs/{ssr/serverRender/renderToString/index.js → cli/alias.js} +29 -18
- package/dist/cjs/cli/code.js +124 -0
- package/dist/cjs/cli/constants.js +23 -2
- package/dist/cjs/cli/index.js +92 -17
- package/dist/cjs/{ssr/cli → cli/ssr}/index.js +7 -86
- package/dist/cjs/cli/template.js +101 -0
- package/dist/cjs/cli/template.server.js +71 -0
- package/dist/cjs/core/browser/hydrate.js +116 -0
- package/dist/cjs/core/browser/index.js +122 -0
- package/dist/cjs/core/compatible.js +39 -74
- package/dist/cjs/{ssr/serverRender/types.js → core/constants.js} +3 -3
- package/dist/cjs/core/context/index.js +39 -2
- package/dist/cjs/core/context/runtime.js +3 -3
- package/dist/cjs/core/loader/useLoader.js +2 -2
- package/dist/cjs/core/plugin/base.js +0 -4
- package/dist/cjs/core/plugin/index.js +6 -0
- package/dist/cjs/core/react/index.js +51 -0
- package/dist/cjs/{ssr/serverRender → core/server}/helmet.js +11 -2
- package/dist/cjs/core/server/index.js +38 -0
- package/dist/cjs/core/server/requestHandler.js +156 -0
- package/dist/cjs/core/server/server.js +34 -0
- package/dist/cjs/{ssr/serverRender/renderToStream/buildTemplate.share.js → core/server/shared.js} +7 -10
- package/dist/cjs/core/server/stream/afterTemplate.js +80 -0
- package/dist/cjs/{ssr/serverRender/renderToStream/bulidTemplate.before.js → core/server/stream/beforeTemplate.js} +11 -12
- package/dist/cjs/core/server/stream/createReadableStream.js +124 -0
- package/dist/cjs/core/server/stream/createReadableStream.worker.js +105 -0
- package/dist/cjs/core/server/stream/index.js +30 -0
- package/dist/cjs/core/server/stream/shared.js +112 -0
- package/dist/cjs/{ssr/serverRender/renderToStream → core/server/stream}/template.js +6 -10
- package/dist/cjs/core/server/string/index.js +152 -0
- package/dist/cjs/{ssr/serverRender/renderToString → core/server/string}/loadable.js +9 -12
- package/dist/cjs/core/server/string/prefetch.js +112 -0
- package/dist/cjs/core/server/string/ssrData.js +100 -0
- package/dist/cjs/{ssr/serverRender/renderToString → core/server/string}/styledComponent.js +20 -11
- package/dist/cjs/core/server/string/types.js +16 -0
- package/dist/cjs/core/server/tracer.js +60 -0
- package/dist/cjs/{ssr/serverRender → core/server}/utils.js +48 -2
- package/dist/cjs/router/cli/code/index.js +10 -6
- package/dist/cjs/router/cli/code/templates.js +58 -3
- package/dist/cjs/router/cli/constants.js +6 -0
- package/dist/cjs/router/cli/entry.js +2 -4
- package/dist/cjs/router/cli/handler.js +22 -5
- package/dist/cjs/router/cli/index.js +29 -56
- package/dist/cjs/router/runtime/index.js +2 -0
- package/dist/cjs/router/runtime/plugin.js +13 -40
- package/dist/cjs/router/runtime/plugin.node.js +17 -32
- package/dist/cjs/state/cli/index.js +7 -35
- package/dist/cjs/state/runtime/plugin.js +6 -15
- package/dist/esm/cli/alias.js +30 -0
- package/dist/esm/cli/code.js +131 -0
- package/dist/esm/cli/constants.js +15 -1
- package/dist/esm/cli/index.js +111 -18
- package/dist/esm/{ssr/cli → cli/ssr}/babel-plugin-ssr-loader-id.js +1 -1
- package/dist/esm/cli/ssr/index.js +110 -0
- package/dist/esm/{ssr/cli → cli/ssr}/loadable-bundler-plugin.js +1 -1
- package/dist/esm/cli/template.js +53 -0
- package/dist/esm/cli/template.server.js +26 -0
- package/dist/esm/core/browser/hydrate.js +88 -0
- package/dist/esm/core/browser/index.js +224 -0
- package/dist/esm/core/compatible.js +48 -90
- package/dist/esm/core/context/index.js +32 -1
- package/dist/esm/core/context/runtime.js +3 -2
- package/dist/esm/core/loader/useLoader.js +2 -2
- package/dist/esm/core/plugin/base.js +0 -4
- package/dist/esm/core/plugin/index.js +10 -0
- package/dist/esm/core/react/index.js +31 -0
- package/dist/esm/{ssr/serverRender → core/server}/helmet.js +10 -2
- package/dist/esm/core/server/index.js +16 -0
- package/dist/esm/core/server/react/prerender/type.js +0 -0
- package/dist/esm/core/server/requestHandler.js +181 -0
- package/dist/esm/core/server/server.js +8 -0
- package/dist/esm/core/server/shared.js +10 -0
- package/dist/esm/core/server/stream/afterTemplate.js +60 -0
- package/dist/esm/{ssr/serverRender/renderToStream/bulidTemplate.before.js → core/server/stream/beforeTemplate.js} +10 -11
- package/dist/esm/{ssr/serverRender/renderToStream/renderToPipe.js → core/server/stream/createReadableStream.js} +43 -38
- package/dist/esm/core/server/stream/createReadableStream.worker.js +142 -0
- package/dist/esm/core/server/stream/index.js +6 -0
- package/dist/esm/core/server/stream/shared.js +102 -0
- package/dist/esm/core/server/stream/template.js +42 -0
- package/dist/esm/core/server/string/index.js +219 -0
- package/dist/esm/{ssr/serverRender/renderToString → core/server/string}/loadable.js +10 -13
- package/dist/esm/{ssr → core/server/string}/prefetch.js +27 -21
- package/dist/esm/core/server/string/ssrData.js +83 -0
- package/dist/esm/core/server/string/styledComponent.js +34 -0
- package/dist/esm/core/server/string/types.js +0 -0
- package/dist/esm/core/server/tracer.js +34 -0
- package/dist/esm/core/server/utils.js +83 -0
- package/dist/esm/router/cli/code/index.js +11 -8
- package/dist/esm/router/cli/code/templates.js +100 -7
- package/dist/esm/router/cli/constants.js +4 -0
- package/dist/esm/router/cli/entry.js +2 -4
- package/dist/esm/router/cli/handler.js +70 -8
- package/dist/esm/router/cli/index.js +52 -65
- package/dist/esm/router/runtime/index.js +1 -0
- package/dist/esm/router/runtime/plugin.js +12 -20
- package/dist/esm/router/runtime/plugin.node.js +19 -34
- package/dist/esm/state/cli/index.js +9 -38
- package/dist/esm/state/runtime/plugin.js +5 -5
- package/dist/esm-node/cli/alias.js +28 -0
- package/dist/esm-node/cli/code.js +90 -0
- package/dist/esm-node/cli/constants.js +15 -1
- package/dist/esm-node/cli/index.js +84 -13
- package/dist/esm-node/{ssr/cli → cli/ssr}/babel-plugin-ssr-loader-id.js +1 -1
- package/dist/esm-node/cli/ssr/index.js +87 -0
- package/dist/esm-node/{ssr/cli → cli/ssr}/loadable-bundler-plugin.js +1 -1
- package/dist/esm-node/cli/template.js +64 -0
- package/dist/esm-node/cli/template.server.js +47 -0
- package/dist/esm-node/core/browser/hydrate.js +81 -0
- package/dist/esm-node/core/browser/index.js +88 -0
- package/dist/esm-node/core/compatible.js +39 -74
- package/dist/esm-node/core/context/index.js +32 -1
- package/dist/esm-node/core/context/runtime.js +3 -3
- package/dist/esm-node/core/loader/useLoader.js +2 -2
- package/dist/esm-node/core/plugin/base.js +0 -4
- package/dist/esm-node/core/plugin/index.js +5 -0
- package/dist/esm-node/core/react/index.js +27 -0
- package/dist/esm-node/{ssr/serverRender → core/server}/helmet.js +6 -2
- package/dist/esm-node/core/server/index.js +12 -0
- package/dist/esm-node/core/server/requestHandler.js +132 -0
- package/dist/esm-node/core/server/server.js +8 -0
- package/dist/esm-node/core/server/shared.js +6 -0
- package/dist/esm-node/core/server/stream/afterTemplate.js +56 -0
- package/dist/esm-node/{ssr/serverRender/renderToStream/bulidTemplate.before.js → core/server/stream/beforeTemplate.js} +8 -9
- package/dist/esm-node/{ssr/serverRender/renderToStream/renderToPipe.js → core/server/stream/createReadableStream.js} +41 -35
- package/dist/esm-node/core/server/stream/createReadableStream.worker.js +71 -0
- package/dist/esm-node/core/server/stream/index.js +6 -0
- package/dist/esm-node/core/server/stream/shared.js +75 -0
- package/dist/esm-node/core/server/stream/template.js +15 -0
- package/dist/esm-node/core/server/string/index.js +118 -0
- package/dist/esm-node/{ssr/serverRender/renderToString → core/server/string}/loadable.js +8 -11
- package/dist/esm-node/core/server/string/prefetch.js +78 -0
- package/dist/esm-node/core/server/string/ssrData.js +76 -0
- package/dist/esm-node/core/server/string/styledComponent.js +29 -0
- package/dist/esm-node/core/server/tracer.js +33 -0
- package/dist/esm-node/core/server/utils.js +60 -0
- package/dist/esm-node/router/cli/code/index.js +8 -5
- package/dist/esm-node/router/cli/code/templates.js +60 -6
- package/dist/esm-node/router/cli/constants.js +4 -0
- package/dist/esm-node/router/cli/entry.js +2 -4
- package/dist/esm-node/router/cli/handler.js +21 -5
- package/dist/esm-node/router/cli/index.js +31 -58
- package/dist/esm-node/router/runtime/index.js +1 -0
- package/dist/esm-node/router/runtime/plugin.js +13 -30
- package/dist/esm-node/router/runtime/plugin.node.js +18 -33
- package/dist/esm-node/state/cli/index.js +8 -36
- package/dist/esm-node/state/runtime/plugin.js +5 -5
- package/dist/types/cli/alias.d.ts +7 -0
- package/dist/types/cli/code.d.ts +10 -0
- package/dist/types/cli/constants.d.ts +7 -0
- package/dist/types/cli/index.d.ts +8 -1
- package/dist/types/cli/template.d.ts +27 -0
- package/dist/types/cli/template.server.d.ts +15 -0
- package/dist/types/common.d.ts +9 -0
- package/dist/types/core/browser/hydrate.d.ts +5 -0
- package/dist/types/core/browser/index.d.ts +2 -0
- package/dist/types/core/config.d.ts +5 -6
- package/dist/types/core/constants.d.ts +5 -0
- package/dist/types/core/context/index.d.ts +34 -1
- package/dist/types/core/context/runtime.d.ts +2 -2
- package/dist/types/core/plugin/base.d.ts +3 -33
- package/dist/types/core/plugin/index.d.ts +2 -11
- package/dist/types/core/plugin/runner.d.ts +1 -11
- package/dist/types/core/react/index.d.ts +6 -0
- package/dist/types/core/server/helmet.d.ts +3 -0
- package/dist/types/core/server/index.d.ts +4 -0
- package/dist/types/core/server/requestHandler.d.ts +11 -0
- package/dist/types/core/server/server.d.ts +4 -0
- package/dist/types/core/server/shared.d.ts +9 -0
- package/dist/types/core/server/stream/afterTemplate.d.ts +12 -0
- package/dist/types/core/server/stream/beforeTemplate.d.ts +8 -0
- package/dist/types/core/server/stream/createReadableStream.d.ts +2 -0
- package/dist/types/core/server/stream/createReadableStream.worker.d.ts +2 -0
- package/dist/types/core/server/stream/index.d.ts +1 -0
- package/dist/types/core/server/stream/shared.d.ts +22 -0
- package/dist/types/core/server/stream/template.d.ts +9 -0
- package/dist/types/core/server/string/index.d.ts +2 -0
- package/dist/types/core/server/string/loadable.d.ts +35 -0
- package/dist/types/core/server/string/prefetch.d.ts +15 -0
- package/dist/types/core/server/string/ssrData.d.ts +18 -0
- package/dist/types/core/server/string/styledComponent.d.ts +11 -0
- package/dist/types/core/server/string/types.d.ts +12 -0
- package/dist/types/core/server/tracer.d.ts +21 -0
- package/dist/types/core/server/utils.d.ts +19 -0
- package/dist/types/core/types.d.ts +35 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/router/cli/code/index.d.ts +3 -4
- package/dist/types/router/cli/code/templates.d.ts +9 -1
- package/dist/types/router/cli/constants.d.ts +2 -0
- package/dist/types/router/cli/handler.d.ts +1 -0
- package/dist/types/router/runtime/index.d.ts +1 -0
- package/dist/types/router/runtime/plugin.d.ts +1 -1
- package/dist/types/router/runtime/plugin.node.d.ts +2 -2
- package/dist/types/router/runtime/types.d.ts +1 -2
- package/dist/types/state/runtime/plugin.d.ts +2 -2
- package/package.json +49 -42
- package/types/router.d.ts +7 -2
- package/dist/cjs/ssr/index.js +0 -183
- package/dist/cjs/ssr/index.node.js +0 -86
- package/dist/cjs/ssr/prefetch.js +0 -92
- package/dist/cjs/ssr/serverRender/index.js +0 -39
- package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -74
- package/dist/cjs/ssr/serverRender/renderToStream/index.js +0 -74
- package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.js +0 -104
- package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.worker.js +0 -108
- package/dist/cjs/ssr/serverRender/renderToString/buildHtml.js +0 -52
- package/dist/cjs/ssr/serverRender/renderToString/entry.js +0 -179
- package/dist/cjs/ssr/serverRender/renderToString/render.js +0 -61
- package/dist/cjs/ssr/serverRender/tracker.js +0 -113
- package/dist/cjs/ssr/utils.js +0 -94
- package/dist/esm/ssr/cli/index.js +0 -194
- package/dist/esm/ssr/index.js +0 -169
- package/dist/esm/ssr/index.node.js +0 -78
- package/dist/esm/ssr/serverRender/index.js +0 -55
- package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -48
- package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.share.js +0 -12
- package/dist/esm/ssr/serverRender/renderToStream/index.js +0 -49
- package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.worker.js +0 -164
- package/dist/esm/ssr/serverRender/renderToStream/template.js +0 -46
- package/dist/esm/ssr/serverRender/renderToString/buildHtml.js +0 -34
- package/dist/esm/ssr/serverRender/renderToString/entry.js +0 -257
- package/dist/esm/ssr/serverRender/renderToString/index.js +0 -34
- package/dist/esm/ssr/serverRender/renderToString/render.js +0 -55
- package/dist/esm/ssr/serverRender/renderToString/styledComponent.js +0 -25
- package/dist/esm/ssr/serverRender/tracker.js +0 -82
- package/dist/esm/ssr/serverRender/utils.js +0 -21
- package/dist/esm/ssr/utils.js +0 -59
- package/dist/esm-node/ssr/cli/index.js +0 -166
- package/dist/esm-node/ssr/index.js +0 -147
- package/dist/esm-node/ssr/index.node.js +0 -50
- package/dist/esm-node/ssr/prefetch.js +0 -72
- package/dist/esm-node/ssr/serverRender/index.js +0 -19
- package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -50
- package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.share.js +0 -8
- package/dist/esm-node/ssr/serverRender/renderToStream/index.js +0 -40
- package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.worker.js +0 -88
- package/dist/esm-node/ssr/serverRender/renderToStream/template.js +0 -19
- package/dist/esm-node/ssr/serverRender/renderToString/buildHtml.js +0 -24
- package/dist/esm-node/ssr/serverRender/renderToString/entry.js +0 -149
- package/dist/esm-node/ssr/serverRender/renderToString/index.js +0 -17
- package/dist/esm-node/ssr/serverRender/renderToString/render.js +0 -27
- package/dist/esm-node/ssr/serverRender/renderToString/styledComponent.js +0 -20
- package/dist/esm-node/ssr/serverRender/tracker.js +0 -87
- package/dist/esm-node/ssr/serverRender/utils.js +0 -17
- package/dist/esm-node/ssr/utils.js +0 -57
- package/dist/types/ssr/index.d.ts +0 -11
- package/dist/types/ssr/index.node.d.ts +0 -5
- package/dist/types/ssr/prefetch.d.ts +0 -16
- package/dist/types/ssr/serverRender/helmet.d.ts +0 -2
- package/dist/types/ssr/serverRender/index.d.ts +0 -2
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +0 -7
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.share.d.ts +0 -3
- package/dist/types/ssr/serverRender/renderToStream/bulidTemplate.before.d.ts +0 -2
- package/dist/types/ssr/serverRender/renderToStream/index.d.ts +0 -3
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +0 -7
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.worker.d.ts +0 -12
- package/dist/types/ssr/serverRender/renderToStream/template.d.ts +0 -6
- package/dist/types/ssr/serverRender/renderToString/buildHtml.d.ts +0 -6
- package/dist/types/ssr/serverRender/renderToString/entry.d.ts +0 -24
- package/dist/types/ssr/serverRender/renderToString/index.d.ts +0 -2
- package/dist/types/ssr/serverRender/renderToString/loadable.d.ts +0 -26
- package/dist/types/ssr/serverRender/renderToString/render.d.ts +0 -16
- package/dist/types/ssr/serverRender/renderToString/styledComponent.d.ts +0 -15
- package/dist/types/ssr/serverRender/tracker.d.ts +0 -20
- package/dist/types/ssr/serverRender/types.d.ts +0 -49
- package/dist/types/ssr/serverRender/utils.d.ts +0 -9
- package/dist/types/ssr/utils.d.ts +0 -10
- /package/dist/cjs/{ssr/cli → cli/ssr}/babel-plugin-ssr-loader-id.js +0 -0
- /package/dist/cjs/{ssr/cli → cli/ssr}/loadable-bundler-plugin.js +0 -0
- /package/dist/cjs/{ssr/react/withCallback/index.js → core/browser/withCallback.js} +0 -0
- /package/dist/cjs/{ssr/serverRender → core/server}/constants.js +0 -0
- /package/dist/cjs/{ssr → core/server}/react/index.js +0 -0
- /package/dist/cjs/{ssr → core/server}/react/nossr/index.js +0 -0
- /package/dist/cjs/{ssr → core/server}/react/prerender/index.js +0 -0
- /package/dist/cjs/{ssr → core/server}/react/prerender/type.js +0 -0
- /package/dist/cjs/{ssr → core/server}/react/prerender/util.js +0 -0
- /package/dist/esm/{ssr/react/withCallback/index.js → core/browser/withCallback.js} +0 -0
- /package/dist/esm/{ssr/serverRender/types.js → core/constants.js} +0 -0
- /package/dist/esm/{ssr/serverRender → core/server}/constants.js +0 -0
- /package/dist/esm/{ssr → core/server}/react/index.js +0 -0
- /package/dist/esm/{ssr → core/server}/react/nossr/index.js +0 -0
- /package/dist/esm/{ssr → core/server}/react/prerender/index.js +0 -0
- /package/dist/esm/{ssr → core/server}/react/prerender/util.js +0 -0
- /package/dist/esm-node/{ssr/react/withCallback/index.js → core/browser/withCallback.js} +0 -0
- /package/dist/esm-node/{ssr/serverRender/types.js → core/constants.js} +0 -0
- /package/dist/esm-node/{ssr/serverRender → core/server}/constants.js +0 -0
- /package/dist/esm-node/{ssr → core/server}/react/index.js +0 -0
- /package/dist/esm-node/{ssr → core/server}/react/nossr/index.js +0 -0
- /package/dist/esm-node/{ssr → core/server}/react/prerender/index.js +0 -0
- /package/dist/esm-node/{ssr → core/server}/react/prerender/type.js +0 -0
- /package/dist/esm-node/{ssr → core/server}/react/prerender/util.js +0 -0
- /package/dist/{esm/ssr/react/prerender/type.js → esm-node/core/server/string/types.js} +0 -0
- /package/dist/types/{ssr/cli → cli/ssr}/babel-plugin-ssr-loader-id.d.ts +0 -0
- /package/dist/types/{ssr/cli → cli/ssr}/index.d.ts +0 -0
- /package/dist/types/{ssr/cli → cli/ssr}/loadable-bundler-plugin.d.ts +0 -0
- /package/dist/types/{ssr/react/withCallback/index.d.ts → core/browser/withCallback.d.ts} +0 -0
- /package/dist/types/{ssr/serverRender → core/server}/constants.d.ts +0 -0
- /package/dist/types/{ssr → core/server}/react/index.d.ts +0 -0
- /package/dist/types/{ssr → core/server}/react/nossr/index.d.ts +0 -0
- /package/dist/types/{ssr → core/server}/react/prerender/index.d.ts +0 -0
- /package/dist/types/{ssr → core/server}/react/prerender/type.d.ts +0 -0
- /package/dist/types/{ssr → core/server}/react/prerender/util.d.ts +0 -0
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { renderToStaticMarkup } from "react-dom/server";
|
|
3
|
-
import { run } from "@modern-js/runtime-utils/node";
|
|
4
|
-
import { ChunkExtractor } from "@loadable/server";
|
|
5
|
-
import { time } from "@modern-js/runtime-utils/time";
|
|
6
|
-
import { SSRTimings, SSRErrors } from "./serverRender/tracker";
|
|
7
|
-
const prefetch = async (App, context, config, tracker) => run(context.ssrContext.request.headers, async () => {
|
|
8
|
-
var _context_store;
|
|
9
|
-
const { ssrContext } = context;
|
|
10
|
-
const { loadableStats } = ssrContext;
|
|
11
|
-
if (!config.disablePrerender) {
|
|
12
|
-
try {
|
|
13
|
-
const end = time();
|
|
14
|
-
if (loadableStats) {
|
|
15
|
-
const extractor = new ChunkExtractor({
|
|
16
|
-
stats: loadableStats,
|
|
17
|
-
entrypoints: [
|
|
18
|
-
ssrContext.entryName
|
|
19
|
-
].filter(Boolean)
|
|
20
|
-
});
|
|
21
|
-
renderToStaticMarkup(extractor.collectChunks(/* @__PURE__ */ _jsx(App, {
|
|
22
|
-
context
|
|
23
|
-
})));
|
|
24
|
-
} else {
|
|
25
|
-
renderToStaticMarkup(/* @__PURE__ */ _jsx(App, {
|
|
26
|
-
context
|
|
27
|
-
}));
|
|
28
|
-
}
|
|
29
|
-
const cost = end();
|
|
30
|
-
tracker.trackTiming(SSRTimings.PRERENDER, cost);
|
|
31
|
-
} catch (e) {
|
|
32
|
-
const error = e;
|
|
33
|
-
tracker.trackError(SSRErrors.PRERENDER, error);
|
|
34
|
-
throw e;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
if (!context.loaderManager.hasPendingLoaders()) {
|
|
38
|
-
return {
|
|
39
|
-
initialData: context.initialData,
|
|
40
|
-
i18nData: context.__i18nData__
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
let loadersData = {};
|
|
44
|
-
try {
|
|
45
|
-
const end = time();
|
|
46
|
-
loadersData = await context.loaderManager.awaitPendingLoaders();
|
|
47
|
-
const cost = end();
|
|
48
|
-
tracker.trackTiming(SSRTimings.USE_LOADER, cost);
|
|
49
|
-
} catch (e) {
|
|
50
|
-
const error = e;
|
|
51
|
-
tracker.trackError(SSRErrors.USE_LOADER, error);
|
|
52
|
-
throw e;
|
|
53
|
-
}
|
|
54
|
-
Object.keys(loadersData).forEach((id) => {
|
|
55
|
-
const data = loadersData[id];
|
|
56
|
-
if (data._error) {
|
|
57
|
-
ssrContext.logger.error("App Load use-loader", data._error);
|
|
58
|
-
delete data._error;
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
return {
|
|
62
|
-
loadersData,
|
|
63
|
-
initialData: context.initialData,
|
|
64
|
-
i18nData: context.__i18nData__,
|
|
65
|
-
// todo: move to plugin state
|
|
66
|
-
storeState: context === null || context === void 0 ? void 0 : (_context_store = context.store) === null || _context_store === void 0 ? void 0 : _context_store.getState()
|
|
67
|
-
};
|
|
68
|
-
});
|
|
69
|
-
var prefetch_default = prefetch;
|
|
70
|
-
export {
|
|
71
|
-
prefetch_default as default
|
|
72
|
-
};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { isReact18 } from "../utils";
|
|
2
|
-
import { CHUNK_CSS_PLACEHOLDER } from "./constants";
|
|
3
|
-
async function serverRender(options) {
|
|
4
|
-
var _options_context_ssrContext;
|
|
5
|
-
if ((_options_context_ssrContext = options.context.ssrContext) === null || _options_context_ssrContext === void 0 ? void 0 : _options_context_ssrContext.template) {
|
|
6
|
-
var _options_context_ssrContext1;
|
|
7
|
-
options.context.ssrContext.template = (_options_context_ssrContext1 = options.context.ssrContext) === null || _options_context_ssrContext1 === void 0 ? void 0 : _options_context_ssrContext1.template.replace("</head>", `${CHUNK_CSS_PLACEHOLDER}</head>`);
|
|
8
|
-
}
|
|
9
|
-
if (isReact18() && options.config.mode === "stream") {
|
|
10
|
-
const pipe = await require("./renderToStream").render(options);
|
|
11
|
-
return pipe;
|
|
12
|
-
} else {
|
|
13
|
-
const html = await require("./renderToString").render(options);
|
|
14
|
-
return html;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
export {
|
|
18
|
-
serverRender as default
|
|
19
|
-
};
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { serializeJson } from "@modern-js/runtime-utils/node";
|
|
2
|
-
import { attributesToString, safeReplace } from "../utils";
|
|
3
|
-
import { SSR_DATA_PLACEHOLDER } from "../constants";
|
|
4
|
-
import { buildTemplate } from "./buildTemplate.share";
|
|
5
|
-
function buildShellAfterTemplate(afterAppTemplate, options) {
|
|
6
|
-
const callbacks = [
|
|
7
|
-
injectSSRDataScript
|
|
8
|
-
];
|
|
9
|
-
return buildTemplate(afterAppTemplate, callbacks);
|
|
10
|
-
function injectSSRDataScript(template) {
|
|
11
|
-
const ssrDataScript = buildSSRDataScript();
|
|
12
|
-
return safeReplace(template, SSR_DATA_PLACEHOLDER, ssrDataScript);
|
|
13
|
-
function buildSSRDataScript() {
|
|
14
|
-
const { context: { ssrContext, initialData, __i18nData__ }, renderLevel } = options;
|
|
15
|
-
const { request, enableUnsafeCtx, nonce, tracker } = ssrContext;
|
|
16
|
-
const unsafeContext = {
|
|
17
|
-
headers: request.headers
|
|
18
|
-
};
|
|
19
|
-
const SSRData = {
|
|
20
|
-
data: {
|
|
21
|
-
initialData,
|
|
22
|
-
i18nData: __i18nData__
|
|
23
|
-
},
|
|
24
|
-
context: {
|
|
25
|
-
reporter: {
|
|
26
|
-
sessionId: tracker.sessionId
|
|
27
|
-
},
|
|
28
|
-
request: {
|
|
29
|
-
params: request.params,
|
|
30
|
-
query: request.query,
|
|
31
|
-
pathname: request.pathname,
|
|
32
|
-
host: request.host,
|
|
33
|
-
url: request.url,
|
|
34
|
-
...enableUnsafeCtx ? unsafeContext : {}
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
renderLevel
|
|
38
|
-
};
|
|
39
|
-
const attrsStr = attributesToString({
|
|
40
|
-
nonce
|
|
41
|
-
});
|
|
42
|
-
return `
|
|
43
|
-
<script${attrsStr}>window._SSR_DATA = ${serializeJson(SSRData)}</script>
|
|
44
|
-
`;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
export {
|
|
49
|
-
buildShellAfterTemplate
|
|
50
|
-
};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
const HEAD_REG_EXP = /<head(.|\n)*>(.|\n)*<\/head>/;
|
|
2
|
-
function buildTemplate(template, callbacks) {
|
|
3
|
-
return callbacks.reduce((promise, buildTemplateCb) => promise.then((template2) => buildTemplateCb(template2)), Promise.resolve(template));
|
|
4
|
-
}
|
|
5
|
-
export {
|
|
6
|
-
HEAD_REG_EXP,
|
|
7
|
-
buildTemplate
|
|
8
|
-
};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { createElement } from "react";
|
|
2
|
-
import { run } from "@modern-js/runtime-utils/node";
|
|
3
|
-
import { time } from "@modern-js/runtime-utils/time";
|
|
4
|
-
import { SSRErrors, SSRTimings } from "../tracker";
|
|
5
|
-
import renderToPipe from "./renderToPipe";
|
|
6
|
-
const render = ({ App, context, config }) => {
|
|
7
|
-
const { ssrContext } = context;
|
|
8
|
-
if (!ssrContext) {
|
|
9
|
-
throw new Error('The "ssrContext" must not be undefined, but received undefined');
|
|
10
|
-
}
|
|
11
|
-
return run(ssrContext.request.headers, async () => {
|
|
12
|
-
const end = time();
|
|
13
|
-
const rootElement = createElement(App, {
|
|
14
|
-
context: Object.assign(context || {}, {
|
|
15
|
-
ssr: true
|
|
16
|
-
})
|
|
17
|
-
});
|
|
18
|
-
const { tracker } = ssrContext;
|
|
19
|
-
const stream = renderToPipe(rootElement, context, config, {
|
|
20
|
-
onShellReady() {
|
|
21
|
-
const cost = end();
|
|
22
|
-
tracker.trackTiming(SSRTimings.RENDER_SHELL, cost);
|
|
23
|
-
},
|
|
24
|
-
onAllReady() {
|
|
25
|
-
const cost = end();
|
|
26
|
-
tracker.trackTiming(SSRTimings.RENDER_HTML, cost);
|
|
27
|
-
},
|
|
28
|
-
onShellError(e) {
|
|
29
|
-
tracker.trackError(SSRErrors.RENDER_SHELL, e);
|
|
30
|
-
},
|
|
31
|
-
onError(error) {
|
|
32
|
-
tracker.trackError(SSRErrors.RENDER_STREAM, error);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
return stream;
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
export {
|
|
39
|
-
render
|
|
40
|
-
};
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { RenderLevel } from "../types";
|
|
2
|
-
import { ESCAPED_SHELL_STREAM_END_MARK } from "../../../common";
|
|
3
|
-
import { SSRErrors } from "../tracker";
|
|
4
|
-
import { getTemplates } from "./template";
|
|
5
|
-
var ShellChunkStatus;
|
|
6
|
-
(function(ShellChunkStatus2) {
|
|
7
|
-
ShellChunkStatus2[ShellChunkStatus2["START"] = 0] = "START";
|
|
8
|
-
ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
|
|
9
|
-
})(ShellChunkStatus || (ShellChunkStatus = {}));
|
|
10
|
-
function renderToPipe(rootElement, context, pluginConfig, options) {
|
|
11
|
-
let shellChunkStatus = 0;
|
|
12
|
-
const chunkVec = [];
|
|
13
|
-
const { ssrContext } = context;
|
|
14
|
-
const forUserPipe = async () => {
|
|
15
|
-
let renderToReadableStream;
|
|
16
|
-
try {
|
|
17
|
-
({ renderToReadableStream } = require("react-dom/server"));
|
|
18
|
-
} catch (e) {
|
|
19
|
-
}
|
|
20
|
-
const { shellAfter, shellBefore } = await getTemplates(context, RenderLevel.SERVER_RENDER, pluginConfig);
|
|
21
|
-
try {
|
|
22
|
-
var _options_onShellReady, _context_ssrContext;
|
|
23
|
-
const readableOriginal = await renderToReadableStream(rootElement, {
|
|
24
|
-
...options,
|
|
25
|
-
nonce: ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.nonce,
|
|
26
|
-
onError(error) {
|
|
27
|
-
var _options_onError;
|
|
28
|
-
options === null || options === void 0 ? void 0 : (_options_onError = options.onError) === null || _options_onError === void 0 ? void 0 : _options_onError.call(options, error);
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
options === null || options === void 0 ? void 0 : (_options_onShellReady = options.onShellReady) === null || _options_onShellReady === void 0 ? void 0 : _options_onShellReady.call(options);
|
|
32
|
-
readableOriginal.allReady.then(() => {
|
|
33
|
-
var _options_onAllReady;
|
|
34
|
-
options === null || options === void 0 ? void 0 : (_options_onAllReady = options.onAllReady) === null || _options_onAllReady === void 0 ? void 0 : _options_onAllReady.call(options);
|
|
35
|
-
});
|
|
36
|
-
if ((_context_ssrContext = context.ssrContext) === null || _context_ssrContext === void 0 ? void 0 : _context_ssrContext.isSpider) {
|
|
37
|
-
await readableOriginal.allReady;
|
|
38
|
-
}
|
|
39
|
-
const reader = readableOriginal.getReader();
|
|
40
|
-
const injectableStream = new ReadableStream({
|
|
41
|
-
start(controller) {
|
|
42
|
-
async function push() {
|
|
43
|
-
const { done, value } = await reader.read();
|
|
44
|
-
if (done) {
|
|
45
|
-
controller.close();
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
if (shellChunkStatus !== 1) {
|
|
49
|
-
const chunk = new TextDecoder().decode(value);
|
|
50
|
-
chunkVec.push(chunk);
|
|
51
|
-
let concatedChunk = chunkVec.join("");
|
|
52
|
-
if (concatedChunk.endsWith(ESCAPED_SHELL_STREAM_END_MARK)) {
|
|
53
|
-
concatedChunk = concatedChunk.replace(ESCAPED_SHELL_STREAM_END_MARK, "");
|
|
54
|
-
shellChunkStatus = 1;
|
|
55
|
-
controller.enqueue(encodeForWebStream(`${shellBefore}${concatedChunk}${shellAfter}`));
|
|
56
|
-
}
|
|
57
|
-
} else {
|
|
58
|
-
controller.enqueue(value);
|
|
59
|
-
}
|
|
60
|
-
push();
|
|
61
|
-
}
|
|
62
|
-
push();
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
return injectableStream;
|
|
66
|
-
} catch (err) {
|
|
67
|
-
ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.tracker.trackError(SSRErrors.RENDER_SHELL, err);
|
|
68
|
-
const { shellAfter: shellAfter2, shellBefore: shellBefore2 } = await getTemplates(context, RenderLevel.CLIENT_RENDER, pluginConfig);
|
|
69
|
-
const fallbackHtml = `${shellBefore2}${shellAfter2}`;
|
|
70
|
-
return fallbackHtml;
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
return forUserPipe();
|
|
74
|
-
}
|
|
75
|
-
let encoder;
|
|
76
|
-
function encodeForWebStream(thing) {
|
|
77
|
-
if (!encoder) {
|
|
78
|
-
encoder = new TextEncoder();
|
|
79
|
-
}
|
|
80
|
-
if (typeof thing === "string") {
|
|
81
|
-
return encoder.encode(thing);
|
|
82
|
-
}
|
|
83
|
-
return thing;
|
|
84
|
-
}
|
|
85
|
-
var renderToPipe_worker_default = renderToPipe;
|
|
86
|
-
export {
|
|
87
|
-
renderToPipe_worker_default as default
|
|
88
|
-
};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { buildShellAfterTemplate } from "./buildTemplate.after";
|
|
2
|
-
import { buildShellBeforeTemplate } from "./bulidTemplate.before";
|
|
3
|
-
const HTML_SEPARATOR = "<!--<?- html ?>-->";
|
|
4
|
-
const getTemplates = async (context, renderLevel, pluginConfig, styledComponentsStyleTags) => {
|
|
5
|
-
const { ssrContext } = context;
|
|
6
|
-
const [beforeAppTemplate = "", afterAppHtmlTemplate = ""] = ssrContext.template.split(HTML_SEPARATOR) || [];
|
|
7
|
-
const builtBeforeTemplate = await buildShellBeforeTemplate(beforeAppTemplate, context, pluginConfig, styledComponentsStyleTags);
|
|
8
|
-
const builtAfterTemplate = await buildShellAfterTemplate(afterAppHtmlTemplate, {
|
|
9
|
-
context,
|
|
10
|
-
renderLevel
|
|
11
|
-
});
|
|
12
|
-
return {
|
|
13
|
-
shellBefore: builtBeforeTemplate,
|
|
14
|
-
shellAfter: builtAfterTemplate
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
export {
|
|
18
|
-
getTemplates
|
|
19
|
-
};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { safeReplace } from "../utils";
|
|
2
|
-
import { HTML_PLACEHOLDER, SSR_DATA_PLACEHOLDER, CHUNK_JS_PLACEHOLDER, CHUNK_CSS_PLACEHOLDER } from "../constants";
|
|
3
|
-
function buildHtml(template, callbacks) {
|
|
4
|
-
return callbacks.reduce((tmp, cb) => cb(tmp), template);
|
|
5
|
-
}
|
|
6
|
-
function createReplaceHtml(html) {
|
|
7
|
-
return (template) => safeReplace(template, HTML_PLACEHOLDER, html);
|
|
8
|
-
}
|
|
9
|
-
function createReplaceSSRDataScript(data) {
|
|
10
|
-
return (template) => safeReplace(template, SSR_DATA_PLACEHOLDER, data);
|
|
11
|
-
}
|
|
12
|
-
function createReplaceChunkJs(js) {
|
|
13
|
-
return (template) => safeReplace(template, CHUNK_JS_PLACEHOLDER, js);
|
|
14
|
-
}
|
|
15
|
-
function createReplaceChunkCss(css) {
|
|
16
|
-
return (template) => safeReplace(template, CHUNK_CSS_PLACEHOLDER, css);
|
|
17
|
-
}
|
|
18
|
-
export {
|
|
19
|
-
buildHtml,
|
|
20
|
-
createReplaceChunkCss,
|
|
21
|
-
createReplaceChunkJs,
|
|
22
|
-
createReplaceHtml,
|
|
23
|
-
createReplaceSSRDataScript
|
|
24
|
-
};
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { serializeJson } from "@modern-js/runtime-utils/node";
|
|
3
|
-
import { time } from "@modern-js/runtime-utils/time";
|
|
4
|
-
import { serializeErrors } from "../../../router/runtime/utils";
|
|
5
|
-
import helmetReplace from "../helmet";
|
|
6
|
-
import { RenderLevel } from "../types";
|
|
7
|
-
import prefetch from "../../prefetch";
|
|
8
|
-
import { ROUTER_DATA_JSON_ID, SSR_DATA_JSON_ID } from "../constants";
|
|
9
|
-
import { attributesToString } from "../utils";
|
|
10
|
-
import { SSRErrors, SSRTimings } from "../tracker";
|
|
11
|
-
import { createLoadableCollector } from "./loadable";
|
|
12
|
-
import { createRender } from "./render";
|
|
13
|
-
import { createStyledCollector } from "./styledComponent";
|
|
14
|
-
import { buildHtml, createReplaceChunkCss, createReplaceChunkJs, createReplaceHtml, createReplaceSSRDataScript } from "./buildHtml";
|
|
15
|
-
const buildTemplateData = (context, data, renderLevel, tracker, config) => {
|
|
16
|
-
const { request } = context;
|
|
17
|
-
const { unsafeHeaders } = config;
|
|
18
|
-
const headers = unsafeHeaders ? Object.fromEntries(Object.entries(request.headers).filter(([key, _]) => {
|
|
19
|
-
var _unsafeHeaders_map;
|
|
20
|
-
return unsafeHeaders === null || unsafeHeaders === void 0 ? void 0 : (_unsafeHeaders_map = unsafeHeaders.map((header) => header.toLowerCase())) === null || _unsafeHeaders_map === void 0 ? void 0 : _unsafeHeaders_map.includes(key.toLowerCase());
|
|
21
|
-
})) : void 0;
|
|
22
|
-
return {
|
|
23
|
-
data,
|
|
24
|
-
context: {
|
|
25
|
-
request: {
|
|
26
|
-
params: request.params,
|
|
27
|
-
query: request.query,
|
|
28
|
-
pathname: request.pathname,
|
|
29
|
-
host: request.host,
|
|
30
|
-
url: request.url,
|
|
31
|
-
headers
|
|
32
|
-
},
|
|
33
|
-
reporter: {
|
|
34
|
-
sessionId: tracker.sessionId
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
renderLevel
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
class Entry {
|
|
41
|
-
async renderToHtml(context) {
|
|
42
|
-
var _ssrContext_redirection, _ssrContext_redirection1, _ssrContext_redirection2;
|
|
43
|
-
const ssrContext = context.ssrContext;
|
|
44
|
-
if ((_ssrContext_redirection = ssrContext.redirection) === null || _ssrContext_redirection === void 0 ? void 0 : _ssrContext_redirection.url) {
|
|
45
|
-
return "";
|
|
46
|
-
}
|
|
47
|
-
const prefetchData = await this.prefetch(context);
|
|
48
|
-
if ((_ssrContext_redirection1 = ssrContext.redirection) === null || _ssrContext_redirection1 === void 0 ? void 0 : _ssrContext_redirection1.url) {
|
|
49
|
-
return "";
|
|
50
|
-
}
|
|
51
|
-
if (this.result.renderLevel >= RenderLevel.SERVER_PREFETCH) {
|
|
52
|
-
this.result.html = await this.renderToString(context);
|
|
53
|
-
}
|
|
54
|
-
if ((_ssrContext_redirection2 = ssrContext.redirection) === null || _ssrContext_redirection2 === void 0 ? void 0 : _ssrContext_redirection2.url) {
|
|
55
|
-
return "";
|
|
56
|
-
}
|
|
57
|
-
const { routerContext } = context;
|
|
58
|
-
const routerData = routerContext ? {
|
|
59
|
-
loaderData: routerContext.loaderData,
|
|
60
|
-
errors: serializeErrors(routerContext.errors)
|
|
61
|
-
} : void 0;
|
|
62
|
-
const templateData = buildTemplateData(ssrContext, prefetchData, this.result.renderLevel, this.tracker, this.pluginConfig);
|
|
63
|
-
const ssrDataScripts = this.getSSRDataScript(templateData, routerData);
|
|
64
|
-
const html = buildHtml(this.template, [
|
|
65
|
-
createReplaceChunkCss(this.result.chunksMap.css),
|
|
66
|
-
createReplaceChunkJs(this.result.chunksMap.js),
|
|
67
|
-
createReplaceSSRDataScript(ssrDataScripts),
|
|
68
|
-
createReplaceHtml(this.result.html || ""),
|
|
69
|
-
...this.htmlModifiers
|
|
70
|
-
]);
|
|
71
|
-
const helmetData = this.result.helmet;
|
|
72
|
-
return helmetData ? helmetReplace(html, helmetData) : html;
|
|
73
|
-
}
|
|
74
|
-
async prefetch(context) {
|
|
75
|
-
let prefetchData;
|
|
76
|
-
try {
|
|
77
|
-
prefetchData = await prefetch(this.App, context, this.pluginConfig, this.tracker);
|
|
78
|
-
this.result.renderLevel = RenderLevel.SERVER_PREFETCH;
|
|
79
|
-
} catch (e) {
|
|
80
|
-
this.result.renderLevel = RenderLevel.CLIENT_RENDER;
|
|
81
|
-
}
|
|
82
|
-
return prefetchData || {};
|
|
83
|
-
}
|
|
84
|
-
async renderToString(context) {
|
|
85
|
-
let html = "";
|
|
86
|
-
const end = time();
|
|
87
|
-
const { ssrContext } = context;
|
|
88
|
-
try {
|
|
89
|
-
const App = React.createElement(this.App, {
|
|
90
|
-
context: Object.assign(context, {
|
|
91
|
-
ssr: true
|
|
92
|
-
})
|
|
93
|
-
});
|
|
94
|
-
html = await createRender(App, this.result).addCollector(createStyledCollector(this.result)).addCollector(createLoadableCollector({
|
|
95
|
-
stats: ssrContext.loadableStats,
|
|
96
|
-
result: this.result,
|
|
97
|
-
entryName: this.entryName,
|
|
98
|
-
config: this.pluginConfig,
|
|
99
|
-
nonce: this.nonce,
|
|
100
|
-
template: this.template,
|
|
101
|
-
routeManifest: this.routeManifest
|
|
102
|
-
})).finish();
|
|
103
|
-
const cost = end();
|
|
104
|
-
this.tracker.trackTiming(SSRTimings.RENDER_HTML, cost);
|
|
105
|
-
this.result.renderLevel = RenderLevel.SERVER_RENDER;
|
|
106
|
-
} catch (e) {
|
|
107
|
-
this.tracker.trackError(SSRErrors.RENDER_HTML, e);
|
|
108
|
-
}
|
|
109
|
-
return html;
|
|
110
|
-
}
|
|
111
|
-
getSSRDataScript(templateData, routerData) {
|
|
112
|
-
const useInlineScript = this.pluginConfig.inlineScript !== false;
|
|
113
|
-
const ssrData = serializeJson(templateData);
|
|
114
|
-
const attrsStr = attributesToString({
|
|
115
|
-
nonce: this.nonce
|
|
116
|
-
});
|
|
117
|
-
let ssrDataScripts = useInlineScript ? `<script${attrsStr}>window._SSR_DATA = ${ssrData}</script>` : `<script type="application/json" id="${SSR_DATA_JSON_ID}">${ssrData}</script>`;
|
|
118
|
-
if (routerData) {
|
|
119
|
-
const serializedRouterData = serializeJson(routerData);
|
|
120
|
-
ssrDataScripts += useInlineScript ? `
|
|
121
|
-
<script${attrsStr}>window._ROUTER_DATA = ${serializedRouterData}</script>` : `
|
|
122
|
-
<script type="application/json" id="${ROUTER_DATA_JSON_ID}">${serializedRouterData}</script>`;
|
|
123
|
-
}
|
|
124
|
-
return ssrDataScripts;
|
|
125
|
-
}
|
|
126
|
-
constructor(options) {
|
|
127
|
-
const { ctx, config } = options;
|
|
128
|
-
const { entryName, template, nonce } = ctx;
|
|
129
|
-
this.template = template;
|
|
130
|
-
this.entryName = entryName;
|
|
131
|
-
this.App = options.App;
|
|
132
|
-
this.pluginConfig = config;
|
|
133
|
-
this.routeManifest = ctx.routeManifest;
|
|
134
|
-
this.tracker = ctx.tracker;
|
|
135
|
-
this.htmlModifiers = ctx.htmlModifiers;
|
|
136
|
-
this.nonce = nonce;
|
|
137
|
-
this.result = {
|
|
138
|
-
renderLevel: RenderLevel.CLIENT_RENDER,
|
|
139
|
-
html: "",
|
|
140
|
-
chunksMap: {
|
|
141
|
-
js: "",
|
|
142
|
-
css: ""
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
export {
|
|
148
|
-
Entry as default
|
|
149
|
-
};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { run } from "@modern-js/runtime-utils/node";
|
|
2
|
-
import SSREntry from "./entry";
|
|
3
|
-
const render = ({ App, context, config }) => {
|
|
4
|
-
const ssrContext = context.ssrContext;
|
|
5
|
-
return run(ssrContext.request.headers, async () => {
|
|
6
|
-
const entry = new SSREntry({
|
|
7
|
-
ctx: ssrContext,
|
|
8
|
-
App,
|
|
9
|
-
config
|
|
10
|
-
});
|
|
11
|
-
const html = await entry.renderToHtml(context);
|
|
12
|
-
return html;
|
|
13
|
-
});
|
|
14
|
-
};
|
|
15
|
-
export {
|
|
16
|
-
render
|
|
17
|
-
};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import ReactDomServer from "react-dom/server";
|
|
2
|
-
import ReactHelmet from "react-helmet";
|
|
3
|
-
class Render {
|
|
4
|
-
addCollector(collector) {
|
|
5
|
-
this.collectors.push(collector);
|
|
6
|
-
return this;
|
|
7
|
-
}
|
|
8
|
-
async finish() {
|
|
9
|
-
const App = this.collectors.reduce((pre, collector) => collector.collect(pre), this.App);
|
|
10
|
-
const html = ReactDomServer.renderToString(App);
|
|
11
|
-
const helmetData = ReactHelmet.renderStatic();
|
|
12
|
-
this.renderResult.helmet = helmetData;
|
|
13
|
-
await Promise.all(this.collectors.map((component) => component.effect()));
|
|
14
|
-
return html;
|
|
15
|
-
}
|
|
16
|
-
constructor(App, result) {
|
|
17
|
-
this.collectors = [];
|
|
18
|
-
this.App = App;
|
|
19
|
-
this.renderResult = result;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
function createRender(App, result) {
|
|
23
|
-
return new Render(App, result);
|
|
24
|
-
}
|
|
25
|
-
export {
|
|
26
|
-
createRender
|
|
27
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { ServerStyleSheet } from "styled-components";
|
|
2
|
-
class StyledCollector {
|
|
3
|
-
collect(comopnent) {
|
|
4
|
-
return this.sheet.collectStyles(comopnent);
|
|
5
|
-
}
|
|
6
|
-
effect() {
|
|
7
|
-
const css = this.sheet.getStyleTags();
|
|
8
|
-
this.result.chunksMap.css += css;
|
|
9
|
-
}
|
|
10
|
-
constructor(result) {
|
|
11
|
-
this.sheet = new ServerStyleSheet();
|
|
12
|
-
this.result = result;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
function createStyledCollector(result) {
|
|
16
|
-
return new StyledCollector(result);
|
|
17
|
-
}
|
|
18
|
-
export {
|
|
19
|
-
createStyledCollector
|
|
20
|
-
};
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
var SSRTimings;
|
|
2
|
-
(function(SSRTimings2) {
|
|
3
|
-
SSRTimings2[SSRTimings2["PRERENDER"] = 0] = "PRERENDER";
|
|
4
|
-
SSRTimings2[SSRTimings2["RENDER_HTML"] = 1] = "RENDER_HTML";
|
|
5
|
-
SSRTimings2[SSRTimings2["RENDER_SHELL"] = 2] = "RENDER_SHELL";
|
|
6
|
-
SSRTimings2[SSRTimings2["USE_LOADER"] = 3] = "USE_LOADER";
|
|
7
|
-
})(SSRTimings || (SSRTimings = {}));
|
|
8
|
-
var SSRErrors;
|
|
9
|
-
(function(SSRErrors2) {
|
|
10
|
-
SSRErrors2[SSRErrors2["PRERENDER"] = 0] = "PRERENDER";
|
|
11
|
-
SSRErrors2[SSRErrors2["USE_LOADER"] = 1] = "USE_LOADER";
|
|
12
|
-
SSRErrors2[SSRErrors2["RENDER_HTML"] = 2] = "RENDER_HTML";
|
|
13
|
-
SSRErrors2[SSRErrors2["RENDER_STREAM"] = 3] = "RENDER_STREAM";
|
|
14
|
-
SSRErrors2[SSRErrors2["RENDER_SHELL"] = 4] = "RENDER_SHELL";
|
|
15
|
-
})(SSRErrors || (SSRErrors = {}));
|
|
16
|
-
const errors = {
|
|
17
|
-
[0]: {
|
|
18
|
-
reporter: "App Prerender",
|
|
19
|
-
logger: "App Prerender"
|
|
20
|
-
},
|
|
21
|
-
[1]: {
|
|
22
|
-
reporter: "App run useLoader",
|
|
23
|
-
logger: "App run useLoader"
|
|
24
|
-
},
|
|
25
|
-
[2]: {
|
|
26
|
-
reporter: "App Render To HTML",
|
|
27
|
-
logger: "App Render To HTML"
|
|
28
|
-
},
|
|
29
|
-
[3]: {
|
|
30
|
-
reporter: "App Render To Streaming",
|
|
31
|
-
logger: "An error occurs during streaming SSR"
|
|
32
|
-
},
|
|
33
|
-
[4]: {}
|
|
34
|
-
};
|
|
35
|
-
const timings = {
|
|
36
|
-
[0]: {
|
|
37
|
-
reporter: "ssr-prerender",
|
|
38
|
-
serverTiming: "ssr-prerender",
|
|
39
|
-
logger: "App Prerender cost = %d ms"
|
|
40
|
-
},
|
|
41
|
-
[1]: {
|
|
42
|
-
reporter: "ssr-render-html",
|
|
43
|
-
serverTiming: "ssr-render-html",
|
|
44
|
-
logger: "App Render To HTML cost = %d ms"
|
|
45
|
-
},
|
|
46
|
-
[2]: {
|
|
47
|
-
reporter: "ssr-render-shell",
|
|
48
|
-
logger: "App Render To Shell cost = %d ms"
|
|
49
|
-
},
|
|
50
|
-
[3]: {
|
|
51
|
-
reporter: "use-loader",
|
|
52
|
-
serverTiming: "use-loader",
|
|
53
|
-
logger: "App run useLoader cost = %d ms"
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
function getHeadersWithoutCookie(headers) {
|
|
57
|
-
const _headers = {
|
|
58
|
-
...headers,
|
|
59
|
-
cookie: void 0
|
|
60
|
-
};
|
|
61
|
-
delete _headers.cookie;
|
|
62
|
-
return _headers;
|
|
63
|
-
}
|
|
64
|
-
function createSSRTracker({ reporter, serverTiming, logger, request }) {
|
|
65
|
-
const tracker = {
|
|
66
|
-
get sessionId() {
|
|
67
|
-
return reporter === null || reporter === void 0 ? void 0 : reporter.sessionId;
|
|
68
|
-
},
|
|
69
|
-
trackError(key, e) {
|
|
70
|
-
const { reporter: reporterContent, logger: loggerContent } = errors[key];
|
|
71
|
-
reporterContent && (reporter === null || reporter === void 0 ? void 0 : reporter.reportError(`SSR Error - ${reporterContent}`, e));
|
|
72
|
-
loggerContent && logger.error(`SSR Error - ${loggerContent}, error = %s, req.url = %s, req.headers = %o`, e instanceof Error ? e.stack || e.message : e, request.pathname, getHeadersWithoutCookie(request.headers));
|
|
73
|
-
},
|
|
74
|
-
trackTiming(key, cost) {
|
|
75
|
-
const { reporter: reporterName, serverTiming: serverTimingName, logger: loggerName } = timings[key];
|
|
76
|
-
reporterName && (reporter === null || reporter === void 0 ? void 0 : reporter.reportTiming(reporterName, cost));
|
|
77
|
-
serverTimingName && serverTiming.addServeTiming(serverTimingName, cost);
|
|
78
|
-
loggerName && logger.debug(`SSR Debug - ${loggerName}, req.url = %s`, cost, request.pathname);
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
return tracker;
|
|
82
|
-
}
|
|
83
|
-
export {
|
|
84
|
-
SSRErrors,
|
|
85
|
-
SSRTimings,
|
|
86
|
-
createSSRTracker
|
|
87
|
-
};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
function attributesToString(attributes) {
|
|
2
|
-
return Object.entries(attributes).reduce((str, [key, value]) => {
|
|
3
|
-
return value === void 0 ? str : `${str} ${key}="${value}"`;
|
|
4
|
-
}, "");
|
|
5
|
-
}
|
|
6
|
-
function safeReplace(source, searchValue, replaceValue) {
|
|
7
|
-
return source.replace(searchValue, () => replaceValue);
|
|
8
|
-
}
|
|
9
|
-
function checkIsNode() {
|
|
10
|
-
var _process_release;
|
|
11
|
-
return typeof process !== "undefined" && ((_process_release = process.release) === null || _process_release === void 0 ? void 0 : _process_release.name) === "node";
|
|
12
|
-
}
|
|
13
|
-
export {
|
|
14
|
-
attributesToString,
|
|
15
|
-
checkIsNode,
|
|
16
|
-
safeReplace
|
|
17
|
-
};
|