@modern-js/runtime 2.3.1-alpha.0 → 2.4.1-beta.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.
Files changed (105) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +14 -18
  3. package/dist/js/modern/core/compatible.js +1 -0
  4. package/dist/js/modern/document/Body.js +2 -2
  5. package/dist/js/modern/document/{DocumentStructrueContext.js → DocumentStructureContext.js} +2 -2
  6. package/dist/js/modern/document/Head.js +2 -2
  7. package/dist/js/modern/document/Html.js +2 -2
  8. package/dist/js/modern/document/index.js +1 -1
  9. package/dist/js/modern/router/runtime/fetch.js +5 -0
  10. package/dist/js/modern/router/runtime/fetch.node.js +4 -0
  11. package/dist/js/modern/router/runtime/fetch.worker.js +5 -0
  12. package/dist/js/modern/router/runtime/plugin.node.js +2 -14
  13. package/dist/js/modern/ssr/cli/index.js +2 -2
  14. package/dist/js/modern/ssr/prefetch.worker.js +66 -0
  15. package/dist/js/modern/ssr/react/nossr/index.js +6 -2
  16. package/dist/js/modern/ssr/serverRender/renderToStream/index.js +1 -1
  17. package/dist/js/modern/ssr/serverRender/renderToStream/index.worker.js +35 -0
  18. package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +5 -3
  19. package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.worker.js +110 -0
  20. package/dist/js/modern/ssr/serverRender/renderToString/entry.js +6 -7
  21. package/dist/js/modern/ssr/serverRender/renderToString/index.js +1 -1
  22. package/dist/js/modern/ssr/serverRender/renderToString/index.worker.js +49 -0
  23. package/dist/js/modern/ssr/serverRender/time.js +13 -0
  24. package/dist/js/modern/ssr/serverRender/time.worker.js +28 -0
  25. package/dist/js/modern/ssr/serverRender/utils.js +1 -12
  26. package/dist/js/node/core/compatible.js +1 -0
  27. package/dist/js/node/document/Body.js +2 -2
  28. package/dist/js/node/document/{DocumentStructrueContext.js → DocumentStructureContext.js} +6 -6
  29. package/dist/js/node/document/Head.js +2 -2
  30. package/dist/js/node/document/Html.js +2 -2
  31. package/dist/js/node/document/index.js +1 -1
  32. package/dist/js/node/router/runtime/fetch.js +28 -0
  33. package/dist/js/node/router/runtime/fetch.node.js +27 -0
  34. package/dist/js/node/router/runtime/fetch.worker.js +28 -0
  35. package/dist/js/node/router/runtime/plugin.node.js +3 -15
  36. package/dist/js/node/ssr/cli/index.js +2 -2
  37. package/dist/js/node/ssr/prefetch.worker.js +87 -0
  38. package/dist/js/node/ssr/react/nossr/index.js +6 -2
  39. package/dist/js/node/ssr/serverRender/renderToStream/index.js +2 -2
  40. package/dist/js/node/ssr/serverRender/renderToStream/index.worker.js +64 -0
  41. package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +6 -2
  42. package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.worker.js +129 -0
  43. package/dist/js/node/ssr/serverRender/renderToString/entry.js +8 -9
  44. package/dist/js/node/ssr/serverRender/renderToString/index.js +2 -2
  45. package/dist/js/node/ssr/serverRender/renderToString/index.worker.js +78 -0
  46. package/dist/js/node/ssr/serverRender/time.js +36 -0
  47. package/dist/js/node/ssr/serverRender/time.worker.js +51 -0
  48. package/dist/js/node/ssr/serverRender/utils.js +2 -14
  49. package/dist/js/treeshaking/core/compatible.js +8 -7
  50. package/dist/js/treeshaking/core/loader/loaderManager.js +3 -3
  51. package/dist/js/treeshaking/core/loader/useLoader.js +15 -15
  52. package/dist/js/treeshaking/document/Body.js +2 -2
  53. package/dist/js/treeshaking/document/{DocumentStructrueContext.js → DocumentStructureContext.js} +2 -2
  54. package/dist/js/treeshaking/document/Head.js +2 -2
  55. package/dist/js/treeshaking/document/Html.js +4 -4
  56. package/dist/js/treeshaking/document/Root.js +2 -2
  57. package/dist/js/treeshaking/document/cli/index.js +4 -4
  58. package/dist/js/treeshaking/document/index.js +1 -1
  59. package/dist/js/treeshaking/router/cli/index.js +2 -2
  60. package/dist/js/treeshaking/router/runtime/fetch.js +2 -0
  61. package/dist/js/treeshaking/router/runtime/fetch.node.js +2 -0
  62. package/dist/js/treeshaking/router/runtime/fetch.worker.js +2 -0
  63. package/dist/js/treeshaking/router/runtime/plugin.js +3 -3
  64. package/dist/js/treeshaking/router/runtime/plugin.node.js +5 -14
  65. package/dist/js/treeshaking/router/runtime/utils.js +3 -3
  66. package/dist/js/treeshaking/ssr/cli/index.js +5 -5
  67. package/dist/js/treeshaking/ssr/index.js +6 -6
  68. package/dist/js/treeshaking/ssr/index.node.js +1 -1
  69. package/dist/js/treeshaking/ssr/prefetch.js +2 -2
  70. package/dist/js/treeshaking/ssr/prefetch.worker.js +191 -0
  71. package/dist/js/treeshaking/ssr/react/nossr/index.js +3 -3
  72. package/dist/js/treeshaking/ssr/react/prerender/index.js +2 -2
  73. package/dist/js/treeshaking/ssr/react/prerender/util.js +2 -2
  74. package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +2 -2
  75. package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +1 -1
  76. package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.worker.js +32 -0
  77. package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +1 -1
  78. package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +12 -9
  79. package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.worker.js +280 -0
  80. package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +1 -1
  81. package/dist/js/treeshaking/ssr/serverRender/renderToString/entry.js +6 -8
  82. package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +1 -1
  83. package/dist/js/treeshaking/ssr/serverRender/renderToString/index.worker.js +167 -0
  84. package/dist/js/treeshaking/ssr/serverRender/renderToString/loadable.js +1 -1
  85. package/dist/js/treeshaking/ssr/serverRender/time.js +57 -0
  86. package/dist/js/treeshaking/ssr/serverRender/time.worker.js +75 -0
  87. package/dist/js/treeshaking/ssr/serverRender/utils.js +1 -57
  88. package/dist/js/treeshaking/ssr/utils.js +5 -5
  89. package/dist/js/treeshaking/state/cli/index.js +2 -2
  90. package/dist/js/treeshaking/state/runtime/plugin.js +3 -3
  91. package/dist/types/document/{DocumentStructrueContext.d.ts → DocumentStructureContext.d.ts} +2 -2
  92. package/dist/types/document/index.d.ts +1 -1
  93. package/dist/types/router/runtime/fetch.d.ts +2 -0
  94. package/dist/types/router/runtime/fetch.node.d.ts +2 -0
  95. package/dist/types/router/runtime/fetch.worker.d.ts +2 -0
  96. package/dist/types/ssr/prefetch.worker.d.ts +13 -0
  97. package/dist/types/ssr/react/nossr/index.d.ts +4 -2
  98. package/dist/types/ssr/serverRender/renderToStream/index.worker.d.ts +6 -0
  99. package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +1 -1
  100. package/dist/types/ssr/serverRender/renderToStream/renderToPipe.worker.d.ts +8 -0
  101. package/dist/types/ssr/serverRender/renderToString/index.worker.d.ts +6 -0
  102. package/dist/types/ssr/serverRender/time.d.ts +1 -0
  103. package/dist/types/ssr/serverRender/time.worker.d.ts +1 -0
  104. package/dist/types/ssr/serverRender/utils.d.ts +2 -3
  105. package/package.json +13 -12
