@modern-js/runtime 2.57.1 → 2.57.2-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.
Files changed (32) hide show
  1. package/dist/cjs/cli/ssr/index.js +14 -1
  2. package/dist/cjs/core/browser/hydrate.js +9 -25
  3. package/dist/cjs/core/browser/index.js +3 -5
  4. package/dist/cjs/core/compatible.js +6 -19
  5. package/dist/cjs/core/react/index.js +1 -10
  6. package/dist/cjs/core/react/wrapper.js +44 -0
  7. package/dist/cjs/core/server/stream/shared.js +4 -16
  8. package/dist/cjs/core/server/string/index.js +4 -6
  9. package/dist/cjs/core/server/string/prefetch.js +7 -21
  10. package/dist/esm/cli/ssr/index.js +16 -1
  11. package/dist/esm/core/browser/hydrate.js +9 -15
  12. package/dist/esm/core/browser/index.js +3 -5
  13. package/dist/esm/core/compatible.js +5 -22
  14. package/dist/esm/core/react/index.js +2 -14
  15. package/dist/esm/core/react/wrapper.js +10 -0
  16. package/dist/esm/core/server/stream/shared.js +4 -6
  17. package/dist/esm/core/server/string/index.js +4 -6
  18. package/dist/esm/core/server/string/prefetch.js +7 -11
  19. package/dist/esm-node/cli/ssr/index.js +14 -1
  20. package/dist/esm-node/core/browser/hydrate.js +9 -15
  21. package/dist/esm-node/core/browser/index.js +3 -5
  22. package/dist/esm-node/core/compatible.js +6 -19
  23. package/dist/esm-node/core/react/index.js +2 -11
  24. package/dist/esm-node/core/react/wrapper.js +10 -0
  25. package/dist/esm-node/core/server/stream/shared.js +4 -6
  26. package/dist/esm-node/core/server/string/index.js +4 -6
  27. package/dist/esm-node/core/server/string/prefetch.js +7 -11
  28. package/dist/index.js +635 -0
  29. package/dist/types/core/compatible.d.ts +1 -1
  30. package/dist/types/core/react/index.d.ts +1 -1
  31. package/dist/types/core/react/wrapper.d.ts +3 -0
  32. package/package.json +5 -5
@@ -86,6 +86,7 @@ const ssrPlugin = () => ({
86
86
  "@modern-js/runtime"
87
87
  ],
88
88
  setup: (api) => {
89
+ const appContext = api.useAppContext();
89
90
  return {
90
91
  // for bundle
91
92
  config() {
@@ -123,7 +124,19 @@ const ssrPlugin = () => ({
123
124
  }
124
125
  },
125
126
  tools: {
126
- babel: babelHandler
127
+ babel: babelHandler,
128
+ bundlerChain: (chain, { isServer }) => {
129
+ if (isServer && appContext.moduleType === "module") {
130
+ chain.output.libraryTarget("module").set("chunkFormat", "module");
131
+ chain.output.library({
132
+ type: "module"
133
+ });
134
+ chain.experiments({
135
+ ...chain.get("experiments"),
136
+ outputModule: true
137
+ });
138
+ }
139
+ }
127
140
  }
128
141
  };
129
142
  }
@@ -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,12 @@ __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"));
36
35
  var import_context = require("../context");
37
36
  var import_runtime = require("../context/runtime");
38
37
  var import_loaderManager = require("../loader/loaderManager");
39
38
  var import_runner = require("../plugin/runner");
39
+ var import_wrapper = require("../react/wrapper");
40
40
  var import_hydrate = require("./hydrate");
41
41
  const IS_REACT18 = process.env.IS_REACT18 === "true";
42
42
  function getSSRData() {
@@ -99,9 +99,7 @@ async function render(App, id) {
99
99
  const rootElement = id && typeof id !== "string" ? id : document.getElementById(id || "root");
100
100
  async function ModernRender(App2) {
101
101
  const renderFunc = IS_REACT18 ? renderWithReact18 : renderWithReact17;
102
- return renderFunc(/* @__PURE__ */ import_react.default.cloneElement(App2, {
103
- _internal_context: context
104
- }), rootElement);
102
+ return renderFunc(App2, rootElement);
105
103
  }
106
104
  async function ModernHydrate(App2, callback) {
107
105
  const hydrateFunc = IS_REACT18 ? hydrateWithReact18 : hydrateWithReact17;
@@ -110,7 +108,7 @@ async function render(App, id) {
110
108
  if (ssrData) {
111
109
  return (0, import_hydrate.hydrateRoot)(App, context, ModernRender, ModernHydrate);
112
110
  }
113
- return ModernRender(App);
111
+ return ModernRender((0, import_wrapper.wrapRuntimeContextProvider)(App, context));
114
112
  }
115
113
  throw Error("`render` function needs id in browser environment, it needs to be string or element");
116
114
  }
@@ -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
  }
@@ -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
+ });
@@ -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);
@@ -1,3 +1,5 @@
1
+ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
2
+ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
1
3
  import path from "path";
