@modern-js/runtime 2.58.2-alpha.0 → 2.58.3

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 (197) hide show
  1. package/dist/cjs/cli/code.js +1 -1
  2. package/dist/cjs/cli/index.js +11 -14
  3. package/dist/cjs/cli/ssr/babel-plugin-ssr-loader-id.js +1 -1
  4. package/dist/cjs/cli/ssr/index.js +14 -1
  5. package/dist/cjs/cli/template.js +1 -1
  6. package/dist/cjs/core/browser/hydrate.js +1 -1
  7. package/dist/cjs/core/browser/index.js +36 -17
  8. package/dist/cjs/core/compatible.js +4 -4
  9. package/dist/cjs/core/context/runtime.js +1 -1
  10. package/dist/cjs/core/loader/loaderManager.js +1 -1
  11. package/dist/cjs/core/loader/useLoader.js +1 -1
  12. package/dist/cjs/core/server/react/prerender/index.js +1 -1
  13. package/dist/cjs/core/server/requestHandler.js +14 -6
  14. package/dist/cjs/core/server/stream/afterTemplate.js +1 -1
  15. package/dist/cjs/core/server/stream/beforeTemplate.js +3 -3
  16. package/dist/cjs/core/server/stream/createReadableStream.js +2 -2
  17. package/dist/cjs/core/server/stream/createReadableStream.worker.js +2 -2
  18. package/dist/cjs/core/server/stream/shared.js +1 -1
  19. package/dist/cjs/core/server/stream/template.js +1 -1
  20. package/dist/cjs/core/server/string/index.js +29 -29
  21. package/dist/cjs/core/server/string/prefetch.js +5 -5
  22. package/dist/cjs/core/server/string/ssrData.js +1 -1
  23. package/dist/cjs/document/Body.js +1 -1
  24. package/dist/cjs/document/Head.js +1 -1
  25. package/dist/cjs/document/Root.js +1 -1
  26. package/dist/cjs/document/cli/index.js +2 -2
  27. package/dist/cjs/router/cli/code/getClientRoutes/getRoutes.js +1 -1
  28. package/dist/cjs/router/cli/code/getClientRoutes/getRoutesLegacy.js +1 -1
  29. package/dist/cjs/router/cli/code/index.js +6 -6
  30. package/dist/cjs/router/cli/code/templates.js +15 -8
  31. package/dist/cjs/router/cli/code/utils.js +1 -1
  32. package/dist/cjs/router/cli/handler.js +2 -2
  33. package/dist/cjs/router/runtime/DeferredDataScripts.node.js +2 -2
  34. package/dist/cjs/router/runtime/PrefetchLink.js +1 -1
  35. package/dist/cjs/router/runtime/plugin.js +4 -4
  36. package/dist/cjs/router/runtime/plugin.node.js +6 -6
  37. package/dist/cjs/router/runtime/utils.js +2 -2
  38. package/dist/cjs/state/plugins.js +1 -1
  39. package/dist/cjs/state/runtime/plugin.js +6 -6
  40. package/dist/esm/cli/code.js +3 -4
  41. package/dist/esm/cli/index.js +7 -10
  42. package/dist/esm/cli/ssr/babel-plugin-ssr-loader-id.js +1 -1
  43. package/dist/esm/cli/ssr/index.js +16 -1
  44. package/dist/esm/cli/template.js +1 -1
  45. package/dist/esm/core/browser/hydrate.js +1 -1
  46. package/dist/esm/core/browser/index.js +33 -14
  47. package/dist/esm/core/browser/withCallback.js +1 -1
  48. package/dist/esm/core/compatible.js +4 -4
  49. package/dist/esm/core/context/runtime.js +1 -1
  50. package/dist/esm/core/loader/loaderManager.js +3 -1
  51. package/dist/esm/core/loader/useLoader.js +1 -1
  52. package/dist/esm/core/plugin/base.js +1 -1
  53. package/dist/esm/core/plugin/index.js +1 -1
  54. package/dist/esm/core/server/react/prerender/index.js +2 -2
  55. package/dist/esm/core/server/requestHandler.js +13 -6
  56. package/dist/esm/core/server/stream/afterTemplate.js +1 -1
  57. package/dist/esm/core/server/stream/beforeTemplate.js +3 -3
  58. package/dist/esm/core/server/stream/createReadableStream.js +2 -2
  59. package/dist/esm/core/server/stream/createReadableStream.worker.js +2 -2
  60. package/dist/esm/core/server/stream/shared.js +1 -1
  61. package/dist/esm/core/server/stream/template.js +1 -1
  62. package/dist/esm/core/server/string/index.js +12 -15
  63. package/dist/esm/core/server/string/prefetch.js +2 -2
  64. package/dist/esm/core/server/string/ssrData.js +1 -1
  65. package/dist/esm/document/Body.js +1 -1
  66. package/dist/esm/document/Comment.js +1 -1
  67. package/dist/esm/document/Head.js +1 -1
  68. package/dist/esm/document/Root.js +1 -1
  69. package/dist/esm/document/Script.js +1 -1
  70. package/dist/esm/document/Style.js +1 -1
  71. package/dist/esm/document/cli/index.js +3 -3
  72. package/dist/esm/router/cli/code/getClientRoutes/getRoutes.js +2 -2
  73. package/dist/esm/router/cli/code/getClientRoutes/getRoutesLegacy.js +2 -2
  74. package/dist/esm/router/cli/code/getClientRoutes/utils.js +2 -2
  75. package/dist/esm/router/cli/code/index.js +4 -4
  76. package/dist/esm/router/cli/code/nestedRoutes.js +1 -1
  77. package/dist/esm/router/cli/code/templates.js +2 -2
  78. package/dist/esm/router/cli/code/utils.js +2 -2
  79. package/dist/esm/router/cli/entry.js +1 -1
  80. package/dist/esm/router/cli/handler.js +2 -2
  81. package/dist/esm/router/cli/index.js +1 -1
  82. package/dist/esm/router/runtime/DeferredDataScripts.node.js +2 -2
  83. package/dist/esm/router/runtime/PrefetchLink.js +1 -1
  84. package/dist/esm/router/runtime/plugin.js +4 -4
  85. package/dist/esm/router/runtime/plugin.node.js +6 -6
  86. package/dist/esm/router/runtime/utils.js +2 -2
  87. package/dist/esm/state/plugins.js +1 -1
  88. package/dist/esm/state/runtime/plugin.js +4 -4
  89. package/dist/esm-node/cli/code.js +3 -3
  90. package/dist/esm-node/cli/index.js +7 -10
  91. package/dist/esm-node/cli/ssr/babel-plugin-ssr-loader-id.js +1 -1
  92. package/dist/esm-node/cli/ssr/index.js +14 -1
  93. package/dist/esm-node/cli/template.js +1 -1
  94. package/dist/esm-node/core/browser/hydrate.js +1 -1
  95. package/dist/esm-node/core/browser/index.js +36 -17
  96. package/dist/esm-node/core/browser/withCallback.js +1 -1
  97. package/dist/esm-node/core/compatible.js +4 -4
  98. package/dist/esm-node/core/context/runtime.js +1 -1
  99. package/dist/esm-node/core/loader/loaderManager.js +1 -1
  100. package/dist/esm-node/core/loader/useLoader.js +1 -1
  101. package/dist/esm-node/core/plugin/base.js +1 -1
  102. package/dist/esm-node/core/plugin/index.js +1 -1
  103. package/dist/esm-node/core/server/react/prerender/index.js +2 -2
  104. package/dist/esm-node/core/server/requestHandler.js +13 -5
  105. package/dist/esm-node/core/server/stream/afterTemplate.js +1 -1
  106. package/dist/esm-node/core/server/stream/beforeTemplate.js +3 -3
  107. package/dist/esm-node/core/server/stream/createReadableStream.js +2 -2
  108. package/dist/esm-node/core/server/stream/createReadableStream.worker.js +2 -2
  109. package/dist/esm-node/core/server/stream/shared.js +1 -1
  110. package/dist/esm-node/core/server/stream/template.js +1 -1
  111. package/dist/esm-node/core/server/string/index.js +21 -21
  112. package/dist/esm-node/core/server/string/prefetch.js +2 -2
  113. package/dist/esm-node/core/server/string/ssrData.js +1 -1
  114. package/dist/esm-node/document/Body.js +1 -1
  115. package/dist/esm-node/document/Comment.js +1 -1
  116. package/dist/esm-node/document/Head.js +1 -1
  117. package/dist/esm-node/document/Root.js +1 -1
  118. package/dist/esm-node/document/Script.js +1 -1
  119. package/dist/esm-node/document/Style.js +1 -1
  120. package/dist/esm-node/document/cli/index.js +3 -3
  121. package/dist/esm-node/router/cli/code/getClientRoutes/getRoutes.js +2 -2
  122. package/dist/esm-node/router/cli/code/getClientRoutes/getRoutesLegacy.js +2 -2
  123. package/dist/esm-node/router/cli/code/getClientRoutes/utils.js +2 -2
  124. package/dist/esm-node/router/cli/code/index.js +4 -4
  125. package/dist/esm-node/router/cli/code/nestedRoutes.js +1 -1
  126. package/dist/esm-node/router/cli/code/templates.js +16 -9
  127. package/dist/esm-node/router/cli/code/utils.js +2 -2
  128. package/dist/esm-node/router/cli/entry.js +1 -1
  129. package/dist/esm-node/router/cli/handler.js +2 -2
  130. package/dist/esm-node/router/cli/index.js +1 -1
  131. package/dist/esm-node/router/runtime/DeferredDataScripts.node.js +2 -2
  132. package/dist/esm-node/router/runtime/PrefetchLink.js +1 -1
  133. package/dist/esm-node/router/runtime/plugin.js +4 -4
  134. package/dist/esm-node/router/runtime/plugin.node.js +6 -6
  135. package/dist/esm-node/router/runtime/utils.js +2 -2
  136. package/dist/esm-node/state/plugins.js +1 -1
  137. package/dist/esm-node/state/runtime/plugin.js +4 -4
  138. package/dist/types/cli/alias.d.ts +1 -1
  139. package/dist/types/cli/code.d.ts +1 -1
  140. package/dist/types/cli/index.d.ts +3 -3
  141. package/dist/types/cli/ssr/index.d.ts +1 -1
  142. package/dist/types/common.d.ts +1 -1
  143. package/dist/types/config.d.ts +1 -1
  144. package/dist/types/core/browser/hydrate.d.ts +3 -3
  145. package/dist/types/core/browser/index.d.ts +1 -1
  146. package/dist/types/core/browser/withCallback.d.ts +1 -1
  147. package/dist/types/core/compatible.d.ts +3 -3
  148. package/dist/types/core/config.d.ts +1 -1
  149. package/dist/types/core/context/index.d.ts +1 -1
  150. package/dist/types/core/context/runtime.d.ts +5 -5
  151. package/dist/types/core/loader/loaderManager.d.ts +2 -2
  152. package/dist/types/core/plugin/base.d.ts +2 -2
  153. package/dist/types/core/plugin/index.d.ts +1 -1
  154. package/dist/types/core/plugin/runner.d.ts +1 -1
  155. package/dist/types/core/react/index.d.ts +1 -1
  156. package/dist/types/core/react/wrapper.d.ts +1 -1
  157. package/dist/types/core/server/helmet.d.ts +1 -1
  158. package/dist/types/core/server/index.d.ts +1 -1
  159. package/dist/types/core/server/react/nossr/index.d.ts +1 -1
  160. package/dist/types/core/server/react/prerender/util.d.ts +1 -1
  161. package/dist/types/core/server/requestHandler.d.ts +3 -3
  162. package/dist/types/core/server/stream/afterTemplate.d.ts +4 -4
  163. package/dist/types/core/server/stream/beforeTemplate.d.ts +2 -2
  164. package/dist/types/core/server/stream/createReadableStream.d.ts +1 -1
  165. package/dist/types/core/server/stream/createReadableStream.worker.d.ts +1 -1
  166. package/dist/types/core/server/stream/shared.d.ts +3 -3
  167. package/dist/types/core/server/stream/template.d.ts +1 -1
  168. package/dist/types/core/server/string/index.d.ts +1 -1
  169. package/dist/types/core/server/string/loadable.d.ts +2 -2
  170. package/dist/types/core/server/string/prefetch.d.ts +5 -5
  171. package/dist/types/core/server/string/ssrData.d.ts +4 -4
  172. package/dist/types/core/server/string/styledComponent.d.ts +1 -1
  173. package/dist/types/core/server/string/types.d.ts +2 -2
  174. package/dist/types/core/server/utils.d.ts +3 -3
  175. package/dist/types/core/types.d.ts +2 -2
  176. package/dist/types/document/DocumentStructureContext.d.ts +1 -1
  177. package/dist/types/document/cli/index.d.ts +2 -2
  178. package/dist/types/exports/server.d.ts +1 -1
  179. package/dist/types/index.d.ts +2 -2
  180. package/dist/types/router/cli/code/index.d.ts +2 -2
  181. package/dist/types/router/cli/code/templates.d.ts +1 -1
  182. package/dist/types/router/cli/entry.d.ts +1 -1
  183. package/dist/types/router/cli/handler.d.ts +3 -3
  184. package/dist/types/router/cli/index.d.ts +1 -1
  185. package/dist/types/router/runtime/DeferredDataScripts.node.d.ts +1 -1
  186. package/dist/types/router/runtime/PrefetchLink.d.ts +1 -1
  187. package/dist/types/router/runtime/hooks.d.ts +1 -1
  188. package/dist/types/router/runtime/index.d.ts +1 -1
  189. package/dist/types/router/runtime/plugin.d.ts +1 -1
  190. package/dist/types/router/runtime/routeModule.d.ts +1 -1
  191. package/dist/types/router/runtime/types.d.ts +2 -2
  192. package/dist/types/router/runtime/utils.d.ts +4 -4
  193. package/dist/types/router/runtime/withRouter.d.ts +1 -1
  194. package/dist/types/state/cli/index.d.ts +1 -1
  195. package/package.json +13 -12
  196. package/types/index.d.ts +1 -1
  197. package/types/router.d.ts +1 -1
