@modern-js/runtime 2.65.1 → 2.65.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 (98) hide show
  1. package/dist/cjs/cache/index.js +22 -0
  2. package/dist/cjs/cli/code.js +1 -0
  3. package/dist/cjs/cli/ssr/index.js +1 -1
  4. package/dist/cjs/cli/template.js +7 -3
  5. package/dist/cjs/core/browser/index.js +1 -3
  6. package/dist/cjs/core/compat/requestContext.js +48 -0
  7. package/dist/cjs/core/compatible.js +2 -14
  8. package/dist/cjs/core/context/index.js +6 -0
  9. package/dist/cjs/core/context/monitors/default.js +38 -0
  10. package/dist/cjs/core/context/monitors/index.js +31 -0
  11. package/dist/cjs/core/context/monitors/index.server.js +33 -0
  12. package/dist/cjs/core/context/request/index.js +30 -0
  13. package/dist/cjs/core/context/request/index.server.js +32 -0
  14. package/dist/cjs/core/context/response/index.js +43 -0
  15. package/dist/cjs/core/context/response/index.server.js +62 -0
  16. package/dist/cjs/core/plugin/index.js +2 -0
  17. package/dist/cjs/core/server/requestHandler.js +83 -73
  18. package/dist/cjs/core/server/stream/shared.js +40 -45
  19. package/dist/cjs/core/server/string/index.js +50 -55
  20. package/dist/cjs/core/server/string/prefetch.js +47 -52
  21. package/dist/cjs/index.js +13 -0
  22. package/dist/cjs/react-server.js +38 -0
  23. package/dist/cjs/router/cli/code/templates.js +3 -1
  24. package/dist/cjs/router/cli/handler.js +1 -0
  25. package/dist/cjs/router/runtime/plugin.node.js +1 -2
  26. package/dist/cjs/router/runtime/utils.js +4 -6
  27. package/dist/esm/cache/index.js +1 -0
  28. package/dist/esm/cli/code.js +1 -0
  29. package/dist/esm/cli/ssr/index.js +1 -1
  30. package/dist/esm/cli/template.js +4 -4
  31. package/dist/esm/core/browser/index.js +3 -4
  32. package/dist/esm/core/compat/requestContext.js +25 -0
  33. package/dist/esm/core/compatible.js +5 -16
  34. package/dist/esm/core/context/index.js +5 -0
  35. package/dist/esm/core/context/monitors/default.js +20 -0
  36. package/dist/esm/core/context/monitors/index.js +7 -0
  37. package/dist/esm/core/context/monitors/index.server.js +9 -0
  38. package/dist/esm/core/context/request/index.js +6 -0
  39. package/dist/esm/core/context/request/index.server.js +8 -0
  40. package/dist/esm/core/context/response/index.js +16 -0
  41. package/dist/esm/core/context/response/index.server.js +41 -0
  42. package/dist/esm/core/plugin/index.js +3 -1
  43. package/dist/esm/core/server/requestHandler.js +134 -118
  44. package/dist/esm/core/server/stream/shared.js +49 -63
  45. package/dist/esm/core/server/string/index.js +82 -93
  46. package/dist/esm/core/server/string/prefetch.js +83 -94
  47. package/dist/esm/index.js +8 -0
  48. package/dist/esm/react-server.js +10 -0
  49. package/dist/esm/router/cli/code/templates.js +3 -3
  50. package/dist/esm/router/cli/handler.js +1 -0
  51. package/dist/esm/router/runtime/plugin.node.js +1 -2
  52. package/dist/esm/router/runtime/utils.js +4 -6
  53. package/dist/esm-node/cache/index.js +1 -0
  54. package/dist/esm-node/cli/code.js +1 -0
  55. package/dist/esm-node/cli/ssr/index.js +1 -1
  56. package/dist/esm-node/cli/template.js +7 -3
  57. package/dist/esm-node/core/browser/index.js +1 -3
  58. package/dist/esm-node/core/compat/requestContext.js +23 -0
  59. package/dist/esm-node/core/compatible.js +2 -14
  60. package/dist/esm-node/core/context/index.js +5 -0
  61. package/dist/esm-node/core/context/monitors/default.js +14 -0
  62. package/dist/esm-node/core/context/monitors/index.js +7 -0
  63. package/dist/esm-node/core/context/monitors/index.server.js +9 -0
  64. package/dist/esm-node/core/context/request/index.js +6 -0
  65. package/dist/esm-node/core/context/request/index.server.js +8 -0
  66. package/dist/esm-node/core/context/response/index.js +16 -0
  67. package/dist/esm-node/core/context/response/index.server.js +35 -0
  68. package/dist/esm-node/core/plugin/index.js +2 -0
  69. package/dist/esm-node/core/server/requestHandler.js +83 -73
  70. package/dist/esm-node/core/server/stream/shared.js +40 -45
  71. package/dist/esm-node/core/server/string/index.js +50 -55
  72. package/dist/esm-node/core/server/string/prefetch.js +47 -52
  73. package/dist/esm-node/index.js +8 -0
  74. package/dist/esm-node/react-server.js +10 -0
  75. package/dist/esm-node/router/cli/code/templates.js +3 -1
  76. package/dist/esm-node/router/cli/handler.js +1 -0
  77. package/dist/esm-node/router/runtime/plugin.node.js +1 -2
  78. package/dist/esm-node/router/runtime/utils.js +4 -6
  79. package/dist/types/cache/index.d.ts +1 -0
  80. package/dist/types/cli/template.d.ts +2 -1
  81. package/dist/types/core/compat/requestContext.d.ts +27 -0
  82. package/dist/types/core/compatible.d.ts +2 -2
  83. package/dist/types/core/config.d.ts +1 -1
  84. package/dist/types/core/context/index.d.ts +2 -0
  85. package/dist/types/core/context/monitors/default.d.ts +2 -0
  86. package/dist/types/core/context/monitors/index.d.ts +1 -0
  87. package/dist/types/core/context/monitors/index.server.d.ts +2 -0
  88. package/dist/types/core/context/request/index.d.ts +1 -0
  89. package/dist/types/core/context/request/index.server.d.ts +1 -0
  90. package/dist/types/core/context/response/index.d.ts +4 -0
  91. package/dist/types/core/context/response/index.server.d.ts +7 -0
  92. package/dist/types/core/context/runtime.d.ts +1 -0
  93. package/dist/types/core/types.d.ts +4 -17
  94. package/dist/types/index.d.ts +3 -0
  95. package/dist/types/react-server.d.ts +3 -0
  96. package/dist/types/router/cli/code/templates.d.ts +2 -1
  97. package/dist/types/router/runtime/utils.d.ts +3 -5
  98. package/package.json +22 -12
