@modern-js/runtime 2.57.1 → 2.57.2-alpha.1

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 (43) hide show
  1. package/dist/cjs/core/browser/hydrate.js +9 -25
  2. package/dist/cjs/core/browser/index.js +8 -5
  3. package/dist/cjs/core/compatible.js +6 -19
  4. package/dist/cjs/core/constants.js +8 -2
  5. package/dist/cjs/core/context/index.js +2 -0
  6. package/dist/cjs/core/react/index.js +1 -10
  7. package/dist/cjs/core/react/wrapper.js +44 -0
  8. package/dist/cjs/core/server/constants.js +0 -6
  9. package/dist/cjs/core/server/stream/shared.js +4 -16
  10. package/dist/cjs/core/server/string/index.js +4 -6
  11. package/dist/cjs/core/server/string/prefetch.js +7 -21
  12. package/dist/cjs/core/server/string/ssrData.js +1 -1
  13. package/dist/esm/core/browser/hydrate.js +9 -15
  14. package/dist/esm/core/browser/index.js +9 -6
  15. package/dist/esm/core/compatible.js +5 -22
  16. package/dist/esm/core/constants.js +5 -1
  17. package/dist/esm/core/context/index.js +2 -1
  18. package/dist/esm/core/react/index.js +2 -14
  19. package/dist/esm/core/react/wrapper.js +10 -0
  20. package/dist/esm/core/server/constants.js +0 -4
  21. package/dist/esm/core/server/stream/shared.js +4 -6
  22. package/dist/esm/core/server/string/index.js +4 -6
  23. package/dist/esm/core/server/string/prefetch.js +7 -11
  24. package/dist/esm/core/server/string/ssrData.js +1 -1
  25. package/dist/esm-node/core/browser/hydrate.js +9 -15
  26. package/dist/esm-node/core/browser/index.js +8 -5
  27. package/dist/esm-node/core/compatible.js +6 -19
  28. package/dist/esm-node/core/constants.js +5 -1
  29. package/dist/esm-node/core/context/index.js +2 -1
  30. package/dist/esm-node/core/react/index.js +2 -11
  31. package/dist/esm-node/core/react/wrapper.js +10 -0
  32. package/dist/esm-node/core/server/constants.js +0 -4
  33. package/dist/esm-node/core/server/stream/shared.js +4 -6
  34. package/dist/esm-node/core/server/string/index.js +4 -6
  35. package/dist/esm-node/core/server/string/prefetch.js +7 -11
  36. package/dist/esm-node/core/server/string/ssrData.js +1 -1
  37. package/dist/types/core/compatible.d.ts +1 -1
  38. package/dist/types/core/constants.d.ts +2 -0
  39. package/dist/types/core/context/index.d.ts +1 -1
  40. package/dist/types/core/react/index.d.ts +1 -1
  41. package/dist/types/core/react/wrapper.d.ts +3 -0
  42. package/dist/types/core/server/constants.d.ts +0 -2
  43. package/package.json +5 -6
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,14 +15,6 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
  var hydrate_exports = {};
30
20
  __export(hydrate_exports, {
@@ -35,8 +25,8 @@ module.exports = __toCommonJS(hydrate_exports);
35
25
  var import_jsx_runtime = require("react/jsx-runtime");
36
26
  var import_url = require("@modern-js/runtime-utils/url");
37
27
  var import_component = require("@loadable/component");
38
- var import_react = __toESM(require("react"));
39
28
  var import_constants = require("../constants");
29
+ var import_wrapper = require("../react/wrapper");
40
30
  var import_withCallback = require("./withCallback");
41
31
  const isReact18 = () => process.env.IS_REACT18 === "true";
42
32
  function hydrateRoot(App, context, ModernRender, ModernHydrate) {
@@ -68,38 +58,32 @@ function hydrateRoot(App, context, ModernRender, ModernHydrate) {
68
58
  if (renderLevel === import_constants.RenderLevel.SERVER_RENDER) {
69
59
  const SSRApp = () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_withCallback.WithCallback, {
70
60
  callback,
71
- children: /* @__PURE__ */ import_react.default.cloneElement(App, {
72
- _internal_context: hydrateContext
73
- })
61
+ children: App
74
62
  });
75
- return ModernHydrate(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SSRApp, {}));
63
+ return ModernHydrate((0, import_wrapper.wrapRuntimeContextProvider)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SSRApp, {}), hydrateContext));
76
64
  } else {
77
- return ModernRender(App);
65
+ return ModernRender((0, import_wrapper.wrapRuntimeContextProvider)(App, context));
78
66
  }
