@modern-js/runtime 2.3.1-alpha.0 → 2.4.1-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +14 -18
- package/dist/js/modern/core/compatible.js +1 -0
- package/dist/js/modern/document/Body.js +2 -2
- package/dist/js/modern/document/{DocumentStructrueContext.js → DocumentStructureContext.js} +2 -2
- package/dist/js/modern/document/Head.js +2 -2
- package/dist/js/modern/document/Html.js +2 -2
- package/dist/js/modern/document/index.js +1 -1
- package/dist/js/modern/router/runtime/fetch.js +5 -0
- package/dist/js/modern/router/runtime/fetch.node.js +4 -0
- package/dist/js/modern/router/runtime/fetch.worker.js +5 -0
- package/dist/js/modern/router/runtime/plugin.node.js +50 -22
- package/dist/js/modern/ssr/cli/index.js +2 -2
- package/dist/js/modern/ssr/prefetch.worker.js +66 -0
- package/dist/js/modern/ssr/react/nossr/index.js +6 -2
- package/dist/js/modern/ssr/serverRender/renderToStream/index.js +1 -1
- package/dist/js/modern/ssr/serverRender/renderToStream/index.worker.js +35 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +5 -3
- package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.worker.js +110 -0
- package/dist/js/modern/ssr/serverRender/renderToString/entry.js +6 -7
- package/dist/js/modern/ssr/serverRender/renderToString/index.js +1 -1
- package/dist/js/modern/ssr/serverRender/renderToString/index.worker.js +49 -0
- package/dist/js/modern/ssr/serverRender/time.js +13 -0
- package/dist/js/modern/ssr/serverRender/time.worker.js +28 -0
- package/dist/js/modern/ssr/serverRender/utils.js +1 -12
- package/dist/js/node/core/compatible.js +1 -0
- package/dist/js/node/document/Body.js +2 -2
- package/dist/js/node/document/{DocumentStructrueContext.js → DocumentStructureContext.js} +6 -6
- package/dist/js/node/document/Head.js +2 -2
- package/dist/js/node/document/Html.js +2 -2
- package/dist/js/node/document/index.js +1 -1
- package/dist/js/node/router/runtime/fetch.js +28 -0
- package/dist/js/node/router/runtime/fetch.node.js +27 -0
- package/dist/js/node/router/runtime/fetch.worker.js +28 -0
- package/dist/js/node/router/runtime/plugin.node.js +46 -21
- package/dist/js/node/ssr/cli/index.js +2 -2
- package/dist/js/node/ssr/prefetch.worker.js +87 -0
- package/dist/js/node/ssr/react/nossr/index.js +6 -2
- package/dist/js/node/ssr/serverRender/renderToStream/index.js +2 -2
- package/dist/js/node/ssr/serverRender/renderToStream/index.worker.js +64 -0
- package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +6 -2
- package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.worker.js +129 -0
- package/dist/js/node/ssr/serverRender/renderToString/entry.js +8 -9
- package/dist/js/node/ssr/serverRender/renderToString/index.js +2 -2
- package/dist/js/node/ssr/serverRender/renderToString/index.worker.js +78 -0
- package/dist/js/node/ssr/serverRender/time.js +36 -0
- package/dist/js/node/ssr/serverRender/time.worker.js +51 -0
- package/dist/js/node/ssr/serverRender/utils.js +2 -14
- package/dist/js/treeshaking/core/compatible.js +8 -7
- package/dist/js/treeshaking/core/loader/loaderManager.js +3 -3
- package/dist/js/treeshaking/core/loader/useLoader.js +15 -15
- package/dist/js/treeshaking/document/Body.js +2 -2
- package/dist/js/treeshaking/document/{DocumentStructrueContext.js → DocumentStructureContext.js} +2 -2
- package/dist/js/treeshaking/document/Head.js +2 -2
- package/dist/js/treeshaking/document/Html.js +4 -4
- package/dist/js/treeshaking/document/Root.js +2 -2
- package/dist/js/treeshaking/document/cli/index.js +4 -4
- package/dist/js/treeshaking/document/index.js +1 -1
- package/dist/js/treeshaking/router/cli/index.js +2 -2
- package/dist/js/treeshaking/router/runtime/fetch.js +2 -0
- package/dist/js/treeshaking/router/runtime/fetch.node.js +2 -0
- package/dist/js/treeshaking/router/runtime/fetch.worker.js +2 -0
- package/dist/js/treeshaking/router/runtime/plugin.js +3 -3
- package/dist/js/treeshaking/router/runtime/plugin.node.js +70 -22
- package/dist/js/treeshaking/router/runtime/utils.js +3 -3
- package/dist/js/treeshaking/ssr/cli/index.js +5 -5
- package/dist/js/treeshaking/ssr/index.js +6 -6
- package/dist/js/treeshaking/ssr/index.node.js +1 -1
- package/dist/js/treeshaking/ssr/prefetch.js +2 -2
- package/dist/js/treeshaking/ssr/prefetch.worker.js +191 -0
- package/dist/js/treeshaking/ssr/react/nossr/index.js +3 -3
- package/dist/js/treeshaking/ssr/react/prerender/index.js +2 -2
- package/dist/js/treeshaking/ssr/react/prerender/util.js +2 -2
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +2 -2
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +1 -1
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.worker.js +32 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +1 -1
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +12 -9
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.worker.js +280 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +1 -1
- package/dist/js/treeshaking/ssr/serverRender/renderToString/entry.js +6 -8
- package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +1 -1
- package/dist/js/treeshaking/ssr/serverRender/renderToString/index.worker.js +167 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToString/loadable.js +1 -1
- package/dist/js/treeshaking/ssr/serverRender/time.js +57 -0
- package/dist/js/treeshaking/ssr/serverRender/time.worker.js +75 -0
- package/dist/js/treeshaking/ssr/serverRender/utils.js +1 -57
- package/dist/js/treeshaking/ssr/utils.js +5 -5
- package/dist/js/treeshaking/state/cli/index.js +2 -2
- package/dist/js/treeshaking/state/runtime/plugin.js +3 -3
- package/dist/types/document/{DocumentStructrueContext.d.ts → DocumentStructureContext.d.ts} +2 -2
- package/dist/types/document/index.d.ts +1 -1
- package/dist/types/router/runtime/fetch.d.ts +2 -0
- package/dist/types/router/runtime/fetch.node.d.ts +2 -0
- package/dist/types/router/runtime/fetch.worker.d.ts +2 -0
- package/dist/types/ssr/prefetch.worker.d.ts +13 -0
- package/dist/types/ssr/react/nossr/index.d.ts +4 -2
- package/dist/types/ssr/serverRender/renderToStream/index.worker.d.ts +6 -0
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +1 -1
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.worker.d.ts +8 -0
- package/dist/types/ssr/serverRender/renderToString/index.worker.d.ts +6 -0
- package/dist/types/ssr/serverRender/time.d.ts +1 -0
- package/dist/types/ssr/serverRender/time.worker.d.ts +1 -0
- package/dist/types/ssr/serverRender/utils.d.ts +2 -3
- package/package.json +35 -22
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
function processHrtime(previousTimestamp) {
|
|
2
|
+
const now = new Date().getTime();
|
|
3
|
+
const clocktime = now * 1e-3;
|
|
4
|
+
let seconds = Math.floor(clocktime);
|
|
5
|
+
let nanoseconds = Math.floor(clocktime % 1 * 1e9);
|
|
6
|
+
if (previousTimestamp) {
|
|
7
|
+
seconds -= previousTimestamp[0];
|
|
8
|
+
nanoseconds -= previousTimestamp[1];
|
|
9
|
+
if (nanoseconds < 0) {
|
|
10
|
+
seconds--;
|
|
11
|
+
nanoseconds += 1e9;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return [seconds, nanoseconds];
|
|
15
|
+
}
|
|
16
|
+
const getLatency = (hrtime) => {
|
|
17
|
+
const [s, ns] = processHrtime(hrtime);
|
|
18
|
+
return s * 1e3 + ns / 1e6;
|
|
19
|
+
};
|
|
20
|
+
const time = () => {
|
|
21
|
+
const hrtime = processHrtime();
|
|
22
|
+
return () => {
|
|
23
|
+
return getLatency(hrtime);
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export {
|
|
27
|
+
time
|
|
28
|
+
};
|
|
@@ -6,17 +6,6 @@ function getLoadableScripts(extractor) {
|
|
|
6
6
|
}
|
|
7
7
|
return scripts.split("<\/script>").slice(0, 2).map((i) => `${i}<\/script>`).join("");
|
|
8
8
|
}
|
|
9
|
-
const getLatency = (hrtime) => {
|
|
10
|
-
const [s, ns] = process.hrtime(hrtime);
|
|
11
|
-
return s * 1e3 + ns / 1e6;
|
|
12
|
-
};
|
|
13
|
-
const time = () => {
|
|
14
|
-
const hrtime = process.hrtime();
|
|
15
|
-
return () => {
|
|
16
|
-
return getLatency(hrtime);
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
9
|
export {
|
|
20
|
-
getLoadableScripts
|
|
21
|
-
time
|
|
10
|
+
getLoadableScripts
|
|
22
11
|
};
|
|
@@ -274,6 +274,7 @@ const bootstrap = (BootApp, id, root, ReactDOM) => __async(void 0, null, functio
|
|
|
274
274
|
if (ssrContext) {
|
|
275
275
|
ssrContext.res.statusCode = status;
|
|
276
276
|
ssrContext.res.setHeader("Location", redirectUrl);
|
|
277
|
+
ssrContext.redirection = ssrContext.redirection || {};
|
|
277
278
|
ssrContext.redirection.status = status;
|
|
278
279
|
ssrContext.redirection.url = redirectUrl;
|
|
279
280
|
}
|
|
@@ -23,10 +23,10 @@ module.exports = __toCommonJS(Body_exports);
|
|
|
23
23
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
24
24
|
var import_react = require("react");
|
|
25
25
|
var import_constants = require("./constants");
|
|
26
|
-
var
|
|
26
|
+
var import_DocumentStructureContext = require("./DocumentStructureContext");
|
|
27
27
|
var import_Root = require("./Root");
|
|
28
28
|
function Body(props) {
|
|
29
|
-
const { hasSetRoot } = (0, import_react.useContext)(
|
|
29
|
+
const { hasSetRoot } = (0, import_react.useContext)(import_DocumentStructureContext.DocumentStructureContext);
|
|
30
30
|
const { children } = props;
|
|
31
31
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("body", {
|
|
32
32
|
children: [
|
|
@@ -21,13 +21,13 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
21
21
|
mod
|
|
22
22
|
));
|
|
23
23
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
-
var
|
|
25
|
-
__export(
|
|
26
|
-
|
|
24
|
+
var DocumentStructureContext_exports = {};
|
|
25
|
+
__export(DocumentStructureContext_exports, {
|
|
26
|
+
DocumentStructureContext: () => DocumentStructureContext
|
|
27
27
|
});
|
|
28
|
-
module.exports = __toCommonJS(
|
|
28
|
+
module.exports = __toCommonJS(DocumentStructureContext_exports);
|
|
29
29
|
var import_react = __toESM(require("react"));
|
|
30
|
-
const
|
|
30
|
+
const DocumentStructureContext = import_react.default.createContext({
|
|
31
31
|
hasSetHead: false,
|
|
32
32
|
hasSetScripts: false,
|
|
33
33
|
hasSetBody: false,
|
|
@@ -36,5 +36,5 @@ const DocumentStructrueContext = import_react.default.createContext({
|
|
|
36
36
|
});
|
|
37
37
|
// Annotate the CommonJS export names for ESM import in node:
|
|
38
38
|
0 && (module.exports = {
|
|
39
|
-
|
|
39
|
+
DocumentStructureContext
|
|
40
40
|
});
|
|
@@ -23,12 +23,12 @@ __export(Head_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(Head_exports);
|
|
24
24
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
25
25
|
var import_react = require("react");
|
|
26
|
-
var
|
|
26
|
+
var import_DocumentStructureContext = require("./DocumentStructureContext");
|
|
27
27
|
var import_Scripts = require("./Scripts");
|
|
28
28
|
var import_Links = require("./Links");
|
|
29
29
|
var import_constants = require("./constants");
|
|
30
30
|
function Head(props) {
|
|
31
|
-
const { hasSetScripts, hasSetLinks } = (0, import_react.useContext)(
|
|
31
|
+
const { hasSetScripts, hasSetLinks } = (0, import_react.useContext)(import_DocumentStructureContext.DocumentStructureContext);
|
|
32
32
|
const { children } = props;
|
|
33
33
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("head", {
|
|
34
34
|
children: [
|
|
@@ -22,7 +22,7 @@ __export(Html_exports, {
|
|
|
22
22
|
module.exports = __toCommonJS(Html_exports);
|
|
23
23
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
24
24
|
var import_Body = require("./Body");
|
|
25
|
-
var
|
|
25
|
+
var import_DocumentStructureContext = require("./DocumentStructureContext");
|
|
26
26
|
var import_Head = require("./Head");
|
|
27
27
|
function findTargetChild(tag, children) {
|
|
28
28
|
return children.find((item) => getEleType(item) === tag);
|
|
@@ -78,7 +78,7 @@ function Html(props) {
|
|
|
78
78
|
});
|
|
79
79
|
}
|
|
80
80
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("html", {
|
|
81
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
81
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_DocumentStructureContext.DocumentStructureContext.Provider, {
|
|
82
82
|
value: {
|
|
83
83
|
hasSetHead,
|
|
84
84
|
hasSetScripts,
|
|
@@ -16,7 +16,7 @@ var document_exports = {};
|
|
|
16
16
|
module.exports = __toCommonJS(document_exports);
|
|
17
17
|
__reExport(document_exports, require("./Html"), module.exports);
|
|
18
18
|
__reExport(document_exports, require("./DocumentContext"), module.exports);
|
|
19
|
-
__reExport(document_exports, require("./
|
|
19
|
+
__reExport(document_exports, require("./DocumentStructureContext"), module.exports);
|
|
20
20
|
__reExport(document_exports, require("./Head"), module.exports);
|
|
21
21
|
__reExport(document_exports, require("./Body"), module.exports);
|
|
22
22
|
__reExport(document_exports, require("./Root"), module.exports);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var fetch_exports = {};
|
|
19
|
+
__export(fetch_exports, {
|
|
20
|
+
installGlobals: () => installGlobals
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(fetch_exports);
|
|
23
|
+
function installGlobals() {
|
|
24
|
+
}
|
|
25
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
26
|
+
0 && (module.exports = {
|
|
27
|
+
installGlobals
|
|
28
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var fetch_node_exports = {};
|
|
19
|
+
__export(fetch_node_exports, {
|
|
20
|
+
installGlobals: () => import_node.installGlobals
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(fetch_node_exports);
|
|
23
|
+
var import_node = require("@remix-run/node");
|
|
24
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
25
|
+
0 && (module.exports = {
|
|
26
|
+
installGlobals
|
|
27
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var fetch_worker_exports = {};
|
|
19
|
+
__export(fetch_worker_exports, {
|
|
20
|
+
installGlobals: () => installGlobals
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(fetch_worker_exports);
|
|
23
|
+
function installGlobals() {
|
|
24
|
+
}
|
|
25
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
26
|
+
0 && (module.exports = {
|
|
27
|
+
installGlobals
|
|
28
|
+
});
|
|
@@ -67,15 +67,15 @@ __export(plugin_node_exports, {
|
|
|
67
67
|
module.exports = __toCommonJS(plugin_node_exports);
|
|
68
68
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
69
69
|
var import_react = require("react");
|
|
70
|
+
var import_serialize_javascript = __toESM(require("serialize-javascript"));
|
|
70
71
|
var import_router = require("@remix-run/router");
|
|
71
72
|
var import_server = require("react-router-dom/server");
|
|
72
73
|
var import_hoist_non_react_statics = __toESM(require("hoist-non-react-statics"));
|
|
73
|
-
var import_node = require("@remix-run/node");
|
|
74
74
|
var import_react_router_dom = require("react-router-dom");
|
|
75
|
-
var import_serialize_javascript = __toESM(require("serialize-javascript"));
|
|
76
75
|
var import_core = require("../../core");
|
|
77
76
|
var import_utils = require("./utils");
|
|
78
|
-
|
|
77
|
+
var import_fetch = require("./fetch");
|
|
78
|
+
(0, import_fetch.installGlobals)();
|
|
79
79
|
function createFetchRequest(req) {
|
|
80
80
|
const origin = `${req.protocol}://${req.host}`;
|
|
81
81
|
const url = new URL(req.originalUrl || req.url, origin);
|
|
@@ -89,7 +89,7 @@ function createFetchRequest(req) {
|
|
|
89
89
|
}
|
|
90
90
|
function createFetchHeaders(requestHeaders) {
|
|
91
91
|
const headers = new Headers();
|
|
92
|
-
for (const [key, values] of Object.entries(requestHeaders)) {
|
|
92
|
+
for (const [key, values] of Object.entries(requestHeaders || {})) {
|
|
93
93
|
if (values) {
|
|
94
94
|
if (Array.isArray(values)) {
|
|
95
95
|
for (const value of values) {
|
|
@@ -102,6 +102,26 @@ function createFetchHeaders(requestHeaders) {
|
|
|
102
102
|
}
|
|
103
103
|
return headers;
|
|
104
104
|
}
|
|
105
|
+
function serializeErrors(errors) {
|
|
106
|
+
if (!errors) {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
const entries = Object.entries(errors);
|
|
110
|
+
const serialized = {};
|
|
111
|
+
for (const [key, val] of entries) {
|
|
112
|
+
if ((0, import_router.isRouteErrorResponse)(val)) {
|
|
113
|
+
serialized[key] = __spreadProps(__spreadValues({}, val), { __type: "RouteErrorResponse" });
|
|
114
|
+
} else if (val instanceof Error) {
|
|
115
|
+
serialized[key] = {
|
|
116
|
+
message: val.message,
|
|
117
|
+
__type: "Error"
|
|
118
|
+
};
|
|
119
|
+
} else {
|
|
120
|
+
serialized[key] = val;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return serialized;
|
|
124
|
+
}
|
|
105
125
|
const routerPlugin = ({
|
|
106
126
|
basename = "",
|
|
107
127
|
routesConfig,
|
|
@@ -128,17 +148,6 @@ const routerPlugin = ({
|
|
|
128
148
|
if (routerContext instanceof Response) {
|
|
129
149
|
return routerContext;
|
|
130
150
|
}
|
|
131
|
-
if (routerContext.loaderData) {
|
|
132
|
-
routerContext.loaderData = JSON.parse(
|
|
133
|
-
JSON.stringify(routerContext.loaderData),
|
|
134
|
-
(k, v) => {
|
|
135
|
-
if (typeof v === "string") {
|
|
136
|
-
return (0, import_serialize_javascript.default)(v);
|
|
137
|
-
}
|
|
138
|
-
return v;
|
|
139
|
-
}
|
|
140
|
-
);
|
|
141
|
-
}
|
|
142
151
|
const router = (0, import_server.createStaticRouter)(routes, routerContext);
|
|
143
152
|
context.router = router;
|
|
144
153
|
context.routerContext = routerContext;
|
|
@@ -154,12 +163,28 @@ const routerPlugin = ({
|
|
|
154
163
|
const getRouteApp = () => {
|
|
155
164
|
return (props) => {
|
|
156
165
|
const { router, routerContext } = (0, import_react.useContext)(import_core.RuntimeReactContext);
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
166
|
+
const data = {
|
|
167
|
+
loaderData: routerContext.loaderData,
|
|
168
|
+
actionData: routerContext.actionData,
|
|
169
|
+
errors: serializeErrors(routerContext.errors)
|
|
170
|
+
};
|
|
171
|
+
const hydrateScript = `window.__staticRouterHydrationData = ${(0, import_serialize_javascript.default)(
|
|
172
|
+
data,
|
|
173
|
+
{ isJSON: true }
|
|
174
|
+
)};`;
|
|
175
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(App, __spreadProps(__spreadValues({}, props), {
|
|
176
|
+
children: [
|
|
177
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_server.StaticRouterProvider, {
|
|
178
|
+
router,
|
|
179
|
+
context: routerContext,
|
|
180
|
+
hydrate: false
|
|
181
|
+
}),
|
|
182
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("script", {
|
|
183
|
+
suppressHydrationWarning: true,
|
|
184
|
+
id: "the-nonce",
|
|
185
|
+
dangerouslySetInnerHTML: { __html: hydrateScript }
|
|
186
|
+
})
|
|
187
|
+
]
|
|
163
188
|
}));
|
|
164
189
|
};
|
|
165
190
|
};
|
|
@@ -78,7 +78,7 @@ var cli_default = () => ({
|
|
|
78
78
|
}
|
|
79
79
|
},
|
|
80
80
|
tools: {
|
|
81
|
-
webpackChain: (chain, { name, isServer, CHAIN_ID }) => {
|
|
81
|
+
webpackChain: (chain, { name, isServer, isServiceWorker, CHAIN_ID }) => {
|
|
82
82
|
const userConfig = api.useResolvedConfigContext();
|
|
83
83
|
if ((0, import_utils.isUseSSRBundle)(userConfig) && name !== "server" && hasStringSSREntry(userConfig)) {
|
|
84
84
|
const LoadableWebpackPlugin = require("@loadable/webpack-plugin");
|
|
@@ -88,7 +88,7 @@ var cli_default = () => ({
|
|
|
88
88
|
}
|
|
89
89
|
const modernVars = {
|
|
90
90
|
[`process.env.MODERN_TARGET`]: JSON.stringify(
|
|
91
|
-
isServer ? "node" : "browser"
|
|
91
|
+
isServer || isServiceWorker ? "node" : "browser"
|
|
92
92
|
)
|
|
93
93
|
};
|
|
94
94
|
chain.plugin(CHAIN_ID.PLUGIN.DEFINE).tap((args) => {
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var __async = (__this, __arguments, generator) => {
|
|
19
|
+
return new Promise((resolve, reject) => {
|
|
20
|
+
var fulfilled = (value) => {
|
|
21
|
+
try {
|
|
22
|
+
step(generator.next(value));
|
|
23
|
+
} catch (e) {
|
|
24
|
+
reject(e);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
var rejected = (value) => {
|
|
28
|
+
try {
|
|
29
|
+
step(generator.throw(value));
|
|
30
|
+
} catch (e) {
|
|
31
|
+
reject(e);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
35
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
var prefetch_worker_exports = {};
|
|
39
|
+
__export(prefetch_worker_exports, {
|
|
40
|
+
default: () => prefetch_worker_default
|
|
41
|
+
});
|
|
42
|
+
module.exports = __toCommonJS(prefetch_worker_exports);
|
|
43
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
44
|
+
var import_server = require("react-dom/server");
|
|
45
|
+
var import_server2 = require("@loadable/server");
|
|
46
|
+
const prefetch = (App, context) => __async(void 0, null, function* () {
|
|
47
|
+
var _a;
|
|
48
|
+
const { ssrContext } = context;
|
|
49
|
+
const { loadableStats } = ssrContext;
|
|
50
|
+
if (loadableStats) {
|
|
51
|
+
const extractor = new import_server2.ChunkExtractor({
|
|
52
|
+
stats: loadableStats,
|
|
53
|
+
entrypoints: [ssrContext.entryName].filter(Boolean)
|
|
54
|
+
});
|
|
55
|
+
(0, import_server.renderToStaticMarkup)(extractor.collectChunks(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, {
|
|
56
|
+
context
|
|
57
|
+
})));
|
|
58
|
+
} else {
|
|
59
|
+
(0, import_server.renderToStaticMarkup)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, {
|
|
60
|
+
context
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
if (!context.loaderManager.hasPendingLoaders()) {
|
|
64
|
+
return {
|
|
65
|
+
initialData: context.initialData,
|
|
66
|
+
i18nData: context.__i18nData__
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const loadersData = yield context.loaderManager.awaitPendingLoaders();
|
|
70
|
+
Object.keys(loadersData).forEach((id) => {
|
|
71
|
+
const data = loadersData[id];
|
|
72
|
+
if (data._error) {
|
|
73
|
+
ssrContext.logger.error("App Prefetch Loader", data._error);
|
|
74
|
+
ssrContext.metrics.emitCounter("app.prefetch.loader.error", 1);
|
|
75
|
+
delete data._error;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
return {
|
|
79
|
+
loadersData,
|
|
80
|
+
initialData: context.initialData,
|
|
81
|
+
i18nData: context.__i18nData__,
|
|
82
|
+
storeState: (_a = context == null ? void 0 : context.store) == null ? void 0 : _a.getState()
|
|
83
|
+
};
|
|
84
|
+
});
|
|
85
|
+
var prefetch_worker_default = prefetch;
|
|
86
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
87
|
+
0 && (module.exports = {});
|
|
@@ -34,8 +34,12 @@ const NoSSR = (props) => {
|
|
|
34
34
|
csr = true;
|
|
35
35
|
setMounted(true);
|
|
36
36
|
});
|
|
37
|
-
const { children } = props;
|
|
38
|
-
return import_react.default.createElement(
|
|
37
|
+
const { children, fallback = null } = props;
|
|
38
|
+
return import_react.default.createElement(
|
|
39
|
+
import_react.default.Fragment,
|
|
40
|
+
null,
|
|
41
|
+
isMounted ? children : fallback
|
|
42
|
+
);
|
|
39
43
|
};
|
|
40
44
|
// Annotate the CommonJS export names for ESM import in node:
|
|
41
45
|
0 && (module.exports = {
|
|
@@ -49,7 +49,7 @@ module.exports = __toCommonJS(renderToStream_exports);
|
|
|
49
49
|
var import_react = require("react");
|
|
50
50
|
var import_ssr = require("@modern-js/utils/ssr");
|
|
51
51
|
var import_prerender = require("../../react/prerender");
|
|
52
|
-
var
|
|
52
|
+
var import_time = require("../time");
|
|
53
53
|
var import_renderToPipe = __toESM(require("./renderToPipe"));
|
|
54
54
|
const render = ({ App, context }) => {
|
|
55
55
|
const { ssrContext } = context;
|
|
@@ -59,7 +59,7 @@ const render = ({ App, context }) => {
|
|
|
59
59
|
);
|
|
60
60
|
}
|
|
61
61
|
return (0, import_ssr.run)(ssrContext.request.headers, () => __async(void 0, null, function* () {
|
|
62
|
-
const end = (0,
|
|
62
|
+
const end = (0, import_time.time)();
|
|
63
63
|
const rootElement = (0, import_react.createElement)(App, {
|
|
64
64
|
context: Object.assign(context || {}, {
|
|
65
65
|
ssr: true
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
21
|
+
mod
|
|
22
|
+
));
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var index_worker_exports = {};
|
|
25
|
+
__export(index_worker_exports, {
|
|
26
|
+
render: () => render
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(index_worker_exports);
|
|
29
|
+
var import_react = require("react");
|
|
30
|
+
var import_prerender = require("../../react/prerender");
|
|
31
|
+
var import_time = require("../time");
|
|
32
|
+
var import_renderToPipe = __toESM(require("./renderToPipe"));
|
|
33
|
+
const render = ({ App, context }) => {
|
|
34
|
+
const { ssrContext } = context;
|
|
35
|
+
if (!ssrContext) {
|
|
36
|
+
throw new Error(
|
|
37
|
+
'The "ssrContext" must not be undefined, but received undefined'
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
const end = (0, import_time.time)();
|
|
41
|
+
const rootElement = (0, import_react.createElement)(App, {
|
|
42
|
+
context: Object.assign(context || {}, {
|
|
43
|
+
ssr: true
|
|
44
|
+
})
|
|
45
|
+
});
|
|
46
|
+
const pipe = (0, import_renderToPipe.default)(rootElement, context, {
|
|
47
|
+
onShellReady() {
|
|
48
|
+
const cacheConfig = import_prerender.PreRender.config();
|
|
49
|
+
if (cacheConfig) {
|
|
50
|
+
ssrContext.cacheConfig = cacheConfig;
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
onAllReady() {
|
|
54
|
+
const cost = end();
|
|
55
|
+
ssrContext.logger.debug("App Render To HTML cost = %d ms", cost);
|
|
56
|
+
ssrContext.metrics.emitTimer("app.render.html.cost", cost);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
return pipe;
|
|
60
|
+
};
|
|
61
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
62
|
+
0 && (module.exports = {
|
|
63
|
+
render
|
|
64
|
+
});
|
|
@@ -38,7 +38,6 @@ __export(renderToPipe_exports, {
|
|
|
38
38
|
});
|
|
39
39
|
module.exports = __toCommonJS(renderToPipe_exports);
|
|
40
40
|
var import_stream = require("stream");
|
|
41
|
-
var import_server = require("react-dom/server");
|
|
42
41
|
var import_types = require("../types");
|
|
43
42
|
var import_template = require("./template");
|
|
44
43
|
function renderToPipe(rootElement, context, options) {
|
|
@@ -46,7 +45,12 @@ function renderToPipe(rootElement, context, options) {
|
|
|
46
45
|
const { ssrContext } = context;
|
|
47
46
|
const forUserPipe = (stream) => {
|
|
48
47
|
return new Promise((resolve) => {
|
|
49
|
-
|
|
48
|
+
let renderToPipeableStream;
|
|
49
|
+
try {
|
|
50
|
+
({ renderToPipeableStream } = require("react-dom/server"));
|
|
51
|
+
} catch (e) {
|
|
52
|
+
}
|
|
53
|
+
const { pipe } = renderToPipeableStream(rootElement, __spreadProps(__spreadValues({}, options), {
|
|
50
54
|
onShellReady() {
|
|
51
55
|
var _a;
|
|
52
56
|
const { shellAfter, shellBefore } = (0, import_template.getTemplates)(
|