@bleedingdev/modern-js-runtime 3.9.0-ultramodern.17 → 3.9.0-ultramodern.18

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 (71) hide show
  1. package/dist/cjs/cli/ssr/loadable-bundler-plugin.js +2 -0
  2. package/dist/cjs/core/browser/hydrate.js +1 -7
  3. package/dist/cjs/core/browser/index.js +4 -5
  4. package/dist/cjs/core/context/index.js +8 -2
  5. package/dist/cjs/core/context/public.js +4 -4
  6. package/dist/cjs/core/context/runtime.js +3 -9
  7. package/dist/cjs/core/index.js +3 -3
  8. package/dist/cjs/core/plugin/index.js +2 -2
  9. package/dist/cjs/core/react/index.js +3 -3
  10. package/dist/cjs/core/react/wrapper.js +7 -8
  11. package/dist/cjs/core/server/requestHandler.js +6 -7
  12. package/dist/cjs/core/server/stream/createReadableStream.js +20 -9
  13. package/dist/cjs/core/server/stream/createReadableStream.worker.js +21 -10
  14. package/dist/cjs/core/server/string/index.js +6 -4
  15. package/dist/cjs/exports/head.js +2 -2
  16. package/dist/cjs/internal.js +2 -2
  17. package/dist/cjs/router/runtime/PrefetchLink.js +4 -4
  18. package/dist/cjs/router/runtime/plugin.js +9 -9
  19. package/dist/cjs/router/runtime/plugin.node.js +6 -6
  20. package/dist/esm/cli/ssr/loadable-bundler-plugin.mjs +2 -0
  21. package/dist/esm/core/browser/hydrate.mjs +1 -7
  22. package/dist/esm/core/browser/index.mjs +1 -2
  23. package/dist/esm/core/context/index.mjs +1 -1
  24. package/dist/esm/core/context/public.mjs +1 -1
  25. package/dist/esm/core/context/runtime.mjs +3 -9
  26. package/dist/esm/core/index.mjs +1 -1
  27. package/dist/esm/core/plugin/index.mjs +1 -1
  28. package/dist/esm/core/react/index.mjs +1 -1
  29. package/dist/esm/core/react/wrapper.mjs +1 -2
  30. package/dist/esm/core/server/requestHandler.mjs +1 -2
  31. package/dist/esm/core/server/stream/createReadableStream.mjs +16 -5
  32. package/dist/esm/core/server/stream/createReadableStream.worker.mjs +19 -8
  33. package/dist/esm/core/server/string/index.mjs +3 -1
  34. package/dist/esm/exports/head.mjs +1 -1
  35. package/dist/esm/internal.mjs +1 -1
  36. package/dist/esm/router/runtime/PrefetchLink.mjs +1 -1
  37. package/dist/esm/router/runtime/plugin.mjs +1 -1
  38. package/dist/esm/router/runtime/plugin.node.mjs +1 -1
  39. package/dist/esm-node/cli/ssr/loadable-bundler-plugin.mjs +2 -0
  40. package/dist/esm-node/core/browser/hydrate.mjs +1 -7
  41. package/dist/esm-node/core/browser/index.mjs +1 -2
  42. package/dist/esm-node/core/context/index.mjs +1 -1
  43. package/dist/esm-node/core/context/public.mjs +1 -1
  44. package/dist/esm-node/core/context/runtime.mjs +3 -9
  45. package/dist/esm-node/core/index.mjs +1 -1
  46. package/dist/esm-node/core/plugin/index.mjs +1 -1
  47. package/dist/esm-node/core/react/index.mjs +1 -1
  48. package/dist/esm-node/core/react/wrapper.mjs +1 -2
  49. package/dist/esm-node/core/server/requestHandler.mjs +1 -2
  50. package/dist/esm-node/core/server/stream/createReadableStream.mjs +16 -5
  51. package/dist/esm-node/core/server/stream/createReadableStream.worker.mjs +19 -8
  52. package/dist/esm-node/core/server/string/index.mjs +3 -1
  53. package/dist/esm-node/exports/head.mjs +1 -1
  54. package/dist/esm-node/internal.mjs +1 -1
  55. package/dist/esm-node/router/runtime/PrefetchLink.mjs +1 -1
  56. package/dist/esm-node/router/runtime/plugin.mjs +1 -1
  57. package/dist/esm-node/router/runtime/plugin.node.mjs +1 -1
  58. package/dist/types/core/context/index.d.ts +1 -1
  59. package/dist/types/core/context/public.d.ts +1 -1
  60. package/dist/types/core/index.d.ts +1 -1
  61. package/dist/types/core/react/wrapper.d.ts +1 -1
  62. package/dist/types/core/server/requestHandler.d.ts +1 -1
  63. package/dist/types/core/server/stream/shared.d.ts +6 -1
  64. package/dist/types/internal.d.ts +1 -1
  65. package/package.json +10 -10
  66. package/rslib.config.mts +3 -0
  67. package/rstest.config.mts +0 -4
  68. package/dist/cjs/rsc/server.worker.js +0 -62
  69. package/dist/esm/rsc/server.worker.mjs +0 -1
  70. package/dist/esm-node/rsc/server.worker.mjs +0 -2
  71. package/dist/types/rsc/server.worker.d.ts +0 -1
@@ -34,11 +34,11 @@ __webpack_require__.d(__webpack_exports__, {
34
34
  routerPlugin: ()=>routerPlugin
35
35
  });
36
36
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
37
+ const context_namespaceObject = require("@modern-js/runtime/context");
37
38
  const merge_namespaceObject = require("@modern-js/runtime-utils/merge");
38
39
  const router_namespaceObject = require("@modern-js/runtime-utils/router");
39
40
  const url_namespaceObject = require("@modern-js/runtime-utils/url");