79
67
  }
80
68
  return stringSSRHydrate();
81
69
  function stringSSRHydrate() {
82
70
  if (renderLevel === import_constants.RenderLevel.CLIENT_RENDER || renderLevel === import_constants.RenderLevel.SERVER_PREFETCH) {
83
- return ModernRender(App);
71
+ return ModernRender((0, import_wrapper.wrapRuntimeContextProvider)(App, context));
84
72
  } else if (renderLevel === import_constants.RenderLevel.SERVER_RENDER) {
85
73
  return new Promise((resolve) => {
86
74
  if (isReact18()) {
87
75
  (0, import_component.loadableReady)(() => {
88
76
  const SSRApp = () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_withCallback.WithCallback, {
89
77
  callback,
90
- children: /* @__PURE__ */ import_react.default.cloneElement(App, {
91
- _internal_context: hydrateContext
92
- })
78
+ children: App
93
79
  });
94
- ModernHydrate(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SSRApp, {})).then((root) => {
80
+ ModernHydrate((0, import_wrapper.wrapRuntimeContextProvider)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SSRApp, {}), hydrateContext)).then((root) => {
95
81
  resolve(root);
96
82
  });
97
83
  });
98
84
  } else {
99
85
  (0, import_component.loadableReady)(() => {
100
- ModernHydrate(/* @__PURE__ */ import_react.default.cloneElement(App, {
101
- _internal_context: hydrateContext
102
- }), callback).then((root) => {
86
+ ModernHydrate((0, import_wrapper.wrapRuntimeContextProvider)(App, hydrateContext), callback).then((root) => {
103
87
  resolve(root);
104
88
  });
105
89
  });
@@ -107,7 +91,7 @@ function hydrateRoot(App, context, ModernRender, ModernHydrate) {
107
91
  });
108
92
  } else {
109
93
  console.warn(`unknow render level: ${renderLevel}, execute render()`);
110
- return ModernRender(App);
94
+ return ModernRender((0, import_wrapper.wrapRuntimeContextProvider)(App, context));
111
95
  }
112
96
  }
113
97
  }
@@ -31,12 +31,14 @@ __export(browser_exports, {
31
31
  render: () => render
32
32
  });
33
33
  module.exports = __toCommonJS(browser_exports);
34
- var import_react = __toESM(require("react"));
35
34
  var import_cookie = __toESM(require("cookie"));
35
+ var import_parsed = require("@modern-js/runtime-utils/parsed");
36
36
  var import_context = require("../context");
37
37
  var import_runtime = require("../context/runtime");
38
38
  var import_loaderManager = require("../loader/loaderManager");
39
39
  var import_runner = require("../plugin/runner");
40
+ var import_wrapper = require("../react/wrapper");
41
+ var import_constants = require("../constants");
40
42
  var import_hydrate = require("./hydrate");
41
43
  const IS_REACT18 = process.env.IS_REACT18 === "true";
42
44
  function getSSRData() {
@@ -71,6 +73,9 @@ async function render(App, id) {
71
73
  };
72
74
  if (isClientArgs(id)) {
73
75
  var _ssrData_data, _ssrData_data1;
76
+ window._SSR_DATA = window._SSR_DATA || (0, import_parsed.parsedJSONFromElement)(import_constants.SSR_DATA_JSON_ID);
77
+ const routeData = (0, import_parsed.parsedJSONFromElement)(import_constants.ROUTER_DATA_JSON_ID);
78
+ window._ROUTER_DATA = window._ROUTER_DATA || routeData;
74
79
  const ssrData = getSSRData();
75
80
  const loadersData = (ssrData === null || ssrData === void 0 ? void 0 : (_ssrData_data = ssrData.data) === null || _ssrData_data === void 0 ? void 0 : _ssrData_data.loadersData) || {};
76
81
  const initialLoadersState = Object.keys(loadersData).reduce((res, key) => {
@@ -99,9 +104,7 @@ async function render(App, id) {
99
104
  const rootElement = id && typeof id !== "string" ? id : document.getElementById(id || "root");
100
105
  async function ModernRender(App2) {
101
106
  const renderFunc = IS_REACT18 ? renderWithReact18 : renderWithReact17;
102
- return renderFunc(/* @__PURE__ */ import_react.default.cloneElement(App2, {
103
- _internal_context: context
104
- }), rootElement);
107
+ return renderFunc(App2, rootElement);
105
108
  }
106
109
  async function ModernHydrate(App2, callback) {
107
110
  const hydrateFunc = IS_REACT18 ? hydrateWithReact18 : hydrateWithReact17;
@@ -110,7 +113,7 @@ async function render(App, id) {
110
113
  if (ssrData) {
111
114
  return (0, import_hydrate.hydrateRoot)(App, context, ModernRender, ModernHydrate);
112
115
  }
113
- return ModernRender(App);
116
+ return ModernRender((0, import_wrapper.wrapRuntimeContextProvider)(App, context));
114
117
  }
115
118
  throw Error("`render` function needs id in browser environment, it needs to be string or element");
116
119
  }
@@ -42,6 +42,7 @@ var import_loaderManager = require("./loader/loaderManager");
42
42
  var import_runner = require("./plugin/runner");
43
43
  var import_context = require("./context");
44
44
  var import_hydrate = require("./browser/hydrate");
45
+ var import_wrapper = require("./react/wrapper");
45
46
  const IS_REACT18 = process.env.IS_REACT18 === "true";
46
47
  function isClientArgs(id) {
47
48
  return typeof id === "string" || typeof HTMLElement !== "undefined" && id instanceof HTMLElement;
@@ -66,23 +67,13 @@ const createApp = ({ plugins, runtime, props: globalProps }) => {
66
67
  }) : child));
67
68
  };
68
69
  const WrapperApp = runner.wrapRoot(WrapperComponent);
69
- const WrapComponent = ({ _internal_context, ...props }) => {
70
- let contextValue = _internal_context;
71
- if (!(contextValue === null || contextValue === void 0 ? void 0 : contextValue.runner)) {
72
- var _getGlobalAppInit;
73
- contextValue = getInitialContext(runner);
74
- runner === null || runner === void 0 ? void 0 : runner.beforeRender(contextValue);
75
- (_getGlobalAppInit = (0, import_context.getGlobalAppInit)()) === null || _getGlobalAppInit === void 0 ? void 0 : _getGlobalAppInit(contextValue);
76
- }
70
+ const WrapComponent = (props) => {
77
71
  const mergedProps = {
78
72
  ...props,
79
73
  ...globalProps
80
74
  };
81
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_runtime.RuntimeReactContext.Provider, {
82
- value: contextValue,
83
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WrapperApp, {
84
- ...mergedProps
85
- })
75
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WrapperApp, {
76
+ ...mergedProps
86
77
  });
87
78
  };
88
79
  return WrapComponent;
@@ -98,9 +89,7 @@ const bootstrap = async (BootApp, id, root, ReactDOM) => {
98
89
  return init === null || init === void 0 ? void 0 : init(context2);
99
90
  };
100
91
  if (!id) {
101
- return /* @__PURE__ */ import_react.default.createElement(App, {
102
- _internal_context: context
103
- });
92
+ return (0, import_wrapper.wrapRuntimeContextProvider)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, {}), context);
104
93
  }
105
94
  const isBrowser = typeof window !== "undefined" && window.name !== "nodejs";
106
95
  if (isBrowser) {
@@ -171,9 +160,7 @@ const bootstrap = async (BootApp, id, root, ReactDOM) => {
171
160
  if (ssrData) {
172
161
  return (0, import_hydrate.hydrateRoot)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, {}), context, ModernRender, ModernHydrate);
173
162
  }
174
- return ModernRender(/* @__PURE__ */ import_react.default.createElement(App, {
175
- _internal_context: context
176
- }));
163
+ return ModernRender((0, import_wrapper.wrapRuntimeContextProvider)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, {}), context));
177
164
  } else {
178
165
  throw Error("`bootstrap` needs id in browser environment, it needs to be string or element");
179
166
  }