@@ -43,7 +43,7 @@ var import_remix_router = require("@modern-js/runtime-utils/remix-router");
43
43
  var import_router = require("@modern-js/runtime-utils/router");
44
44
  var import_DefaultNotFound = require("./DefaultNotFound");
45
45
  var import_DeferredDataScripts = __toESM(require("./DeferredDataScripts"));
46
- function getRouteComponents(routes, { globalApp, ssrMode, props, reporter }) {
46
+ function getRouteComponents(routes, { globalApp, ssrMode, props }) {
47
47
  const Layout = ({ Component, ...props2 }) => {
48
48
  const GlobalLayout = globalApp;
49
49
  if (!GlobalLayout) {
@@ -61,8 +61,7 @@ function getRouteComponents(routes, { globalApp, ssrMode, props, reporter }) {
61
61
  if (route.type === "nested") {
62
62
  const routeElement = (0, import_browser.renderNestedRoute)(route, {
63
63
  DeferredDataComponent: ssrMode === "stream" ? import_DeferredDataScripts.default : void 0,
64
- props,
65
- reporter
64
+ props
66
65
  });
67
66
  routeElements.push(routeElement);
68
67
  } else {
@@ -81,7 +80,7 @@ function getRouteComponents(routes, { globalApp, ssrMode, props, reporter }) {
81
80
  }, "*"));
82
81
  return routeElements;
83
82
  }
84
- function renderRoutes({ routesConfig, props, ssrMode, reporter }) {
83
+ function renderRoutes({ routesConfig, props, ssrMode }) {
85
84
  if (!routesConfig) {
86
85
  return null;
87
86
  }
@@ -92,8 +91,7 @@ function renderRoutes({ routesConfig, props, ssrMode, reporter }) {
92
91
  const routeElements = getRouteComponents(routes, {
93
92
  globalApp,
94
93
  ssrMode,
95
- props,
96
- reporter
94
+ props
97
95
  });
98
96
  return routeElements;
99
97
  }
@@ -0,0 +1 @@
1
+ export * from "@modern-js/runtime-utils/cache";
@@ -185,6 +185,7 @@ var generateCode = function() {
185
185
  12
186
186
  ];
187
187
  contextCode = template.runtimeGlobalContext({
188
+ entryName,
188
189
  srcDirectory,
189
190
  internalSrcAlias,
190
191
  metaName,
@@ -113,7 +113,7 @@ var ssrPlugin = function() {
113
113
  source: {
114
114
  alias: {
115
115
  // ensure that all packages use the same storage in @modern-js/runtime-utils/node
116
- "@modern-js/runtime-utils/node$": require.resolve("@modern-js/runtime-utils/node")
116
+ "@modern-js/runtime-utils/node$": require.resolve("@modern-js/runtime-utils/node").replace("".concat(path.sep, "cjs").concat(path.sep), "".concat(path.sep, "esm").concat(path.sep))
117
117
  }
118
118
  },
119
119
  tools: {
@@ -32,7 +32,7 @@ var getImportRuntimeConfigCode = function(srcDirectory, internalSrcAlias, runtim
32
32
  if (runtimeConfigFile && findExists(JS_EXTENSIONS.map(function(ext) {
33
33
  return path.resolve(srcDirectory, "".concat(runtimeConfigFile).concat(ext));
34
34
  }))) {
35
- return "import runtimeConfig from '".concat(internalSrcAlias, "/").concat(runtimeConfigFile, "';");
35
+ return "import modernRuntime from '".concat(internalSrcAlias, "/").concat(runtimeConfigFile, "';\nconst runtimeConfig = typeof modernRuntime === 'function' ? modernRuntime(getCurrentEntryName()) : modernRuntime");
36
36
  }
37
37
  return "let runtimeConfig;";
38
38
  };
@@ -42,14 +42,14 @@ var getRegisterRuntimePluginCode = function(entryName, name, config) {
42
42
  };
43
43
  var runtimeRegister = function(param) {
44
44
  var entryName = param.entryName, srcDirectory = param.srcDirectory, internalSrcAlias = param.internalSrcAlias, metaName = param.metaName, runtimeConfigFile = param.runtimeConfigFile, runtimePlugins = param.runtimePlugins;
45
- return "import { registerPlugin, mergeConfig } from '@".concat(metaName, "/runtime/plugin';\nimport { getGlobalAppConfig, getGlobalLayoutApp } from '@").concat(metaName, "/runtime/context';\n").concat(getImportRuntimeConfigCode(srcDirectory, internalSrcAlias, runtimeConfigFile), "\n\nconst plugins = [];\n\n").concat(runtimePlugins.map(function(param2) {
45
+ return "import { registerPlugin, mergeConfig } from '@".concat(metaName, "/runtime/plugin';\nimport { getGlobalAppConfig, getGlobalLayoutApp, getCurrentEntryName } from '@").concat(metaName, "/runtime/context';\n\n").concat(getImportRuntimeConfigCode(srcDirectory, internalSrcAlias, runtimeConfigFile), "\n\nconst plugins = [];\n\n").concat(runtimePlugins.map(function(param2) {
46
46
  var name = param2.name, path2 = param2.path, config = param2.config;
47
47
  return "import { ".concat(name, "Plugin } from '").concat(path2, "';\n\n").concat(getRegisterRuntimePluginCode(entryName, name, config), "\n");
48
48
  }).join("\n"), "\nregisterPlugin(plugins, runtimeConfig);\n");
49
49
  };
50
50
  var runtimeGlobalContext = function(param) {
51
- var srcDirectory = param.srcDirectory, internalSrcAlias = param.internalSrcAlias, metaName = param.metaName, entry = param.entry, customEntry = param.customEntry;
52
- return "import { setGlobalContext } from '@".concat(metaName, "/runtime/context'\n\nimport App from '").concat(formatImportPath(customEntry ? entry.replace(/entry\.[tj]sx/, "App").replace(srcDirectory, internalSrcAlias) : entry.replace(srcDirectory, internalSrcAlias).replace(/\.[tj]sx/, "")), "';\n\nsetGlobalContext({\n App,\n});");
51
+ var entryName = param.entryName, srcDirectory = param.srcDirectory, internalSrcAlias = param.internalSrcAlias, metaName = param.metaName, entry = param.entry, customEntry = param.customEntry;
52
+ return "import { setGlobalContext } from '@".concat(metaName, "/runtime/context'\n\nimport App from '").concat(formatImportPath(customEntry ? entry.replace(/entry\.[tj]sx/, "App").replace(srcDirectory, internalSrcAlias) : entry.replace(srcDirectory, internalSrcAlias).replace(/\.[tj]sx/, "")), "';\n\nconst entryName = '").concat(entryName, "';\nsetGlobalContext({\n entryName,\n App,\n});");
53
53
  };
54
54
  var runtimeGlobalContextForRSCServer = function(param) {
55
55
  var metaName = param.metaName;
@@ -133,15 +133,14 @@ function _render() {
133
133
  res[key] = loaderData;
134
134
  return res;
135
135
  }, {});
136
- Object.assign(context, _object_spread({
136
+ Object.assign(context, {
137
137
  loaderManager: createLoaderManager(initialLoadersState, {
138
138
  skipStatic: true
139
139
  }),
140
140
  // garfish plugin params
141
- _internalRouterBaseName: App.props.basename
142
- }, {
141
+ _internalRouterBaseName: App.props.basename,
143
142
  ssrContext: ssrData.context
144
- }));
143
+ });
145
144
  context.initialData = (_ssrData_data1 = ssrData.data) === null || _ssrData_data1 === void 0 ? void 0 : _ssrData_data1.initialData;
146
145
  return [
147
146
  4,
@@ -0,0 +1,25 @@
1
+ var makeRequestContext = function(context) {
2
+ var baseSSRContext = context.ssrContext;
3
+ var requestContext = baseSSRContext ? {
4
+ isBrowser: context.isBrowser,
5
+ request: baseSSRContext.request || {},
6
+ response: baseSSRContext.response || {},
7
+ logger: baseSSRContext.logger || {}
8
+ } : {};
9
+ return requestContext;
10
+ };
11
+ var requestContextPlugin = function() {
12
+ return {
13
+ name: "@modern-js/runtime-plugin-request-context",
14
+ setup: function setup(api) {
15
+ api.onBeforeRender(function(context) {
16
+ var requestContext = makeRequestContext(context);
17
+ context.context = requestContext;
18
+ });
19
+ }
20
+ };
21
+ };
22
+ export {
23
+ makeRequestContext,
24
+ requestContextPlugin
25
+ };
@@ -106,13 +106,12 @@ var bootstrap = function() {
106
106
  res[key] = loaderData;
107
107
  return res;
108
108
  }, {});
109
- Object.assign(context, _object_spread({
109
+ Object.assign(context, {
110
110
  loaderManager: createLoaderManager(initialLoadersState, {
111
111
  skipStatic: true
112
- })
113
- }, ssrData ? {
114
- ssrContext: ssrData === null || ssrData === void 0 ? void 0 : ssrData.context
115
- } : {}));
112
+ }),
113
+ ssrContext: (ssrData === null || ssrData === void 0 ? void 0 : ssrData.context) || {}
114
+ });
116
115
  context.initialData = ssrData === null || ssrData === void 0 ? void 0 : (_ssrData_data1 = ssrData.data) === null || _ssrData_data1 === void 0 ? void 0 : _ssrData_data1.initialData;
117
116
  return [
118
117
  4,
@@ -195,18 +194,8 @@ var bootstrap = function() {
195
194
  var useRuntimeContext = function() {
196
195
  var _context_ssrContext, _context_ssrContext1;
197
196
  var context = useContext(RuntimeReactContext);
198
- var baseSSRContext = context.ssrContext;
199
- var tSSRContext = baseSSRContext ? {
200
- isBrowser: context.isBrowser,
201
- request: baseSSRContext.request || {},
202
- response: baseSSRContext.response || {},
203
- logger: baseSSRContext.logger || {},
204
- getInitData: function() {
205
- return Object.freeze(context.initialData);
206
- }
207
- } : {};
208
197
  var pickedContext = _object_spread_props(_object_spread({}, context), {
209
- context: tSSRContext,
198
+ context: context.context || {},
210
199
  request: (_context_ssrContext = context.ssrContext) === null || _context_ssrContext === void 0 ? void 0 : _context_ssrContext.request,
211
200
  response: (_context_ssrContext1 = context.ssrContext) === null || _context_ssrContext1 === void 0 ? void 0 : _context_ssrContext1.response
212
201
  });
@@ -1,6 +1,7 @@
1
1
  import { RuntimeReactContext, getInitialContext } from "./runtime";
2
2
  var globalContext = {};
3
3
  function setGlobalContext(context) {
4
+ globalContext.entryName = context.entryName;
4
5
  globalContext.App = context.App;
5
6
  globalContext.routes = context.routes;
6
7
  globalContext.appInit = context.appInit;
@@ -8,6 +9,9 @@ function setGlobalContext(context) {
8
9
  globalContext.layoutApp = context.layoutApp;
9
10
  globalContext.RSCRoot = context.RSCRoot;
10
11
  }
12
+ function getCurrentEntryName() {
13
+ return globalContext.entryName;
14
+ }
11
15
  function getGlobalRSCRoot() {
12
16
  return globalContext.RSCRoot;
13
17
  }
@@ -36,6 +40,7 @@ function getGlobalLayoutApp() {
36
40
  }
37
41
  export {
38
42
  RuntimeReactContext,
43
+ getCurrentEntryName,
39
44
  getGlobalApp,
40
45
  getGlobalAppConfig,
41
46
  getGlobalAppInit,
@@ -0,0 +1,20 @@
1
+ var defaultMonitors = {
2
+ counter: function counter(name) {
3
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
4
+ args[_key - 1] = arguments[_key];
5
+ }
6
+ },
7
+ info: console.info,
8
+ debug: console.debug,
9
+ trace: console.trace,
10
+ warn: console.warn,
11
+ error: console.error,
12
+ timing: function timing(name, dur) {
13
+ for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
14
+ args[_key - 2] = arguments[_key];
15
+ }
16
+ }
17
+ };
18
+ export {
19
+ defaultMonitors
20
+ };
@@ -0,0 +1,7 @@
1
+ import { defaultMonitors } from "./default";
2
+ var getMonitors = function() {
3
+ return defaultMonitors;
4
+ };
5
+ export {
6
+ getMonitors
7
+ };
@@ -0,0 +1,9 @@
1
+ import { storage } from "@modern-js/runtime-utils/node";
2
+ import { defaultMonitors } from "./default";
3
+ var getMonitors = function() {
4
+ var storageContext = storage.useContext();
5
+ return storageContext.monitors || defaultMonitors;
6
+ };
7
+ export {
8
+ getMonitors
9
+ };
@@ -0,0 +1,6 @@
1
+ var getRequest = function() {
2
+ return new Request(location.href);
3
+ };
4
+ export {
5
+ getRequest
6
+ };
@@ -0,0 +1,8 @@
1
+ import { storage } from "@modern-js/runtime-utils/node";
2
+ var getRequest = function() {
3
+ var context = storage.useContext();
4
+ return context === null || context === void 0 ? void 0 : context.request;
5
+ };
6
+ export {
7
+ getRequest
8
+ };
@@ -0,0 +1,16 @@
1
+ var getResponseProxy = function() {
2
+ return null;
3
+ };
4
+ var setHeaders = function(headers) {
5
+ };
6
+ var setStatus = function(status) {
7
+ };
8
+ var redirect = function(url, init) {
9
+ console.warn("You should not use this API in the browser, please use the router's redirect or useNavigate method.");
10
+ };
11
+ export {
12
+ getResponseProxy,
13
+ redirect,
14
+ setHeaders,
15
+ setStatus
16
+ };
@@ -0,0 +1,41 @@
1
+ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
2
+ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
3
+ import { _ as _type_of } from "@swc/helpers/_/_type_of";
4
+ import { storage } from "@modern-js/runtime-utils/node";
5
+ var getResponseProxy = function() {
6
+ var context = storage.useContext();
7
+ return context === null || context === void 0 ? void 0 : context.responseProxy;
8
+ };
9
+ var setHeaders = function(headers) {
10
+ var responseProxy = getResponseProxy();
11
+ Object.entries(headers).forEach(function(param) {
12
+ var _param = _sliced_to_array(param, 2), key = _param[0], value = _param[1];
13
+ responseProxy.headers[key] = value;
14
+ });
15
+ };
16
+ var setStatus = function(status) {
17
+ var responseProxy = getResponseProxy();
18
+ responseProxy.status = status;
19
+ };
20
+ var redirect = function(url, init) {
21
+ var _init_status;
22
+ var status = init === void 0 ? 307 : typeof init === "number" ? init : (_init_status = init.status) !== null && _init_status !== void 0 ? _init_status : 307;
23
+ var _init_headers;
24
+ var headers = init === void 0 ? {} : typeof init === "number" ? {} : (_init_headers = init.headers) !== null && _init_headers !== void 0 ? _init_headers : {};
25
+ setStatus(status);
26
+ setHeaders(_object_spread({
27
+ Location: url
28
+ }, init && (typeof init === "undefined" ? "undefined" : _type_of(init)) === "object" ? Object.fromEntries(Object.entries(headers).map(function(param) {
29
+ var _param = _sliced_to_array(param, 2), k = _param[0], v = _param[1];
30
+ return [
31
+ k,
32
+ String(v)
33
+ ];
34
+ })) : {}));
35
+ };
36
+ export {
37
+ getResponseProxy,
38
+ redirect,
39
+ setHeaders,
40
+ setStatus
41
+ };
@@ -3,12 +3,14 @@ import { runtime } from "@modern-js/plugin-v2/runtime";
3
3
  import { merge } from "@modern-js/runtime-utils/merge";
4
4
  import { compatPlugin } from "../compat";
5
5
  import { handleSetupResult } from "../compat/hooks";
6
+ import { requestContextPlugin } from "../compat/requestContext";
6
7
  import { setGlobalInternalRuntimeContext } from "../context";
7
8
  function registerPlugin(internalPlugins, runtimeConfig) {
8
9
  var _ref = runtimeConfig || {}, _ref_plugins = _ref.plugins, plugins = _ref_plugins === void 0 ? [] : _ref_plugins;
9
10
  var runtimeContext = runtime.run({
10
11
  plugins: [
11
- compatPlugin()
12
+ compatPlugin(),
13
+ requestContextPlugin()
12
14
  ].concat(_to_consumable_array(internalPlugins), _to_consumable_array(plugins)),
13
15
  config: runtimeConfig || {},
14
16
  handleSetupResult
@@ -5,6 +5,7 @@ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
5
5
  import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
6
6
  import { _ as _type_of } from "@swc/helpers/_/_type_of";
7
7
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
8
+ import { storage } from "@modern-js/runtime-utils/node";
8
9
  import { getPathname, parseCookie, parseHeaders, parseQuery } from "@modern-js/runtime-utils/universal/request";
9
10
  import { getGlobalAppInit, getGlobalInternalRuntimeContext, getGlobalRSCRoot } from "../context";
10
11
  import { getInitialContext } from "../context/runtime";
@@ -51,6 +52,7 @@ function createSSRContext(request, options) {
51
52
  params,
52
53
  headers: headersData,
53
54
  host,
55
+ referer: headers.get("referer"),
54
56
  raw: request
55
57
  },
56
58
  response: {
@@ -58,7 +60,7 @@ function createSSRContext(request, options) {
58
60
  responseProxy.headers[key] = value;
59
61
  },
60
62
  status: function status(code) {
61
- responseProxy.code = code;
63
+ responseProxy.status = code;
62
64
  },
63
65
  locals: locals || {}
64
66
  },
@@ -75,129 +77,143 @@ var createRequestHandler = function() {
75
77
  return _ts_generator(this, function(_state) {
76
78
  requestHandler = function() {
77
79
  var _ref2 = _async_to_generator(function(request, options) {
78
- var _context_routerContext, _context_routerContext1, _context_routerContext2, Root, internalRuntimeContext, hooks, routeManifest, context, runBeforeRender, responseProxy, ssrContext, getRedirectResponse, initialData, _context_routerContext3, _context_ssrContext, errors, redirectResponse, htmlTemplate, response;
80
+ var headersData, responseProxy;
79
81
  return _ts_generator(this, function(_state2) {
80
- switch (_state2.label) {
81
- case 0:
82
- Root = createRoot();
83
- internalRuntimeContext = getGlobalInternalRuntimeContext();
84
- hooks = internalRuntimeContext.hooks;
85
- routeManifest = options.resource.routeManifest;
86
- context = getInitialContext(false, routeManifest);
87
- runBeforeRender = function() {
88
- var _ref3 = _async_to_generator(function(context2) {
89
- var result, init;
90
- return _ts_generator(this, function(_state3) {
91
- switch (_state3.label) {
92
- case 0:
93
- return [
94
- 4,
95
- hooks.onBeforeRender.call(context2)
96
- ];
97
- case 1:
98
- result = _state3.sent();
99
- if (typeof Response !== "undefined" && _instanceof(result, Response)) {
100
- return [
101
- 2,
102
- result
103
- ];
82
+ headersData = parseHeaders(request);
83
+ responseProxy = {
84
+ headers: {},
85
+ status: -1
86
+ };
87
+ return [
88
+ 2,
89
+ storage.run({
90
+ headers: headersData,
91
+ request,
92
+ monitors: options.monitors,
93
+ responseProxy
94
+ }, /* @__PURE__ */ _async_to_generator(function() {
95
+ var _context_routerContext, _context_routerContext1, _context_routerContext2, Root, internalRuntimeContext, hooks, routeManifest, context, runBeforeRender, ssrContext, getRedirectResponse, initialData, _context_routerContext3, _context_ssrContext, errors, redirectResponse, htmlTemplate, response;
96
+ return _ts_generator(this, function(_state3) {
97
+ switch (_state3.label) {
98
+ case 0:
99
+ Root = createRoot();
100
+ internalRuntimeContext = getGlobalInternalRuntimeContext();
101
+ hooks = internalRuntimeContext.hooks;
102
+ routeManifest = options.resource.routeManifest;
103
+ context = getInitialContext(false, routeManifest);
104
+ runBeforeRender = function() {
105
+ var _ref3 = _async_to_generator(function(context2) {
106
+ var result, init;
107
+ return _ts_generator(this, function(_state4) {
108
+ switch (_state4.label) {
109
+ case 0:
110
+ return [
111
+ 4,
112
+ hooks.onBeforeRender.call(context2)
113
+ ];
114
+ case 1:
115
+ result = _state4.sent();
116
+ if (typeof Response !== "undefined" && _instanceof(result, Response)) {
117
+ return [
118
+ 2,
119
+ result
120
+ ];
121
+ }
122
+ init = getGlobalAppInit();
123
+ return [
124
+ 2,
125
+ init === null || init === void 0 ? void 0 : init(context2)
126
+ ];
127
+ }
128
+ });
129
+ });
130
+ return function runBeforeRender2(context2) {
131
+ return _ref3.apply(this, arguments);
132
+ };
133
+ }();
134
+ ssrContext = createSSRContext(request, _object_spread_props(_object_spread({}, options), {
135
+ responseProxy
136
+ }));
137
+ Object.assign(context, {
138
+ ssrContext,
139
+ isBrowser: false,
140
+ loaderManager: createLoaderManager({}, {
141
+ skipNonStatic: options.staticGenerate,
142
+ // if not static generate, only non-static loader can exec on prod env
143
+ skipStatic: process.env.NODE_ENV === "production" && !options.staticGenerate
144
+ })
145
+ });
146
+ getRedirectResponse = function(result) {
147
+ if (typeof Response !== "undefined" && // fix: ssg workflow doesn't inject Web Response
148
+ _instanceof(result, Response) && result.status >= 300 && result.status <= 399) {
149
+ var status = result.status;
150
+ var redirectUrl = result.headers.get("Location") || "/";
151
+ var ssrContext2 = context.ssrContext;
152
+ if (ssrContext2) {
153
+ return new Response(null, {
154
+ status,
155
+ headers: {
156
+ Location: redirectUrl
157
+ }
158
+ });
104
159
  }
105
- init = getGlobalAppInit();
106
- return [
107
- 2,
108
- init === null || init === void 0 ? void 0 : init(context2)
109
- ];
110
- }
111
- });
112
- });
113
- return function runBeforeRender2(context2) {
114
- return _ref3.apply(this, arguments);
115
- };
116
- }();
117
- responseProxy = {
118
- headers: {},
119
- code: -1
120
- };
121
- ssrContext = createSSRContext(request, _object_spread_props(_object_spread({}, options), {
122
- responseProxy
123
- }));
124
- Object.assign(context, {
125
- ssrContext,
126
- isBrowser: false,
127
- loaderManager: createLoaderManager({}, {
128
- skipNonStatic: options.staticGenerate,
129
- // if not static generate, only non-static loader can exec on prod env
130
- skipStatic: process.env.NODE_ENV === "production" && !options.staticGenerate
131
- })
132
- });
133
- getRedirectResponse = function(result) {
134
- if (typeof Response !== "undefined" && // fix: ssg workflow doesn't inject Web Response
135
- _instanceof(result, Response) && result.status >= 300 && result.status <= 399) {
136
- var status = result.status;
137
- var redirectUrl = result.headers.get("Location") || "/";
138
- var ssrContext2 = context.ssrContext;
139
- if (ssrContext2) {
140
- return new Response(null, {
141
- status,
142
- headers: {
143
- Location: redirectUrl
144
160
  }
161
+ return void 0;
162
+ };
163
+ return [
164
+ 4,
165
+ runBeforeRender(context)
166
+ ];
167
+ case 1:
168
+ initialData = _state3.sent();
169
+ 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) {
170
+ ;
171
+ (_context_ssrContext = context.ssrContext) === null || _context_ssrContext === void 0 ? void 0 : _context_ssrContext.response.status((_context_routerContext3 = context.routerContext) === null || _context_routerContext3 === void 0 ? void 0 : _context_routerContext3.statusCode);
172
+ }
173
+ errors = Object.values(((_context_routerContext2 = context.routerContext) === null || _context_routerContext2 === void 0 ? void 0 : _context_routerContext2.errors) || {});
174
+ if (errors.length > 0) {
175
+ options.onError(errors[0], SSRErrors.LOADER_ERROR);
176
+ }
177
+ context.initialData = initialData;
178
+ redirectResponse = getRedirectResponse(initialData);
179
+ if (redirectResponse) {
180
+ return [
181
+ 2,
182
+ redirectResponse
183
+ ];
184
+ }
185
+ htmlTemplate = options.resource.htmlTemplate;
186
+ options.resource.htmlTemplate = htmlTemplate.replace("</head>", "".concat(CHUNK_CSS_PLACEHOLDER, "</head>"));
187
+ return [
188
+ 4,
189
+ handleRequest(request, Root, _object_spread_props(_object_spread({}, options), {
190
+ runtimeContext: context,
191
+ RSCRoot: (createRequestOptions === null || createRequestOptions === void 0 ? void 0 : createRequestOptions.enableRsc) && getGlobalRSCRoot()
192
+ }))
193
+ ];
194
+ case 2:
195
+ response = _state3.sent();
196
+ Object.entries(responseProxy.headers).forEach(function(param) {
197
+ var _param = _sliced_to_array(param, 2), key = _param[0], value = _param[1];
198
+ response.headers.set(key, value);
145
199
  });
146
- }
200
+ if (responseProxy.status !== -1) {
201
+ return [
202
+ 2,
203
+ new Response(response.body, {
204
+ status: responseProxy.status,
205
+ headers: response.headers
206
+ })
207
+ ];
208
+ }
209
+ return [
210
+ 2,
211
+ response
212
+ ];
147
213
  }
148
- return void 0;
149
- };
150
- return [
151
- 4,
152
- runBeforeRender(context)
153
- ];
154
- case 1:
155
- initialData = _state2.sent();
156
- 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) {
157
- ;
158
- (_context_ssrContext = context.ssrContext) === null || _context_ssrContext === void 0 ? void 0 : _context_ssrContext.response.status((_context_routerContext3 = context.routerContext) === null || _context_routerContext3 === void 0 ? void 0 : _context_routerContext3.statusCode);
159
- }
160
- errors = Object.values(((_context_routerContext2 = context.routerContext) === null || _context_routerContext2 === void 0 ? void 0 : _context_routerContext2.errors) || {});
161
- if (errors.length > 0) {
162
- options.onError(errors[0], SSRErrors.LOADER_ERROR);
163
- }
164
- context.initialData = initialData;
165
- redirectResponse = getRedirectResponse(initialData);
166
- if (redirectResponse) {
167
- return [
168
- 2,
169
- redirectResponse
170
- ];
171
- }
172
- htmlTemplate = options.resource.htmlTemplate;
173
- options.resource.htmlTemplate = htmlTemplate.replace("</head>", "".concat(CHUNK_CSS_PLACEHOLDER, "</head>"));
174
- return [
175
- 4,
176
- handleRequest(request, Root, _object_spread_props(_object_spread({}, options), {
177
- runtimeContext: context,
178
- RSCRoot: (createRequestOptions === null || createRequestOptions === void 0 ? void 0 : createRequestOptions.enableRsc) && getGlobalRSCRoot()
179
- }))
180
- ];
181
- case 2:
182
- response = _state2.sent();
183
- Object.entries(responseProxy.headers).forEach(function(param) {
184
- var _param = _sliced_to_array(param, 2), key = _param[0], value = _param[1];
185
- response.headers.set(key, value);
186
214
  });
187
- if (responseProxy.code !== -1) {
188
- return [
189
- 2,
190
- new Response(response.body, {
191
- status: responseProxy.code,
192
- headers: response.headers
193
- })
194
- ];
195
- }
196
- return [
197
- 2,
198
- response
199
- ];
200
- }
215
+ }))
216
+ ];
201
217
  });
202
218
  });
203
219
  return function requestHandler2(request, options) {