@bleedingdev/modern-js-runtime 3.9.0-ultramodern.4 → 3.9.0-ultramodern.6

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 (154) hide show
  1. package/dist/cjs/cli/ssr/index.js +2 -74
  2. package/dist/cjs/core/context/index.js +4 -43
  3. package/dist/cjs/core/context/public.js +4 -8
  4. package/dist/cjs/core/context/runtime.js +17 -6
  5. package/dist/cjs/core/react/wrapper.js +22 -65
  6. package/dist/cjs/core/server/helmet.js +5 -4
  7. package/dist/cjs/core/server/requestResponse.js +4 -4
  8. package/dist/cjs/core/server/routerCleanup.js +2 -2
  9. package/dist/cjs/core/server/shared.js +171 -4
  10. package/dist/cjs/core/server/stream/afterTemplate.js +21 -16
  11. package/dist/cjs/core/server/stream/beforeTemplate.js +34 -25
  12. package/dist/cjs/core/server/stream/beforeTemplate.worker.js +28 -21
  13. package/dist/cjs/core/server/stream/createReadableStream.js +208 -123
  14. package/dist/cjs/core/server/stream/createReadableStream.worker.js +159 -90
  15. package/dist/cjs/core/server/stream/deferredScript.js +3 -3
  16. package/dist/cjs/core/server/stream/shared.js +2 -2
  17. package/dist/cjs/core/server/string/index.js +100 -64
  18. package/dist/cjs/core/server/string/loadable.js +34 -19
  19. package/dist/cjs/core/server/string/ssrData.js +5 -12
  20. package/dist/cjs/core/server/utils.js +1 -2
  21. package/dist/cjs/exports/head.js +7 -14
  22. package/dist/cjs/router/runtime/PrefetchLink.js +67 -123
  23. package/dist/cjs/router/runtime/hooks.js +13 -2
  24. package/dist/cjs/router/runtime/internal.js +7 -45
  25. package/dist/cjs/router/runtime/plugin.js +2 -8
  26. package/dist/cjs/router/runtime/plugin.node.js +2 -30
  27. package/dist/cjs/router/runtime/redirect.js +1 -1
  28. package/dist/esm/cli/ssr/index.mjs +3 -72
  29. package/dist/esm/core/context/index.mjs +2 -5
  30. package/dist/esm/core/context/public.mjs +1 -6
  31. package/dist/esm/core/context/runtime.mjs +12 -4
  32. package/dist/esm/core/react/wrapper.mjs +21 -67
  33. package/dist/esm/core/server/helmet.mjs +5 -4
  34. package/dist/esm/core/server/requestResponse.mjs +3 -3
  35. package/dist/esm/core/server/routerCleanup.mjs +1 -1
  36. package/dist/esm/core/server/shared.mjs +153 -1
  37. package/dist/esm/core/server/stream/afterTemplate.mjs +23 -18
  38. package/dist/esm/core/server/stream/beforeTemplate.mjs +37 -28
  39. package/dist/esm/core/server/stream/beforeTemplate.worker.mjs +31 -24
  40. package/dist/esm/core/server/stream/createReadableStream.mjs +207 -122
  41. package/dist/esm/core/server/stream/createReadableStream.worker.mjs +149 -90
  42. package/dist/esm/core/server/stream/deferredScript.mjs +3 -3
  43. package/dist/esm/core/server/stream/shared.mjs +2 -2
  44. package/dist/esm/core/server/string/index.mjs +104 -68
  45. package/dist/esm/core/server/string/loadable.mjs +34 -19
  46. package/dist/esm/core/server/string/ssrData.mjs +5 -12
  47. package/dist/esm/core/server/utils.mjs +1 -2
  48. package/dist/esm/exports/head.mjs +7 -14
  49. package/dist/esm/router/runtime/PrefetchLink.mjs +67 -123
  50. package/dist/esm/router/runtime/hooks.mjs +9 -1
  51. package/dist/esm/router/runtime/internal.mjs +2 -33
  52. package/dist/esm/router/runtime/plugin.mjs +1 -7
  53. package/dist/esm/router/runtime/plugin.node.mjs +1 -29
  54. package/dist/esm/router/runtime/redirect.mjs +1 -1
  55. package/dist/esm-node/cli/ssr/index.mjs +3 -72
  56. package/dist/esm-node/core/context/index.mjs +2 -5
  57. package/dist/esm-node/core/context/public.mjs +1 -6
  58. package/dist/esm-node/core/context/runtime.mjs +12 -4
  59. package/dist/esm-node/core/react/wrapper.mjs +21 -67
  60. package/dist/esm-node/core/server/helmet.mjs +5 -4
  61. package/dist/esm-node/core/server/requestResponse.mjs +3 -3
  62. package/dist/esm-node/core/server/routerCleanup.mjs +1 -1
  63. package/dist/esm-node/core/server/shared.mjs +153 -1
  64. package/dist/esm-node/core/server/stream/afterTemplate.mjs +23 -18
  65. package/dist/esm-node/core/server/stream/beforeTemplate.mjs +37 -28
  66. package/dist/esm-node/core/server/stream/beforeTemplate.worker.mjs +31 -24
  67. package/dist/esm-node/core/server/stream/createReadableStream.mjs +207 -122
  68. package/dist/esm-node/core/server/stream/createReadableStream.worker.mjs +149 -90
  69. package/dist/esm-node/core/server/stream/deferredScript.mjs +3 -3
  70. package/dist/esm-node/core/server/stream/shared.mjs +2 -2
  71. package/dist/esm-node/core/server/string/index.mjs +104 -68
  72. package/dist/esm-node/core/server/string/loadable.mjs +34 -19
  73. package/dist/esm-node/core/server/string/ssrData.mjs +5 -12
  74. package/dist/esm-node/core/server/utils.mjs +1 -2
  75. package/dist/esm-node/exports/head.mjs +7 -14
  76. package/dist/esm-node/router/runtime/PrefetchLink.mjs +67 -123
  77. package/dist/esm-node/router/runtime/hooks.mjs +9 -1
  78. package/dist/esm-node/router/runtime/internal.mjs +2 -33
  79. package/dist/esm-node/router/runtime/plugin.mjs +1 -7
  80. package/dist/esm-node/router/runtime/plugin.node.mjs +1 -29
  81. package/dist/esm-node/router/runtime/redirect.mjs +1 -1
  82. package/dist/types/cli/ssr/index.d.ts +0 -3
  83. package/dist/types/core/context/index.d.ts +4 -6
  84. package/dist/types/core/context/public.d.ts +1 -23
  85. package/dist/types/core/context/runtime.d.ts +26 -2
  86. package/dist/types/core/react/wrapper.d.ts +6 -0
  87. package/dist/types/core/server/helmet.d.ts +4 -5
  88. package/dist/types/core/server/shared.d.ts +23 -0
  89. package/dist/types/core/server/stream/afterTemplate.d.ts +2 -1
  90. package/dist/types/core/server/stream/beforeTemplate.d.ts +4 -1
  91. package/dist/types/core/server/stream/beforeTemplate.worker.d.ts +4 -1
  92. package/dist/types/core/server/stream/shared.d.ts +1 -1
  93. package/dist/types/core/server/string/loadable.d.ts +6 -3
  94. package/dist/types/core/server/string/ssrData.d.ts +2 -1
  95. package/dist/types/core/server/string/types.d.ts +1 -5
  96. package/dist/types/exports/head.d.ts +2 -2
  97. package/dist/types/router/runtime/PrefetchLink.d.ts +27 -2
  98. package/dist/types/router/runtime/hooks.d.ts +19 -2
  99. package/dist/types/router/runtime/internal.d.ts +4 -21
  100. package/dist/types/router/runtime/types.d.ts +2 -43
  101. package/package.json +9 -38
  102. package/rstest.config.mts +32 -2
  103. package/dist/cjs/boundary-debugger/index.js +0 -317
  104. package/dist/cjs/core/context/extensions.js +0 -74
  105. package/dist/cjs/core/context/helmetContext.js +0 -54
  106. package/dist/cjs/core/server/federatedCss.js +0 -58
  107. package/dist/cjs/core/server/scriptOrder.js +0 -140
  108. package/dist/cjs/module-federation/consume-surface.js +0 -199
  109. package/dist/cjs/module-federation/distributed-ssr.js +0 -135
  110. package/dist/cjs/module-federation/index.js +0 -316
  111. package/dist/cjs/module-federation/last-known-good.js +0 -157
  112. package/dist/cjs/module-federation/manifest-recovery-runtime-plugin.js +0 -129
  113. package/dist/cjs/module-federation/surface-resolution-types.js +0 -61
  114. package/dist/cjs/router/runtime/lifecycle.js +0 -167
  115. package/dist/cjs/router/runtime/provider.js +0 -153
  116. package/dist/esm/boundary-debugger/index.mjs +0 -277
  117. package/dist/esm/core/context/extensions.mjs +0 -33
  118. package/dist/esm/core/context/helmetContext.mjs +0 -13
  119. package/dist/esm/core/server/federatedCss.mjs +0 -20
  120. package/dist/esm/core/server/scriptOrder.mjs +0 -90
  121. package/dist/esm/module-federation/consume-surface.mjs +0 -158
  122. package/dist/esm/module-federation/distributed-ssr.mjs +0 -82
  123. package/dist/esm/module-federation/index.mjs +0 -115
  124. package/dist/esm/module-federation/last-known-good.mjs +0 -113
  125. package/dist/esm/module-federation/manifest-recovery-runtime-plugin.mjs +0 -89
  126. package/dist/esm/module-federation/surface-resolution-types.mjs +0 -8
  127. package/dist/esm/router/runtime/lifecycle.mjs +0 -105
  128. package/dist/esm/router/runtime/provider.mjs +0 -100
  129. package/dist/esm-node/boundary-debugger/index.mjs +0 -278
  130. package/dist/esm-node/core/context/extensions.mjs +0 -34
  131. package/dist/esm-node/core/context/helmetContext.mjs +0 -14
  132. package/dist/esm-node/core/server/federatedCss.mjs +0 -21
  133. package/dist/esm-node/core/server/scriptOrder.mjs +0 -91
  134. package/dist/esm-node/module-federation/consume-surface.mjs +0 -159
  135. package/dist/esm-node/module-federation/distributed-ssr.mjs +0 -83
  136. package/dist/esm-node/module-federation/index.mjs +0 -116
  137. package/dist/esm-node/module-federation/last-known-good.mjs +0 -114
  138. package/dist/esm-node/module-federation/manifest-recovery-runtime-plugin.mjs +0 -90
  139. package/dist/esm-node/module-federation/surface-resolution-types.mjs +0 -9
  140. package/dist/esm-node/router/runtime/lifecycle.mjs +0 -106
  141. package/dist/esm-node/router/runtime/provider.mjs +0 -101
  142. package/dist/types/boundary-debugger/index.d.ts +0 -28
  143. package/dist/types/core/context/extensions.d.ts +0 -35
  144. package/dist/types/core/context/helmetContext.d.ts +0 -10
  145. package/dist/types/core/server/federatedCss.d.ts +0 -5
  146. package/dist/types/core/server/scriptOrder.d.ts +0 -25
  147. package/dist/types/module-federation/consume-surface.d.ts +0 -104
  148. package/dist/types/module-federation/distributed-ssr.d.ts +0 -61
  149. package/dist/types/module-federation/index.d.ts +0 -71
  150. package/dist/types/module-federation/last-known-good.d.ts +0 -52
  151. package/dist/types/module-federation/manifest-recovery-runtime-plugin.d.ts +0 -25
  152. package/dist/types/module-federation/surface-resolution-types.d.ts +0 -23
  153. package/dist/types/router/runtime/lifecycle.d.ts +0 -27
  154. package/dist/types/router/runtime/provider.d.ts +0 -78