@@ -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 import_DocumentStructrueContext = require("./DocumentStructrueContext");
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)(import_DocumentStructrueContext.DocumentStructrueContext);
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 DocumentStructrueContext_exports = {};
25
- __export(DocumentStructrueContext_exports, {
26
- DocumentStructrueContext: () => DocumentStructrueContext
24
+ var DocumentStructureContext_exports = {};
25
+ __export(DocumentStructureContext_exports, {
26
+ DocumentStructureContext: () => DocumentStructureContext
27
27
  });
28
- module.exports = __toCommonJS(DocumentStructrueContext_exports);
28
+ module.exports = __toCommonJS(DocumentStructureContext_exports);
29
29
  var import_react = __toESM(require("react"));
30
- const DocumentStructrueContext = import_react.default.createContext({
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
- DocumentStructrueContext
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 import_DocumentStructrueContext = require("./DocumentStructrueContext");
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)(import_DocumentStructrueContext.DocumentStructrueContext);
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 import_DocumentStructrueContext = require("./DocumentStructrueContext");
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)(import_DocumentStructrueContext.DocumentStructrueContext.Provider, {
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("./DocumentStructrueContext"), module.exports);
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
+ });
@@ -70,12 +70,11 @@ var import_react = require("react");
70
70
  var import_router = require("@remix-run/router");
71
71
  var import_server = require("react-router-dom/server");
72
72
  var import_hoist_non_react_statics = __toESM(require("hoist-non-react-statics"));
73
- var import_node = require("@remix-run/node");
74
73
  var import_react_router_dom = require("react-router-dom");
75
- var import_serialize_javascript = __toESM(require("serialize-javascript"));
76
74
  var import_core = require("../../core");
77
75
  var import_utils = require("./utils");
78
- (0, import_node.installGlobals)();
76
+ var import_fetch = require("./fetch");
77
+ (0, import_fetch.installGlobals)();
79
78
  function createFetchRequest(req) {
80
79
  const origin = `${req.protocol}://${req.host}`;
81
80
  const url = new URL(req.originalUrl || req.url, origin);
@@ -89,7 +88,7 @@ function createFetchRequest(req) {
89
88
  }
90
89
  function createFetchHeaders(requestHeaders) {
91
90
  const headers = new Headers();
92
- for (const [key, values] of Object.entries(requestHeaders)) {
91
+ for (const [key, values] of Object.entries(requestHeaders || {})) {
93
92
  if (values) {
94
93
  if (Array.isArray(values)) {
95
94
  for (const value of values) {
@@ -128,17 +127,6 @@ const routerPlugin = ({
128
127
  if (routerContext instanceof Response) {
129
128
  return routerContext;
130
129
  }
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
130
  const router = (0, import_server.createStaticRouter)(routes, routerContext);
143
131
  context.router = router;
144
132
  context.routerContext = routerContext;
@@ -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(import_react.default.Fragment, null, isMounted ? children : null);
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 import_utils = require("../utils");
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, import_utils.time)();
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
- const { pipe } = (0, import_server.renderToPipeableStream)(rootElement, __spreadProps(__spreadValues({}, options), {
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)(
@@ -0,0 +1,129 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
22
+ var __export = (target, all) => {
23
+ for (var name in all)
24
+ __defProp(target, name, { get: all[name], enumerable: true });
25
+ };
26
+ var __copyProps = (to, from, except, desc) => {
27
+ if (from && typeof from === "object" || typeof from === "function") {
28
+ for (let key of __getOwnPropNames(from))
29
+ if (!__hasOwnProp.call(to, key) && key !== except)
30
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
31
+ }
32
+ return to;
33
+ };
34
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
35
+ var __async = (__this, __arguments, generator) => {
36
+ return new Promise((resolve, reject) => {
37
+ var fulfilled = (value) => {
38
+ try {
39
+ step(generator.next(value));
40
+ } catch (e) {
41
+ reject(e);
42
+ }
43
+ };
44
+ var rejected = (value) => {
45
+ try {
46
+ step(generator.throw(value));
47
+ } catch (e) {
48
+ reject(e);
49
+ }
50
+ };
51
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
52
+ step((generator = generator.apply(__this, __arguments)).next());
53
+ });
54
+ };
55
+ var renderToPipe_worker_exports = {};
56
+ __export(renderToPipe_worker_exports, {
57
+ default: () => renderToPipe_worker_default
58
+ });
59
+ module.exports = __toCommonJS(renderToPipe_worker_exports);
60
+ var import_types = require("../types");
61
+ var import_template = require("./template");
62
+ function renderToPipe(rootElement, context, options) {
63
+ let isShellStream = true;
64
+ const { ssrContext } = context;
65
+ const forUserPipe = (stream) => __async(this, null, function* () {
66
+ let renderToReadableStream;
67
+ try {
68
+ ({ renderToReadableStream } = require("react-dom/server"));
69
+ } catch (e) {
70
+ }
71
+ const { shellAfter, shellBefore } = (0, import_template.getTemplates)(
72
+ context,
73
+ import_types.RenderLevel.SERVER_RENDER
74
+ );
75
+ try {
76
+ let _a;
77
+ const readableOriginal = yield renderToReadableStream(rootElement, __spreadProps(__spreadValues({}, options), {
78
+ onError(error) {
79
+ var _a2;
80
+ ssrContext.logger.error(
81
+ "An error occurs during streaming SSR",
82
+ error
83
+ );
84
+ ssrContext.metrics.emitCounter("app.render.streaming.error", 1);
85
+ (_a2 = options == null ? void 0 : options.onError) == null ? void 0 : _a2.call(options, error);
86
+ }
87
+ }));
88
+ const reader = readableOriginal.getReader();
89
+ const injectableStream = new ReadableStream({
90
+ start(controller) {
91
+ return __async(this, null, function* () {
92
+ const { value } = yield reader.read();
93
+ if (isShellStream) {
94
+ controller.enqueue(encodeForWebStream(shellBefore));
95
+ controller.enqueue(value);
96
+ controller.enqueue(encodeForWebStream(shellAfter));
97
+ isShellStream = false;
98
+ } else {
99
+ controller.enqueue(value);
100
+ }
101
+ });
102
+ }
103
+ });
104
+ return readableOriginal(injectableStream).readableOriginal(stream);
105
+ } catch (err) {
106
+ ssrContext.metrics.emitCounter("app.render.streaming.shell.error", 1);
107
+ const { shellAfter: shellAfter2, shellBefore: shellBefore2 } = (0, import_template.getTemplates)(
108
+ context,
109
+ import_types.RenderLevel.CLIENT_RENDER
110
+ );
111
+ const fallbackHtml = `${shellBefore2}${shellAfter2}`;
112
+ return fallbackHtml;
113
+ }
114
+ });
115
+ return forUserPipe;
116
+ }
117
+ let encoder;
118
+ function encodeForWebStream(thing) {
119
+ if (!encoder) {
120
+ encoder = new TextEncoder();
121
+ }
122
+ if (typeof thing === "string") {
123
+ return encoder.encode(thing);
124
+ }
125
+ return thing;
126
+ }
127
+ var renderToPipe_worker_default = renderToPipe;
128
+ // Annotate the CommonJS export names for ESM import in node:
129
+ 0 && (module.exports = {});
@@ -52,7 +52,7 @@ var import_serialize_javascript = __toESM(require("serialize-javascript"));
52
52
  var import_react_helmet = __toESM(require("react-helmet"));
53
53
  var import_helmet = __toESM(require("../helmet"));
54
54
  var import_types = require("../types");
55
- var import_utils = require("../utils");
55
+ var import_time = require("../time");
56
56
  var import_prefetch = __toESM(require("../../prefetch"));
57
57
  var import_template = require("./template");
58
58
  var import_reduce = require("./reduce");
@@ -102,18 +102,19 @@ class Entry {
102
102
  }
103
103
  renderToHtml(context) {
104
104
  return __async(this, null, function* () {
105
+ var _a, _b, _c;
105
106
  const ssrContext = context.ssrContext;
106
- if (ssrContext.redirection.url) {
107
+ if ((_a = ssrContext.redirection) == null ? void 0 : _a.url) {
107
108
  return "";
108
109
  }
109
110
  const prefetchData = yield this.prefetch(context);
110
- if (ssrContext.redirection.url) {
111
+ if ((_b = ssrContext.redirection) == null ? void 0 : _b.url) {
111
112
  return "";
112
113
  }
113
114
  if (this.result.renderLevel >= import_types.RenderLevel.SERVER_PREFETCH) {
114
115
  this.result.html = this.renderToString(context);
115
116
  }
116
- if (ssrContext.redirection.url) {
117
+ if ((_c = ssrContext.redirection) == null ? void 0 : _c.url) {
117
118
  return "";
118
119
  }
119
120
  let html = "";
@@ -127,9 +128,7 @@ class Entry {
127
128
  if (fragment.isVariable && fragment.content === "SSRDataScript") {
128
129
  html += fragment.getValue(SSRData);
129
130
  } else {
130
- let value = fragment.getValue(this.result);
131
- value = value.replace(/\\\\\\u/g, `u`);
132
- html += value;
131
+ html += fragment.getValue(this.result);
133
132
  }
134
133
  }
135
134
  const helmetData = import_react_helmet.default.renderStatic();
@@ -139,7 +138,7 @@ class Entry {
139
138
  prefetch(context) {
140
139
  return __async(this, null, function* () {
141
140
  let prefetchData;
142
- const end = (0, import_utils.time)();
141
+ const end = (0, import_time.time)();
143
142
  try {
144
143
  prefetchData = yield (0, import_prefetch.default)(this.App, context);
145
144
  this.result.renderLevel = import_types.RenderLevel.SERVER_PREFETCH;
@@ -156,7 +155,7 @@ class Entry {
156
155
  }
157
156
  renderToString(context) {
158
157
  let html = "";
159
- const end = (0, import_utils.time)();
158
+ const end = (0, import_time.time)();
160
159
  const { ssrContext } = context;
161
160
  try {
162
161
  const App = import_react.default.createElement(this.App, {
@@ -48,7 +48,7 @@ __export(renderToString_exports, {
48
48
  module.exports = __toCommonJS(renderToString_exports);
49
49
  var import_ssr = require("@modern-js/utils/ssr");
50
50
  var import_prerender = require("../../react/prerender");
51
- var import_utils = require("../utils");
51
+ var import_time = require("../time");
52
52
  var import_entry = __toESM(require("./entry"));
53
53
  const render = ({
54
54
  App,
@@ -63,7 +63,7 @@ const render = ({
63
63
  config
64
64
  });
65
65
  entry.metrics.emitCounter("app.visit.count", 1);
66
- const end = (0, import_utils.time)();
66
+ const end = (0, import_time.time)();
67
67
  const html = yield entry.renderToHtml(context);
68
68
  const cost = end();
69
69
  entry.logger.info("App Render Total cost = %d ms", cost);