40
41
  const external_react_namespaceObject = require("react");
41
- const index_js_namespaceObject = require("../../core/context/index.js");
42
42
  const external_hooks_js_namespaceObject = require("./hooks.js");
43
43
  const external_PrefetchLink_js_namespaceObject = require("./PrefetchLink.js");
44
44
  const external_rsc_router_js_namespaceObject = require("./rsc-router.js");
@@ -92,8 +92,8 @@ const routerPlugin = (userConfig = {})=>({
92
92
  const mergedConfig = (0, merge_namespaceObject.merge)(api.getRuntimeConfig().router || {}, userConfig);
93
93
  const { serverBase = [], supportHtml5History = true, basename = '', routesConfig, createRoutes } = mergedConfig;
94
94
  finalRouteConfig = {
95
- routes: (0, index_js_namespaceObject.getGlobalRoutes)(),
96
- globalApp: (0, index_js_namespaceObject.getGlobalLayoutApp)(),
95
+ routes: (0, context_namespaceObject.getGlobalRoutes)(),
96
+ globalApp: (0, context_namespaceObject.getGlobalLayoutApp)(),
97
97
  ...routesConfig
98
98
  };
99
99
  if (!finalRouteConfig.routes && !createRoutes) return App;
@@ -102,7 +102,7 @@ const routerPlugin = (userConfig = {})=>({
102
102
  return match || '/';
103
103
  };
104
104
  const RouterWrapper = (props)=>{
105
- const routerResult = useRouterCreation(("u" > typeof __MODERN_ENABLE_RSC__ ? __MODERN_ENABLE_RSC__ : true === (0, index_js_namespaceObject.getGlobalEnableRsc)()) ? {
105
+ const routerResult = useRouterCreation(("u" > typeof __MODERN_ENABLE_RSC__ ? __MODERN_ENABLE_RSC__ : true === (0, context_namespaceObject.getGlobalEnableRsc)()) ? {
106
106
  ...props,
107
107
  rscPayload: props?.rscPayload
108
108
  } : props, {
@@ -150,12 +150,12 @@ function isSegmentPrefix(pathname, base) {
150
150
  }
151
151
  function useRouterCreation(props, options) {
152
152
  const { api, createRoutes, supportHtml5History, selectBasePath, basename } = options;
153
- const runtimeContext = (0, external_react_namespaceObject.useContext)(index_js_namespaceObject.InternalRuntimeContext);
153
+ const runtimeContext = (0, external_react_namespaceObject.useContext)(context_namespaceObject.InternalRuntimeContext);
154
154
  const baseUrl = selectBasePath(location.pathname).replace(/^\/*/, '/');
155
155
  const _basename = '/' === baseUrl ? (0, external_utils_js_namespaceObject.urlJoin)(baseUrl, runtimeContext._internalRouterBaseName || basename || '') : baseUrl;
156
156
  const { unstable_getBlockNavState: getBlockNavState } = runtimeContext;
157
- const rscPayload = ("u" > typeof __MODERN_ENABLE_RSC__ ? __MODERN_ENABLE_RSC__ : true === (0, index_js_namespaceObject.getGlobalEnableRsc)()) && props?.rscPayload ? safeUse(props.rscPayload) : null;
158
- let hydrationData = "u" > typeof __MODERN_ENABLE_RSC__ ? __MODERN_ENABLE_RSC__ ? window._ROUTER_DATA || rscPayload : window._ROUTER_DATA : true === (0, index_js_namespaceObject.getGlobalEnableRsc)() ? window._ROUTER_DATA || rscPayload : window._ROUTER_DATA;
157
+ const rscPayload = ("u" > typeof __MODERN_ENABLE_RSC__ ? __MODERN_ENABLE_RSC__ : true === (0, context_namespaceObject.getGlobalEnableRsc)()) && props?.rscPayload ? safeUse(props.rscPayload) : null;
158
+ let hydrationData = "u" > typeof __MODERN_ENABLE_RSC__ ? __MODERN_ENABLE_RSC__ ? window._ROUTER_DATA || rscPayload : window._ROUTER_DATA : true === (0, context_namespaceObject.getGlobalEnableRsc)() ? window._ROUTER_DATA || rscPayload : window._ROUTER_DATA;
159
159
  const result = (0, external_react_namespaceObject.useRef)(null);
160
160
  if (null === result.current) {
161
161
  if (hydrationData?.errors) hydrationData = {
@@ -163,7 +163,7 @@ function useRouterCreation(props, options) {
163
163
  errors: (0, external_utils_js_namespaceObject.deserializeErrors)(hydrationData.errors)
164
164
  };
165
165
  let routes = null;
166
- routes = ("u" > typeof __MODERN_ENABLE_RSC__ ? __MODERN_ENABLE_RSC__ : true === (0, index_js_namespaceObject.getGlobalEnableRsc)()) && (0, index_js_namespaceObject.getGlobalIsRscClient)() ? createRoutes ? createRoutes() : (0, external_utils_js_namespaceObject.createRouteObjectsFromConfig)({
166
+ routes = ("u" > typeof __MODERN_ENABLE_RSC__ ? __MODERN_ENABLE_RSC__ : true === (0, context_namespaceObject.getGlobalEnableRsc)()) && (0, context_namespaceObject.getGlobalIsRscClient)() ? createRoutes ? createRoutes() : (0, external_utils_js_namespaceObject.createRouteObjectsFromConfig)({
167
167
  routesConfig: finalRouteConfig
168
168
  }) : createRoutes ? createRoutes() : (0, router_namespaceObject.createRoutesFromElements)((0, external_utils_js_namespaceObject.renderRoutes)({
169
169
  routesConfig: finalRouteConfig,
@@ -171,7 +171,7 @@ function useRouterCreation(props, options) {
171
171
  }));
172
172
  if (!routes) routes = [];
173
173
  const hooks = api.getHooks();
174
- if (("u" > typeof __MODERN_ENABLE_RSC__ ? __MODERN_ENABLE_RSC__ : true === (0, index_js_namespaceObject.getGlobalEnableRsc)()) && rscPayload) try {
174
+ if (("u" > typeof __MODERN_ENABLE_RSC__ ? __MODERN_ENABLE_RSC__ : true === (0, context_namespaceObject.getGlobalEnableRsc)()) && rscPayload) try {
175
175
  const router = (0, external_rsc_router_js_namespaceObject.createClientRouterFromPayload)(rscPayload, routes, _basename);
176
176
  result.current = {
177
177
  router,
@@ -41,13 +41,13 @@ __webpack_require__.d(__webpack_exports__, {
41
41
  routerPlugin: ()=>routerPlugin
42
42
  });
43
43
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
44
+ const context_namespaceObject = require("@modern-js/runtime/context");
44
45
  const merge_namespaceObject = require("@modern-js/runtime-utils/merge");
45
46
  const node_namespaceObject = require("@modern-js/runtime-utils/node");
46
47
  const router_namespaceObject = require("@modern-js/runtime-utils/router");
47
48
  const time_namespaceObject = require("@modern-js/runtime-utils/time");
48
49
  const constants_namespaceObject = require("@modern-js/utils/universal/constants");
49
50
  const external_react_namespaceObject = require("react");
50
- const index_js_namespaceObject = require("../../core/context/index.js");
51
51
  const index_server_js_namespaceObject = require("../../core/context/serverPayload/index.server.js");
52
52
  const external_DeferredDataScripts_node_js_namespaceObject = require("./DeferredDataScripts.node.js");
53
53
  var external_DeferredDataScripts_node_js_default = /*#__PURE__*/ __webpack_require__.n(external_DeferredDataScripts_node_js_namespaceObject);
@@ -81,12 +81,12 @@ const routerPlugin = (userConfig = {})=>({
81
81
  const pluginConfig = api.getRuntimeConfig();
82
82
  const { basename = '', routesConfig, createRoutes } = (0, merge_namespaceObject.merge)(pluginConfig.router || {}, userConfig);
83
83
  finalRouteConfig = {
84
- routes: (0, index_js_namespaceObject.getGlobalRoutes)(),
85
- globalApp: (0, index_js_namespaceObject.getGlobalLayoutApp)(),
84
+ routes: (0, context_namespaceObject.getGlobalRoutes)(),
85
+ globalApp: (0, context_namespaceObject.getGlobalLayoutApp)(),
86
86
  ...routesConfig
87
87
  };
88
88
  if (!finalRouteConfig.routes && !createRoutes) return;
89
- const enableRsc = (0, index_js_namespaceObject.getGlobalEnableRsc)();
89
+ const enableRsc = (0, context_namespaceObject.getGlobalEnableRsc)();
90
90
  if (enableRsc) await (0, external_rsc_router_js_namespaceObject.prepareRSCRoutes)(finalRouteConfig.routes);
91
91
  const { request, mode: ssrMode, nonce, loaderFailureMode = 'errorBoundary', baseUrl } = context.ssrContext;
92
92
  const _basename = '/' === baseUrl ? (0, external_utils_js_namespaceObject.urlJoin)(baseUrl, basename) : baseUrl;
@@ -154,9 +154,9 @@ const routerPlugin = (userConfig = {})=>({
154
154
  api.wrapRoot((App)=>{
155
155
  if (!finalRouteConfig) return App;
156
156
  const getRouteApp = ()=>{
157
- const enableRsc = (0, index_js_namespaceObject.getGlobalEnableRsc)();
157
+ const enableRsc = (0, context_namespaceObject.getGlobalEnableRsc)();
158
158
  return (props)=>{
159
- const context = (0, external_react_namespaceObject.useContext)(index_js_namespaceObject.InternalRuntimeContext);
159
+ const context = (0, external_react_namespaceObject.useContext)(context_namespaceObject.InternalRuntimeContext);
160
160
  const { routerContext, routes } = context;
161
161
  const { basename } = routerContext;
162
162
  if (enableRsc) return App ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(App, {
@@ -2,6 +2,7 @@ import { fs } from "@modern-js/utils";
2
2
  import path_0 from "path";
3
3
  const normalizeChunkId = (id)=>'string' == typeof id && /^\d+$/.test(id) ? Number(id) : id;
4
4
  const DEFAULT_CHUNK_LOADING_GLOBAL = '__LOADABLE_LOADED_CHUNKS__';
5
+ const normalizeStatsPublicPath = (publicPath)=>'auto' === publicPath || 'auto/' === publicPath ? '/' : publicPath;
5
6
  const normalizeChunkGroup = (group)=>({
6
7
  ...group,
7
8
  chunks: (group.chunks || []).map(normalizeChunkId)
@@ -44,6 +45,7 @@ class LoadablePlugin {
44
45
  for (const [name, ep] of Object.entries(stats.entrypoints || {}))entrypoints[name] = normalizeChunkGroup(ep);
45
46
  const output = {
46
47
  ...stats,
48
+ publicPath: normalizeStatsPublicPath(stats.publicPath),
47
49
  namedChunkGroups,
48
50
  entrypoints,
49
51
  generator: 'loadable-components',
@@ -53,13 +53,7 @@ function hydrate_hydrateRoot(App, context, ModernRender, ModernHydrate) {
53
53
  });
54
54
  return ModernHydrate(wrapRuntimeContextProvider(/*#__PURE__*/ jsx(SSRApp, {}), hydrateContext));
55
55
  });
56
- const runtimeConsole = Reflect.get(globalThis, 'console');
57
- if (null !== runtimeConsole && 'object' == typeof runtimeConsole) {
58
- const warn = Reflect.get(runtimeConsole, 'warn');
59
- if ('function' == typeof warn) Reflect.apply(warn, runtimeConsole, [
60
- `unknow render level: ${renderLevel}, execute render()`
61
- ]);
62
- }
56
+ console.warn(`unknow render level: ${renderLevel}, execute render()`);
63
57
  return ModernRender(wrapRuntimeContextProvider(App, context));
64
58
  }
65
59
  }
@@ -1,7 +1,6 @@
1
+ import { getGlobalInternalRuntimeContext, getInitialContext } from "@modern-js/runtime/context";
1
2
  import { parseCookie } from "cookie";
2
3
  import { createRoot } from "react-dom/client";
3
- import { getGlobalInternalRuntimeContext } from "../context/index.mjs";
4
- import { getInitialContext } from "../context/runtime.mjs";
5
4
  import { wrapRuntimeContextProvider } from "../react/wrapper.mjs";
6
5
  import { hydrateRoot, hydrateWithReact } from "./hydrate.mjs";
7
6
  const IS_REACT18 = 'true' === process.env.IS_REACT18;
@@ -42,6 +42,6 @@ function getGlobalBasename() {
42
42
  }
43
43
  export { DefaultNotFound } from "../../router/runtime/DefaultNotFound.mjs";
44
44
  export { modifyRoutes, onAfterCreateRouter, onAfterHydrateRouter, onBeforeCreateRouter, onBeforeCreateRoutes, onBeforeHydrateRouter, routerProviderRegistryHooks } from "../../router/runtime/hooks.mjs";
45
- export { InternalRuntimeContext, RuntimeComponentResolverContext, RuntimeContext, getInitialContext } from "./runtime.mjs";
45
+ export { InternalRuntimeContext, ReactRuntimeContext, RuntimeComponentResolverContext, RuntimeContext, getInitialContext, useRuntimeContext } from "./runtime.mjs";
46
46
  export { getServerPayload, setServerPayload } from "./serverPayload/index.mjs";
47
47
  export { getCurrentEntryName, getGlobalApp, getGlobalBasename, getGlobalEnableRsc, getGlobalInternalRuntimeContext, getGlobalIsRscClient, getGlobalLayoutApp, getGlobalRSCRoot, getGlobalRoutes, setGlobalContext, setGlobalInternalRuntimeContext };
@@ -1 +1 @@
1
- export { ReactRuntimeContext, RuntimeContext, useRuntimeContext } from "./runtime.mjs";
1
+ export { ReactRuntimeContext, RuntimeContext, useRuntimeContext } from "@modern-js/runtime/context";
@@ -1,14 +1,8 @@
1
1
  import { createContext, useContext } from "react";
2
2
  const ROUTE_MANIFEST = '_MODERNJS_ROUTE_MANIFEST';
3
- function getRuntimeReactContext(kind, create) {
4
- const key = Symbol.for(`@modern-js/runtime:react-context:v1:${kind}`);
5
- const contexts = globalThis;
6
- contexts[key] ??= create();
7
- return contexts[key];
8
- }
9
- const InternalRuntimeContext = getRuntimeReactContext('internal', ()=>createContext({}));
10
- const RuntimeContext = getRuntimeReactContext('public', ()=>createContext({}));
11
- const RuntimeComponentResolverContext = getRuntimeReactContext('component-resolver', ()=>createContext(void 0));
3
+ const InternalRuntimeContext = createContext({});
4
+ const RuntimeContext = createContext({});
5
+ const RuntimeComponentResolverContext = createContext(void 0);
12
6
  const ReactRuntimeContext = RuntimeContext;
13
7
  const useRuntimeContext = ()=>useContext(RuntimeContext);
14
8
  const getInitialContext = (isBrowser = true, routeManifest)=>{
@@ -1,2 +1,2 @@
1
+ export { RuntimeContext, useRuntimeContext } from "@modern-js/runtime/context";
1
2
  export { defineRuntimeConfig } from "./config.mjs";
2
- export { RuntimeContext, useRuntimeContext } from "./context/runtime.mjs";
@@ -1,9 +1,9 @@
1
1
  import { runtime } from "@modern-js/plugin/runtime";
2
+ import { setGlobalInternalRuntimeContext } from "@modern-js/runtime/context";
2
3
  import { merge } from "@modern-js/runtime-utils/merge";
3
4
  import { compatPlugin } from "../compat/index.mjs";
4
5
  import { handleSetupResult } from "../compat/hooks.mjs";
5
6
  import { requestContextPlugin } from "../compat/requestContext.mjs";
6
- import { setGlobalInternalRuntimeContext } from "../context/index.mjs";
7
7
  function registerPlugin(internalPlugins, runtimeConfig) {
8
8
  const { plugins = [] } = runtimeConfig || {};
9
9
  const { runtimeContext } = runtime.run({
@@ -1,7 +1,7 @@
1
+ import { getGlobalApp, getGlobalInternalRuntimeContext } from "@modern-js/runtime/context";
1
2
  import { parsedJSONFromElement } from "@modern-js/runtime-utils/parsed";
2
3
  import { isBrowser } from "../../common.mjs";
3
4
  import { ROUTER_DATA_JSON_ID, SSR_DATA_JSON_ID } from "../constants.mjs";
4
- import { getGlobalApp, getGlobalInternalRuntimeContext } from "../context/index.mjs";
5
5
  function createRoot(UserApp) {
6
6
  const App = UserApp || getGlobalApp();
7
7
  if (isBrowser()) {
@@ -1,6 +1,5 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- import { InternalRuntimeContext, RuntimeContext, getGlobalEnableRsc, getGlobalInternalRuntimeContext } from "../context/index.mjs";
3
- import { RuntimeComponentResolverContext } from "../context/runtime.mjs";
2
+ import { InternalRuntimeContext, RuntimeComponentResolverContext, RuntimeContext, getGlobalEnableRsc, getGlobalInternalRuntimeContext } from "@modern-js/runtime/context";
4
3
  function wrapRuntimeComponentResolver(root, hooks = getGlobalInternalRuntimeContext()?.hooks) {
5
4
  return /*#__PURE__*/ jsx(RuntimeComponentResolverContext.Provider, {
6
5
  value: hooks?.resolveComponent?.call,
@@ -1,9 +1,8 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
+ import { getGlobalInternalRuntimeContext, getGlobalRSCRoot, getInitialContext } from "@modern-js/runtime/context";
2
3
  import { storage } from "@modern-js/runtime-utils/node";
3
4
  import { getPathname, parseCookie, parseHeaders, parseQuery } from "@modern-js/runtime-utils/universal/request";
4
5
  import react, { Fragment } from "react";
5
- import { getGlobalInternalRuntimeContext, getGlobalRSCRoot } from "../context/index.mjs";
6
- import { getInitialContext } from "../context/runtime.mjs";
7
6
  import { getServerPayload } from "../context/serverPayload/index.mjs";
8
7
  import { createRoot } from "../react/index.mjs";
9
8
  import { CHUNK_CSS_PLACEHOLDER } from "./constants.mjs";
@@ -1,9 +1,9 @@
1
+ import { getGlobalEnableRsc, getGlobalInternalRuntimeContext } from "@modern-js/runtime/context";
1
2
  import { storage } from "@modern-js/runtime-utils/node";
2
3
  import { SSR_HYDRATION_ID_PREFIX } from "@modern-js/utils/universal/constants";
3
4
  import { PassThrough, Readable, Transform, finished, pipeline } from "stream";
4
5
  import { ESCAPED_SHELL_STREAM_END_MARK } from "../../../common.mjs";
5
6
  import { RenderLevel } from "../../constants.mjs";
6
- import { getGlobalEnableRsc, getGlobalInternalRuntimeContext } from "../../context/index.mjs";
7
7
  import { getMonitors } from "../../context/monitors/index.mjs";
8
8
  import { wrapRuntimeComponentResolver } from "../../react/wrapper.mjs";
9
9
  import { createReplaceHelemt, getHelmetData } from "../helmet.mjs";
@@ -23,6 +23,7 @@ const createReadableStreamFromElement = async (request, rootElement, options)=>{
23
23
  config,
24
24
  platform: 'node',
25
25
  mode: 'stream',
26
+ monitors: getMonitors(),
26
27
  isRsc,
27
28
  terminalMarker: ESCAPED_SHELL_STREAM_END_MARK
28
29
  }) || [];
@@ -121,7 +122,9 @@ const createReadableStreamFromElement = async (request, rootElement, options)=>{
121
122
  });
122
123
  if (failed) return;
123
124
  const chunks = [];
125
+ let bufferedLength = 0;
124
126
  const marker = Buffer.from(ESCAPED_SHELL_STREAM_END_MARK);
127
+ let markerTail = Buffer.alloc(0);
125
128
  const pendingScripts = [];
126
129
  let shellChunkStatus = ShellChunkStatus.START;
127
130
  const emitShell = (destination, buffered, markerIndex)=>{
@@ -129,6 +132,7 @@ const createReadableStreamFromElement = async (request, rootElement, options)=>{
129
132
  const completedShellBefore = createReplaceHelemt(getHelmetData(extenders))(shellBefore);
130
133
  shellChunkStatus = ShellChunkStatus.FINISH;
131
134
  chunks.length = 0;
135
+ bufferedLength = 0;
132
136
  destination.push(`${completedShellBefore}${beforeMark}${shellAfter}`);
133
137
  const afterMark = buffered.subarray(markerIndex + marker.length);
134
138
  if (afterMark.length > 0) destination.push(afterMark);
@@ -140,10 +144,17 @@ const createReadableStreamFromElement = async (request, rootElement, options)=>{
140
144
  try {
141
145
  if (shellChunkStatus === ShellChunkStatus.FINISH) this.push(chunk);
142
146
  else {
143
- chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
144
- const buffered = Buffer.concat(chunks);
145
- const markerIndex = buffered.indexOf(marker);
146
- if (-1 !== markerIndex) emitShell(this, buffered, markerIndex);
147
+ const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
148
+ const window = Buffer.concat([
149
+ markerTail,
150
+ bytes
151
+ ]);
152
+ const windowIndex = window.indexOf(marker);
153
+ const windowStart = bufferedLength - markerTail.length;
154
+ chunks.push(bytes);
155
+ bufferedLength += bytes.length;
156
+ if (-1 === windowIndex) markerTail = window.subarray(Math.max(0, window.length - marker.length + 1));
157
+ else emitShell(this, Buffer.concat(chunks, bufferedLength), windowStart + windowIndex);
147
158
  }
148
159
  callback();
149
160
  } catch (error) {
@@ -1,9 +1,10 @@
1
1
  import { renderSSRStream } from "@modern-js/render/ssr";
2
+ import { getGlobalEnableRsc, getGlobalInternalRuntimeContext } from "@modern-js/runtime/context";
2
3
  import { storage } from "@modern-js/runtime-utils/node";
3
4
  import react from "react";
4
5
  import { ESCAPED_SHELL_STREAM_END_MARK } from "../../../common.mjs";
5
6
  import { RenderLevel } from "../../constants.mjs";
6
- import { getGlobalEnableRsc, getGlobalInternalRuntimeContext } from "../../context/index.mjs";
7
+ import { getMonitors } from "../../context/monitors/index.mjs";
7
8
  import { wrapRuntimeComponentResolver } from "../../react/wrapper.mjs";
8
9
  import { createReplaceHelemt, getHelmetData } from "../helmet.mjs";
9
10
  import { createSSRRenderLifecycle, createSSRStreamErrorReporter, observeSSRStream, orderSSRStreamTransforms } from "../shared.mjs";
@@ -21,6 +22,7 @@ const createReadableStreamFromElement = async (request, rootElement, options)=>{
21
22
  config,
22
23
  platform: 'web',
23
24
  mode: 'stream',
25
+ monitors: getMonitors(),
24
26
  isRsc,
25
27
  terminalMarker: ESCAPED_SHELL_STREAM_END_MARK
26
28
  }) || [];
@@ -80,7 +82,9 @@ const createReadableStreamFromElement = async (request, rootElement, options)=>{
80
82
  const decoder = new TextDecoder();
81
83
  const encoder = new TextEncoder();
82
84
  const pendingScripts = [];
83
- let buffered = '';
85
+ const buffered = [];
86
+ let bufferedLength = 0;
87
+ let markerTail = '';
84
88
  let shellChunkStatus = ShellChunkStatus.START;
85
89
  let bodyController;
86
90
  const emit = (chunk, controller)=>{
@@ -88,14 +92,21 @@ const createReadableStreamFromElement = async (request, rootElement, options)=>{
88
92
  if (chunk.length > 0) controller.enqueue(encoder.encode(chunk));
89
93
  return;
90
94
  }
91
- buffered += chunk;
92
- const markerIndex = buffered.indexOf(ESCAPED_SHELL_STREAM_END_MARK);
93
- if (-1 === markerIndex) return;
94
- const beforeMark = lifecycle.completedBody(buffered.slice(0, markerIndex), 'shell');
95
- const afterMark = buffered.slice(markerIndex + ESCAPED_SHELL_STREAM_END_MARK.length);
95
+ const window = markerTail + chunk;
96
+ const windowIndex = window.indexOf(ESCAPED_SHELL_STREAM_END_MARK);
97
+ const markerIndex = bufferedLength - markerTail.length + windowIndex;
98
+ buffered.push(chunk);
99
+ bufferedLength += chunk.length;
100
+ if (-1 === windowIndex) {
101
+ markerTail = window.slice(Math.max(0, window.length - ESCAPED_SHELL_STREAM_END_MARK.length + 1));
102
+ return;
103
+ }
104
+ const shell = buffered.join('');
105
+ const beforeMark = lifecycle.completedBody(shell.slice(0, markerIndex), 'shell');
106
+ const afterMark = shell.slice(markerIndex + ESCAPED_SHELL_STREAM_END_MARK.length);
96
107
  const completedShellBefore = createReplaceHelemt(getHelmetData(extenders))(shellBefore);
97
108
  shellChunkStatus = ShellChunkStatus.FINISH;
98
- buffered = '';
109
+ buffered.length = 0;
99
110
  controller.enqueue(encoder.encode(`${completedShellBefore}${beforeMark}${shellAfter}`));
100
111
  if (afterMark.length > 0) controller.enqueue(encoder.encode(afterMark));
101
112
  for (const script of pendingScripts)controller.enqueue(encoder.encode(script));
@@ -1,8 +1,9 @@
1
+ import { getGlobalEnableRsc, getGlobalInternalRuntimeContext } from "@modern-js/runtime/context";
1
2
  import { time } from "@modern-js/runtime-utils/time";
2
3
  import { SSR_HYDRATION_ID_PREFIX } from "@modern-js/utils/universal/constants";
3
4
  import server from "react-dom/server";
4
5
  import { RenderLevel } from "../../constants.mjs";
5
- import { getGlobalEnableRsc, getGlobalInternalRuntimeContext } from "../../context/index.mjs";
6
+ import { getMonitors } from "../../context/monitors/index.mjs";
6
7
  import { wrapRuntimeComponentResolver, wrapRuntimeContextProvider } from "../../react/wrapper.mjs";
7
8
  import { CHUNK_CSS_PLACEHOLDER, CHUNK_JS_PLACEHOLDER, HTML_PLACEHOLDER, SSR_DATA_PLACEHOLDER } from "../constants.mjs";
8
9
  import { createReplaceHelemt, getHelmetData } from "../helmet.mjs";
@@ -60,6 +61,7 @@ const renderString = async (request, serverRoot, options)=>{
60
61
  config,
61
62
  platform: 'node',
62
63
  mode: 'string',
64
+ monitors: getMonitors(),
63
65
  isRsc: true === getGlobalEnableRsc()
64
66
  }
65
67
  });
@@ -1,7 +1,7 @@
1
1
  "use client";
2
+ import { RuntimeComponentResolverContext } from "@modern-js/runtime/context";
2
3
  import react from "react";
3
4
  import { Helmet, HelmetData, HelmetProvider } from "react-helmet-async";
4
- import { RuntimeComponentResolverContext } from "../core/context/runtime.mjs";
5
5
  const head_Helmet = (props)=>{
6
6
  const resolveComponent = react.useContext(RuntimeComponentResolverContext);
7
7
  const Component = resolveComponent?.(Helmet, {
@@ -1 +1 @@
1
- export { InternalRuntimeContext } from "./core/context/runtime.mjs";
1
+ export { InternalRuntimeContext } from "@modern-js/runtime/context";
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { InternalRuntimeContext } from "@modern-js/runtime/context";
3
4
  import { Link as router_Link, NavLink, matchRoutes, useHref, useMatches, useResolvedPath } from "@modern-js/runtime-utils/router";
4
5
  import react, { useContext, useMemo } from "react";
5
- import { InternalRuntimeContext } from "../../core/context/index.mjs";
6
6
  import { __webpack_require__ } from "../../rslib-runtime~1.mjs";
7
7
  const getWebpackChunkLoader = ()=>__webpack_chunk_load__;
8
8
  const getWebpackPublicPath = ()=>{
@@ -1,9 +1,9 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { InternalRuntimeContext, getGlobalEnableRsc, getGlobalIsRscClient, getGlobalLayoutApp, getGlobalRoutes } from "@modern-js/runtime/context";
2
3
  import { merge } from "@modern-js/runtime-utils/merge";
3
4
  import { RouterProvider, createBrowserRouter, createHashRouter, createRoutesFromElements, useHref, useInRouterContext, useLocation, useMatches, useNavigate, useParams } from "@modern-js/runtime-utils/router";
4
5
  import { normalizePathname } from "@modern-js/runtime-utils/url";
5
6
  import * as __rspack_external_react from "react";
6
- import { InternalRuntimeContext, getGlobalEnableRsc, getGlobalIsRscClient, getGlobalLayoutApp, getGlobalRoutes } from "../../core/context/index.mjs";
7
7
  import { routerProviderRegistryHooks } from "./hooks.mjs";
8
8
  import { Link } from "./PrefetchLink.mjs";
9
9
  import { createClientRouterFromPayload } from "./rsc-router.mjs";
@@ -1,11 +1,11 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { InternalRuntimeContext, getGlobalEnableRsc, getGlobalLayoutApp, getGlobalRoutes } from "@modern-js/runtime/context";
2
3
  import { merge } from "@modern-js/runtime-utils/merge";
3
4
  import { createRequestContext } from "@modern-js/runtime-utils/node";
4
5
  import { StaticRouterProvider, createRoutesFromElements, createStaticHandler, createStaticRouter, useInRouterContext, useLocation, useNavigate, useParams } from "@modern-js/runtime-utils/router";
5
6
  import { time } from "@modern-js/runtime-utils/time";
6
7
  import { LOADER_REPORTER_NAME } from "@modern-js/utils/universal/constants";
7
8
  import { useContext } from "react";
8
- import { InternalRuntimeContext, getGlobalEnableRsc, getGlobalLayoutApp, getGlobalRoutes } from "../../core/context/index.mjs";
9
9
  import { setServerPayload } from "../../core/context/serverPayload/index.server.mjs";
10
10
  import DeferredDataScripts_node from "./DeferredDataScripts.node.mjs";
11
11
  import { routerProviderRegistryHooks } from "./hooks.mjs";
@@ -3,6 +3,7 @@ import { fs } from "@modern-js/utils";
3
3
  import path_0 from "path";
4
4
  const normalizeChunkId = (id)=>'string' == typeof id && /^\d+$/.test(id) ? Number(id) : id;
5
5
  const DEFAULT_CHUNK_LOADING_GLOBAL = '__LOADABLE_LOADED_CHUNKS__';
6
+ const normalizeStatsPublicPath = (publicPath)=>'auto' === publicPath || 'auto/' === publicPath ? '/' : publicPath;
6
7
  const normalizeChunkGroup = (group)=>({
7
8
  ...group,
8
9
  chunks: (group.chunks || []).map(normalizeChunkId)
@@ -45,6 +46,7 @@ class LoadablePlugin {
45
46
  for (const [name, ep] of Object.entries(stats.entrypoints || {}))entrypoints[name] = normalizeChunkGroup(ep);
46
47
  const output = {
47
48
  ...stats,
49
+ publicPath: normalizeStatsPublicPath(stats.publicPath),
48
50
  namedChunkGroups,
49
51
  entrypoints,
50
52
  generator: 'loadable-components',
@@ -54,13 +54,7 @@ function hydrate_hydrateRoot(App, context, ModernRender, ModernHydrate) {
54
54
  });
55
55
  return ModernHydrate(wrapRuntimeContextProvider(/*#__PURE__*/ jsx(SSRApp, {}), hydrateContext));
56
56
  });
57
- const runtimeConsole = Reflect.get(globalThis, 'console');
58
- if (null !== runtimeConsole && 'object' == typeof runtimeConsole) {
59
- const warn = Reflect.get(runtimeConsole, 'warn');
60
- if ('function' == typeof warn) Reflect.apply(warn, runtimeConsole, [
61
- `unknow render level: ${renderLevel}, execute render()`
62
- ]);
63
- }
57
+ console.warn(`unknow render level: ${renderLevel}, execute render()`);
64
58
  return ModernRender(wrapRuntimeContextProvider(App, context));
65
59
  }
66
60
  }
@@ -1,8 +1,7 @@
1
1
  import "node:module";
2
+ import { getGlobalInternalRuntimeContext, getInitialContext } from "@modern-js/runtime/context";
2
3
  import { parseCookie } from "cookie";
3
4
  import { createRoot } from "react-dom/client";
4
- import { getGlobalInternalRuntimeContext } from "../context/index.mjs";
5
- import { getInitialContext } from "../context/runtime.mjs";
6
5
  import { wrapRuntimeContextProvider } from "../react/wrapper.mjs";
7
6
  import { hydrateRoot, hydrateWithReact } from "./hydrate.mjs";
8
7
  const IS_REACT18 = 'true' === process.env.IS_REACT18;
@@ -43,6 +43,6 @@ function getGlobalBasename() {
43
43
  }
44
44
  export { DefaultNotFound } from "../../router/runtime/DefaultNotFound.mjs";
45
45
  export { modifyRoutes, onAfterCreateRouter, onAfterHydrateRouter, onBeforeCreateRouter, onBeforeCreateRoutes, onBeforeHydrateRouter, routerProviderRegistryHooks } from "../../router/runtime/hooks.mjs";
46
- export { InternalRuntimeContext, RuntimeComponentResolverContext, RuntimeContext, getInitialContext } from "./runtime.mjs";
46
+ export { InternalRuntimeContext, ReactRuntimeContext, RuntimeComponentResolverContext, RuntimeContext, getInitialContext, useRuntimeContext } from "./runtime.mjs";
47
47
  export { getServerPayload, setServerPayload } from "./serverPayload/index.mjs";
48
48
  export { getCurrentEntryName, getGlobalApp, getGlobalBasename, getGlobalEnableRsc, getGlobalInternalRuntimeContext, getGlobalIsRscClient, getGlobalLayoutApp, getGlobalRSCRoot, getGlobalRoutes, setGlobalContext, setGlobalInternalRuntimeContext };
@@ -1,2 +1,2 @@
1
1
  import "node:module";
2
- export { ReactRuntimeContext, RuntimeContext, useRuntimeContext } from "./runtime.mjs";
2
+ export { ReactRuntimeContext, RuntimeContext, useRuntimeContext } from "@modern-js/runtime/context";
@@ -1,15 +1,9 @@
1
1
  import "node:module";
2
2
  import { createContext, useContext } from "react";
3
3
  const ROUTE_MANIFEST = '_MODERNJS_ROUTE_MANIFEST';
4
- function getRuntimeReactContext(kind, create) {
5
- const key = Symbol.for(`@modern-js/runtime:react-context:v1:${kind}`);
6
- const contexts = globalThis;
7
- contexts[key] ??= create();
8
- return contexts[key];
9
- }
10
- const InternalRuntimeContext = getRuntimeReactContext('internal', ()=>createContext({}));
11
- const RuntimeContext = getRuntimeReactContext('public', ()=>createContext({}));
12
- const RuntimeComponentResolverContext = getRuntimeReactContext('component-resolver', ()=>createContext(void 0));
4
+ const InternalRuntimeContext = createContext({});
5
+ const RuntimeContext = createContext({});
6
+ const RuntimeComponentResolverContext = createContext(void 0);
13
7
  const ReactRuntimeContext = RuntimeContext;
14
8
  const useRuntimeContext = ()=>useContext(RuntimeContext);
15
9
  const getInitialContext = (isBrowser = true, routeManifest)=>{
@@ -1,3 +1,3 @@
1
1
  import "node:module";
2
+ export { RuntimeContext, useRuntimeContext } from "@modern-js/runtime/context";
2
3
  export { defineRuntimeConfig } from "./config.mjs";
3
- export { RuntimeContext, useRuntimeContext } from "./context/runtime.mjs";
@@ -1,10 +1,10 @@
1
1
  import "node:module";
2
2
  import { runtime } from "@modern-js/plugin/runtime";
3
+ import { setGlobalInternalRuntimeContext } from "@modern-js/runtime/context";
3
4
  import { merge } from "@modern-js/runtime-utils/merge";
4
5
  import { compatPlugin } from "../compat/index.mjs";
5
6
  import { handleSetupResult } from "../compat/hooks.mjs";
6
7
  import { requestContextPlugin } from "../compat/requestContext.mjs";
7
- import { setGlobalInternalRuntimeContext } from "../context/index.mjs";
8
8
  function registerPlugin(internalPlugins, runtimeConfig) {
9
9
  const { plugins = [] } = runtimeConfig || {};
10
10
  const { runtimeContext } = runtime.run({
@@ -1,8 +1,8 @@
1
1
  import "node:module";
2
+ import { getGlobalApp, getGlobalInternalRuntimeContext } from "@modern-js/runtime/context";
2
3
  import { parsedJSONFromElement } from "@modern-js/runtime-utils/parsed";
3
4
  import { isBrowser } from "../../common.mjs";
4
5
  import { ROUTER_DATA_JSON_ID, SSR_DATA_JSON_ID } from "../constants.mjs";
5
- import { getGlobalApp, getGlobalInternalRuntimeContext } from "../context/index.mjs";
6
6
  function createRoot(UserApp) {
7
7
  const App = UserApp || getGlobalApp();
8
8
  if (isBrowser()) {
@@ -1,7 +1,6 @@
1
1
  import "node:module";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import { InternalRuntimeContext, RuntimeContext, getGlobalEnableRsc, getGlobalInternalRuntimeContext } from "../context/index.mjs";
4
- import { RuntimeComponentResolverContext } from "../context/runtime.mjs";
3
+ import { InternalRuntimeContext, RuntimeComponentResolverContext, RuntimeContext, getGlobalEnableRsc, getGlobalInternalRuntimeContext } from "@modern-js/runtime/context";
5
4
  function wrapRuntimeComponentResolver(root, hooks = getGlobalInternalRuntimeContext()?.hooks) {
6
5
  return /*#__PURE__*/ jsx(RuntimeComponentResolverContext.Provider, {
7
6
  value: hooks?.resolveComponent?.call,
@@ -1,10 +1,9 @@
1
1
  import "node:module";
2
2
  import { jsx } from "react/jsx-runtime";
3
+ import { getGlobalInternalRuntimeContext, getGlobalRSCRoot, getInitialContext } from "@modern-js/runtime/context";
3
4
  import { storage } from "@modern-js/runtime-utils/node";
4
5
  import { getPathname, parseCookie, parseHeaders, parseQuery } from "@modern-js/runtime-utils/universal/request";
5
6
  import react, { Fragment } from "react";
6
- import { getGlobalInternalRuntimeContext, getGlobalRSCRoot } from "../context/index.mjs";
7
- import { getInitialContext } from "../context/runtime.mjs";
8
7
  import { getServerPayload } from "../context/serverPayload/index.mjs";
9
8
  import { createRoot } from "../react/index.mjs";
10
9
  import { CHUNK_CSS_PLACEHOLDER } from "./constants.mjs";