@@ -18,7 +18,9 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var constants_exports = {};
20
20
  __export(constants_exports, {
21
- RenderLevel: () => RenderLevel
21
+ ROUTER_DATA_JSON_ID: () => ROUTER_DATA_JSON_ID,
22
+ RenderLevel: () => RenderLevel,
23
+ SSR_DATA_JSON_ID: () => SSR_DATA_JSON_ID
22
24
  });
23
25
  module.exports = __toCommonJS(constants_exports);
24
26
  var RenderLevel;
@@ -27,7 +29,11 @@ var RenderLevel;
27
29
  RenderLevel2[RenderLevel2["SERVER_PREFETCH"] = 1] = "SERVER_PREFETCH";
28
30
  RenderLevel2[RenderLevel2["SERVER_RENDER"] = 2] = "SERVER_RENDER";
29
31
  })(RenderLevel || (RenderLevel = {}));
32
+ const SSR_DATA_JSON_ID = "__MODERN_SSR_DATA__";
33
+ const ROUTER_DATA_JSON_ID = "__MODERN_ROUTER_DATA__";
30
34
  // Annotate the CommonJS export names for ESM import in node:
31
35
  0 && (module.exports = {
32
- RenderLevel
36
+ ROUTER_DATA_JSON_ID,
37
+ RenderLevel,
38
+ SSR_DATA_JSON_ID
33
39
  });