2
4
  import { LOADABLE_STATS_FILE, isUseSSRBundle } from "@modern-js/utils";
3
5
  var hasStringSSREntry = function(userConfig) {
@@ -75,6 +77,7 @@ var ssrPlugin = function() {
75
77
  "@modern-js/runtime"
76
78
  ],
77
79
  setup: function(api) {
80
+ var appContext = api.useAppContext();
78
81
  return {
79
82
  // for bundle
80
83
  config: function config() {
@@ -112,7 +115,19 @@ var ssrPlugin = function() {
112
115
  }
113
116
  },
114
117
  tools: {
115
- babel: babelHandler
118
+ babel: babelHandler,
119
+ bundlerChain: function(chain, param) {
120
+ var isServer = param.isServer;
121
+ if (isServer && appContext.moduleType === "module") {
122
+ chain.output.libraryTarget("module").set("chunkFormat", "module");
123
+ chain.output.library({
124
+ type: "module"
125
+ });
126
+ chain.experiments(_object_spread_props(_object_spread({}, chain.get("experiments")), {
127
+ outputModule: true
128
+ }));
129
+ }
130
+ }
116
131
  }
117
132
  };
118
133
  }
@@ -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,12 @@ 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";
8
7
  import { getGlobalAppInit } from "../context";
9
8
  import { getInitialContext } from "../context/runtime";
10
9
  import { createLoaderManager } from "../loader/loaderManager";
11
10
  import { getGlobalRunner } from "../plugin/runner";
11
+ import { wrapRuntimeContextProvider } from "../react/wrapper";
12
12
  import { hydrateRoot } from "./hydrate";
13
13
  var IS_REACT18 = process.env.IS_REACT18 === "true";
14
14
  function getSSRData() {
@@ -43,9 +43,7 @@ function _render() {
43
43
  renderFunc = IS_REACT18 ? renderWithReact18 : renderWithReact17;
44
44
  return [
45
45
  2,
46
- renderFunc(/* @__PURE__ */ React.cloneElement(App2, {
47
- _internal_context: context
48
- }), rootElement)
46
+ renderFunc(App2, rootElement)
49
47
  ];
50
48
  });
51
49
  });
@@ -142,7 +140,7 @@ function _render() {
142
140
  }
143
141
  return [
144
142
  2,
145
- ModernRender(App)
143
+ ModernRender(wrapRuntimeContextProvider(App, context))
146
144
  ];
147
145
  case 2:
148
146
  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");
@@ -1,22 +1,10 @@
1
- import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
2
- import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
3
- import { jsx as _jsx } from "react/jsx-runtime";
4
- import { RuntimeReactContext, getGlobalApp } from "../context";
1
+ import { getGlobalApp } from "../context";
5
2
  import { getGlobalRunner } from "../plugin/runner";
6
3
  function createRoot(UserApp) {
7
4
  var App = UserApp || getGlobalApp();
8
5
  var runner = getGlobalRunner();
9
6
  var WrapperApp = runner.wrapRoot(App);
10
- var WrapComponent = function(_param) {
11
- var _internal_context = _param._internal_context, props = _object_without_properties(_param, [
12
- "_internal_context"
13
- ]);
14
- return /* @__PURE__ */ _jsx(RuntimeReactContext.Provider, {
15
- value: _internal_context,
16
- children: /* @__PURE__ */ _jsx(WrapperApp, _object_spread({}, props))
17
- });
18
- };
19
- return WrapComponent;
7
+ return WrapperApp;
20
8
  }
21
9
  export {
22
10
  createRoot
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import { RuntimeReactContext } from "../context";
3
+ function wrapRuntimeContextProvider(App, contextValue) {
4
+ return /* @__PURE__ */ React.createElement(RuntimeReactContext.Provider, {
5
+ value: contextValue
6
+ }, App);
7
+ }
8
+ export {
9
+ wrapRuntimeContextProvider
10
+ };