@bleedingdev/modern-js-runtime 3.9.0-ultramodern.16 → 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.
- package/dist/cjs/cli/ssr/loadable-bundler-plugin.js +2 -0
- package/dist/cjs/core/browser/hydrate.js +1 -7
- package/dist/cjs/core/browser/index.js +4 -5
- package/dist/cjs/core/context/index.js +8 -2
- package/dist/cjs/core/context/public.js +4 -4
- package/dist/cjs/core/context/runtime.js +3 -9
- package/dist/cjs/core/index.js +3 -3
- package/dist/cjs/core/plugin/index.js +2 -2
- package/dist/cjs/core/react/index.js +3 -3
- package/dist/cjs/core/react/wrapper.js +7 -8
- package/dist/cjs/core/server/requestHandler.js +6 -7
- package/dist/cjs/core/server/stream/createReadableStream.js +20 -9
- package/dist/cjs/core/server/stream/createReadableStream.worker.js +21 -10
- package/dist/cjs/core/server/string/index.js +6 -4
- package/dist/cjs/exports/head.js +2 -2
- package/dist/cjs/internal.js +2 -2
- package/dist/cjs/router/runtime/PrefetchLink.js +4 -4
- package/dist/cjs/router/runtime/plugin.js +9 -9
- package/dist/cjs/router/runtime/plugin.node.js +6 -6
- package/dist/esm/cli/ssr/loadable-bundler-plugin.mjs +2 -0
- package/dist/esm/core/browser/hydrate.mjs +1 -7
- package/dist/esm/core/browser/index.mjs +1 -2
- package/dist/esm/core/context/index.mjs +1 -1
- package/dist/esm/core/context/public.mjs +1 -1
- package/dist/esm/core/context/runtime.mjs +3 -9
- package/dist/esm/core/index.mjs +1 -1
- package/dist/esm/core/plugin/index.mjs +1 -1
- package/dist/esm/core/react/index.mjs +1 -1
- package/dist/esm/core/react/wrapper.mjs +1 -2
- package/dist/esm/core/server/requestHandler.mjs +1 -2
- package/dist/esm/core/server/stream/createReadableStream.mjs +16 -5
- package/dist/esm/core/server/stream/createReadableStream.worker.mjs +19 -8
- package/dist/esm/core/server/string/index.mjs +3 -1
- package/dist/esm/exports/head.mjs +1 -1
- package/dist/esm/internal.mjs +1 -1
- package/dist/esm/router/runtime/PrefetchLink.mjs +1 -1
- package/dist/esm/router/runtime/plugin.mjs +1 -1
- package/dist/esm/router/runtime/plugin.node.mjs +1 -1
- package/dist/esm-node/cli/ssr/loadable-bundler-plugin.mjs +2 -0
- package/dist/esm-node/core/browser/hydrate.mjs +1 -7
- package/dist/esm-node/core/browser/index.mjs +1 -2
- package/dist/esm-node/core/context/index.mjs +1 -1
- package/dist/esm-node/core/context/public.mjs +1 -1
- package/dist/esm-node/core/context/runtime.mjs +3 -9
- package/dist/esm-node/core/index.mjs +1 -1
- package/dist/esm-node/core/plugin/index.mjs +1 -1
- package/dist/esm-node/core/react/index.mjs +1 -1
- package/dist/esm-node/core/react/wrapper.mjs +1 -2
- package/dist/esm-node/core/server/requestHandler.mjs +1 -2
- package/dist/esm-node/core/server/stream/createReadableStream.mjs +16 -5
- package/dist/esm-node/core/server/stream/createReadableStream.worker.mjs +19 -8
- package/dist/esm-node/core/server/string/index.mjs +3 -1
- package/dist/esm-node/exports/head.mjs +1 -1
- package/dist/esm-node/internal.mjs +1 -1
- package/dist/esm-node/router/runtime/PrefetchLink.mjs +1 -1
- package/dist/esm-node/router/runtime/plugin.mjs +1 -1
- package/dist/esm-node/router/runtime/plugin.node.mjs +1 -1
- package/dist/types/core/context/index.d.ts +1 -1
- package/dist/types/core/context/public.d.ts +1 -1
- package/dist/types/core/index.d.ts +1 -1
- package/dist/types/core/react/wrapper.d.ts +1 -1
- package/dist/types/core/server/requestHandler.d.ts +1 -1
- package/dist/types/core/server/stream/shared.d.ts +6 -1
- package/dist/types/internal.d.ts +1 -1
- package/package.json +10 -10
- package/rslib.config.mts +3 -0
- package/rstest.config.mts +0 -4
- package/dist/cjs/rsc/server.worker.js +0 -62
- package/dist/esm/rsc/server.worker.mjs +0 -1
- package/dist/esm-node/rsc/server.worker.mjs +0 -2
- 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,
|
|
96
|
-
globalApp: (0,
|
|
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,
|
|
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)(
|
|
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,
|
|
158
|
-
let hydrationData = "u" > typeof __MODERN_ENABLE_RSC__ ? __MODERN_ENABLE_RSC__ ? window._ROUTER_DATA || rscPayload : window._ROUTER_DATA : true === (0,
|
|
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,
|
|
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,
|
|
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,
|
|
85
|
-
globalApp: (0,
|
|
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,
|
|
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,
|
|
157
|
+
const enableRsc = (0, context_namespaceObject.getGlobalEnableRsc)();
|
|
158
158
|
return (props)=>{
|
|
159
|
-
const context = (0, external_react_namespaceObject.useContext)(
|
|
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
|
-
|
|
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 "
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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)=>{
|
package/dist/esm/core/index.mjs
CHANGED
|
@@ -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 "
|
|
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
|
-
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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 {
|
|
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, {
|
package/dist/esm/internal.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { InternalRuntimeContext } from "
|
|
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
|
-
|
|
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 "
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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,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 "
|
|
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";
|