@@ -24,6 +24,7 @@ __export(context_exports, {
24
24
  getGlobalAppInit: () => getGlobalAppInit,
25
25
  getGlobalLayoutApp: () => getGlobalLayoutApp,
26
26
  getGlobalRoutes: () => getGlobalRoutes,
27
+ getInitialContext: () => import_runtime.getInitialContext,
27
28
  setGlobalContext: () => setGlobalContext
28
29
  });
29
30
  module.exports = __toCommonJS(context_exports);
@@ -61,5 +62,6 @@ function getGlobalLayoutApp() {
61
62
  getGlobalAppInit,
62
63
  getGlobalLayoutApp,
63
64
  getGlobalRoutes,
65
+ getInitialContext,
64
66
  setGlobalContext
65
67
  });
@@ -21,22 +21,13 @@ __export(react_exports, {
21
21
  createRoot: () => createRoot
22
22
  });
23
23
  module.exports = __toCommonJS(react_exports);
24
- var import_jsx_runtime = require("react/jsx-runtime");
25
24
  var import_context = require("../context");
26
25
  var import_runner = require("../plugin/runner");
27
26
  function createRoot(UserApp) {
28
27
  const App = UserApp || (0, import_context.getGlobalApp)();
29
28
  const runner = (0, import_runner.getGlobalRunner)();
30
29
  const WrapperApp = runner.wrapRoot(App);
31
- const WrapComponent = ({ _internal_context, ...props }) => {
32
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_context.RuntimeReactContext.Provider, {
33
- value: _internal_context,
34
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WrapperApp, {
35
- ...props
36
- })
37
- });
38
- };
39
- return WrapComponent;
30
+ return WrapperApp;
40
31
  }
41
32
  // Annotate the CommonJS export names for ESM import in node:
42
33
  0 && (module.exports = {
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var wrapper_exports = {};
30
+ __export(wrapper_exports, {
31
+ wrapRuntimeContextProvider: () => wrapRuntimeContextProvider
32
+ });
33
+ module.exports = __toCommonJS(wrapper_exports);
34
+ var import_react = __toESM(require("react"));
35
+ var import_context = require("../context");
36
+ function wrapRuntimeContextProvider(App, contextValue) {
37
+ return /* @__PURE__ */ import_react.default.createElement(import_context.RuntimeReactContext.Provider, {
38
+ value: contextValue
39
+ }, App);
40
+ }
41
+ // Annotate the CommonJS export names for ESM import in node:
42
+ 0 && (module.exports = {
43
+ wrapRuntimeContextProvider
44
+ });
@@ -21,8 +21,6 @@ __export(constants_exports, {
21
21
  CHUNK_CSS_PLACEHOLDER: () => CHUNK_CSS_PLACEHOLDER,
22
22
  CHUNK_JS_PLACEHOLDER: () => CHUNK_JS_PLACEHOLDER,
23
23
  HTML_PLACEHOLDER: () => HTML_PLACEHOLDER,
24
- ROUTER_DATA_JSON_ID: () => ROUTER_DATA_JSON_ID,
25
- SSR_DATA_JSON_ID: () => SSR_DATA_JSON_ID,
26
24
  SSR_DATA_PLACEHOLDER: () => SSR_DATA_PLACEHOLDER
27
25
  });
28
26
  module.exports = __toCommonJS(constants_exports);
@@ -30,14 +28,10 @@ const HTML_PLACEHOLDER = "<!--<?- html ?>-->";
30
28
  const SSR_DATA_PLACEHOLDER = "<!--<?- SSRDataScript ?>-->";
31
29
  const CHUNK_JS_PLACEHOLDER = "<!--<?- chunksMap.js ?>-->";
32
30
  const CHUNK_CSS_PLACEHOLDER = "<!--<?- chunksMap.css ?>-->";
33
- const SSR_DATA_JSON_ID = "__MODERN_SSR_DATA__";
34
- const ROUTER_DATA_JSON_ID = "__MODERN_ROUTER_DATA__";
35
31
  // Annotate the CommonJS export names for ESM import in node:
36
32
  0 && (module.exports = {
37
33
  CHUNK_CSS_PLACEHOLDER,
38
34
  CHUNK_JS_PLACEHOLDER,
39
35
  HTML_PLACEHOLDER,
40
- ROUTER_DATA_JSON_ID,
41
- SSR_DATA_JSON_ID,
42
36
  SSR_DATA_PLACEHOLDER
43
37
  });
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,14 +15,6 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
  var shared_exports = {};
30
20
  __export(shared_exports, {
@@ -37,7 +27,7 @@ module.exports = __toCommonJS(shared_exports);
37
27
  var import_time = require("@modern-js/runtime-utils/time");
38
28
  var import_request = require("@modern-js/runtime-utils/universal/request");
39
29
  var import_node = require("@modern-js/runtime-utils/node");
40
- var import_react = __toESM(require("react"));
30
+ var import_wrapper = require("../../react/wrapper");
41
31
  var import_tracer = require("../tracer");
42
32
  var import_utils = require("../utils");
43
33
  var ShellChunkStatus;
@@ -74,11 +64,9 @@ function createRenderStreaming(createReadableStreamFromElement) {
74
64
  const onTiming = (0, import_tracer.createOnTiming)(options.onTiming);
75
65
  const { htmlTemplate, entryName } = resource;
76
66
  const ssrConfig = (0, import_utils.getSSRConfigByEntry)(entryName, config.ssr, config.ssrByEntries);
77
- const rootElement = import_react.default.cloneElement(serverRoot, {
78
- _internal_context: Object.assign(runtimeContext, {
79
- ssr: true
80
- })
81
- });
67
+ const rootElement = (0, import_wrapper.wrapRuntimeContextProvider)(serverRoot, Object.assign(runtimeContext, {
68
+ ssr: true
69
+ }));
82
70
  const stream = await createReadableStreamFromElement(request, rootElement, {
83
71
  config,
84
72
  htmlTemplate,
@@ -33,10 +33,10 @@ __export(string_exports, {
33
33
  module.exports = __toCommonJS(string_exports);
34
34
  var import_react_helmet = __toESM(require("react-helmet"));
35
35
  var import_server = __toESM(require("react-dom/server"));
36
- var import_react = __toESM(require("react"));
37
36
  var import_time = require("@modern-js/runtime-utils/time");
38
37
  var import_node = require("@modern-js/runtime-utils/node");
39
38
  var import_request = require("@modern-js/runtime-utils/universal/request");
39
+ var import_wrapper = require("../../react/wrapper");
40
40
  var import_helmet = require("../helmet");
41
41
  var import_utils = require("../utils");
42
42
  var import_constants = require("../constants");
@@ -94,11 +94,9 @@ const renderString = async (request, serverRoot, options) => {
94
94
  nonce: config.nonce
95
95
  })
96
96
  ];
97
- const rootElement = import_react.default.cloneElement(serverRoot, {
98
- _internal_context: Object.assign(runtimeContext, {
99
- ssr: true
100
- })
101
- });
97
+ const rootElement = (0, import_wrapper.wrapRuntimeContextProvider)(serverRoot, Object.assign(runtimeContext, {
98
+ ssr: true
99
+ }));
102
100
  const html = await generateHtml(rootElement, htmlTemplate, chunkSet, collectors, ((_runtimeContext_ssrContext = runtimeContext.ssrContext) === null || _runtimeContext_ssrContext === void 0 ? void 0 : _runtimeContext_ssrContext.htmlModifiers) || [], tracer);
103
101
  return html;
104
102
  });
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,14 +15,6 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
  var prefetch_exports = {};
30
20
  __export(prefetch_exports, {
@@ -36,7 +26,7 @@ var import_node = require("@modern-js/runtime-utils/node");
36
26
  var import_server2 = require("@loadable/server");
37
27
  var import_time = require("@modern-js/runtime-utils/time");
38
28
  var import_request = require("@modern-js/runtime-utils/universal/request");
39
- var import_react = __toESM(require("react"));
29
+ var import_wrapper = require("../../react/wrapper");
40
30
  var import_tracer = require("../tracer");
41
31
  const prefetch = async (App, request, options, ssrConfig, { onError, onTiming }) => {
42
32
  const headersData = (0, import_request.parseHeaders)(request);
@@ -54,17 +44,13 @@ const prefetch = async (App, request, options, ssrConfig, { onError, onTiming })
54
44
  entryName
55
45
  ].filter(Boolean)
56
46
  });
57
- (0, import_server.renderToStaticMarkup)(extractor.collectChunks(/* @__PURE__ */ import_react.default.cloneElement(App, {
58
- _internal_context: Object.assign(context, {
59
- ssr: false
60
- })
61
- })));
47
+ (0, import_server.renderToStaticMarkup)(extractor.collectChunks((0, import_wrapper.wrapRuntimeContextProvider)(App, Object.assign(context, {
48
+ ssr: false
49
+ }))));
62
50
  } else {
63
- (0, import_server.renderToStaticMarkup)(/* @__PURE__ */ import_react.default.cloneElement(App, {
64
- _internal_context: Object.assign(context, {
65
- ssr: false
66
- })
67
- }));
51
+ (0, import_server.renderToStaticMarkup)((0, import_wrapper.wrapRuntimeContextProvider)(App, Object.assign(context, {
52
+ ssr: false
53
+ })));
68
54
  }
69
55
  const cost = end();
70
56
  onTiming(import_tracer.SSRTimings.PRERENDER, cost);
@@ -28,7 +28,7 @@ var import_class_private_method_get = require("@swc/helpers/_/_class_private_met
28
28
  var import_class_private_method_init = require("@swc/helpers/_/_class_private_method_init");
29
29
  var import_node = require("@modern-js/runtime-utils/node");
30
30
  var import_utils = require("../utils");
31
- var import_constants = require("../constants");
31
+ var import_constants = require("../../constants");
32
32
  var _options = /* @__PURE__ */ new WeakMap(), _getSSRData = /* @__PURE__ */ new WeakSet(), _getSSRDataScripts = /* @__PURE__ */ new WeakSet();
33
33
  class SSRDataCollector {
34
34
  effect() {
@@ -3,8 +3,8 @@ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
4
  import { normalizePathname } from "@modern-js/runtime-utils/url";
5
5
  import { loadableReady } from "@loadable/component";
6
- import React from "react";
7
6
  import { RenderLevel } from "../constants";
7
+ import { wrapRuntimeContextProvider } from "../react/wrapper";
8
8
  import { WithCallback } from "./withCallback";
9
9
  var isReact18 = function() {
10
10
  return process.env.IS_REACT18 === "true";
@@ -38,20 +38,18 @@ function hydrateRoot(App, context, ModernRender, ModernHydrate) {
38
38
  var SSRApp = function() {
39
39
  return /* @__PURE__ */ _jsx(WithCallback, {
40
40
  callback,
41
- children: /* @__PURE__ */ React.cloneElement(App, {
42
- _internal_context: hydrateContext
43
- })
41
+ children: App
44
42
  });
45
43
  };
46
- return ModernHydrate(/* @__PURE__ */ _jsx(SSRApp, {}));
44
+ return ModernHydrate(wrapRuntimeContextProvider(/* @__PURE__ */ _jsx(SSRApp, {}), hydrateContext));
47
45
  } else {
48
- return ModernRender(App);
46
+ return ModernRender(wrapRuntimeContextProvider(App, context));
49
47
  }
50
48
  }
51
49
  return stringSSRHydrate();
52
50
  function stringSSRHydrate() {
53
51
  if (renderLevel === RenderLevel.CLIENT_RENDER || renderLevel === RenderLevel.SERVER_PREFETCH) {
54
- return ModernRender(App);
52
+ return ModernRender(wrapRuntimeContextProvider(App, context));
55
53
  } else if (renderLevel === RenderLevel.SERVER_RENDER) {
56
54
  return new Promise(function(resolve) {
57
55
  if (isReact18()) {
@@ -59,20 +57,16 @@ function hydrateRoot(App, context, ModernRender, ModernHydrate) {
59
57
  var SSRApp = function() {
60
58
  return /* @__PURE__ */ _jsx(WithCallback, {
61
59
  callback,
62
- children: /* @__PURE__ */ React.cloneElement(App, {
63
- _internal_context: hydrateContext
64
- })
60
+ children: App
65
61
  });
66
62
  };
67
- ModernHydrate(/* @__PURE__ */ _jsx(SSRApp, {})).then(function(root) {
63
+ ModernHydrate(wrapRuntimeContextProvider(/* @__PURE__ */ _jsx(SSRApp, {}), hydrateContext)).then(function(root) {
68
64
  resolve(root);
69
65
  });
70
66
  });
71
67
  } else {
72
68
  loadableReady(function() {
73
- ModernHydrate(/* @__PURE__ */ React.cloneElement(App, {
74
- _internal_context: hydrateContext
75
- }), callback).then(function(root) {
69
+ ModernHydrate(wrapRuntimeContextProvider(App, hydrateContext), callback).then(function(root) {
76
70
  resolve(root);
77
71
  });
78
72
  });
@@ -80,7 +74,7 @@ function hydrateRoot(App, context, ModernRender, ModernHydrate) {
80
74
  });
81
75
  } else {
82
76
  console.warn("unknow render level: ".concat(renderLevel, ", execute render()"));
83
- return ModernRender(App);
77
+ return ModernRender(wrapRuntimeContextProvider(App, context));
84
78
  }
85
79
  }
86
80
  }
@@ -3,12 +3,14 @@ import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
3
3
  import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
4
4
  import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
5
5
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
6
- import React from "react";
7
6
  import cookieTool from "cookie";
7
+ import { parsedJSONFromElement } from "@modern-js/runtime-utils/parsed";
8
8
  import { getGlobalAppInit } from "../context";
9
9
  import { getInitialContext } from "../context/runtime";
10
10
  import { createLoaderManager } from "../loader/loaderManager";
11
11
  import { getGlobalRunner } from "../plugin/runner";
12
+ import { wrapRuntimeContextProvider } from "../react/wrapper";
13
+ import { ROUTER_DATA_JSON_ID, SSR_DATA_JSON_ID } from "../constants";
12
14
  import { hydrateRoot } from "./hydrate";
13
15
  var IS_REACT18 = process.env.IS_REACT18 === "true";
14
16
  function getSSRData() {
@@ -35,7 +37,7 @@ function render(App, id) {
35
37
  }
36
38
  function _render() {
37
39
  _render = _async_to_generator(function(App, id) {
38
- var runner, context, runBeforeRender, ModernRender, ModernHydrate, _ssrData_data, _ssrData_data1, ssrData, loadersData, initialLoadersState, initialData, rootElement;
40
+ var runner, context, runBeforeRender, ModernRender, ModernHydrate, _ssrData_data, _ssrData_data1, routeData, ssrData, loadersData, initialLoadersState, initialData, rootElement;
39
41
  function _ModernRender() {
40
42
  _ModernRender = _async_to_generator(function(App2) {
41
43
  var renderFunc;
@@ -43,9 +45,7 @@ function _render() {
43
45
  renderFunc = IS_REACT18 ? renderWithReact18 : renderWithReact17;
44
46
  return [
45
47
  2,
46
- renderFunc(/* @__PURE__ */ React.cloneElement(App2, {
47
- _internal_context: context
48
- }), rootElement)
48
+ renderFunc(App2, rootElement)
49
49
  ];
50
50
  });
51
51
  });
@@ -104,6 +104,9 @@ function _render() {
104
104
  ModernHydrate = function ModernHydrate2(App2, callback) {
105
105
  return _ModernHydrate.apply(this, arguments);
106
106
  };
107
+ window._SSR_DATA = window._SSR_DATA || parsedJSONFromElement(SSR_DATA_JSON_ID);
108
+ routeData = parsedJSONFromElement(ROUTER_DATA_JSON_ID);
109
+ window._ROUTER_DATA = window._ROUTER_DATA || routeData;
107
110
  ssrData = getSSRData();
108
111
  loadersData = (ssrData === null || ssrData === void 0 ? void 0 : (_ssrData_data = ssrData.data) === null || _ssrData_data === void 0 ? void 0 : _ssrData_data.loadersData) || {};
109
112
  initialLoadersState = Object.keys(loadersData).reduce(function(res, key) {
@@ -142,7 +145,7 @@ function _render() {
142
145
  }
143
146
  return [
144
147
  2,
145
- ModernRender(App)
148
+ ModernRender(wrapRuntimeContextProvider(App, context))
146
149
  ];
147
150
  case 2:
148
151
  throw Error("`render` function needs id in browser environment, it needs to be string or element");
@@ -2,7 +2,6 @@ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
2
  import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
3
3
  import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
4
4
  import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
5
- import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
6
5
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
7
6
  import { jsx as _jsx } from "react/jsx-runtime";
8
7
  import React, { useContext, useMemo } from "react";
@@ -13,6 +12,7 @@ import { createLoaderManager } from "./loader/loaderManager";
13
12
  import { getGlobalRunner } from "./plugin/runner";
14
13
  import { getGlobalAppInit } from "./context";
15
14
  import { hydrateRoot as ModernHydrateRoot } from "./browser/hydrate";
15
+ import { wrapRuntimeContextProvider } from "./react/wrapper";
16
16
  var IS_REACT18 = process.env.IS_REACT18 === "true";
17
17
  function isClientArgs(id) {
18
18
  return typeof id === "string" || typeof HTMLElement !== "undefined" && _instanceof(id, HTMLElement);
@@ -37,22 +37,9 @@ var createApp = function(param) {
37
37
  }));
38
38
  };
39
39
  var WrapperApp = runner.wrapRoot(WrapperComponent);
40
- var WrapComponent = function(_param) {
41
- var _internal_context = _param._internal_context, props = _object_without_properties(_param, [
42
- "_internal_context"
43
- ]);
44
- var contextValue = _internal_context;
45
- if (!(contextValue === null || contextValue === void 0 ? void 0 : contextValue.runner)) {
46
- var _getGlobalAppInit;
47
- contextValue = getInitialContext(runner);
48
- runner === null || runner === void 0 ? void 0 : runner.beforeRender(contextValue);
49
- (_getGlobalAppInit = getGlobalAppInit()) === null || _getGlobalAppInit === void 0 ? void 0 : _getGlobalAppInit(contextValue);
50
- }
40
+ var WrapComponent = function(props) {
51
41
  var mergedProps = _object_spread({}, props, globalProps);
52
- return /* @__PURE__ */ _jsx(RuntimeReactContext.Provider, {
53
- value: contextValue,
54
- children: /* @__PURE__ */ _jsx(WrapperApp, _object_spread({}, mergedProps))
55
- });
42
+ return /* @__PURE__ */ _jsx(WrapperApp, _object_spread({}, mergedProps));
56
43
  };
57
44
  return WrapComponent;
58
45
  };
@@ -93,9 +80,7 @@ var bootstrap = function() {
93
80
  if (!id) {
94
81
  return [
95
82
  2,
96
- /* @__PURE__ */ React.createElement(App, {
97
- _internal_context: context
98
- })
83
+ wrapRuntimeContextProvider(/* @__PURE__ */ _jsx(App, {}), context)
99
84
  ];
100
85
  }
101
86
  isBrowser = typeof window !== "undefined" && window.name !== "nodejs";
@@ -183,9 +168,7 @@ var bootstrap = function() {
183
168
  }
184
169
  return [
185
170
  2,
186
- ModernRender(/* @__PURE__ */ React.createElement(App, {
187
- _internal_context: context
188
- }))
171
+ ModernRender(wrapRuntimeContextProvider(/* @__PURE__ */ _jsx(App, {}), context))
189
172
  ];
190
173
  case 2:
191
174
  throw Error("`bootstrap` needs id in browser environment, it needs to be string or element");