@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
|
@@ -60,7 +60,7 @@ const createLoader = (id, initialData = {
|
|
|
60
60
|
error: void 0
|
|
61
61
|
}, loaderFn, skip = false) => {
|
|
62
62
|
let promise;
|
|
63
|
-
let status =
|
|
63
|
+
let status = 0;
|
|
64
64
|
let { data, error } = initialData;
|
|
65
65
|
let hasLoaded = false;
|
|
66
66
|
const handlers = /* @__PURE__ */ new Set();
|
|
@@ -68,19 +68,19 @@ const createLoader = (id, initialData = {
|
|
|
68
68
|
if (skip) {
|
|
69
69
|
return promise;
|
|
70
70
|
}
|
|
71
|
-
if (status ===
|
|
71
|
+
if (status === 1) {
|
|
72
72
|
return promise;
|
|
73
73
|
}
|
|
74
|
-
status =
|
|
74
|
+
status = 1;
|
|
75
75
|
notify();
|
|
76
76
|
promise = loaderFn().then((value) => {
|
|
77
77
|
data = value;
|
|
78
78
|
error = null;
|
|
79
|
-
status =
|
|
79
|
+
status = 2;
|
|
80
80
|
}).catch((e) => {
|
|
81
81
|
error = e;
|
|
82
82
|
data = null;
|
|
83
|
-
status =
|
|
83
|
+
status = 3;
|
|
84
84
|
}).finally(() => {
|
|
85
85
|
promise = null;
|
|
86
86
|
hasLoaded = true;
|
|
@@ -89,8 +89,8 @@ const createLoader = (id, initialData = {
|
|
|
89
89
|
return promise;
|
|
90
90
|
};
|
|
91
91
|
const getResult = () => ({
|
|
92
|
-
loading: !hasLoaded && status ===
|
|
93
|
-
reloading: hasLoaded && status ===
|
|
92
|
+
loading: !hasLoaded && status === 1,
|
|
93
|
+
reloading: hasLoaded && status === 1,
|
|
94
94
|
data,
|
|
95
95
|
error: error instanceof Error ? `${error.message}` : error,
|
|
96
96
|
// redundant fields for ssr log
|
|
@@ -37,7 +37,8 @@ const DocumentStructureContext = /* @__PURE__ */ import_react.default.createCont
|
|
|
37
37
|
hasSetScripts: false,
|
|
38
38
|
hasSetBody: false,
|
|
39
39
|
hasSetRoot: false,
|
|
40
|
-
hasSetLinks: false
|
|
40
|
+
hasSetLinks: false,
|
|
41
|
+
hasSetTitle: false
|
|
41
42
|
});
|
|
42
43
|
// Annotate the CommonJS export names for ESM import in node:
|
|
43
44
|
0 && (module.exports = {
|
|
@@ -27,25 +27,27 @@ var import_react = require("react");
|
|
|
27
27
|
var import_DocumentStructureContext = require("./DocumentStructureContext");
|
|
28
28
|
var import_Scripts = require("./Scripts");
|
|
29
29
|
var import_Links = require("./Links");
|
|
30
|
+
var import_Title = require("./Title");
|
|
30
31
|
var import_constants = require("./constants");
|
|
31
32
|
function Head(props) {
|
|
32
|
-
const { hasSetScripts, hasSetLinks } = (0, import_react.useContext)(import_DocumentStructureContext.DocumentStructureContext);
|
|
33
|
+
const { hasSetScripts, hasSetLinks, hasSetTitle } = (0, import_react.useContext)(import_DocumentStructureContext.DocumentStructureContext);
|
|
33
34
|
const { children, ...rest } = props;
|
|
34
35
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("head", {
|
|
35
36
|
...rest,
|
|
36
37
|
children: [
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
import_constants.TOP_PARTICALS_SEPARATOR,
|
|
39
|
+
import_constants.DOCUMENT_META_PLACEHOLDER,
|
|
40
|
+
!hasSetTitle && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Title.Title, {}),
|
|
39
41
|
!hasSetLinks && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Links.Links, {}),
|
|
40
42
|
!hasSetScripts && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Scripts.Scripts, {}),
|
|
41
|
-
|
|
43
|
+
import_constants.HEAD_PARTICALS_SEPARATOR,
|
|
42
44
|
children
|
|
43
45
|
]
|
|
44
46
|
});
|
|
45
47
|
}
|
|
46
48
|
function DefaultHead() {
|
|
47
49
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("head", {
|
|
48
|
-
children:
|
|
50
|
+
children: import_constants.DOCUMENT_META_PLACEHOLDER
|
|
49
51
|
});
|
|
50
52
|
}
|
|
51
53
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -54,6 +54,7 @@ function Html(props) {
|
|
|
54
54
|
const hasSetLinks = Boolean(findTargetElement("Links", children));
|
|
55
55
|
const hasSetBody = Boolean(findTargetChild("Body", children));
|
|
56
56
|
const hasSetRoot = Boolean(findTargetElement("Root", children));
|
|
57
|
+
const hasSetTitle = Boolean(findTargetElement("title", children));
|
|
57
58
|
const notMissMustChild = [
|
|
58
59
|
hasSetHead,
|
|
59
60
|
hasSetBody
|
|
@@ -89,6 +90,7 @@ function Html(props) {
|
|
|
89
90
|
hasSetLinks,
|
|
90
91
|
hasSetRoot,
|
|
91
92
|
hasSetBody,
|
|
93
|
+
hasSetTitle,
|
|
92
94
|
docChild: children
|
|
93
95
|
},
|
|
94
96
|
children: [
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var Title_exports = {};
|
|
20
|
+
__export(Title_exports, {
|
|
21
|
+
Title: () => Title
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(Title_exports);
|
|
24
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
25
|
+
var import_constants = require("./constants");
|
|
26
|
+
function Title() {
|
|
27
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("title", {
|
|
28
|
+
children: import_constants.DOCUMENT_TITLE_PLACEHOLDER
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
32
|
+
0 && (module.exports = {
|
|
33
|
+
Title
|
|
34
|
+
});
|
|
@@ -167,6 +167,10 @@ const documentPlugin = () => ({
|
|
|
167
167
|
templateParameters.meta,
|
|
168
168
|
htmlWebpackPlugin.tags.headTags.filter((item) => item.tagName !== "script" && item.tagName !== "link").join("")
|
|
169
169
|
].join("");
|
|
170
|
+
const titles = [
|
|
171
|
+
templateParameters.title,
|
|
172
|
+
htmlWebpackPlugin.tags.headTags.filter((item) => item.tagName === "title").join("")
|
|
173
|
+
].join("");
|
|
170
174
|
if (html.includes(import_constants.DOCUMENT_SCRIPT_PLACEHOLDER_START) && html.includes(import_constants.DOCUMENT_SCRIPT_PLACEHOLDER_END)) {
|
|
171
175
|
const { nonce } = config.security;
|
|
172
176
|
const nonceAttr = nonce ? `nonce=${nonce}` : "";
|
|
@@ -178,7 +182,7 @@ const documentPlugin = () => ({
|
|
|
178
182
|
if (html.includes(import_constants.DOCUMENT_COMMENT_PLACEHOLDER_START) && html.includes(import_constants.DOCUMENT_COMMENT_PLACEHOLDER_END)) {
|
|
179
183
|
html = html.replace(new RegExp(`${import_constants.DOCUMENT_COMMENT_PLACEHOLDER_START}(.*?)${import_constants.DOCUMENT_COMMENT_PLACEHOLDER_END}`, "g"), (_scriptStr, $1) => `${decodeURIComponent($1)}`);
|
|
180
184
|
}
|
|
181
|
-
const finalHtml = `<!DOCTYPE html>${html}`.replace(import_constants.DOCUMENT_META_PLACEHOLDER, metas).replace(import_constants.DOCUMENT_SSR_PLACEHOLDER, import_constants.HTML_SEPARATOR).replace(import_constants.DOCUMENT_SCRIPTS_PLACEHOLDER, scripts).replace(import_constants.DOCUMENT_LINKS_PLACEHOLDER, links).replace(import_constants.DOCUMENT_CHUNKSMAP_PLACEHOLDER, import_constants.PLACEHOLDER_REPLACER_MAP[import_constants.DOCUMENT_CHUNKSMAP_PLACEHOLDER]).replace(import_constants.DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, import_constants.PLACEHOLDER_REPLACER_MAP[import_constants.DOCUMENT_SSRDATASCRIPT_PLACEHOLDER]);
|
|
185
|
+
const finalHtml = `<!DOCTYPE html>${html}`.replace(import_constants.DOCUMENT_META_PLACEHOLDER, metas).replace(import_constants.DOCUMENT_SSR_PLACEHOLDER, import_constants.HTML_SEPARATOR).replace(import_constants.DOCUMENT_SCRIPTS_PLACEHOLDER, scripts).replace(import_constants.DOCUMENT_LINKS_PLACEHOLDER, links).replace(import_constants.DOCUMENT_CHUNKSMAP_PLACEHOLDER, import_constants.PLACEHOLDER_REPLACER_MAP[import_constants.DOCUMENT_CHUNKSMAP_PLACEHOLDER]).replace(import_constants.DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, import_constants.PLACEHOLDER_REPLACER_MAP[import_constants.DOCUMENT_SSRDATASCRIPT_PLACEHOLDER]).replace(import_constants.DOCUMENT_TITLE_PLACEHOLDER, titles);
|
|
182
186
|
return finalHtml;
|
|
183
187
|
};
|
|
184
188
|
};
|
|
@@ -32,6 +32,7 @@ __export(constants_exports, {
|
|
|
32
32
|
DOCUMENT_SSR_PLACEHOLDER: () => DOCUMENT_SSR_PLACEHOLDER,
|
|
33
33
|
DOCUMENT_STYLE_PLACEHOLDER_END: () => DOCUMENT_STYLE_PLACEHOLDER_END,
|
|
34
34
|
DOCUMENT_STYLE_PLACEHOLDER_START: () => DOCUMENT_STYLE_PLACEHOLDER_START,
|
|
35
|
+
DOCUMENT_TITLE_PLACEHOLDER: () => DOCUMENT_TITLE_PLACEHOLDER,
|
|
35
36
|
DOC_EXT: () => DOC_EXT,
|
|
36
37
|
HEAD_PARTICALS_SEPARATOR: () => HEAD_PARTICALS_SEPARATOR,
|
|
37
38
|
HTML_SEPARATOR: () => HTML_SEPARATOR,
|
|
@@ -48,6 +49,7 @@ const DOC_EXT = [
|
|
|
48
49
|
"js"
|
|
49
50
|
];
|
|
50
51
|
const DOCUMENT_META_PLACEHOLDER = encodeURIComponent("<%= meta %>");
|
|
52
|
+
const DOCUMENT_TITLE_PLACEHOLDER = encodeURIComponent("<%= title %>");
|
|
51
53
|
const HTML_SEPARATOR = "<!--<?- html ?>-->";
|
|
52
54
|
const HEAD_PARTICALS_SEPARATOR = encodeURIComponent("<!--<?- partials.head ?>-->");
|
|
53
55
|
const BODY_PARTICALS_SEPARATOR = encodeURIComponent("<!--<?- partials.body ?>-->");
|
|
@@ -86,6 +88,7 @@ const PLACEHOLDER_REPLACER_MAP = {
|
|
|
86
88
|
DOCUMENT_SSR_PLACEHOLDER,
|
|
87
89
|
DOCUMENT_STYLE_PLACEHOLDER_END,
|
|
88
90
|
DOCUMENT_STYLE_PLACEHOLDER_START,
|
|
91
|
+
DOCUMENT_TITLE_PLACEHOLDER,
|
|
89
92
|
DOC_EXT,
|
|
90
93
|
HEAD_PARTICALS_SEPARATOR,
|
|
91
94
|
HTML_SEPARATOR,
|
|
@@ -40,10 +40,12 @@ __export(runtime_exports, {
|
|
|
40
40
|
createRoutesFromChildren: () => import_router2.createRoutesFromChildren,
|
|
41
41
|
createRoutesFromElements: () => import_router2.createRoutesFromElements,
|
|
42
42
|
createSearchParams: () => import_router2.createSearchParams,
|
|
43
|
-
createShouldRevalidate: () =>
|
|
43
|
+
createShouldRevalidate: () => import_routeModule.createShouldRevalidate,
|
|
44
44
|
default: () => runtime_default,
|
|
45
45
|
defer: () => import_router2.defer,
|
|
46
46
|
generatePath: () => import_router2.generatePath,
|
|
47
|
+
handleRouteModule: () => import_routeModule.handleRouteModule,
|
|
48
|
+
handleRouteModuleError: () => import_routeModule.handleRouteModuleError,
|
|
47
49
|
isRouteErrorResponse: () => import_router2.isRouteErrorResponse,
|
|
48
50
|
json: () => import_router2.json,
|
|
49
51
|
matchPath: () => import_router2.matchPath,
|
|
@@ -90,7 +92,7 @@ var import_utils = require("./utils");
|
|
|
90
92
|
var import_plugin2 = require("./plugin");
|
|
91
93
|
__reExport(runtime_exports, require("./withRouter"), module.exports);
|
|
92
94
|
var import_PrefetchLink = require("./PrefetchLink");
|
|
93
|
-
var
|
|
95
|
+
var import_routeModule = require("./routeModule");
|
|
94
96
|
var import_router2 = require("@modern-js/runtime-utils/router");
|
|
95
97
|
var runtime_default = import_plugin.routerPlugin;
|
|
96
98
|
const useRouteLoaderData = (routeId) => {
|
|
@@ -123,6 +125,8 @@ const useRouteLoaderData = (routeId) => {
|
|
|
123
125
|
createShouldRevalidate,
|
|
124
126
|
defer,
|
|
125
127
|
generatePath,
|
|
128
|
+
handleRouteModule,
|
|
129
|
+
handleRouteModuleError,
|
|
126
130
|
isRouteErrorResponse,
|
|
127
131
|
json,
|
|
128
132
|
matchPath,
|
|
@@ -38,7 +38,7 @@ var import_jsx_runtime = require("react/jsx-runtime");
|
|
|
38
38
|
var import_react = require("react");
|
|
39
39
|
var import_router = require("@modern-js/runtime-utils/router");
|
|
40
40
|
var import_hoist_non_react_statics = __toESM(require("hoist-non-react-statics"));
|
|
41
|
-
var
|
|
41
|
+
var import_parsed = require("@modern-js/runtime-utils/parsed");
|
|
42
42
|
var import_core = require("../../core");
|
|
43
43
|
var import_hooks = require("./hooks");
|
|
44
44
|
var import_utils = require("./utils");
|
|
@@ -59,7 +59,7 @@ const routerPlugin = ({ serverBase = [], supportHtml5History = true, basename =
|
|
|
59
59
|
const select = (pathname) => serverBase.find((baseUrl) => pathname.search(baseUrl) === 0) || "/";
|
|
60
60
|
let routes = [];
|
|
61
61
|
finalRouteConfig = routesConfig;
|
|
62
|
-
window._SERVER_DATA = (0,
|
|
62
|
+
window._SERVER_DATA = (0, import_parsed.parsedJSONFromElement)("__MODERN_SERVER_DATA__");
|
|
63
63
|
return {
|
|
64
64
|
name: "@modern-js/plugin-router",
|
|
65
65
|
registerHook: {
|
|
@@ -16,11 +16,13 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
21
|
-
createShouldRevalidate: () => createShouldRevalidate
|
|
19
|
+
var routeModule_exports = {};
|
|
20
|
+
__export(routeModule_exports, {
|
|
21
|
+
createShouldRevalidate: () => createShouldRevalidate,
|
|
22
|
+
handleRouteModule: () => handleRouteModule,
|
|
23
|
+
handleRouteModuleError: () => handleRouteModuleError
|
|
22
24
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
25
|
+
module.exports = __toCommonJS(routeModule_exports);
|
|
24
26
|
var import_constants = require("@modern-js/utils/universal/constants");
|
|
25
27
|
const createShouldRevalidate = (routeId) => {
|
|
26
28
|
return (arg) => {
|
|
@@ -32,7 +34,19 @@ const createShouldRevalidate = (routeId) => {
|
|
|
32
34
|
return arg.defaultShouldRevalidate;
|
|
33
35
|
};
|
|
34
36
|
};
|
|
37
|
+
const handleRouteModule = (routeModule, routeId) => {
|
|
38
|
+
if (typeof document !== "undefined") {
|
|
39
|
+
window[import_constants.ROUTE_MODULES][routeId] = routeModule;
|
|
40
|
+
}
|
|
41
|
+
return routeModule;
|
|
42
|
+
};
|
|
43
|
+
const handleRouteModuleError = (error) => {
|
|
44
|
+
console.error(error);
|
|
45
|
+
return null;
|
|
46
|
+
};
|
|
35
47
|
// Annotate the CommonJS export names for ESM import in node:
|
|
36
48
|
0 && (module.exports = {
|
|
37
|
-
createShouldRevalidate
|
|
49
|
+
createShouldRevalidate,
|
|
50
|
+
handleRouteModule,
|
|
51
|
+
handleRouteModuleError
|
|
38
52
|
});
|
package/dist/cjs/ssr/index.js
CHANGED
|
@@ -36,7 +36,7 @@ module.exports = __toCommonJS(ssr_exports);
|
|
|
36
36
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
37
37
|
var import_component = require("@loadable/component");
|
|
38
38
|
var import_hoist_non_react_statics = __toESM(require("hoist-non-react-statics"));
|
|
39
|
-
var
|
|
39
|
+
var import_parsed = require("@modern-js/runtime-utils/parsed");
|
|
40
40
|
var import_types = require("./serverRender/types");
|
|
41
41
|
var import_withCallback = require("./react/withCallback");
|
|
42
42
|
var import_utils = require("./utils");
|
|
@@ -47,8 +47,8 @@ const ssr = (config) => ({
|
|
|
47
47
|
setup: () => {
|
|
48
48
|
const mockResp = (0, import_utils.mockResponse)();
|
|
49
49
|
if (config.inlineScript === false) {
|
|
50
|
-
window._SSR_DATA = (0,
|
|
51
|
-
window._ROUTER_DATA = (0,
|
|
50
|
+
window._SSR_DATA = (0, import_parsed.parsedJSONFromElement)(import_utils2.SSR_DATA_JSON_ID);
|
|
51
|
+
window._ROUTER_DATA = (0, import_parsed.parsedJSONFromElement)(import_utils2.ROUTER_DATA_JSON_ID);
|
|
52
52
|
}
|
|
53
53
|
return {
|
|
54
54
|
client: async ({ App, context, ModernRender, ModernHydrate }) => {
|
|
@@ -31,7 +31,7 @@ var ShellChunkStatus;
|
|
|
31
31
|
ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
|
|
32
32
|
})(ShellChunkStatus || (ShellChunkStatus = {}));
|
|
33
33
|
function renderToPipe(rootElement, context, options) {
|
|
34
|
-
let shellChunkStatus =
|
|
34
|
+
let shellChunkStatus = 0;
|
|
35
35
|
const { ssrContext } = context;
|
|
36
36
|
const chunkVec = [];
|
|
37
37
|
const forUserPipe = (stream) => {
|
|
@@ -51,12 +51,12 @@ function renderToPipe(rootElement, context, options) {
|
|
|
51
51
|
const injectableTransform = new import_stream.Transform({
|
|
52
52
|
transform(chunk, _encoding, callback) {
|
|
53
53
|
try {
|
|
54
|
-
if (shellChunkStatus !==
|
|
54
|
+
if (shellChunkStatus !== 1) {
|
|
55
55
|
chunkVec.push(chunk.toString());
|
|
56
56
|
let concatedChunk = chunkVec.join("");
|
|
57
57
|
if (concatedChunk.endsWith(import_common.ESCAPED_SHELL_STREAM_END_MARK)) {
|
|
58
58
|
concatedChunk = concatedChunk.replace(import_common.ESCAPED_SHELL_STREAM_END_MARK, "");
|
|
59
|
-
shellChunkStatus =
|
|
59
|
+
shellChunkStatus = 1;
|
|
60
60
|
this.push(`${shellBefore}${concatedChunk}${shellAfter}`);
|
|
61
61
|
}
|
|
62
62
|
} else {
|
|
@@ -31,7 +31,7 @@ var ShellChunkStatus;
|
|
|
31
31
|
ShellChunkStatus2[ShellChunkStatus2["FINIESH"] = 1] = "FINIESH";
|
|
32
32
|
})(ShellChunkStatus || (ShellChunkStatus = {}));
|
|
33
33
|
function renderToPipe(rootElement, context, options) {
|
|
34
|
-
let shellChunkStatus =
|
|
34
|
+
let shellChunkStatus = 0;
|
|
35
35
|
const chunkVec = [];
|
|
36
36
|
const { ssrContext } = context;
|
|
37
37
|
const forUserPipe = async () => {
|
|
@@ -59,13 +59,13 @@ function renderToPipe(rootElement, context, options) {
|
|
|
59
59
|
controller.close();
|
|
60
60
|
return;
|
|
61
61
|
}
|
|
62
|
-
if (shellChunkStatus !==
|
|
62
|
+
if (shellChunkStatus !== 1) {
|
|
63
63
|
const chunk = new TextDecoder().decode(value);
|
|
64
64
|
chunkVec.push(chunk);
|
|
65
65
|
let concatedChunk = chunkVec.join("");
|
|
66
66
|
if (concatedChunk.endsWith(import_common.ESCAPED_SHELL_STREAM_END_MARK)) {
|
|
67
67
|
concatedChunk = concatedChunk.replace(import_common.ESCAPED_SHELL_STREAM_END_MARK, "");
|
|
68
|
-
shellChunkStatus =
|
|
68
|
+
shellChunkStatus = 1;
|
|
69
69
|
controller.enqueue(encodeForWebStream(`${shellBefore}${concatedChunk}${shellAfter}`));
|
|
70
70
|
}
|
|
71
71
|
} else {
|
|
@@ -69,7 +69,8 @@ const buildTemplateData = (context, data, renderLevel, tracker) => {
|
|
|
69
69
|
renderLevel
|
|
70
70
|
};
|
|
71
71
|
};
|
|
72
|
-
|
|
72
|
+
var Entry;
|
|
73
|
+
Entry = class Entry2 {
|
|
73
74
|
async renderToHtml(context) {
|
|
74
75
|
var _ssrContext_redirection, _ssrContext_redirection1, _ssrContext_redirection2;
|
|
75
76
|
const ssrContext = context.ssrContext;
|
|
@@ -186,4 +187,4 @@ class Entry {
|
|
|
186
187
|
}
|
|
187
188
|
};
|
|
188
189
|
}
|
|
189
|
-
}
|
|
190
|
+
};
|
|
@@ -53,8 +53,8 @@ const checkIsInline = (chunk, enableInline) => {
|
|
|
53
53
|
}
|
|
54
54
|
};
|
|
55
55
|
const readAsset = async (chunk) => {
|
|
56
|
-
const fs = await Promise.resolve().then(() => __toESM(require("
|
|
57
|
-
const path = await Promise.resolve().then(() => __toESM(require("
|
|
56
|
+
const fs = await Promise.resolve().then(() => __toESM(require("fs/promises")));
|
|
57
|
+
const path = await Promise.resolve().then(() => __toESM(require("path")));
|
|
58
58
|
const filepath = path.resolve(__dirname, chunk.filename);
|
|
59
59
|
return fs.readFile(filepath, "utf-8");
|
|
60
60
|
};
|
|
@@ -39,49 +39,52 @@ var SSRErrors;
|
|
|
39
39
|
SSRErrors2[SSRErrors2["RENDER_SHELL"] = 4] = "RENDER_SHELL";
|
|
40
40
|
})(SSRErrors || (SSRErrors = {}));
|
|
41
41
|
const errors = {
|
|
42
|
-
[
|
|
43
|
-
reporter: "
|
|
42
|
+
[0]: {
|
|
43
|
+
reporter: "App Prerender",
|
|
44
44
|
logger: "App Prerender",
|
|
45
45
|
metrics: "app.prerender.error"
|
|
46
46
|
},
|
|
47
|
-
[
|
|
48
|
-
reporter: "
|
|
47
|
+
[1]: {
|
|
48
|
+
reporter: "App run useLoader",
|
|
49
49
|
logger: "App run useLoader",
|
|
50
50
|
metrics: "app.useloader.error"
|
|
51
51
|
},
|
|
52
|
-
[
|
|
53
|
-
reporter: "
|
|
52
|
+
[2]: {
|
|
53
|
+
reporter: "App Render To HTML",
|
|
54
54
|
logger: "App Render To HTML",
|
|
55
55
|
metrics: "app.render.html.error"
|
|
56
56
|
},
|
|
57
|
-
[
|
|
58
|
-
reporter: "
|
|
57
|
+
[3]: {
|
|
58
|
+
reporter: "App Render To Streaming",
|
|
59
59
|
logger: "An error occurs during streaming SSR",
|
|
60
60
|
metrics: "app.render.streaming.error"
|
|
61
61
|
},
|
|
62
|
-
[
|
|
62
|
+
[4]: {
|
|
63
63
|
metrics: "app.render.streaming.shell.error"
|
|
64
64
|
}
|
|
65
65
|
};
|
|
66
66
|
const timings = {
|
|
67
|
-
[
|
|
67
|
+
[0]: {
|
|
68
68
|
reporter: "ssr-prerender",
|
|
69
69
|
serverTiming: "ssr-prerender",
|
|
70
70
|
metrics: "app.prerender.cost",
|
|
71
71
|
logger: "App Prerender cost = %d ms"
|
|
72
72
|
},
|
|
73
|
-
[
|
|
73
|
+
[1]: {
|
|
74
74
|
reporter: "ssr-render-html",
|
|
75
75
|
serverTiming: "ssr-render-html",
|
|
76
76
|
metrics: "app.render.html.cost",
|
|
77
77
|
logger: "App Render To HTML cost = %d ms"
|
|
78
78
|
},
|
|
79
|
-
[
|
|
80
|
-
reporter: "ssr-render-shell"
|
|
79
|
+
[2]: {
|
|
80
|
+
reporter: "ssr-render-shell",
|
|
81
|
+
metrics: "app.render.shell.cost",
|
|
82
|
+
logger: "App Render To Shell cost = %d ms"
|
|
81
83
|
},
|
|
82
|
-
[
|
|
84
|
+
[3]: {
|
|
83
85
|
reporter: "use-loader",
|
|
84
86
|
serverTiming: "use-loader",
|
|
87
|
+
metrics: "app.useloader.cost",
|
|
85
88
|
logger: "App run useLoader cost = %d ms"
|
|
86
89
|
}
|
|
87
90
|
};
|
|
@@ -92,7 +95,7 @@ function createSSRTracker({ reporter, serverTiming, metrics, logger }) {
|
|
|
92
95
|
},
|
|
93
96
|
trackError(key, e) {
|
|
94
97
|
const { reporter: reporterContent, metrics: metricsContent, logger: loggerContent } = errors[key];
|
|
95
|
-
reporterContent && reporter.reportError(reporterContent
|
|
98
|
+
reporterContent && reporter.reportError(`SSR Error - ${reporterContent}`, e);
|
|
96
99
|
metricsContent && metrics.emitCounter(metricsContent, 1);
|
|
97
100
|
loggerContent && logger.error(loggerContent, e);
|
|
98
101
|
},
|
|
@@ -32,7 +32,7 @@ var createLoader = function(id) {
|
|
|
32
32
|
error: void 0
|
|
33
33
|
}, loaderFn = arguments.length > 2 ? arguments[2] : void 0, skip = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;
|
|
34
34
|
var promise;
|
|
35
|
-
var status =
|
|
35
|
+
var status = 0;
|
|
36
36
|
var data = initialData.data, error = initialData.error;
|
|
37
37
|
var hasLoaded = false;
|
|
38
38
|
var handlers = /* @__PURE__ */ new Set();
|
|
@@ -45,22 +45,22 @@ var createLoader = function(id) {
|
|
|
45
45
|
promise
|
|
46
46
|
];
|
|
47
47
|
}
|
|
48
|
-
if (status ===
|
|
48
|
+
if (status === 1) {
|
|
49
49
|
return [
|
|
50
50
|
2,
|
|
51
51
|
promise
|
|
52
52
|
];
|
|
53
53
|
}
|
|
54
|
-
status =
|
|
54
|
+
status = 1;
|
|
55
55
|
notify();
|
|
56
56
|
promise = loaderFn().then(function(value) {
|
|
57
57
|
data = value;
|
|
58
58
|
error = null;
|
|
59
|
-
status =
|
|
59
|
+
status = 2;
|
|
60
60
|
}).catch(function(e) {
|
|
61
61
|
error = e;
|
|
62
62
|
data = null;
|
|
63
|
-
status =
|
|
63
|
+
status = 3;
|
|
64
64
|
}).finally(function() {
|
|
65
65
|
promise = null;
|
|
66
66
|
hasLoaded = true;
|
|
@@ -78,8 +78,8 @@ var createLoader = function(id) {
|
|
|
78
78
|
}();
|
|
79
79
|
var getResult = function() {
|
|
80
80
|
return {
|
|
81
|
-
loading: !hasLoaded && status ===
|
|
82
|
-
reloading: hasLoaded && status ===
|
|
81
|
+
loading: !hasLoaded && status === 1,
|
|
82
|
+
reloading: hasLoaded && status === 1,
|
|
83
83
|
data,
|
|
84
84
|
error: _instanceof(error, Error) ? "".concat(error.message) : error,
|
|
85
85
|
// redundant fields for ssr log
|
|
@@ -6,26 +6,28 @@ import { useContext } from "react";
|
|
|
6
6
|
import { DocumentStructureContext } from "./DocumentStructureContext";
|
|
7
7
|
import { Scripts } from "./Scripts";
|
|
8
8
|
import { Links } from "./Links";
|
|
9
|
+
import { Title } from "./Title";
|
|
9
10
|
import { DOCUMENT_META_PLACEHOLDER, HEAD_PARTICALS_SEPARATOR, TOP_PARTICALS_SEPARATOR } from "./constants";
|
|
10
11
|
function Head(props) {
|
|
11
|
-
var _useContext = useContext(DocumentStructureContext), hasSetScripts = _useContext.hasSetScripts, hasSetLinks = _useContext.hasSetLinks;
|
|
12
|
+
var _useContext = useContext(DocumentStructureContext), hasSetScripts = _useContext.hasSetScripts, hasSetLinks = _useContext.hasSetLinks, hasSetTitle = _useContext.hasSetTitle;
|
|
12
13
|
var children = props.children, rest = _object_without_properties(props, [
|
|
13
14
|
"children"
|
|
14
15
|
]);
|
|
15
16
|
return /* @__PURE__ */ _jsxs("head", _object_spread_props(_object_spread({}, rest), {
|
|
16
17
|
children: [
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
TOP_PARTICALS_SEPARATOR,
|
|
19
|
+
DOCUMENT_META_PLACEHOLDER,
|
|
20
|
+
!hasSetTitle && /* @__PURE__ */ _jsx(Title, {}),
|
|
19
21
|
!hasSetLinks && /* @__PURE__ */ _jsx(Links, {}),
|
|
20
22
|
!hasSetScripts && /* @__PURE__ */ _jsx(Scripts, {}),
|
|
21
|
-
|
|
23
|
+
HEAD_PARTICALS_SEPARATOR,
|
|
22
24
|
children
|
|
23
25
|
]
|
|
24
26
|
}));
|
|
25
27
|
}
|
|
26
28
|
function DefaultHead() {
|
|
27
29
|
return /* @__PURE__ */ _jsx("head", {
|
|
28
|
-
children:
|
|
30
|
+
children: DOCUMENT_META_PLACEHOLDER
|
|
29
31
|
});
|
|
30
32
|
}
|
|
31
33
|
export {
|
|
@@ -55,6 +55,7 @@ function Html(props) {
|
|
|
55
55
|
var hasSetLinks = Boolean(findTargetElement("Links", children));
|
|
56
56
|
var hasSetBody = Boolean(findTargetChild("Body", children));
|
|
57
57
|
var hasSetRoot = Boolean(findTargetElement("Root", children));
|
|
58
|
+
var hasSetTitle = Boolean(findTargetElement("title", children));
|
|
58
59
|
var notMissMustChild = [
|
|
59
60
|
hasSetHead,
|
|
60
61
|
hasSetBody
|
|
@@ -91,6 +92,7 @@ function Html(props) {
|
|
|
91
92
|
hasSetLinks,
|
|
92
93
|
hasSetRoot,
|
|
93
94
|
hasSetBody,
|
|
95
|
+
hasSetTitle,
|
|
94
96
|
docChild: children
|
|
95
97
|
},
|
|
96
98
|
children: [
|
|
@@ -8,7 +8,7 @@ import ReactDomServer from "react-dom/server";
|
|
|
8
8
|
import { build } from "esbuild";
|
|
9
9
|
import { createDebugger, findExists, fs } from "@modern-js/utils";
|
|
10
10
|
import { DocumentContext } from "../DocumentContext";
|
|
11
|
-
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";
|
|
11
|
+
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";
|
|
12
12
|
var debug = createDebugger("html_genarate");
|
|
13
13
|
var getDocumenByEntryName = function getDocumenByEntryName2(entrypoints, entryName, fallbackDir) {
|
|
14
14
|
var _entrypoints_find;
|
|
@@ -57,7 +57,7 @@ var documentPlugin = function() {
|
|
|
57
57
|
}
|
|
58
58
|
return function() {
|
|
59
59
|
var _ref2 = _async_to_generator(function(param) {
|
|
60
|
-
var htmlWebpackPlugin, config, documentParams, tempTsConfigFile, userTsConfigFilePath, tsConfig, err, htmlOutputFile, Document, HTMLElement, html, partialsByEntrypoint, scripts, partialsContent, links, metas, nonce, nonceAttr, finalHtml;
|
|
60
|
+
var htmlWebpackPlugin, config, documentParams, tempTsConfigFile, userTsConfigFilePath, tsConfig, err, htmlOutputFile, Document, HTMLElement, html, partialsByEntrypoint, scripts, partialsContent, links, metas, titles, nonce, nonceAttr, finalHtml;
|
|
61
61
|
return _ts_generator(this, function(_state2) {
|
|
62
62
|
switch (_state2.label) {
|
|
63
63
|
case 0:
|
|
@@ -185,6 +185,12 @@ var documentPlugin = function() {
|
|
|
185
185
|
return item.tagName !== "script" && item.tagName !== "link";
|
|
186
186
|
}).join("")
|
|
187
187
|
].join("");
|
|
188
|
+
titles = [
|
|
189
|
+
templateParameters.title,
|
|
190
|
+
htmlWebpackPlugin.tags.headTags.filter(function(item) {
|
|
191
|
+
return item.tagName === "title";
|
|
192
|
+
}).join("")
|
|
193
|
+
].join("");
|
|
188
194
|
if (html.includes(DOCUMENT_SCRIPT_PLACEHOLDER_START) && html.includes(DOCUMENT_SCRIPT_PLACEHOLDER_END)) {
|
|
189
195
|
nonce = config.security.nonce;
|
|
190
196
|
nonceAttr = nonce ? "nonce=".concat(nonce) : "";
|
|
@@ -202,7 +208,7 @@ var documentPlugin = function() {
|
|
|
202
208
|
return "".concat(decodeURIComponent($1));
|
|
203
209
|
});
|
|
204
210
|
}
|
|
205
|
-
finalHtml = "<!DOCTYPE html>".concat(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]);
|
|
211
|
+
finalHtml = "<!DOCTYPE html>".concat(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);
|
|
206
212
|
return [
|
|
207
213
|
2,
|
|
208
214
|
finalHtml
|
|
@@ -7,6 +7,7 @@ var DOC_EXT = [
|
|
|
7
7
|
"js"
|
|
8
8
|
];
|
|
9
9
|
var DOCUMENT_META_PLACEHOLDER = encodeURIComponent("<%= meta %>");
|
|
10
|
+
var DOCUMENT_TITLE_PLACEHOLDER = encodeURIComponent("<%= title %>");
|
|
10
11
|
var HTML_SEPARATOR = "<!--<?- html ?>-->";
|
|
11
12
|
var HEAD_PARTICALS_SEPARATOR = encodeURIComponent("<!--<?- partials.head ?>-->");
|
|
12
13
|
var BODY_PARTICALS_SEPARATOR = encodeURIComponent("<!--<?- partials.body ?>-->");
|
|
@@ -41,6 +42,7 @@ export {
|
|
|
41
42
|
DOCUMENT_SSR_PLACEHOLDER,
|
|
42
43
|
DOCUMENT_STYLE_PLACEHOLDER_END,
|
|
43
44
|
DOCUMENT_STYLE_PLACEHOLDER_START,
|
|
45
|
+
DOCUMENT_TITLE_PLACEHOLDER,
|
|
44
46
|
DOC_EXT,
|
|
45
47
|
HEAD_PARTICALS_SEPARATOR,
|
|
46
48
|
HTML_SEPARATOR,
|
|
@@ -9,7 +9,7 @@ var useRouteLoaderData = function(routeId) {
|
|
|
9
9
|
var 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,
|