@@ -38,7 +38,6 @@ var __webpack_exports__ = {};
38
38
  __webpack_require__.r(__webpack_exports__);
39
39
  __webpack_require__.d(__webpack_exports__, {
40
40
  default: ()=>cli_ssr,
41
- shouldUseModuleFederationNodeOutput: ()=>shouldUseModuleFederationNodeOutput,
42
41
  ssrPlugin: ()=>ssrPlugin
43
42
  });
44
43
  const utils_namespaceObject = require("@modern-js/utils");
@@ -47,51 +46,6 @@ var external_path_default = /*#__PURE__*/ __webpack_require__.n(external_path_na
47
46
  const external_loadable_bundler_plugin_js_namespaceObject = require("./loadable-bundler-plugin.js");
48
47
  var external_loadable_bundler_plugin_js_default = /*#__PURE__*/ __webpack_require__.n(external_loadable_bundler_plugin_js_namespaceObject);
49
48
  const external_mode_js_namespaceObject = require("./mode.js");
50
- const getRspackPlugins = (rspackConfig)=>{
51
- if (!rspackConfig) return [];
52
- const rspackEntries = Array.isArray(rspackConfig) ? rspackConfig : [
53
- rspackConfig
54
- ];
55
- const plugins = [];
56
- for (const entry of rspackEntries){
57
- if (!entry || 'function' == typeof entry || 'object' != typeof entry) continue;
58
- const maybePlugins = entry.plugins;
59
- if (Array.isArray(maybePlugins)) {
60
- for (const plugin of maybePlugins)if (plugin) plugins.push(plugin);
61
- }
62
- }
63
- return plugins;
64
- };
65
- const getRspackPluginName = (plugin)=>{
66
- if ('string' == typeof plugin) return plugin;
67
- if ('function' == typeof plugin) return plugin.name;
68
- if (Array.isArray(plugin)) {
69
- const [first] = plugin;
70
- if (!first) return;
71
- if ('string' == typeof first) return first;
72
- if ('function' == typeof first) return first.name;
73
- if ('object' == typeof first) return first.name || first.constructor?.name;
74
- return;
75
- }
76
- return plugin.name || plugin.constructor?.name;
77
- };
78
- const hasServerRenderingConfig = (userConfig)=>{
79
- const { output, server } = userConfig;
80
- if (output?.ssg) return true;
81
- if (output?.ssgByEntries && Object.keys(output.ssgByEntries).length > 0) return true;
82
- if (server?.ssr) return true;
83
- if (server?.ssrByEntries && Object.keys(server.ssrByEntries).length > 0) return true;
84
- return false;
85
- };
86
- const isModuleFederationAppSSREnabledInConfig = (ssr)=>{
87
- if (!ssr || 'object' != typeof ssr) return false;
88
- return true === ssr.moduleFederationAppSSR;
89
- };
90
- const isModuleFederationAppSSREnabled = (userConfig)=>{
91
- if (isModuleFederationAppSSREnabledInConfig(userConfig.server?.ssr)) return true;
92
- if (userConfig.server?.ssrByEntries && 'object' == typeof userConfig.server.ssrByEntries) return Object.values(userConfig.server.ssrByEntries).some(isModuleFederationAppSSREnabledInConfig);
93
- return false;
94
- };
95
49
  const checkUseStringSSR = (config, appDirectory, entrypoints)=>{
96
50
  if (entrypoints && entrypoints.length > 0) {
97
51
  for (const entrypoint of entrypoints){
@@ -107,41 +61,19 @@ const checkUseStringSSR = (config, appDirectory, entrypoints)=>{
107
61
  }
108
62
  return true;
109
63
  };
110
- const isModuleFederationRspackPlugin = (plugin)=>{
111
- const candidate = getRspackPluginName(plugin);
112
- return 'string' == typeof candidate && /modulefederation/i.test(candidate);
113
- };
114
- const hasModuleFederationMarker = (config)=>{
115
- if ('true' === process.env.MF_SSR_PRJ) return true;
116
- const define = config.source?.define || {};
117
- if ('REMOTE_IP_STRATEGY' in define || 'FEDERATION_IPV4' in define) return true;
118
- const plugins = getRspackPlugins(config.tools?.rspack);
119
- return plugins.some(isModuleFederationRspackPlugin);
120
- };
121
64
  const isNodeEnvironmentTarget = (target)=>'string' == typeof target && ('node' === target || 'async-node' === target || target.startsWith('node'));
122
- const shouldUseModuleFederationNodeOutput = (config)=>isNodeEnvironmentTarget(config.output?.target) && hasModuleFederationMarker(config);
123
65
  const ssrBuilderPlugin = (modernAPI, outputModule, exportLoadablePath)=>({
124
66
  name: '@modern-js/builder-plugin-ssr',
125
67
  setup (api) {
126
68
  api.modifyEnvironmentConfig((config, { name, mergeEnvironmentConfig })=>{
127
69
  const isServerEnvironment = isNodeEnvironmentTarget(config.output.target) || 'workerSSR' === name;
128
70
  const userConfig = modernAPI.getNormalizedConfig();
129
- const hasServerRendering = hasServerRenderingConfig(userConfig);
130
- const hasModuleFederationRuntimeMarker = hasServerRendering && shouldUseModuleFederationNodeOutput(config);
131
- const hasExplicitMfSsrFlag = isModuleFederationAppSSREnabled(userConfig);
132
- const requireExplicitMfSsrFlag = 'true' === process.env.MODERN_MF_APP_SSR_REQUIRE_EXPLICIT;
133
- if (hasServerRendering && hasModuleFederationRuntimeMarker && !hasExplicitMfSsrFlag) {
134
- const warningMessage = '[modernjs][mf-ssr] Module Federation SSR was auto-detected from runtime markers. Set server.ssr.moduleFederationAppSSR=true explicitly in host and remotes to avoid heuristic drift.';
135
- if (requireExplicitMfSsrFlag) throw new Error(`${warningMessage} (enforced by MODERN_MF_APP_SSR_REQUIRE_EXPLICIT=true)`);
136
- console.warn(warningMessage);
137
- }
138
- const isModuleFederationAppSSR = hasServerRendering && hasExplicitMfSsrFlag;
139
71
  const ssrEnv = userConfig.deploy?.worker?.ssr || userConfig.server?.rsc ? 'edge' : 'node';
140
72
  const appContext = modernAPI.getAppContext();
141
73
  const { appDirectory, entrypoints } = appContext;
142
74
  const useLoadablePlugin = (0, utils_namespaceObject.isUseSSRBundle)(userConfig) && !isServerEnvironment && checkUseStringSSR(userConfig, appDirectory, entrypoints);
143
75
  const outputConfig = {
144
- module: isServerEnvironment && (outputModule || 'workerSSR' === name && userConfig.deploy?.target === 'cloudflare')
76
+ module: isServerEnvironment && outputModule
145
77
  };
146
78
  const useLoadableComponents = (0, utils_namespaceObject.isUseSSRBundle)(userConfig) && checkUseStringSSR(userConfig, appDirectory, entrypoints);
147
79
  return mergeEnvironmentConfig(config, {
@@ -151,12 +83,10 @@ const ssrBuilderPlugin = (modernAPI, outputModule, exportLoadablePath)=>({
151
83
  'process.env.MODERN_SSR_ENV': JSON.stringify(ssrEnv),
152
84
  'process.env.MODERN_ENABLE_HYDRATION': JSON.stringify((0, utils_namespaceObject.isUseSSRBundle)(userConfig)),
153
85
  'process.env.MODERN_ENABLE_RSC': JSON.stringify(Boolean(userConfig.server?.rsc)),
154
- __MODERN_ENABLE_RSC__: JSON.stringify(Boolean(userConfig.server?.rsc)),
155
- 'process.env.MODERN_MF_APP_SSR': JSON.stringify(String(isModuleFederationAppSSR))
86
+ __MODERN_ENABLE_RSC__: JSON.stringify(Boolean(userConfig.server?.rsc))
156
87
  }
157
88
  },
158
89
  output: outputConfig,
159
- splitChunks: isServerEnvironment && (hasModuleFederationRuntimeMarker || hasExplicitMfSsrFlag) ? false : void 0,
160
90
  tools: {
161
91
  bundlerChain: useLoadablePlugin ? (chain)=>{
162
92
  chain.plugin('loadable').use(external_loadable_bundler_plugin_js_default(), [
@@ -225,11 +155,9 @@ const ssrPlugin = ()=>({
225
155
  });
226
156
  const cli_ssr = ssrPlugin;
227
157
  exports["default"] = __webpack_exports__["default"];
228
- exports.shouldUseModuleFederationNodeOutput = __webpack_exports__.shouldUseModuleFederationNodeOutput;
229
158
  exports.ssrPlugin = __webpack_exports__.ssrPlugin;
230
159
  for(var __rspack_i in __webpack_exports__)if (-1 === [
231
160
  "default",
232
- "shouldUseModuleFederationNodeOutput",
233
161
  "ssrPlugin"
234
162
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
235
163
  Object.defineProperty(exports, '__esModule', {
@@ -30,14 +30,8 @@ __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
31
  DefaultNotFound: ()=>DefaultNotFound_js_namespaceObject.DefaultNotFound,
32
32
  InternalRuntimeContext: ()=>external_runtime_js_namespaceObject.InternalRuntimeContext,
33
+ RuntimeComponentResolverContext: ()=>external_runtime_js_namespaceObject.RuntimeComponentResolverContext,
33
34
  RuntimeContext: ()=>external_runtime_js_namespaceObject.RuntimeContext,
34
- applyRouterRuntimeState: ()=>lifecycle_js_namespaceObject.applyRouterRuntimeState,
35
- applyRouterServerPrepareResult: ()=>lifecycle_js_namespaceObject.applyRouterServerPrepareResult,
36
- cleanupRouterRuntimeState: ()=>lifecycle_js_namespaceObject.cleanupRouterRuntimeState,
37
- createRouterProviderRealm: ()=>provider_js_namespaceObject.createRouterProviderRealm,
38
- createRouterRuntimeState: ()=>lifecycle_js_namespaceObject.createRouterRuntimeState,
39
- createRouterServerSnapshot: ()=>lifecycle_js_namespaceObject.createRouterServerSnapshot,
40
- createRuntimeContextExtension: ()=>external_extensions_js_namespaceObject.createRuntimeContextExtension,
41
35
  getCurrentEntryName: ()=>getCurrentEntryName,
42
36
  getGlobalApp: ()=>getGlobalApp,
43
37
  getGlobalBasename: ()=>getGlobalBasename,
@@ -48,10 +42,6 @@ __webpack_require__.d(__webpack_exports__, {
48
42
  getGlobalRSCRoot: ()=>getGlobalRSCRoot,
49
43
  getGlobalRoutes: ()=>getGlobalRoutes,
50
44
  getInitialContext: ()=>external_runtime_js_namespaceObject.getInitialContext,
51
- getRouterHydrationScripts: ()=>lifecycle_js_namespaceObject.getRouterHydrationScripts,
52
- getRouterMatchedRouteIds: ()=>lifecycle_js_namespaceObject.getRouterMatchedRouteIds,
53
- getRouterRuntimeState: ()=>lifecycle_js_namespaceObject.getRouterRuntimeState,
54
- getRouterServerSnapshot: ()=>lifecycle_js_namespaceObject.getRouterServerSnapshot,
55
45
  getServerPayload: ()=>index_js_namespaceObject.getServerPayload,
56
46
  modifyRoutes: ()=>hooks_js_namespaceObject.modifyRoutes,
57
47
  onAfterCreateRouter: ()=>hooks_js_namespaceObject.onAfterCreateRouter,
@@ -59,18 +49,13 @@ __webpack_require__.d(__webpack_exports__, {
59
49
  onBeforeCreateRouter: ()=>hooks_js_namespaceObject.onBeforeCreateRouter,
60
50
  onBeforeCreateRoutes: ()=>hooks_js_namespaceObject.onBeforeCreateRoutes,
61
51
  onBeforeHydrateRouter: ()=>hooks_js_namespaceObject.onBeforeHydrateRouter,
62
- registerRouterProvider: ()=>provider_js_namespaceObject.registerRouterProvider,
63
- resolveRouterProvider: ()=>provider_js_namespaceObject.resolveRouterProvider,
64
- routerProviderRegistryHooks: ()=>provider_js_namespaceObject.routerProviderRegistryHooks,
52
+ routerProviderRegistryHooks: ()=>hooks_js_namespaceObject.routerProviderRegistryHooks,
65
53
  setGlobalContext: ()=>setGlobalContext,
66
54
  setGlobalInternalRuntimeContext: ()=>setGlobalInternalRuntimeContext,
67
55
  setServerPayload: ()=>index_js_namespaceObject.setServerPayload
68
56
  });
69
57
  const DefaultNotFound_js_namespaceObject = require("../../router/runtime/DefaultNotFound.js");
70
58
  const hooks_js_namespaceObject = require("../../router/runtime/hooks.js");
71
- const lifecycle_js_namespaceObject = require("../../router/runtime/lifecycle.js");
72
- const provider_js_namespaceObject = require("../../router/runtime/provider.js");
73
- const external_extensions_js_namespaceObject = require("./extensions.js");
74
59
  const external_runtime_js_namespaceObject = require("./runtime.js");
75
60
  const index_js_namespaceObject = require("./serverPayload/index.js");
76
61
  const globalContext = {};
@@ -117,14 +102,8 @@ function getGlobalBasename() {
117
102
  }
118
103
  exports.DefaultNotFound = __webpack_exports__.DefaultNotFound;
119
104
  exports.InternalRuntimeContext = __webpack_exports__.InternalRuntimeContext;
105
+ exports.RuntimeComponentResolverContext = __webpack_exports__.RuntimeComponentResolverContext;
120
106
  exports.RuntimeContext = __webpack_exports__.RuntimeContext;
121
- exports.applyRouterRuntimeState = __webpack_exports__.applyRouterRuntimeState;
122
- exports.applyRouterServerPrepareResult = __webpack_exports__.applyRouterServerPrepareResult;
123
- exports.cleanupRouterRuntimeState = __webpack_exports__.cleanupRouterRuntimeState;
124
- exports.createRouterProviderRealm = __webpack_exports__.createRouterProviderRealm;
125
- exports.createRouterRuntimeState = __webpack_exports__.createRouterRuntimeState;
126
- exports.createRouterServerSnapshot = __webpack_exports__.createRouterServerSnapshot;
127
- exports.createRuntimeContextExtension = __webpack_exports__.createRuntimeContextExtension;
128
107
  exports.getCurrentEntryName = __webpack_exports__.getCurrentEntryName;
129
108
  exports.getGlobalApp = __webpack_exports__.getGlobalApp;
130
109
  exports.getGlobalBasename = __webpack_exports__.getGlobalBasename;
@@ -135,10 +114,6 @@ exports.getGlobalLayoutApp = __webpack_exports__.getGlobalLayoutApp;
135
114
  exports.getGlobalRSCRoot = __webpack_exports__.getGlobalRSCRoot;
136
115
  exports.getGlobalRoutes = __webpack_exports__.getGlobalRoutes;
137
116
  exports.getInitialContext = __webpack_exports__.getInitialContext;
138
- exports.getRouterHydrationScripts = __webpack_exports__.getRouterHydrationScripts;
139
- exports.getRouterMatchedRouteIds = __webpack_exports__.getRouterMatchedRouteIds;
140
- exports.getRouterRuntimeState = __webpack_exports__.getRouterRuntimeState;
141
- exports.getRouterServerSnapshot = __webpack_exports__.getRouterServerSnapshot;
142
117
  exports.getServerPayload = __webpack_exports__.getServerPayload;
143
118
  exports.modifyRoutes = __webpack_exports__.modifyRoutes;
144
119
  exports.onAfterCreateRouter = __webpack_exports__.onAfterCreateRouter;
@@ -146,8 +121,6 @@ exports.onAfterHydrateRouter = __webpack_exports__.onAfterHydrateRouter;
146
121
  exports.onBeforeCreateRouter = __webpack_exports__.onBeforeCreateRouter;
147
122
  exports.onBeforeCreateRoutes = __webpack_exports__.onBeforeCreateRoutes;
148
123
  exports.onBeforeHydrateRouter = __webpack_exports__.onBeforeHydrateRouter;
149
- exports.registerRouterProvider = __webpack_exports__.registerRouterProvider;
150
- exports.resolveRouterProvider = __webpack_exports__.resolveRouterProvider;
151
124
  exports.routerProviderRegistryHooks = __webpack_exports__.routerProviderRegistryHooks;
152
125
  exports.setGlobalContext = __webpack_exports__.setGlobalContext;
153
126
  exports.setGlobalInternalRuntimeContext = __webpack_exports__.setGlobalInternalRuntimeContext;
@@ -155,14 +128,8 @@ exports.setServerPayload = __webpack_exports__.setServerPayload;
155
128
  for(var __rspack_i in __webpack_exports__)if (-1 === [
156
129
  "DefaultNotFound",
157
130
  "InternalRuntimeContext",
131
+ "RuntimeComponentResolverContext",
158
132
  "RuntimeContext",
159
- "applyRouterRuntimeState",
160
- "applyRouterServerPrepareResult",
161
- "cleanupRouterRuntimeState",
162
- "createRouterProviderRealm",
163
- "createRouterRuntimeState",
164
- "createRouterServerSnapshot",
165
- "createRuntimeContextExtension",
166
133
  "getCurrentEntryName",
167
134
  "getGlobalApp",
168
135
  "getGlobalBasename",
@@ -173,10 +140,6 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
173
140
  "getGlobalRSCRoot",
174
141
  "getGlobalRoutes",
175
142
  "getInitialContext",
176
- "getRouterHydrationScripts",
177
- "getRouterMatchedRouteIds",
178
- "getRouterRuntimeState",
179
- "getRouterServerSnapshot",
180
143
  "getServerPayload",
181
144
  "modifyRoutes",
182
145
  "onAfterCreateRouter",
@@ -184,8 +147,6 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
184
147
  "onBeforeCreateRouter",
185
148
  "onBeforeCreateRoutes",
186
149
  "onBeforeHydrateRouter",
187
- "registerRouterProvider",
188
- "resolveRouterProvider",
189
150
  "routerProviderRegistryHooks",
190
151
  "setGlobalContext",
191
152
  "setGlobalInternalRuntimeContext",
@@ -28,15 +28,11 @@ var __webpack_require__ = {};
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
- ReactRuntimeContext: ()=>ReactRuntimeContext,
32
- RuntimeContext: ()=>RuntimeContext,
33
- useRuntimeContext: ()=>useRuntimeContext
31
+ ReactRuntimeContext: ()=>external_runtime_js_namespaceObject.ReactRuntimeContext,
32
+ RuntimeContext: ()=>external_runtime_js_namespaceObject.RuntimeContext,
33
+ useRuntimeContext: ()=>external_runtime_js_namespaceObject.useRuntimeContext
34
34
  });
35
- const react_context_namespaceObject = require("@modern-js/runtime-extensions/react-context");
36
- const external_react_namespaceObject = require("react");
37
- const RuntimeContext = (0, react_context_namespaceObject.getRuntimeReactContext)('public', ()=>(0, external_react_namespaceObject.createContext)({}));
38
- const ReactRuntimeContext = RuntimeContext;
39
- const useRuntimeContext = ()=>(0, external_react_namespaceObject.useContext)(RuntimeContext);
35
+ const external_runtime_js_namespaceObject = require("./runtime.js");
40
36
  exports.ReactRuntimeContext = __webpack_exports__.ReactRuntimeContext;
41
37
  exports.RuntimeContext = __webpack_exports__.RuntimeContext;
42
38
  exports.useRuntimeContext = __webpack_exports__.useRuntimeContext;
@@ -29,16 +29,25 @@ var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
31
  InternalRuntimeContext: ()=>InternalRuntimeContext,
32
- ReactRuntimeContext: ()=>external_public_js_namespaceObject.ReactRuntimeContext,
33
- RuntimeContext: ()=>external_public_js_namespaceObject.RuntimeContext,
32
+ ReactRuntimeContext: ()=>ReactRuntimeContext,
33
+ RuntimeComponentResolverContext: ()=>RuntimeComponentResolverContext,
34
+ RuntimeContext: ()=>RuntimeContext,
34
35
  getInitialContext: ()=>getInitialContext,
35
- useRuntimeContext: ()=>external_public_js_namespaceObject.useRuntimeContext
36
+ useRuntimeContext: ()=>useRuntimeContext
36
37
  });
37
- const react_context_namespaceObject = require("@modern-js/runtime-extensions/react-context");
38
38
  const external_react_namespaceObject = require("react");
39
- const external_public_js_namespaceObject = require("./public.js");
40
39
  const ROUTE_MANIFEST = '_MODERNJS_ROUTE_MANIFEST';
41
- const InternalRuntimeContext = (0, react_context_namespaceObject.getRuntimeReactContext)('internal', ()=>(0, external_react_namespaceObject.createContext)({}));
40
+ function getRuntimeReactContext(kind, create) {
41
+ const key = Symbol.for(`@modern-js/runtime:react-context:v1:${kind}`);
42
+ const contexts = globalThis;
43
+ contexts[key] ??= create();
44
+ return contexts[key];
45
+ }
46
+ const InternalRuntimeContext = getRuntimeReactContext('internal', ()=>(0, external_react_namespaceObject.createContext)({}));
47
+ const RuntimeContext = getRuntimeReactContext('public', ()=>(0, external_react_namespaceObject.createContext)({}));
48
+ const RuntimeComponentResolverContext = getRuntimeReactContext('component-resolver', ()=>(0, external_react_namespaceObject.createContext)(void 0));
49
+ const ReactRuntimeContext = RuntimeContext;
50
+ const useRuntimeContext = ()=>(0, external_react_namespaceObject.useContext)(RuntimeContext);
42
51
  const getInitialContext = (isBrowser = true, routeManifest)=>{
43
52
  const requestContext = {
44
53
  request: {
@@ -64,12 +73,14 @@ const getInitialContext = (isBrowser = true, routeManifest)=>{
64
73
  };
65
74
  exports.InternalRuntimeContext = __webpack_exports__.InternalRuntimeContext;
66
75
  exports.ReactRuntimeContext = __webpack_exports__.ReactRuntimeContext;
76
+ exports.RuntimeComponentResolverContext = __webpack_exports__.RuntimeComponentResolverContext;
67
77
  exports.RuntimeContext = __webpack_exports__.RuntimeContext;
68
78
  exports.getInitialContext = __webpack_exports__.getInitialContext;
69
79
  exports.useRuntimeContext = __webpack_exports__.useRuntimeContext;
70
80
  for(var __rspack_i in __webpack_exports__)if (-1 === [
71
81
  "InternalRuntimeContext",
72
82
  "ReactRuntimeContext",
83
+ "RuntimeComponentResolverContext",
73
84
  "RuntimeContext",
74
85
  "getInitialContext",
75
86
  "useRuntimeContext"
@@ -28,50 +28,20 @@ var __webpack_require__ = {};
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
+ wrapRuntimeComponentResolver: ()=>wrapRuntimeComponentResolver,
31
32
  wrapRuntimeContextProvider: ()=>wrapRuntimeContextProvider
32
33
  });
33
34
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
34
- const external_react_helmet_async_namespaceObject = require("react-helmet-async");
35
35
  const index_js_namespaceObject = require("../context/index.js");
36
- const extensions_js_namespaceObject = require("../context/extensions.js");
37
- const helmetContext_js_namespaceObject = require("../context/helmetContext.js");
38
- function createRscSafeRequestContext(ssrContext) {
39
- const requestContext = (0, index_js_namespaceObject.getInitialContext)().requestContext;
40
- Object.defineProperty(requestContext.response, 'setHeader', {
41
- enumerable: false
36
+ const runtime_js_namespaceObject = require("../context/runtime.js");
37
+ function wrapRuntimeComponentResolver(root, hooks = (0, index_js_namespaceObject.getGlobalInternalRuntimeContext)()?.hooks) {
38
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(runtime_js_namespaceObject.RuntimeComponentResolverContext.Provider, {
39
+ value: hooks?.resolveComponent?.call,
40
+ children: root
42
41
  });
43
- Object.defineProperty(requestContext.response, 'status', {
44
- enumerable: false
45
- });
46
- if (void 0 === ssrContext) return requestContext;
47
- const { request, response } = ssrContext;
48
- return {
49
- request: {
50
- url: request.url,
51
- userAgent: request.userAgent,
52
- cookie: request.cookie,
53
- pathname: request.pathname,
54
- query: {
55
- ...request.query
56
- },
57
- params: {
58
- ...request.params
59
- },
60
- headers: {
61
- ...request.headers
62
- },
63
- host: request.host,
64
- referer: request.referer
65
- },
66
- response: Object.assign(requestContext.response, {
67
- locals: response.locals ?? {}
68
- })
69
- };
70
42
  }
71
43
  function wrapRuntimeContextProvider(App, contextValue) {
72
44
  const { isBrowser, initialData, routes, context, routeManifest, routerContext, unstable_getBlockNavState, ssrContext, _internalContext, _internalRouterBaseName, ...rest } = contextValue;
73
- const internalContextValue = contextValue;
74
- const helmetContext = (0, helmetContext_js_namespaceObject.ensureHelmetContext)(internalContextValue);
75
45
  const runtimeContextValue = {
76
46
  isBrowser,
77
47
  initialData,
@@ -79,41 +49,28 @@ function wrapRuntimeContextProvider(App, contextValue) {
79
49
  context,
80
50
  ...rest
81
51
  };
82
- (0, extensions_js_namespaceObject.stripRuntimeContextExtensions)(runtimeContextValue);
83
- if (true === (0, index_js_namespaceObject.getGlobalEnableRsc)() && false === isBrowser) {
84
- const rscSafeRequestContext = createRscSafeRequestContext(ssrContext);
85
- const rscInternalContextValue = {
86
- ...internalContextValue,
87
- context: rscSafeRequestContext,
88
- requestContext: rscSafeRequestContext
89
- };
90
- delete rscInternalContextValue.ssrContext;
91
- const rscRuntimeContextValue = {
92
- ...runtimeContextValue,
93
- context: rscSafeRequestContext,
94
- requestContext: rscSafeRequestContext
95
- };
96
- return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(index_js_namespaceObject.InternalRuntimeContext.Provider, {
97
- value: rscInternalContextValue,
98
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(index_js_namespaceObject.RuntimeContext.Provider, {
99
- value: rscRuntimeContextValue,
100
- children: App
101
- })
102
- });
103
- }
104
- return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(index_js_namespaceObject.InternalRuntimeContext.Provider, {
105
- value: internalContextValue,
52
+ const isRsc = true === (0, index_js_namespaceObject.getGlobalEnableRsc)();
53
+ const projection = {
54
+ internalContext: contextValue,
55
+ publicContext: runtimeContextValue
56
+ };
57
+ const values = (0, index_js_namespaceObject.getGlobalInternalRuntimeContext)()?.hooks.transformRuntimeContext?.call(projection, {
58
+ context: contextValue,
59
+ isRsc
60
+ }) ?? projection;
61
+ const root = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(index_js_namespaceObject.InternalRuntimeContext.Provider, {
62
+ value: values.internalContext,
106
63
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(index_js_namespaceObject.RuntimeContext.Provider, {
107
- value: runtimeContextValue,
108
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_react_helmet_async_namespaceObject.HelmetProvider, {
109
- context: helmetContext,
110
- children: App
111
- })
64
+ value: values.publicContext,
65
+ children: App
112
66
  })
113
67
  });
68
+ return isRsc && false === isBrowser ? root : wrapRuntimeComponentResolver(root);
114
69
  }
70
+ exports.wrapRuntimeComponentResolver = __webpack_exports__.wrapRuntimeComponentResolver;
115
71
  exports.wrapRuntimeContextProvider = __webpack_exports__.wrapRuntimeContextProvider;
116
72
  for(var __rspack_i in __webpack_exports__)if (-1 === [
73
+ "wrapRuntimeComponentResolver",
117
74
  "wrapRuntimeContextProvider"
118
75
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
119
76
  Object.defineProperty(exports, '__esModule', {
@@ -32,7 +32,6 @@ __webpack_require__.d(__webpack_exports__, {
32
32
  getHelmetData: ()=>getHelmetData,
33
33
  helmetReplace: ()=>helmetReplace
34
34
  });
35
- const helmetContext_js_namespaceObject = require("../context/helmetContext.js");
36
35
  const external_utils_js_namespaceObject = require("./utils.js");
37
36
  const EOL = '\n';
38
37
  const RE_HTML_ATTR = /<html[^>]*>/;
@@ -40,8 +39,10 @@ const RE_BODY_ATTR = /<body[^>]*>/;
40
39
  const RE_LAST_IN_HEAD = /<\/head>/;
41
40
  const RE_TITLE = /<title[^>]*>([\s\S\n\r]*?)<\/title>/;
42
41
  const TEST_TITLE_CONTENT = /(?<=<title[^>]*>)([\s\S\n\r]*?)([.|\S])([\s\S\n\r]*?)(?=<\/title>)/;
43
- function getHelmetData(runtimeContext) {
44
- return (0, helmetContext_js_namespaceObject.getHelmetContext)(runtimeContext)?.helmet ?? void 0;
42
+ function getHelmetData(providers) {
43
+ let result;
44
+ for (const provider of providers)result = provider.getHeadData?.() ?? result;
45
+ return result;
45
46
  }
46
47
  function createReplaceHelemt(helmetData) {
47
48
  return helmetData ? (template)=>helmetReplace(template, helmetData) : (tempalte)=>tempalte;
@@ -53,7 +54,7 @@ function helmetReplace(content, helmetData) {
53
54
  const htmlAttributes = helmetData.htmlAttributes.toString();
54
55
  if (htmlAttributes) result = (0, external_utils_js_namespaceObject.safeReplace)(result, RE_HTML_ATTR, `<html ${htmlAttributes}>`);
55
56
  const base = helmetData.base.toString();
56
- const priority = helmetData.priority.toString();
57
+ const priority = helmetData.priority?.toString() ?? '';
57
58
  const link = helmetData.link.toString();
58
59
  const meta = helmetData.meta.toString();
59
60
  const noscript = helmetData.noscript.toString();
@@ -32,14 +32,14 @@ __webpack_require__.d(__webpack_exports__, {
32
32
  createLoaderRedirectResponse: ()=>createLoaderRedirectResponse,
33
33
  finalizeRenderResponse: ()=>finalizeRenderResponse
34
34
  });
35
- const lifecycle_js_namespaceObject = require("../../router/runtime/lifecycle.js");
35
+ const router_state_namespaceObject = require("@modern-js/runtime-extensions/router-state");
36
36
  const redirect_js_namespaceObject = require("../../router/runtime/redirect.js");
37
37
  const external_tracer_js_namespaceObject = require("./tracer.js");
38
38
  const isRedirectStatus = (status)=>301 === status || 302 === status || 303 === status || 307 === status || 308 === status;
39
39
  const isNullBodyStatus = (status)=>204 === status || 205 === status || 304 === status;
40
40
  const getRedirectLocation = (headers)=>{
41
41
  const location = headers.get('Location');
42
- return location && URL.canParse(location, 'http://localhost') ? location : void 0;
42
+ return null !== location && '' !== location && URL.canParse(location, 'http://localhost') ? location : void 0;
43
43
  };
44
44
  const processRedirect = (headers, status, ctx)=>{
45
45
  headers.delete('content-length');
@@ -51,7 +51,7 @@ const processRedirect = (headers, status, ctx)=>{
51
51
  });
52
52
  };
53
53
  const applyRouterSnapshotResult = (context, onError)=>{
54
- const routerServerSnapshot = (0, lifecycle_js_namespaceObject.getRouterServerSnapshot)(context);
54
+ const routerServerSnapshot = (0, router_state_namespaceObject.getRouterServerSnapshot)(context);
55
55
  const routerStatusCode = routerServerSnapshot?.statusCode ?? context.routerContext?.statusCode;
56
56
  if (void 0 !== routerStatusCode && 0 !== routerStatusCode && !Number.isNaN(routerStatusCode) && 200 !== routerStatusCode) context.ssrContext?.response.status(routerStatusCode);
57
57
  const errors = Object.values(routerServerSnapshot?.errors || context.routerContext?.errors || {});
@@ -61,7 +61,7 @@ const createLoaderRedirectResponse = (beforeRenderResult, redirectCtx)=>{
61
61
  if (void 0 === beforeRenderResult || !isRedirectStatus(beforeRenderResult.status)) return;
62
62
  if (beforeRenderResult.headers.has('X-Modernjs-Redirect')) return beforeRenderResult;
63
63
  const redirectUrl = getRedirectLocation(beforeRenderResult.headers);
64
- if (!redirectUrl) return;
64
+ if (void 0 === redirectUrl) return;
65
65
  return processRedirect(new Headers(beforeRenderResult.headers), beforeRenderResult.status, redirectCtx);
66
66
  };
67
67
  const finalizeRenderResponse = async (response, responseProxy, redirectCtx, routerCleanup)=>{
@@ -33,7 +33,7 @@ __webpack_require__.d(__webpack_exports__, {
33
33
  finishWithRouterCleanup: ()=>finishWithRouterCleanup,
34
34
  runWithRouterCleanupOnError: ()=>runWithRouterCleanupOnError
35
35
  });
36
- const lifecycle_js_namespaceObject = require("../../router/runtime/lifecycle.js");
36
+ const router_state_namespaceObject = require("@modern-js/runtime-extensions/router-state");
37
37
  const ROUTER_CLEANUP_ERROR = 'An error occurs during router runtime cleanup';
38
38
  async function runWithRouterCleanupOnError(routerCleanup, callback) {
39
39
  try {
@@ -57,7 +57,7 @@ function createRouterCleanup(runtimeContext, onError) {
57
57
  if (finished) return;
58
58
  finished = true;
59
59
  try {
60
- await (0, lifecycle_js_namespaceObject.getRouterRuntimeState)(runtimeContext)?.cleanup?.();
60
+ await (0, router_state_namespaceObject.getRouterRuntimeState)(runtimeContext)?.cleanup?.();
61
61
  } catch (error) {
62
62
  onError(error, ROUTER_CLEANUP_ERROR);
63
63
  }