@modern-js/runtime 2.40.0 → 2.42.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/core/loader/loaderManager.js +7 -7
- package/dist/cjs/document/DocumentStructureContext.js +2 -1
- package/dist/cjs/document/Head.js +7 -5
- package/dist/cjs/document/Html.js +2 -0
- package/dist/cjs/document/Title.js +34 -0
- package/dist/cjs/document/cli/index.js +5 -1
- package/dist/cjs/document/constants.js +3 -0
- package/dist/cjs/router/runtime/index.js +6 -2
- package/dist/cjs/router/runtime/plugin.js +2 -2
- package/dist/cjs/router/runtime/{shouldRevalidate.js → routeModule.js} +19 -5
- package/dist/cjs/ssr/index.js +3 -3
- package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.js +3 -3
- package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.worker.js +3 -3
- package/dist/cjs/ssr/serverRender/renderToString/entry.js +3 -2
- package/dist/cjs/ssr/serverRender/renderToString/loadable.js +2 -2
- package/dist/cjs/ssr/serverRender/tracker.js +18 -15
- package/dist/esm/core/loader/loaderManager.js +7 -7
- package/dist/esm/document/DocumentStructureContext.js +2 -1
- package/dist/esm/document/Head.js +7 -5
- package/dist/esm/document/Html.js +2 -0
- package/dist/esm/document/Title.js +10 -0
- package/dist/esm/document/cli/index.js +9 -3
- package/dist/esm/document/constants.js +2 -0
- package/dist/esm/router/runtime/index.js +3 -1
- package/dist/esm/router/runtime/plugin.js +1 -1
- package/dist/esm/router/runtime/{shouldRevalidate.js → routeModule.js} +13 -1
- package/dist/esm/ssr/cli/babel-plugin-ssr-loader-id.js +3 -3
- package/dist/esm/ssr/index.js +1 -1
- package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.js +6 -6
- package/dist/esm/ssr/serverRender/renderToStream/bulidTemplate.before.js +14 -14
- package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.js +3 -3
- package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.worker.js +3 -3
- package/dist/esm/ssr/serverRender/renderToString/entry.js +2 -1
- package/dist/esm/ssr/serverRender/renderToString/loadable.js +2 -2
- package/dist/esm/ssr/serverRender/tracker.js +18 -15
- package/dist/esm-node/core/loader/loaderManager.js +7 -7
- package/dist/esm-node/document/DocumentStructureContext.js +2 -1
- package/dist/esm-node/document/Head.js +7 -5
- package/dist/esm-node/document/Html.js +2 -0
- package/dist/esm-node/document/Title.js +10 -0
- package/dist/esm-node/document/cli/index.js +6 -2
- package/dist/esm-node/document/constants.js +2 -0
- package/dist/esm-node/router/runtime/index.js +3 -1
- package/dist/esm-node/router/runtime/plugin.js +1 -1
- package/dist/esm-node/router/runtime/{shouldRevalidate.js → routeModule.js} +13 -1
- package/dist/esm-node/ssr/index.js +1 -1
- package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.js +3 -3
- package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.worker.js +3 -3
- package/dist/esm-node/ssr/serverRender/renderToString/entry.js +3 -2
- package/dist/esm-node/ssr/serverRender/renderToString/loadable.js +2 -2
- package/dist/esm-node/ssr/serverRender/tracker.js +18 -15
- package/dist/types/cli/index.d.ts +1 -1
- package/dist/types/common.d.ts +3 -3
- package/dist/types/config.d.ts +5 -5
- package/dist/types/core/appConfig.d.ts +1 -1
- package/dist/types/core/compatible.d.ts +8 -11
- package/dist/types/core/index.d.ts +1 -1
- package/dist/types/core/loader/index.d.ts +1 -1
- package/dist/types/core/loader/loaderManager.d.ts +38 -38
- package/dist/types/core/loader/useLoader.d.ts +31 -31
- package/dist/types/core/plugin.d.ts +178 -177
- package/dist/types/core/types.d.ts +12 -12
- package/dist/types/document/Body.d.ts +2 -2
- package/dist/types/document/Comment.d.ts +3 -3
- package/dist/types/document/DocumentContext.d.ts +9 -9
- package/dist/types/document/DocumentStructureContext.d.ts +8 -7
- package/dist/types/document/Head.d.ts +2 -2
- package/dist/types/document/Html.d.ts +2 -2
- package/dist/types/document/Links.d.ts +1 -1
- package/dist/types/document/Root.d.ts +4 -4
- package/dist/types/document/Script.d.ts +2 -2
- package/dist/types/document/Scripts.d.ts +1 -1
- package/dist/types/document/Style.d.ts +3 -3
- package/dist/types/document/Title.d.ts +2 -0
- package/dist/types/document/cli/index.d.ts +1 -1
- package/dist/types/document/constants.d.ts +3 -2
- package/dist/types/document/index.d.ts +1 -1
- package/dist/types/exports/head.d.ts +1 -1
- package/dist/types/exports/loadable.d.ts +1 -1
- package/dist/types/exports/server.d.ts +9 -17
- package/dist/types/exports/styled.d.ts +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/router/cli/index.d.ts +1 -1
- package/dist/types/router/index.d.ts +1 -1
- package/dist/types/router/runtime/DefaultNotFound.d.ts +1 -1
- package/dist/types/router/runtime/DeferredDataScripts.d.ts +1 -1
- package/dist/types/router/runtime/DeferredDataScripts.node.d.ts +2 -2
- package/dist/types/router/runtime/PrefetchLink.d.ts +3 -3
- package/dist/types/router/runtime/fetch.d.ts +1 -1
- package/dist/types/router/runtime/fetch.node.d.ts +1 -1
- package/dist/types/router/runtime/fetch.worker.d.ts +1 -1
- package/dist/types/router/runtime/hooks.d.ts +1 -1
- package/dist/types/router/runtime/index.d.ts +3 -3
- package/dist/types/router/runtime/plugin.d.ts +1 -7
- package/dist/types/router/runtime/plugin.node.d.ts +2 -6
- package/dist/types/router/runtime/routeModule.d.ts +6 -0
- package/dist/types/router/runtime/server.d.ts +1 -1
- package/dist/types/router/runtime/types.d.ts +41 -41
- package/dist/types/router/runtime/utils.d.ts +11 -21
- package/dist/types/router/runtime/withRouter.d.ts +4 -4
- package/dist/types/runtimeContext.d.ts +26 -26
- package/dist/types/ssr/cli/babel-plugin-ssr-loader-id.d.ts +1 -1
- package/dist/types/ssr/cli/index.d.ts +1 -1
- package/dist/types/ssr/cli/loadable-bundler-plugin.d.ts +1 -1
- package/dist/types/ssr/index.d.ts +5 -5
- package/dist/types/ssr/index.node.d.ts +1 -1
- package/dist/types/ssr/prefetch.d.ts +9 -9
- package/dist/types/ssr/react/index.d.ts +1 -1
- package/dist/types/ssr/react/nossr/index.d.ts +3 -3
- package/dist/types/ssr/react/prerender/index.d.ts +1 -1
- package/dist/types/ssr/react/prerender/type.d.ts +17 -17
- package/dist/types/ssr/react/prerender/util.d.ts +1 -1
- package/dist/types/ssr/react/withCallback/index.d.ts +3 -3
- package/dist/types/ssr/serverRender/helmet.d.ts +1 -1
- package/dist/types/ssr/serverRender/index.d.ts +1 -1
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +3 -3
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.share.d.ts +1 -1
- package/dist/types/ssr/serverRender/renderToStream/bulidTemplate.before.d.ts +1 -1
- package/dist/types/ssr/serverRender/renderToStream/index.d.ts +1 -4
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +1 -1
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.worker.d.ts +1 -1
- package/dist/types/ssr/serverRender/renderToStream/template.d.ts +3 -3
- package/dist/types/ssr/serverRender/renderToString/buildHtml.d.ts +1 -1
- package/dist/types/ssr/serverRender/renderToString/entry.d.ts +19 -19
- package/dist/types/ssr/serverRender/renderToString/index.d.ts +1 -5
- package/dist/types/ssr/serverRender/renderToString/loadable.d.ts +18 -18
- package/dist/types/ssr/serverRender/renderToString/render.d.ts +8 -8
- package/dist/types/ssr/serverRender/renderToString/styledComponent.d.ts +7 -7
- package/dist/types/ssr/serverRender/renderToString/type.d.ts +10 -10
- package/dist/types/ssr/serverRender/tracker.d.ts +14 -19
- package/dist/types/ssr/serverRender/types.d.ts +17 -17
- package/dist/types/ssr/serverRender/utils.d.ts +1 -1
- package/dist/types/ssr/utils.d.ts +4 -4
- package/dist/types/state/cli/index.d.ts +1 -1
- package/dist/types/state/index.d.ts +1 -1
- package/dist/types/state/plugins.d.ts +1 -1
- package/dist/types/state/runtime/index.d.ts +1 -1
- package/dist/types/state/runtime/plugin.d.ts +3 -3
- package/package.json +11 -11
- package/dist/types/router/runtime/shouldRevalidate.d.ts +0 -2
|
@@ -5,7 +5,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
5
5
|
import { useContext, useMemo } from "react";
|
|
6
6
|
import { createBrowserRouter, createHashRouter, RouterProvider, createRoutesFromElements, useMatches, useLocation } from "@modern-js/runtime-utils/router";
|
|
7
7
|
import hoistNonReactStatics from "hoist-non-react-statics";
|
|
8
|
-
import { parsedJSONFromElement } from "@modern-js/runtime-utils/
|
|
8
|
+
import { parsedJSONFromElement } from "@modern-js/runtime-utils/parsed";
|
|
9
9
|
import { RuntimeReactContext } from "../../core";
|
|
10
10
|
import { modifyRoutes as modifyRoutesHook } from "./hooks";
|
|
11
11
|
import { deserializeErrors, renderRoutes, urlJoin } from "./utils";
|
|
@@ -9,6 +9,18 @@ var createShouldRevalidate = function(routeId) {
|
|
|
9
9
|
return arg.defaultShouldRevalidate;
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
|
+
var handleRouteModule = function(routeModule, routeId) {
|
|
13
|
+
if (typeof document !== "undefined") {
|
|
14
|
+
window[ROUTE_MODULES][routeId] = routeModule;
|
|
15
|
+
}
|
|
16
|
+
return routeModule;
|
|
17
|
+
};
|
|
18
|
+
var handleRouteModuleError = function(error) {
|
|
19
|
+
console.error(error);
|
|
20
|
+
return null;
|
|
21
|
+
};
|
|
12
22
|
export {
|
|
13
|
-
createShouldRevalidate
|
|
23
|
+
createShouldRevalidate,
|
|
24
|
+
handleRouteModule,
|
|
25
|
+
handleRouteModuleError
|
|
14
26
|
};
|
|
@@ -62,12 +62,12 @@ var require_babel_plugin_ssr_loader_id = __commonJS({
|
|
|
62
62
|
])), []);
|
|
63
63
|
}
|
|
64
64
|
module.exports = function() {
|
|
65
|
-
var genId = function genId2() {
|
|
66
|
-
return "".concat(hash, "_").concat(index++);
|
|
67
|
-
};
|
|
68
65
|
var useLoader = null;
|
|
69
66
|
var hash = "";
|
|
70
67
|
var index = 0;
|
|
68
|
+
function genId() {
|
|
69
|
+
return "".concat(hash, "_").concat(index++);
|
|
70
|
+
}
|
|
71
71
|
return {
|
|
72
72
|
name: "babel-plugin-ssr-loader-id",
|
|
73
73
|
pre: function pre() {
|
package/dist/esm/ssr/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
|
5
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
6
|
import { loadableReady } from "@loadable/component";
|
|
7
7
|
import hoistNonReactStatics from "hoist-non-react-statics";
|
|
8
|
-
import { parsedJSONFromElement } from "@modern-js/runtime-utils/
|
|
8
|
+
import { parsedJSONFromElement } from "@modern-js/runtime-utils/parsed";
|
|
9
9
|
import { RenderLevel } from "./serverRender/types";
|
|
10
10
|
import { WithCallback } from "./react/withCallback";
|
|
11
11
|
import { formatClient, mockResponse, isReact18 } from "./utils";
|
|
@@ -3,7 +3,11 @@ import { serializeJson } from "@modern-js/runtime-utils/node";
|
|
|
3
3
|
import { attributesToString } from "../utils";
|
|
4
4
|
import { buildTemplate } from "./buildTemplate.share";
|
|
5
5
|
function buildShellAfterTemplate(afterAppTemplate, options) {
|
|
6
|
-
var
|
|
6
|
+
var callbacks = [
|
|
7
|
+
injectSSRDataScript
|
|
8
|
+
];
|
|
9
|
+
return buildTemplate(afterAppTemplate, callbacks);
|
|
10
|
+
function injectSSRDataScript(template) {
|
|
7
11
|
var ssrDataScript = buildSSRDataScript();
|
|
8
12
|
return template.replace("<!--<?- SSRDataScript ?>-->", ssrDataScript);
|
|
9
13
|
function buildSSRDataScript() {
|
|
@@ -36,11 +40,7 @@ function buildShellAfterTemplate(afterAppTemplate, options) {
|
|
|
36
40
|
});
|
|
37
41
|
return "\n <script".concat(attrsStr, ">window._SSR_DATA = ").concat(serializeJson(SSRData), "</script>\n ");
|
|
38
42
|
}
|
|
39
|
-
}
|
|
40
|
-
var callbacks = [
|
|
41
|
-
injectSSRDataScript
|
|
42
|
-
];
|
|
43
|
-
return buildTemplate(afterAppTemplate, callbacks);
|
|
43
|
+
}
|
|
44
44
|
}
|
|
45
45
|
export {
|
|
46
46
|
buildShellAfterTemplate
|
|
@@ -6,7 +6,20 @@ import helmetReplace from "../helmet";
|
|
|
6
6
|
import { CSS_CHUNKS_PLACEHOLDER } from "../utils";
|
|
7
7
|
import { HEAD_REG_EXP, buildTemplate } from "./buildTemplate.share";
|
|
8
8
|
function getHeadTemplate(beforeEntryTemplate, context) {
|
|
9
|
-
var
|
|
9
|
+
var callbacks = [
|
|
10
|
+
function(headTemplate2) {
|
|
11
|
+
var helmetData = ReactHelmet.renderStatic();
|
|
12
|
+
return helmetData ? helmetReplace(headTemplate2, helmetData) : headTemplate2;
|
|
13
|
+
},
|
|
14
|
+
// @TODO: prefetch scripts of lazy component
|
|
15
|
+
injectCss
|
|
16
|
+
];
|
|
17
|
+
var _ref = _sliced_to_array(beforeEntryTemplate.match(HEAD_REG_EXP) || [], 1), tmp = _ref[0], headTemplate = tmp === void 0 ? "" : tmp;
|
|
18
|
+
if (!headTemplate.length) {
|
|
19
|
+
return "";
|
|
20
|
+
}
|
|
21
|
+
return buildTemplate(headTemplate, callbacks);
|
|
22
|
+
function injectCss(headTemplate2) {
|
|
10
23
|
return headTemplate2.replace(CSS_CHUNKS_PLACEHOLDER, getCssChunks());
|
|
11
24
|
function getCssChunks() {
|
|
12
25
|
var routeManifest = context.routeManifest, routerContext = context.routerContext, routes = context.routes;
|
|
@@ -38,20 +51,7 @@ function getHeadTemplate(beforeEntryTemplate, context) {
|
|
|
38
51
|
});
|
|
39
52
|
return "".concat(styleLinks.join(""));
|
|
40
53
|
}
|
|
41
|
-
};
|
|
42
|
-
var callbacks = [
|
|
43
|
-
function(headTemplate2) {
|
|
44
|
-
var helmetData = ReactHelmet.renderStatic();
|
|
45
|
-
return helmetData ? helmetReplace(headTemplate2, helmetData) : headTemplate2;
|
|
46
|
-
},
|
|
47
|
-
// @TODO: prefetch scripts of lazy component
|
|
48
|
-
injectCss
|
|
49
|
-
];
|
|
50
|
-
var _ref = _sliced_to_array(beforeEntryTemplate.match(HEAD_REG_EXP) || [], 1), tmp = _ref[0], headTemplate = tmp === void 0 ? "" : tmp;
|
|
51
|
-
if (!headTemplate.length) {
|
|
52
|
-
return "";
|
|
53
54
|
}
|
|
54
|
-
return buildTemplate(headTemplate, callbacks);
|
|
55
55
|
}
|
|
56
56
|
function buildShellBeforeTemplate(beforeAppTemplate, context) {
|
|
57
57
|
var headTemplate = getHeadTemplate(beforeAppTemplate, context);
|
|
@@ -11,7 +11,7 @@ var ShellChunkStatus;
|
|
|
11
11
|
ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
|
|
12
12
|
})(ShellChunkStatus || (ShellChunkStatus = {}));
|
|
13
13
|
function renderToPipe(rootElement, context, options) {
|
|
14
|
-
var shellChunkStatus =
|
|
14
|
+
var shellChunkStatus = 0;
|
|
15
15
|
var ssrContext = context.ssrContext;
|
|
16
16
|
var chunkVec = [];
|
|
17
17
|
var forUserPipe = function(stream) {
|
|
@@ -30,12 +30,12 @@ function renderToPipe(rootElement, context, options) {
|
|
|
30
30
|
var injectableTransform = new Transform({
|
|
31
31
|
transform: function transform(chunk, _encoding, callback) {
|
|
32
32
|
try {
|
|
33
|
-
if (shellChunkStatus !==
|
|
33
|
+
if (shellChunkStatus !== 1) {
|
|
34
34
|
chunkVec.push(chunk.toString());
|
|
35
35
|
var concatedChunk = chunkVec.join("");
|
|
36
36
|
if (concatedChunk.endsWith(ESCAPED_SHELL_STREAM_END_MARK)) {
|
|
37
37
|
concatedChunk = concatedChunk.replace(ESCAPED_SHELL_STREAM_END_MARK, "");
|
|
38
|
-
shellChunkStatus =
|
|
38
|
+
shellChunkStatus = 1;
|
|
39
39
|
this.push("".concat(shellBefore).concat(concatedChunk).concat(shellAfter));
|
|
40
40
|
}
|
|
41
41
|
} else {
|
|
@@ -12,7 +12,7 @@ var ShellChunkStatus;
|
|
|
12
12
|
ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
|
|
13
13
|
})(ShellChunkStatus || (ShellChunkStatus = {}));
|
|
14
14
|
function renderToPipe(rootElement, context, options) {
|
|
15
|
-
var shellChunkStatus =
|
|
15
|
+
var shellChunkStatus = 0;
|
|
16
16
|
var chunkVec = [];
|
|
17
17
|
var ssrContext = context.ssrContext;
|
|
18
18
|
var forUserPipe = function() {
|
|
@@ -70,13 +70,13 @@ function renderToPipe(rootElement, context, options) {
|
|
|
70
70
|
2
|
|
71
71
|
];
|
|
72
72
|
}
|
|
73
|
-
if (shellChunkStatus !==
|
|
73
|
+
if (shellChunkStatus !== 1) {
|
|
74
74
|
chunk = new TextDecoder().decode(value);
|
|
75
75
|
chunkVec.push(chunk);
|
|
76
76
|
concatedChunk = chunkVec.join("");
|
|
77
77
|
if (concatedChunk.endsWith(ESCAPED_SHELL_STREAM_END_MARK)) {
|
|
78
78
|
concatedChunk = concatedChunk.replace(ESCAPED_SHELL_STREAM_END_MARK, "");
|
|
79
|
-
shellChunkStatus =
|
|
79
|
+
shellChunkStatus = 1;
|
|
80
80
|
controller.enqueue(encodeForWebStream("".concat(shellBefore).concat(concatedChunk).concat(shellAfter)));
|
|
81
81
|
}
|
|
82
82
|
} else {
|
|
@@ -41,7 +41,8 @@ var buildTemplateData = function(context, data, renderLevel, tracker) {
|
|
|
41
41
|
renderLevel
|
|
42
42
|
};
|
|
43
43
|
};
|
|
44
|
-
var Entry
|
|
44
|
+
var Entry;
|
|
45
|
+
Entry = /* @__PURE__ */ function() {
|
|
45
46
|
"use strict";
|
|
46
47
|
function Entry2(options) {
|
|
47
48
|
_class_call_check(this, Entry2);
|
|
@@ -39,13 +39,13 @@ var readAsset = function() {
|
|
|
39
39
|
case 0:
|
|
40
40
|
return [
|
|
41
41
|
4,
|
|
42
|
-
import("
|
|
42
|
+
import("fs/promises")
|
|
43
43
|
];
|
|
44
44
|
case 1:
|
|
45
45
|
fs = _state.sent();
|
|
46
46
|
return [
|
|
47
47
|
4,
|
|
48
|
-
import("
|
|
48
|
+
import("path")
|
|
49
49
|
];
|
|
50
50
|
case 2:
|
|
51
51
|
path = _state.sent();
|
|
@@ -15,41 +15,44 @@ var SSRErrors;
|
|
|
15
15
|
SSRErrors2[SSRErrors2["RENDER_SHELL"] = 4] = "RENDER_SHELL";
|
|
16
16
|
})(SSRErrors || (SSRErrors = {}));
|
|
17
17
|
var _obj;
|
|
18
|
-
var errors = (_obj = {}, _define_property(_obj,
|
|
19
|
-
reporter: "
|
|
18
|
+
var errors = (_obj = {}, _define_property(_obj, 0, {
|
|
19
|
+
reporter: "App Prerender",
|
|
20
20
|
logger: "App Prerender",
|
|
21
21
|
metrics: "app.prerender.error"
|
|
22
|
-
}), _define_property(_obj,
|
|
23
|
-
reporter: "
|
|
22
|
+
}), _define_property(_obj, 1, {
|
|
23
|
+
reporter: "App run useLoader",
|
|
24
24
|
logger: "App run useLoader",
|
|
25
25
|
metrics: "app.useloader.error"
|
|
26
|
-
}), _define_property(_obj,
|
|
27
|
-
reporter: "
|
|
26
|
+
}), _define_property(_obj, 2, {
|
|
27
|
+
reporter: "App Render To HTML",
|
|
28
28
|
logger: "App Render To HTML",
|
|
29
29
|
metrics: "app.render.html.error"
|
|
30
|
-
}), _define_property(_obj,
|
|
31
|
-
reporter: "
|
|
30
|
+
}), _define_property(_obj, 3, {
|
|
31
|
+
reporter: "App Render To Streaming",
|
|
32
32
|
logger: "An error occurs during streaming SSR",
|
|
33
33
|
metrics: "app.render.streaming.error"
|
|
34
|
-
}), _define_property(_obj,
|
|
34
|
+
}), _define_property(_obj, 4, {
|
|
35
35
|
metrics: "app.render.streaming.shell.error"
|
|
36
36
|
}), _obj);
|
|
37
37
|
var _obj1;
|
|
38
|
-
var timings = (_obj1 = {}, _define_property(_obj1,
|
|
38
|
+
var timings = (_obj1 = {}, _define_property(_obj1, 0, {
|
|
39
39
|
reporter: "ssr-prerender",
|
|
40
40
|
serverTiming: "ssr-prerender",
|
|
41
41
|
metrics: "app.prerender.cost",
|
|
42
42
|
logger: "App Prerender cost = %d ms"
|
|
43
|
-
}), _define_property(_obj1,
|
|
43
|
+
}), _define_property(_obj1, 1, {
|
|
44
44
|
reporter: "ssr-render-html",
|
|
45
45
|
serverTiming: "ssr-render-html",
|
|
46
46
|
metrics: "app.render.html.cost",
|
|
47
47
|
logger: "App Render To HTML cost = %d ms"
|
|
48
|
-
}), _define_property(_obj1,
|
|
49
|
-
reporter: "ssr-render-shell"
|
|
50
|
-
|
|
48
|
+
}), _define_property(_obj1, 2, {
|
|
49
|
+
reporter: "ssr-render-shell",
|
|
50
|
+
metrics: "app.render.shell.cost",
|
|
51
|
+
logger: "App Render To Shell cost = %d ms"
|
|
52
|
+
}), _define_property(_obj1, 3, {
|
|
51
53
|
reporter: "use-loader",
|
|
52
54
|
serverTiming: "use-loader",
|
|
55
|
+
metrics: "app.useloader.cost",
|
|
53
56
|
logger: "App run useLoader cost = %d ms"
|
|
54
57
|
}), _obj1);
|
|
55
58
|
function createSSRTracker(param) {
|
|
@@ -60,7 +63,7 @@ function createSSRTracker(param) {
|
|
|
60
63
|
},
|
|
61
64
|
trackError: function trackError(key, e) {
|
|
62
65
|
var _errors_key = errors[key], reporterContent = _errors_key.reporter, metricsContent = _errors_key.metrics, loggerContent = _errors_key.logger;
|
|
63
|
-
reporterContent && reporter.reportError(reporterContent, e);
|
|
66
|
+
reporterContent && reporter.reportError("SSR Error - ".concat(reporterContent), e);
|
|
64
67
|
metricsContent && metrics.emitCounter(metricsContent, 1);
|
|
65
68
|
loggerContent && logger.error(loggerContent, e);
|
|
66
69
|
},
|
|
@@ -26,7 +26,7 @@ const createLoader = (id, initialData = {
|
|
|
26
26
|
error: void 0
|
|
27
27
|
}, loaderFn, skip = false) => {
|
|
28
28
|
let promise;
|
|
29
|
-
let status =
|
|
29
|
+
let status = 0;
|
|
30
30
|
let { data, error } = initialData;
|
|
31
31
|
let hasLoaded = false;
|
|
32
32
|
const handlers = /* @__PURE__ */ new Set();
|
|
@@ -34,19 +34,19 @@ const createLoader = (id, initialData = {
|
|
|
34
34
|
if (skip) {
|
|
35
35
|
return promise;
|
|
36
36
|
}
|
|
37
|
-
if (status ===
|
|
37
|
+
if (status === 1) {
|
|
38
38
|
return promise;
|
|
39
39
|
}
|
|
40
|
-
status =
|
|
40
|
+
status = 1;
|
|
41
41
|
notify();
|
|
42
42
|
promise = loaderFn().then((value) => {
|
|
43
43
|
data = value;
|
|
44
44
|
error = null;
|
|
45
|
-
status =
|
|
45
|
+
status = 2;
|
|
46
46
|
}).catch((e) => {
|
|
47
47
|
error = e;
|
|
48
48
|
data = null;
|
|
49
|
-
status =
|
|
49
|
+
status = 3;
|
|
50
50
|
}).finally(() => {
|
|
51
51
|
promise = null;
|
|
52
52
|
hasLoaded = true;
|
|
@@ -55,8 +55,8 @@ const createLoader = (id, initialData = {
|
|
|
55
55
|
return promise;
|
|
56
56
|
};
|
|
57
57
|
const getResult = () => ({
|
|
58
|
-
loading: !hasLoaded && status ===
|
|
59
|
-
reloading: hasLoaded && status ===
|
|
58
|
+
loading: !hasLoaded && status === 1,
|
|
59
|
+
reloading: hasLoaded && status === 1,
|
|
60
60
|
data,
|
|
61
61
|
error: error instanceof Error ? `${error.message}` : error,
|
|
62
62
|
// redundant fields for ssr log
|
|
@@ -3,25 +3,27 @@ import { useContext } from "react";
|
|
|
3
3
|
import { DocumentStructureContext } from "./DocumentStructureContext";
|
|
4
4
|
import { Scripts } from "./Scripts";
|
|
5
5
|
import { Links } from "./Links";
|
|
6
|
+
import { Title } from "./Title";
|
|
6
7
|
import { DOCUMENT_META_PLACEHOLDER, HEAD_PARTICALS_SEPARATOR, TOP_PARTICALS_SEPARATOR } from "./constants";
|
|
7
8
|
function Head(props) {
|
|
8
|
-
const { hasSetScripts, hasSetLinks } = useContext(DocumentStructureContext);
|
|
9
|
+
const { hasSetScripts, hasSetLinks, hasSetTitle } = useContext(DocumentStructureContext);
|
|
9
10
|
const { children, ...rest } = props;
|
|
10
11
|
return /* @__PURE__ */ _jsxs("head", {
|
|
11
12
|
...rest,
|
|
12
13
|
children: [
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
TOP_PARTICALS_SEPARATOR,
|
|
15
|
+
DOCUMENT_META_PLACEHOLDER,
|
|
16
|
+
!hasSetTitle && /* @__PURE__ */ _jsx(Title, {}),
|
|
15
17
|
!hasSetLinks && /* @__PURE__ */ _jsx(Links, {}),
|
|
16
18
|
!hasSetScripts && /* @__PURE__ */ _jsx(Scripts, {}),
|
|
17
|
-
|
|
19
|
+
HEAD_PARTICALS_SEPARATOR,
|
|
18
20
|
children
|
|
19
21
|
]
|
|
20
22
|
});
|
|
21
23
|
}
|
|
22
24
|
function DefaultHead() {
|
|
23
25
|
return /* @__PURE__ */ _jsx("head", {
|
|
24
|
-
children:
|
|
26
|
+
children: DOCUMENT_META_PLACEHOLDER
|
|
25
27
|
});
|
|
26
28
|
}
|
|
27
29
|
export {
|
|
@@ -31,6 +31,7 @@ function Html(props) {
|
|
|
31
31
|
const hasSetLinks = Boolean(findTargetElement("Links", children));
|
|
32
32
|
const hasSetBody = Boolean(findTargetChild("Body", children));
|
|
33
33
|
const hasSetRoot = Boolean(findTargetElement("Root", children));
|
|
34
|
+
const hasSetTitle = Boolean(findTargetElement("title", children));
|
|
34
35
|
const notMissMustChild = [
|
|
35
36
|
hasSetHead,
|
|
36
37
|
hasSetBody
|
|
@@ -66,6 +67,7 @@ function Html(props) {
|
|
|
66
67
|
hasSetLinks,
|
|
67
68
|
hasSetRoot,
|
|
68
69
|
hasSetBody,
|
|
70
|
+
hasSetTitle,
|
|
69
71
|
docChild: children
|
|
70
72
|
},
|
|
71
73
|
children: [
|
|
@@ -4,7 +4,7 @@ import ReactDomServer from "react-dom/server";
|
|
|
4
4
|
import { build } from "esbuild";
|
|
5
5
|
import { createDebugger, findExists, fs } from "@modern-js/utils";
|
|
6
6
|
import { DocumentContext } from "../DocumentContext";
|
|
7
|
-
import { DOCUMENT_SCRIPTS_PLACEHOLDER, DOCUMENT_LINKS_PLACEHOLDER, DOCUMENT_FILE_NAME, DOCUMENT_META_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP, DOC_EXT, DOCUMENT_SSR_PLACEHOLDER, DOCUMENT_CHUNKSMAP_PLACEHOLDER, DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, DOCUMENT_SCRIPT_PLACEHOLDER_START, DOCUMENT_SCRIPT_PLACEHOLDER_END, HTML_SEPARATOR, DOCUMENT_COMMENT_PLACEHOLDER_START, DOCUMENT_COMMENT_PLACEHOLDER_END, DOCUMENT_STYLE_PLACEHOLDER_START, DOCUMENT_STYLE_PLACEHOLDER_END, TOP_PARTICALS_SEPARATOR, HEAD_PARTICALS_SEPARATOR, BODY_PARTICALS_SEPARATOR } from "../constants";
|
|
7
|
+
import { DOCUMENT_SCRIPTS_PLACEHOLDER, DOCUMENT_LINKS_PLACEHOLDER, DOCUMENT_FILE_NAME, DOCUMENT_META_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP, DOC_EXT, DOCUMENT_SSR_PLACEHOLDER, DOCUMENT_CHUNKSMAP_PLACEHOLDER, DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, DOCUMENT_SCRIPT_PLACEHOLDER_START, DOCUMENT_SCRIPT_PLACEHOLDER_END, HTML_SEPARATOR, DOCUMENT_COMMENT_PLACEHOLDER_START, DOCUMENT_COMMENT_PLACEHOLDER_END, DOCUMENT_STYLE_PLACEHOLDER_START, DOCUMENT_STYLE_PLACEHOLDER_END, DOCUMENT_TITLE_PLACEHOLDER, TOP_PARTICALS_SEPARATOR, HEAD_PARTICALS_SEPARATOR, BODY_PARTICALS_SEPARATOR } from "../constants";
|
|
8
8
|
const debug = createDebugger("html_genarate");
|
|
9
9
|
const getDocumenByEntryName = function(entrypoints, entryName, fallbackDir) {
|
|
10
10
|
var _entrypoints_find;
|
|
@@ -132,6 +132,10 @@ const documentPlugin = () => ({
|
|
|
132
132
|
templateParameters.meta,
|
|
133
133
|
htmlWebpackPlugin.tags.headTags.filter((item) => item.tagName !== "script" && item.tagName !== "link").join("")
|
|
134
134
|
].join("");
|
|
135
|
+
const titles = [
|
|
136
|
+
templateParameters.title,
|
|
137
|
+
htmlWebpackPlugin.tags.headTags.filter((item) => item.tagName === "title").join("")
|
|
138
|
+
].join("");
|
|
135
139
|
if (html.includes(DOCUMENT_SCRIPT_PLACEHOLDER_START) && html.includes(DOCUMENT_SCRIPT_PLACEHOLDER_END)) {
|
|
136
140
|
const { nonce } = config.security;
|
|
137
141
|
const nonceAttr = nonce ? `nonce=${nonce}` : "";
|
|
@@ -143,7 +147,7 @@ const documentPlugin = () => ({
|
|
|
143
147
|
if (html.includes(DOCUMENT_COMMENT_PLACEHOLDER_START) && html.includes(DOCUMENT_COMMENT_PLACEHOLDER_END)) {
|
|
144
148
|
html = html.replace(new RegExp(`${DOCUMENT_COMMENT_PLACEHOLDER_START}(.*?)${DOCUMENT_COMMENT_PLACEHOLDER_END}`, "g"), (_scriptStr, $1) => `${decodeURIComponent($1)}`);
|
|
145
149
|
}
|
|
146
|
-
const finalHtml = `<!DOCTYPE html>${html}`.replace(DOCUMENT_META_PLACEHOLDER, metas).replace(DOCUMENT_SSR_PLACEHOLDER, HTML_SEPARATOR).replace(DOCUMENT_SCRIPTS_PLACEHOLDER, scripts).replace(DOCUMENT_LINKS_PLACEHOLDER, links).replace(DOCUMENT_CHUNKSMAP_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP[DOCUMENT_CHUNKSMAP_PLACEHOLDER]).replace(DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP[DOCUMENT_SSRDATASCRIPT_PLACEHOLDER]);
|
|
150
|
+
const finalHtml = `<!DOCTYPE html>${html}`.replace(DOCUMENT_META_PLACEHOLDER, metas).replace(DOCUMENT_SSR_PLACEHOLDER, HTML_SEPARATOR).replace(DOCUMENT_SCRIPTS_PLACEHOLDER, scripts).replace(DOCUMENT_LINKS_PLACEHOLDER, links).replace(DOCUMENT_CHUNKSMAP_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP[DOCUMENT_CHUNKSMAP_PLACEHOLDER]).replace(DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP[DOCUMENT_SSRDATASCRIPT_PLACEHOLDER]).replace(DOCUMENT_TITLE_PLACEHOLDER, titles);
|
|
147
151
|
return finalHtml;
|
|
148
152
|
};
|
|
149
153
|
};
|
|
@@ -6,6 +6,7 @@ const DOC_EXT = [
|
|
|
6
6
|
"js"
|
|
7
7
|
];
|
|
8
8
|
const DOCUMENT_META_PLACEHOLDER = encodeURIComponent("<%= meta %>");
|
|
9
|
+
const DOCUMENT_TITLE_PLACEHOLDER = encodeURIComponent("<%= title %>");
|
|
9
10
|
const HTML_SEPARATOR = "<!--<?- html ?>-->";
|
|
10
11
|
const HEAD_PARTICALS_SEPARATOR = encodeURIComponent("<!--<?- partials.head ?>-->");
|
|
11
12
|
const BODY_PARTICALS_SEPARATOR = encodeURIComponent("<!--<?- partials.body ?>-->");
|
|
@@ -43,6 +44,7 @@ export {
|
|
|
43
44
|
DOCUMENT_SSR_PLACEHOLDER,
|
|
44
45
|
DOCUMENT_STYLE_PLACEHOLDER_END,
|
|
45
46
|
DOCUMENT_STYLE_PLACEHOLDER_START,
|
|
47
|
+
DOCUMENT_TITLE_PLACEHOLDER,
|
|
46
48
|
DOC_EXT,
|
|
47
49
|
HEAD_PARTICALS_SEPARATOR,
|
|
48
50
|
HTML_SEPARATOR,
|
|
@@ -9,7 +9,7 @@ const useRouteLoaderData = (routeId) => {
|
|
|
9
9
|
const realRouteId = routeId.replace(/\[(.*?)\]/g, "($1)");
|
|
10
10
|
return useRouteData(realRouteId);
|
|
11
11
|
};
|
|
12
|
-
import { createShouldRevalidate } from "./
|
|
12
|
+
import { createShouldRevalidate, handleRouteModule, handleRouteModuleError } from "./routeModule";
|
|
13
13
|
import {
|
|
14
14
|
createBrowserRouter,
|
|
15
15
|
createHashRouter,
|
|
@@ -94,6 +94,8 @@ export {
|
|
|
94
94
|
runtime_default as default,
|
|
95
95
|
defer,
|
|
96
96
|
generatePath,
|
|
97
|
+
handleRouteModule,
|
|
98
|
+
handleRouteModuleError,
|
|
97
99
|
isRouteErrorResponse,
|
|
98
100
|
json,
|
|
99
101
|
matchPath,
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { useContext, useMemo } from "react";
|
|
3
3
|
import { createBrowserRouter, createHashRouter, RouterProvider, createRoutesFromElements, useMatches, useLocation } from "@modern-js/runtime-utils/router";
|
|
4
4
|
import hoistNonReactStatics from "hoist-non-react-statics";
|
|
5
|
-
import { parsedJSONFromElement } from "@modern-js/runtime-utils/
|
|
5
|
+
import { parsedJSONFromElement } from "@modern-js/runtime-utils/parsed";
|
|
6
6
|
import { RuntimeReactContext } from "../../core";
|
|
7
7
|
import { modifyRoutes as modifyRoutesHook } from "./hooks";
|
|
8
8
|
import { deserializeErrors, renderRoutes, urlJoin } from "./utils";
|
|
@@ -9,6 +9,18 @@ const createShouldRevalidate = (routeId) => {
|
|
|
9
9
|
return arg.defaultShouldRevalidate;
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
|
+
const handleRouteModule = (routeModule, routeId) => {
|
|
13
|
+
if (typeof document !== "undefined") {
|
|
14
|
+
window[ROUTE_MODULES][routeId] = routeModule;
|
|
15
|
+
}
|
|
16
|
+
return routeModule;
|
|
17
|
+
};
|
|
18
|
+
const handleRouteModuleError = (error) => {
|
|
19
|
+
console.error(error);
|
|
20
|
+
return null;
|
|
21
|
+
};
|
|
12
22
|
export {
|
|
13
|
-
createShouldRevalidate
|
|
23
|
+
createShouldRevalidate,
|
|
24
|
+
handleRouteModule,
|
|
25
|
+
handleRouteModuleError
|
|
14
26
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { loadableReady } from "@loadable/component";
|
|
3
3
|
import hoistNonReactStatics from "hoist-non-react-statics";
|
|
4
|
-
import { parsedJSONFromElement } from "@modern-js/runtime-utils/
|
|
4
|
+
import { parsedJSONFromElement } from "@modern-js/runtime-utils/parsed";
|
|
5
5
|
import { RenderLevel } from "./serverRender/types";
|
|
6
6
|
import { WithCallback } from "./react/withCallback";
|
|
7
7
|
import { formatClient, mockResponse, isReact18 } from "./utils";
|
|
@@ -8,7 +8,7 @@ var ShellChunkStatus;
|
|
|
8
8
|
ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
|
|
9
9
|
})(ShellChunkStatus || (ShellChunkStatus = {}));
|
|
10
10
|
function renderToPipe(rootElement, context, options) {
|
|
11
|
-
let shellChunkStatus =
|
|
11
|
+
let shellChunkStatus = 0;
|
|
12
12
|
const { ssrContext } = context;
|
|
13
13
|
const chunkVec = [];
|
|
14
14
|
const forUserPipe = (stream) => {
|
|
@@ -28,12 +28,12 @@ function renderToPipe(rootElement, context, options) {
|
|
|
28
28
|
const injectableTransform = new Transform({
|
|
29
29
|
transform(chunk, _encoding, callback) {
|
|
30
30
|
try {
|
|
31
|
-
if (shellChunkStatus !==
|
|
31
|
+
if (shellChunkStatus !== 1) {
|
|
32
32
|
chunkVec.push(chunk.toString());
|
|
33
33
|
let concatedChunk = chunkVec.join("");
|
|
34
34
|
if (concatedChunk.endsWith(ESCAPED_SHELL_STREAM_END_MARK)) {
|
|
35
35
|
concatedChunk = concatedChunk.replace(ESCAPED_SHELL_STREAM_END_MARK, "");
|
|
36
|
-
shellChunkStatus =
|
|
36
|
+
shellChunkStatus = 1;
|
|
37
37
|
this.push(`${shellBefore}${concatedChunk}${shellAfter}`);
|
|
38
38
|
}
|
|
39
39
|
} else {
|
|
@@ -8,7 +8,7 @@ var ShellChunkStatus;
|
|
|
8
8
|
ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
|
|
9
9
|
})(ShellChunkStatus || (ShellChunkStatus = {}));
|
|
10
10
|
function renderToPipe(rootElement, context, options) {
|
|
11
|
-
let shellChunkStatus =
|
|
11
|
+
let shellChunkStatus = 0;
|
|
12
12
|
const chunkVec = [];
|
|
13
13
|
const { ssrContext } = context;
|
|
14
14
|
const forUserPipe = async () => {
|
|
@@ -36,13 +36,13 @@ function renderToPipe(rootElement, context, options) {
|
|
|
36
36
|
controller.close();
|
|
37
37
|
return;
|
|
38
38
|
}
|
|
39
|
-
if (shellChunkStatus !==
|
|
39
|
+
if (shellChunkStatus !== 1) {
|
|
40
40
|
const chunk = new TextDecoder().decode(value);
|
|
41
41
|
chunkVec.push(chunk);
|
|
42
42
|
let concatedChunk = chunkVec.join("");
|
|
43
43
|
if (concatedChunk.endsWith(ESCAPED_SHELL_STREAM_END_MARK)) {
|
|
44
44
|
concatedChunk = concatedChunk.replace(ESCAPED_SHELL_STREAM_END_MARK, "");
|
|
45
|
-
shellChunkStatus =
|
|
45
|
+
shellChunkStatus = 1;
|
|
46
46
|
controller.enqueue(encodeForWebStream(`${shellBefore}${concatedChunk}${shellAfter}`));
|
|
47
47
|
}
|
|
48
48
|
} else {
|
|
@@ -36,7 +36,8 @@ const buildTemplateData = (context, data, renderLevel, tracker) => {
|
|
|
36
36
|
renderLevel
|
|
37
37
|
};
|
|
38
38
|
};
|
|
39
|
-
|
|
39
|
+
var Entry;
|
|
40
|
+
Entry = class Entry2 {
|
|
40
41
|
async renderToHtml(context) {
|
|
41
42
|
var _ssrContext_redirection, _ssrContext_redirection1, _ssrContext_redirection2;
|
|
42
43
|
const ssrContext = context.ssrContext;
|
|
@@ -153,7 +154,7 @@ class Entry {
|
|
|
153
154
|
}
|
|
154
155
|
};
|
|
155
156
|
}
|
|
156
|
-
}
|
|
157
|
+
};
|
|
157
158
|
export {
|
|
158
159
|
Entry as default
|
|
159
160
|
};
|
|
@@ -20,8 +20,8 @@ const checkIsInline = (chunk, enableInline) => {
|
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
22
|
const readAsset = async (chunk) => {
|
|
23
|
-
const fs = await import("
|
|
24
|
-
const path = await import("
|
|
23
|
+
const fs = await import("fs/promises");
|
|
24
|
+
const path = await import("path");
|
|
25
25
|
const filepath = path.resolve(__dirname, chunk.filename);
|
|
26
26
|
return fs.readFile(filepath, "utf-8");
|
|
27
27
|
};
|