@@ -36,7 +36,7 @@ var import_utils = require("@modern-js/utils");
36
36
  var import_constants = require("./constants");
37
37
  var template = __toESM(require("./template"));
38
38
  var serverTemplate = __toESM(require("./template.server"));
39
- function getSSRMode(entry = import_utils.MAIN_ENTRY_NAME, config) {
39
+ function getSSRMode(entry, config) {
40
40
  const { ssr, ssrByEntries } = config.server;
41
41
  if (config.output.ssg) {
42
42
  return "string";
@@ -29,24 +29,24 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
29
29
  var cli_exports = {};
30
30
  __export(cli_exports, {
31
31
  default: () => cli_default,
32
- documentPlugin: () => import_cli3.documentPlugin,
32
+ documentPlugin: () => import_cli.documentPlugin,
33
33
  isRuntimeEntry: () => import_entry2.isRuntimeEntry,
34
34
  routerPlugin: () => import_cli2.routerPlugin,
35
35
  runtimePlugin: () => runtimePlugin,
36
36
  ssrPlugin: () => import_ssr.ssrPlugin,
37
- statePlugin: () => import_cli.statePlugin
37
+ statePlugin: () => import_cli3.statePlugin
38
38
  });
39
39
  module.exports = __toCommonJS(cli_exports);
40
40
  var import_path = __toESM(require("path"));
41
41
  var import_utils = require("@modern-js/utils");
42
- var import_cli = require("../state/cli");
42
+ var import_cli = require("../document/cli");
43
43
  var import_cli2 = require("../router/cli");
44
- var import_cli3 = require("../document/cli");
45
- var import_ssr = require("./ssr");
46
- var import_entry = require("./entry");
47
- var import_constants = require("./constants");
48
- var import_code = require("./code");
44
+ var import_cli3 = require("../state/cli");
49
45
  var import_alias = require("./alias");
46
+ var import_code = require("./code");
47
+ var import_constants = require("./constants");
48
+ var import_entry = require("./entry");
49
+ var import_ssr = require("./ssr");
50
50
  var import_entry2 = require("./entry");
51
51
  const runtimePlugin = (params) => ({
52
52
  name: "@modern-js/runtime",
@@ -61,8 +61,8 @@ const runtimePlugin = (params) => ({
61
61
  usePlugins: (params === null || params === void 0 ? void 0 : params.plugins) || [
62
62
  (0, import_ssr.ssrPlugin)(),
63
63
  (0, import_cli2.routerPlugin)(),
64
- (0, import_cli.statePlugin)(),
65
- (0, import_cli3.documentPlugin)()
64
+ (0, import_cli3.statePlugin)(),
65
+ (0, import_cli.documentPlugin)()
66
66
  ],
67
67
  setup: (api) => {
68
68
  return {
@@ -142,10 +142,7 @@ const runtimePlugin = (params) => ({
142
142
  ]
143
143
  },
144
144
  bundlerChain: (chain) => {
145
- chain.module.rule("modern-entry").test([
146
- /\.js$/,
147
- /\.jsx$/
148
- ]).include.add(import_path.default.resolve(appDirectory, "node_modules", `.${metaName}`)).end().sideEffects(true);
145
+ chain.module.rule("modern-entry").test(/\.jsx?$/).include.add(import_path.default.resolve(appDirectory, "node_modules", `.${metaName}`)).end().sideEffects(true);
149
146
  },
150
147
  /**
151
148
  * Add IgnorePlugin to fix react-dom/client import error when use react17
@@ -21,8 +21,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
21
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
22
  mod
23
23
  ));
24
- var import_crypto = __toESM(require("crypto"));
25
24
  var import_buffer = require("buffer");
25
+ var import_crypto = __toESM(require("crypto"));
26
26
  var t = __toESM(require("@babel/types"));
27
27
  var import_lodash = require("@modern-js/utils/lodash");
28
28
  const RUNTIME_PACKAGE_NAMES = [
@@ -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
  }
@@ -89,7 +89,7 @@ const runtimeGlobalContext = ({ srcDirectory, internalSrcAlias, metaName, entry,
89
89
  return `import { setGlobalContext } from '@${metaName}/runtime/context'
90
90
 
91
91
  import App from '${// We need to get the path of App.tsx here, but the entry is `src/entry.tsx`
92
- (0, import_utils.formatImportPath)(customEntry ? entry.replace("entry.tsx", "App.tsx").replace(srcDirectory, internalSrcAlias) : entry.replace(srcDirectory, internalSrcAlias))}';
92
+ (0, import_utils.formatImportPath)(customEntry ? entry.replace("entry.tsx", "App").replace(srcDirectory, internalSrcAlias) : entry.replace(srcDirectory, internalSrcAlias).replace(".tsx", ""))}';
93
93
 
94
94
  setGlobalContext({
95
95
  App,
@@ -23,8 +23,8 @@ __export(hydrate_exports, {
23
23
  });
24
24
  module.exports = __toCommonJS(hydrate_exports);
25
25
  var import_jsx_runtime = require("react/jsx-runtime");
26
- var import_url = require("@modern-js/runtime-utils/url");
27
26
  var import_component = require("@loadable/component");
27
+ var import_url = require("@modern-js/runtime-utils/url");
28
28
  var import_constants = require("../constants");
29
29
  var import_wrapper = require("../react/wrapper");
30
30
  var import_withCallback = require("./withCallback");
@@ -31,34 +31,53 @@ __export(browser_exports, {
31
31
  render: () => render
32
32
  });
33
33
  module.exports = __toCommonJS(browser_exports);
34
- var import_cookie = __toESM(require("cookie"));
35
34
  var import_parsed = require("@modern-js/runtime-utils/parsed");
35
+ var import_cookie = __toESM(require("cookie"));
36
+ var import_constants = require("../constants");
36
37
  var import_context = require("../context");
37
38
  var import_runtime = require("../context/runtime");
38
39
  var import_loaderManager = require("../loader/loaderManager");
39
40
  var import_runner = require("../plugin/runner");
40
41
  var import_wrapper = require("../react/wrapper");
41
- var import_constants = require("../constants");
42
42
  var import_hydrate = require("./hydrate");
43
43
  const IS_REACT18 = process.env.IS_REACT18 === "true";
44
+ const getQuery = () => window.location.search.substring(1).split("&").reduce((res, item) => {
45
+ const [key, value] = item.split("=");
46
+ if (key) {
47
+ res[key] = value;
48
+ }
49
+ return res;
50
+ }, {});
44
51
  function getSSRData() {
52
+ var _ssrData_context, _ssrData_context1, _ssrRequest_headers;
45
53
  const ssrData = window._SSR_DATA;
46
- if (ssrData) {
47
- const finalSSRData = {
48
- ...ssrData,
49
- context: {
50
- ...ssrData.context,
51
- request: {
52
- ...ssrData.context.request,
53
- cookieMap: import_cookie.default.parse(document.cookie || "") || {},
54
- cookie: document.cookie || "",
55
- userAgent: navigator.userAgent,
56
- referer: document.referrer
57
- }
54
+ const ssrRequest = ssrData === null || ssrData === void 0 ? void 0 : (_ssrData_context = ssrData.context) === null || _ssrData_context === void 0 ? void 0 : _ssrData_context.request;
55
+ const finalSSRData = {
56
+ ...ssrData || {
57
+ renderLevel: 0,
58
+ mode: "string"
59
+ },
60
+ context: {
61
+ ...(ssrData === null || ssrData === void 0 ? void 0 : ssrData.context) || {},
62
+ request: {
63
+ ...(ssrData === null || ssrData === void 0 ? void 0 : (_ssrData_context1 = ssrData.context) === null || _ssrData_context1 === void 0 ? void 0 : _ssrData_context1.request) || {},
64
+ params: (ssrRequest === null || ssrRequest === void 0 ? void 0 : ssrRequest.params) || {},
65
+ host: (ssrRequest === null || ssrRequest === void 0 ? void 0 : ssrRequest.host) || location.host,
66
+ pathname: (ssrRequest === null || ssrRequest === void 0 ? void 0 : ssrRequest.pathname) || location.pathname,
67
+ headers: (ssrRequest === null || ssrRequest === void 0 ? void 0 : ssrRequest.headers) || {},
68
+ cookieMap: import_cookie.default.parse(document.cookie || "") || {},
69
+ cookie: document.cookie || "",
70
+ userAgent: (ssrRequest === null || ssrRequest === void 0 ? void 0 : (_ssrRequest_headers = ssrRequest.headers) === null || _ssrRequest_headers === void 0 ? void 0 : _ssrRequest_headers["user-agent"]) || navigator.userAgent,
71
+ referer: document.referrer,
72
+ query: {
73
+ ...getQuery(),
74
+ ...(ssrRequest === null || ssrRequest === void 0 ? void 0 : ssrRequest.query) || {}
75
+ },
76
+ url: location.href
58
77
  }
59
- };
60
- return finalSSRData;
61
- }
78
+ }
79
+ };
80
+ return finalSSRData;
62
81
  }
63
82
  function isClientArgs(id) {
64
83
  return typeof id === "undefined" || typeof id === "string" || typeof HTMLElement !== "undefined" && id instanceof HTMLElement;
@@ -34,14 +34,14 @@ __export(compatible_exports, {
34
34
  });
35
35
  module.exports = __toCommonJS(compatible_exports);
36
36
  var import_jsx_runtime = require("react/jsx-runtime");
37
- var import_react = __toESM(require("react"));
38
37
  var import_constants = require("@modern-js/utils/universal/constants");
38
+ var import_react = __toESM(require("react"));
39
+ var import_hydrate = require("./browser/hydrate");
40
+ var import_context = require("./context");
39
41
  var import_runtime = require("./context/runtime");
40
- var import_plugin = require("./plugin");
41
42
  var import_loaderManager = require("./loader/loaderManager");
43
+ var import_plugin = require("./plugin");
42
44
  var import_runner = require("./plugin/runner");
43
- var import_context = require("./context");
44
- var import_hydrate = require("./browser/hydrate");
45
45
  var import_wrapper = require("./react/wrapper");
46
46
  const IS_REACT18 = process.env.IS_REACT18 === "true";
47
47
  function isClientArgs(id) {
@@ -23,8 +23,8 @@ __export(runtime_exports, {
23
23
  getInitialContext: () => getInitialContext
24
24
  });
25
25
  module.exports = __toCommonJS(runtime_exports);
26
- var import_react = require("react");
27
26
  var import_constants = require("@modern-js/utils/universal/constants");
27
+ var import_react = require("react");
28
28
  var import_loaderManager = require("../loader/loaderManager");
29
29
  const RuntimeReactContext = (0, import_react.createContext)({});
30
30
  const ServerRouterContext = (0, import_react.createContext)({});
@@ -58,7 +58,7 @@ const createLoader = (id, initialData = {
58
58
  reloading: false,
59
59
  data: void 0,
60
60
  error: void 0
61
- }, loaderFn, skip = false) => {
61
+ }, loaderFn = () => Promise.resolve(), skip = false) => {
62
62
  let promise;
63
63
  let status = 0;
64
64
  let { data, error } = initialData;
@@ -31,8 +31,8 @@ __export(useLoader_exports, {
31
31
  default: () => useLoader_default
32
32
  });
33
33
  module.exports = __toCommonJS(useLoader_exports);
34
- var import_react = require("react");
35
34
  var import_invariant = __toESM(require("invariant"));
35
+ var import_react = require("react");
36
36
  var import_runtime = require("../context/runtime");
37
37
  var import_loaderManager = require("./loaderManager");
38
38
  const useLoader = (loaderFn, options = {
@@ -31,8 +31,8 @@ __export(prerender_exports, {
31
31
  PreRender: () => PreRender
32
32
  });
33
33
  module.exports = __toCommonJS(prerender_exports);
34
- var import_react_side_effect = __toESM(require("react-side-effect"));
35
34
  var import_react = __toESM(require("react"));
35
+ var import_react_side_effect = __toESM(require("react-side-effect"));
36
36
  var import_util = require("./util");
37
37
  const PROP_NAMES = {
38
38
  INTERVAL: "interval",
@@ -22,13 +22,13 @@ __export(requestHandler_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(requestHandler_exports);
24
24
  var import_request = require("@modern-js/runtime-utils/universal/request");
25
- var import_react2 = require("../react");
26
25
  var import_context = require("../context");
27
- var import_runner = require("../plugin/runner");
28
26
  var import_runtime = require("../context/runtime");
29
27
  var import_loaderManager = require("../loader/loaderManager");
30
- var import_utils = require("./utils");
28
+ var import_runner = require("../plugin/runner");
29
+ var import_react = require("../react");
31
30
  var import_constants = require("./constants");
31
+ var import_utils = require("./utils");
32
32
  function createSSRContext(request, options) {
33
33
  const { config, loaderContext, onError, onTiming, locals, resource, params, responseProxy, logger, metrics, reporter } = options;
34
34
  const { nonce } = config;
@@ -41,7 +41,10 @@ function createSSRContext(request, options) {
41
41
  const headersData = (0, import_request.parseHeaders)(request);
42
42
  const url = new URL(request.url);
43
43
  const host = headers.get("X-Forwarded-Host") || headers.get("host") || url.host;
44
- const protocal = `${headers.get("X-Forwarded-Proto") || url.protocol || "http"}:`;
44
+ let protocol = (headers.get("X-Forwarded-Proto") || url.protocol || "http").split(/\s*,\s*/, 1)[0];
45
+ if (!protocol.endsWith(":")) {
46
+ protocol += ":";
47
+ }
45
48
  const ssrConfig = (0, import_utils.getSSRConfigByEntry)(entryName, config.ssr, config.ssrByEntries);
46
49
  const ssrMode = (0, import_utils.getSSRMode)(ssrConfig);
47
50
  const loaderFailureMode = typeof ssrConfig === "object" ? ssrConfig.loaderFailureMode : void 0;
@@ -53,7 +56,7 @@ function createSSRContext(request, options) {
53
56
  logger,
54
57
  metrics,
55
58
  request: {
56
- url: request.url.replace(url.host, host).replace(url.protocol, protocal),
59
+ url: request.url.replace(url.host, host).replace(url.protocol, protocol),
57
60
  baseUrl: route.urlPath,
58
61
  userAgent: headers.get("user-agent"),
59
62
  cookie,
@@ -83,7 +86,8 @@ function createSSRContext(request, options) {
83
86
  }
84
87
  const createRequestHandler = async (handleRequest) => {
85
88
  const requestHandler = async (request, options) => {
86
- const Root = (0, import_react2.createRoot)();
89
+ var _context_routerContext, _context_routerContext1;
90
+ const Root = (0, import_react.createRoot)();
87
91
  const runner = (0, import_runner.getGlobalRunner)();
88
92
  const { routeManifest } = options.resource;
89
93
  const context = (0, import_runtime.getInitialContext)(runner, false, routeManifest);
@@ -130,6 +134,10 @@ const createRequestHandler = async (handleRequest) => {
130
134
  return void 0;
131
135
  };
132
136
  const initialData = await runBeforeRender(context);
137
+ if (((_context_routerContext = context.routerContext) === null || _context_routerContext === void 0 ? void 0 : _context_routerContext.statusCode) && ((_context_routerContext1 = context.routerContext) === null || _context_routerContext1 === void 0 ? void 0 : _context_routerContext1.statusCode) !== 200) {
138
+ var _context_routerContext2, _context_ssrContext;
139
+ (_context_ssrContext = context.ssrContext) === null || _context_ssrContext === void 0 ? void 0 : _context_ssrContext.response.status((_context_routerContext2 = context.routerContext) === null || _context_routerContext2 === void 0 ? void 0 : _context_routerContext2.statusCode);
140
+ }
133
141
  context.initialData = initialData;
134
142
  const redirectResponse = getRedirectResponse(initialData);
135
143
  if (redirectResponse) {
@@ -22,9 +22,9 @@ __export(afterTemplate_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(afterTemplate_exports);
24
24
  var import_node = require("@modern-js/runtime-utils/node");
25
- var import_utils = require("../utils");
26
25
  var import_constants = require("../constants");
27
26
  var import_shared = require("../shared");
27
+ var import_utils = require("../utils");
28
28
  function buildShellAfterTemplate(afterAppTemplate, options) {
29
29
  const { request, config, ssrConfig, runtimeContext, renderLevel, entryName } = options;
30
30
  const callbacks = [
@@ -31,12 +31,12 @@ __export(beforeTemplate_exports, {
31
31
  buildShellBeforeTemplate: () => buildShellBeforeTemplate
32
32
  });
33
33
  module.exports = __toCommonJS(beforeTemplate_exports);
34
- var import_react_helmet = __toESM(require("react-helmet"));
35
34
  var import_router = require("@modern-js/runtime-utils/router");
36
- var import_helmet = require("../helmet");
35
+ var import_react_helmet = __toESM(require("react-helmet"));
37
36
  var import_constants = require("../constants");
38
- var import_utils = require("../utils");
37
+ var import_helmet = require("../helmet");
39
38
  var import_shared = require("../shared");
39
+ var import_utils = require("../utils");
40
40
  const readAsset = async (chunk) => {
41
41
  const fs = await Promise.resolve().then(() => __toESM(require("fs/promises")));
42
42
  const path = await Promise.resolve().then(() => __toESM(require("path")));
@@ -33,12 +33,12 @@ __export(createReadableStream_exports, {
33
33
  module.exports = __toCommonJS(createReadableStream_exports);
34
34
  var import_stream = require("stream");
35
35
  var import_node = require("@modern-js/runtime-utils/node");
36
- var import_styled_components = require("styled-components");
37
36
  var import_isbot = __toESM(require("isbot"));
37
+ var import_styled_components = require("styled-components");
38
38
  var import_common = require("../../../common");
39
39
  var import_constants = require("../../constants");
40
- var import_template = require("./template");
41
40
  var import_shared = require("./shared");
41
+ var import_template = require("./template");
42
42
  const createReadableStreamFromElement = async (request, rootElement, options) => {
43
43
  const { renderToPipeableStream } = await Promise.resolve().then(() => __toESM(require("react-dom/server")));
44
44
  const { runtimeContext, htmlTemplate, config, ssrConfig, entryName } = options;
@@ -31,10 +31,10 @@ __export(createReadableStream_worker_exports, {
31
31
  createReadableStreamFromElement: () => createReadableStreamFromElement
32
32
  });
33
33
  module.exports = __toCommonJS(createReadableStream_worker_exports);
34
- var import_server = require("react-dom/server");
35
34
  var import_isbot = __toESM(require("isbot"));
36
- var import_constants = require("../../constants");
35
+ var import_server = require("react-dom/server");
37
36
  var import_common = require("../../../common");
37
+ var import_constants = require("../../constants");
38
38
  var import_shared = require("./shared");
39
39
  var import_template = require("./template");
40
40
  const createReadableStreamFromElement = async (request, rootElement, options) => {
@@ -24,9 +24,9 @@ __export(shared_exports, {
24
24
  getReadableStreamFromString: () => getReadableStreamFromString
25
25
  });
26
26
  module.exports = __toCommonJS(shared_exports);
27
+ var import_node = require("@modern-js/runtime-utils/node");
27
28
  var import_time = require("@modern-js/runtime-utils/time");
28
29
  var import_request = require("@modern-js/runtime-utils/universal/request");
29
- var import_node = require("@modern-js/runtime-utils/node");
30
30
  var import_wrapper = require("../../react/wrapper");
31
31
  var import_tracer = require("../tracer");
32
32
  var import_utils = require("../utils");
@@ -21,8 +21,8 @@ __export(template_exports, {
21
21
  getTemplates: () => getTemplates
22
22
  });
23
23
  module.exports = __toCommonJS(template_exports);
24
- var import_beforeTemplate = require("./beforeTemplate");
25
24
  var import_afterTemplate = require("./afterTemplate");
25
+ var import_beforeTemplate = require("./beforeTemplate");
26
26
  const HTML_SEPARATOR = "<!--<?- html ?>-->";
27
27
  const getTemplates = async (htmlTemplate, options) => {
28
28
  const [beforeAppTemplate = "", afterAppHtmlTemplate = ""] = htmlTemplate.split(HTML_SEPARATOR) || [];
@@ -31,22 +31,22 @@ __export(string_exports, {
31
31
  renderString: () => renderString
32
32
  });
33
33
  module.exports = __toCommonJS(string_exports);
34
- var import_react_helmet = __toESM(require("react-helmet"));
35
- var import_server = __toESM(require("react-dom/server"));
36
- var import_time = require("@modern-js/runtime-utils/time");
37
34
  var import_node = require("@modern-js/runtime-utils/node");
35
+ var import_time = require("@modern-js/runtime-utils/time");
38
36
  var import_request = require("@modern-js/runtime-utils/universal/request");
37
+ var import_server = __toESM(require("react-dom/server"));
38
+ var import_react_helmet = __toESM(require("react-helmet"));
39
+ var import_constants = require("../../constants");
39
40
  var import_wrapper = require("../../react/wrapper");
41
+ var import_constants2 = require("../constants");
40
42
  var import_helmet = require("../helmet");
41
- var import_utils = require("../utils");
42
- var import_constants = require("../constants");
43
43
  var import_shared = require("../shared");
44
44
  var import_tracer = require("../tracer");
45
- var import_constants2 = require("../../constants");
46
- var import_ssrData = require("./ssrData");
45
+ var import_utils = require("../utils");
47
46
  var import_loadable = require("./loadable");
48
- var import_styledComponent = require("./styledComponent");
49
47
  var import_prefetch = require("./prefetch");
48
+ var import_ssrData = require("./ssrData");
49
+ var import_styledComponent = require("./styledComponent");
50
50
  const renderString = async (request, serverRoot, options) => {
51
51
  const headersData = (0, import_request.parseHeaders)(request);
52
52
  return (0, import_node.run)(headersData, async () => {
@@ -60,7 +60,7 @@ const renderString = async (request, serverRoot, options) => {
60
60
  const { htmlTemplate, entryName, loadableStats, routeManifest } = resource;
61
61
  const ssrConfig = (0, import_utils.getSSRConfigByEntry)(entryName, config.ssr, config.ssrByEntries);
62
62
  const chunkSet = {
63
- renderLevel: import_constants2.RenderLevel.CLIENT_RENDER,
63
+ renderLevel: import_constants.RenderLevel.CLIENT_RENDER,
64
64
  ssrScripts: "",
65
65
  jsChunk: "",
66
66
  cssChunk: ""
@@ -68,9 +68,9 @@ const renderString = async (request, serverRoot, options) => {
68
68
  let prefetchData = {};
69
69
  try {
70
70
  prefetchData = await (0, import_prefetch.prefetch)(serverRoot, request, options, ssrConfig, tracer);
71
- chunkSet.renderLevel = import_constants2.RenderLevel.SERVER_PREFETCH;
71
+ chunkSet.renderLevel = import_constants.RenderLevel.SERVER_PREFETCH;
72
72
  } catch (e) {
73
- chunkSet.renderLevel = import_constants2.RenderLevel.CLIENT_RENDER;
73
+ chunkSet.renderLevel = import_constants.RenderLevel.CLIENT_RENDER;
74
74
  tracer.onError(import_tracer.SSRErrors.PRERENDER, e);
75
75
  }
76
76
  const collectors = [
@@ -105,22 +105,22 @@ async function generateHtml(App, htmlTemplate, chunkSet, collectors, htmlModifie
105
105
  const end = (0, import_time.time)();
106
106
  let html = "";
107
107
  let helmetData;
108
- if (chunkSet.renderLevel >= import_constants2.RenderLevel.SERVER_PREFETCH) {
109
- try {
110
- const finalApp = collectors.reduce((pre, creator) => {
111
- var _creator_collect;
112
- return ((_creator_collect = creator.collect) === null || _creator_collect === void 0 ? void 0 : _creator_collect.call(creator, pre)) || pre;
113
- }, App);
108
+ try {
109
+ const finalApp = collectors.reduce((pre, creator) => {
110
+ var _creator_collect;
111
+ return ((_creator_collect = creator.collect) === null || _creator_collect === void 0 ? void 0 : _creator_collect.call(creator, pre)) || pre;
112
+ }, App);
113
+ if (chunkSet.renderLevel >= import_constants.RenderLevel.SERVER_PREFETCH) {
114
114
  html = import_server.default.renderToString(finalApp);
115
- helmetData = import_react_helmet.default.renderStatic();
116
- chunkSet.renderLevel = import_constants2.RenderLevel.SERVER_RENDER;
117
- await Promise.all(collectors.map((component) => component.effect()));
118
- const cost = end();
119
- onTiming(import_tracer.SSRTimings.RENDER_HTML, cost);
120
- } catch (e) {
121
- chunkSet.renderLevel = import_constants2.RenderLevel.CLIENT_RENDER;
122
- onError(import_tracer.SSRErrors.RENDER_HTML, e);
115
+ chunkSet.renderLevel = import_constants.RenderLevel.SERVER_RENDER;
123
116
  }
117
+ helmetData = import_react_helmet.default.renderStatic();
118
+ await Promise.all(collectors.map((component) => component.effect()));
119
+ const cost = end();
120
+ onTiming(import_tracer.SSRTimings.RENDER_HTML, cost);
121
+ } catch (e) {
122
+ chunkSet.renderLevel = import_constants.RenderLevel.CLIENT_RENDER;
123
+ onError(import_tracer.SSRErrors.RENDER_HTML, e);
124
124
  }
125
125
  const { ssrScripts, cssChunk, jsChunk } = chunkSet;
126
126
  const finalHtml = await (0, import_shared.buildHtml)(htmlTemplate, [
@@ -134,16 +134,16 @@ async function generateHtml(App, htmlTemplate, chunkSet, collectors, htmlModifie
134
134
  return finalHtml;
135
135
  }
136
136
  function createReplaceHtml(html) {
137
- return (template) => (0, import_utils.safeReplace)(template, import_constants.HTML_PLACEHOLDER, html);
137
+ return (template) => (0, import_utils.safeReplace)(template, import_constants2.HTML_PLACEHOLDER, html);
138
138
  }
139
139
  function createReplaceSSRDataScript(data) {
140
- return (template) => (0, import_utils.safeReplace)(template, import_constants.SSR_DATA_PLACEHOLDER, data);
140
+ return (template) => (0, import_utils.safeReplace)(template, import_constants2.SSR_DATA_PLACEHOLDER, data);
141
141
  }
142
142
  function createReplaceChunkJs(js) {
143
- return (template) => (0, import_utils.safeReplace)(template, import_constants.CHUNK_JS_PLACEHOLDER, js);
143
+ return (template) => (0, import_utils.safeReplace)(template, import_constants2.CHUNK_JS_PLACEHOLDER, js);
144
144
  }
145
145
  function createReplaceChunkCss(css) {
146
- return (template) => (0, import_utils.safeReplace)(template, import_constants.CHUNK_CSS_PLACEHOLDER, css);
146
+ return (template) => (0, import_utils.safeReplace)(template, import_constants2.CHUNK_CSS_PLACEHOLDER, css);
147
147
  }
148
148
  // Annotate the CommonJS export names for ESM import in node:
149
149
  0 && (module.exports = {
@@ -21,11 +21,11 @@ __export(prefetch_exports, {
21
21
  prefetch: () => prefetch
22
22
  });
23
23
  module.exports = __toCommonJS(prefetch_exports);
24
- var import_server = require("react-dom/server");
24
+ var import_server = require("@loadable/server");
25
25
  var import_node = require("@modern-js/runtime-utils/node");
26
- var import_server2 = require("@loadable/server");
27
26
  var import_time = require("@modern-js/runtime-utils/time");
28
27
  var import_request = require("@modern-js/runtime-utils/universal/request");
28
+ var import_server2 = require("react-dom/server");
29
29
  var import_wrapper = require("../../react/wrapper");
30
30
  var import_tracer = require("../tracer");
31
31
  const prefetch = async (App, request, options, ssrConfig, { onError, onTiming }) => {
@@ -38,17 +38,17 @@ const prefetch = async (App, request, options, ssrConfig, { onError, onTiming })
38
38
  try {
39
39
  const end = (0, import_time.time)();
40
40
  if (loadableStats) {
41
- const extractor = new import_server2.ChunkExtractor({
41
+ const extractor = new import_server.ChunkExtractor({
42
42
  stats: loadableStats,
43
43
  entrypoints: [
44
44
  entryName
45
45
  ].filter(Boolean)
46
46
  });
47
- (0, import_server.renderToStaticMarkup)(extractor.collectChunks((0, import_wrapper.wrapRuntimeContextProvider)(App, Object.assign(context, {
47
+ (0, import_server2.renderToStaticMarkup)(extractor.collectChunks((0, import_wrapper.wrapRuntimeContextProvider)(App, Object.assign(context, {
48
48
  ssr: false
49
49
  }))));
50
50
  } else {
51
- (0, import_server.renderToStaticMarkup)((0, import_wrapper.wrapRuntimeContextProvider)(App, Object.assign(context, {
51
+ (0, import_server2.renderToStaticMarkup)((0, import_wrapper.wrapRuntimeContextProvider)(App, Object.assign(context, {
52
52
  ssr: false
53
53
  })));
54
54
  }
@@ -27,8 +27,8 @@ var import_class_private_field_set = require("@swc/helpers/_/_class_private_fiel
27
27
  var import_class_private_method_get = require("@swc/helpers/_/_class_private_method_get");
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
- var import_utils = require("../utils");
31
30
  var import_constants = require("../../constants");
31
+ var import_utils = require("../utils");
32
32
  var _options = /* @__PURE__ */ new WeakMap(), _getSSRData = /* @__PURE__ */ new WeakSet(), _getSSRDataScripts = /* @__PURE__ */ new WeakSet();
33
33
  class SSRDataCollector {
34
34
  effect() {
@@ -23,9 +23,9 @@ __export(Body_exports, {
23
23
  module.exports = __toCommonJS(Body_exports);
24
24
  var import_jsx_runtime = require("react/jsx-runtime");
25
25
  var import_react = require("react");
26
- var import_constants = require("./constants");
27
26
  var import_DocumentStructureContext = require("./DocumentStructureContext");
28
27
  var import_Root = require("./Root");
28
+ var import_constants = require("./constants");
29
29
  function Body(props) {
30
30
  const { hasSetRoot } = (0, import_react.useContext)(import_DocumentStructureContext.DocumentStructureContext);
31
31
  const { children, ...rest } = props;
@@ -25,8 +25,8 @@ module.exports = __toCommonJS(Head_exports);
25
25
  var import_jsx_runtime = require("react/jsx-runtime");
26
26
  var import_react = require("react");
27
27
  var import_DocumentStructureContext = require("./DocumentStructureContext");
28
- var import_Scripts = require("./Scripts");
29
28
  var import_Links = require("./Links");
29
+ var import_Scripts = require("./Scripts");
30
30
  var import_Title = require("./Title");
31
31
  var import_constants = require("./constants");
32
32
  function Head(props) {
@@ -23,8 +23,8 @@ __export(Root_exports, {
23
23
  });
24
24
  module.exports = __toCommonJS(Root_exports);
25
25
  var import_jsx_runtime = require("react/jsx-runtime");
26
- var import_react = require("react");
27
26
  var import_lodash = require("@modern-js/utils/lodash");
27
+ var import_react = require("react");
28
28
  var import_DocumentContext = require("./DocumentContext");
29
29
  var import_constants = require("./constants");
30
30
  function Root(props) {
@@ -34,10 +34,10 @@ __export(cli_exports, {
34
34
  });
35
35
  module.exports = __toCommonJS(cli_exports);
36
36
  var import_path = __toESM(require("path"));
37
+ var import_utils = require("@modern-js/utils");
38
+ var import_esbuild = require("esbuild");
37
39
  var import_react = __toESM(require("react"));
38
40
  var import_server = __toESM(require("react-dom/server"));
39
- var import_esbuild = require("esbuild");
40
- var import_utils = require("@modern-js/utils");
41
41
  var import_DocumentContext = require("../DocumentContext");
42
42
  var import_constants = require("../constants");
43
43
  const debug = (0, import_utils.createDebugger)("html_genarate");
@@ -33,8 +33,8 @@ __export(getRoutes_exports, {
33
33
  module.exports = __toCommonJS(getRoutes_exports);
34
34
  var import_path = __toESM(require("path"));
35
35
  var import_utils = require("@modern-js/utils");
36
- var import_makeLegalIdentifier = require("../makeLegalIdentifier");
37
36
  var import_constants = require("../../constants");
37
+ var import_makeLegalIdentifier = require("../makeLegalIdentifier");
38
38
  var import_utils2 = require("../utils");
39
39
  var import_utils3 = require("./utils");
40
40
  const compName = (srcDirectory, filePath) => {
@@ -34,8 +34,8 @@ module.exports = __toCommonJS(getRoutesLegacy_exports);
34
34
  var import_path = __toESM(require("path"));
35
35
  var import_utils = require("@modern-js/utils");
36
36
  var import_constants = require("../../constants");
37
- var import_utils2 = require("../utils");
38
37
  var import_makeLegalIdentifier = require("../makeLegalIdentifier");
38
+ var import_utils2 = require("../utils");
39
39
  var import_utils3 = require("./utils");
40
40
  const compName = (srcDirectory, filePath) => {
41
41
  const legalCompName = (0, import_makeLegalIdentifier.makeLegalIdentifier)(import_path.default.relative(srcDirectory, filePath));