@modern-js/runtime 3.6.0 → 3.7.0
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/index.js +3 -1
- package/dist/cjs/core/browser/hydrate.js +12 -2
- package/dist/cjs/core/browser/index.js +6 -11
- package/dist/cjs/router/runtime/plugin.js +6 -7
- package/dist/esm/cli/ssr/index.mjs +3 -1
- package/dist/esm/core/browser/hydrate.mjs +9 -2
- package/dist/esm/core/browser/index.mjs +7 -12
- package/dist/esm/router/runtime/plugin.mjs +6 -7
- package/dist/esm-node/cli/ssr/index.mjs +3 -1
- package/dist/esm-node/core/browser/hydrate.mjs +9 -2
- package/dist/esm-node/core/browser/index.mjs +7 -12
- package/dist/esm-node/router/runtime/plugin.mjs +6 -7
- package/dist/types/core/browser/hydrate.d.ts +2 -1
- package/dist/types/core/browser/index.d.ts +2 -1
- package/package.json +8 -8
|
@@ -76,7 +76,9 @@ const ssrBuilderPlugin = (modernAPI, outputModule, exportLoadablePath)=>({
|
|
|
76
76
|
source: {
|
|
77
77
|
define: {
|
|
78
78
|
'process.env.MODERN_TARGET': isServerEnvironment ? JSON.stringify('node') : JSON.stringify('browser'),
|
|
79
|
-
'process.env.MODERN_SSR_ENV': JSON.stringify(ssrEnv)
|
|
79
|
+
'process.env.MODERN_SSR_ENV': JSON.stringify(ssrEnv),
|
|
80
|
+
'process.env.MODERN_ENABLE_HYDRATION': JSON.stringify((0, utils_namespaceObject.isUseSSRBundle)(userConfig)),
|
|
81
|
+
'process.env.MODERN_ENABLE_RSC': JSON.stringify(Boolean(userConfig.server?.rsc))
|
|
80
82
|
}
|
|
81
83
|
},
|
|
82
84
|
output: {
|
|
@@ -28,13 +28,21 @@ var __webpack_require__ = {};
|
|
|
28
28
|
var __webpack_exports__ = {};
|
|
29
29
|
__webpack_require__.r(__webpack_exports__);
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
-
hydrateRoot: ()=>hydrateRoot
|
|
31
|
+
hydrateRoot: ()=>hydrateRoot,
|
|
32
|
+
hydrateWithReact: ()=>hydrateWithReact
|
|
32
33
|
});
|
|
33
34
|
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
|
|
34
35
|
const component_namespaceObject = require("@loadable/component");
|
|
36
|
+
const constants_namespaceObject = require("@modern-js/utils/universal/constants");
|
|
37
|
+
const client_namespaceObject = require("react-dom/client");
|
|
35
38
|
const external_constants_js_namespaceObject = require("../constants.js");
|
|
36
39
|
const wrapper_js_namespaceObject = require("../react/wrapper.js");
|
|
37
40
|
const external_withCallback_js_namespaceObject = require("./withCallback.js");
|
|
41
|
+
async function hydrateWithReact(App, rootElement) {
|
|
42
|
+
return (0, client_namespaceObject.hydrateRoot)(rootElement, App, {
|
|
43
|
+
identifierPrefix: constants_namespaceObject.SSR_HYDRATION_ID_PREFIX
|
|
44
|
+
});
|
|
45
|
+
}
|
|
38
46
|
function hydrateRoot(App, context, ModernRender, ModernHydrate) {
|
|
39
47
|
const hydrateContext = {
|
|
40
48
|
...context,
|
|
@@ -78,8 +86,10 @@ function hydrateRoot(App, context, ModernRender, ModernHydrate) {
|
|
|
78
86
|
}
|
|
79
87
|
}
|
|
80
88
|
exports.hydrateRoot = __webpack_exports__.hydrateRoot;
|
|
89
|
+
exports.hydrateWithReact = __webpack_exports__.hydrateWithReact;
|
|
81
90
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
82
|
-
"hydrateRoot"
|
|
91
|
+
"hydrateRoot",
|
|
92
|
+
"hydrateWithReact"
|
|
83
93
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
84
94
|
Object.defineProperty(exports, '__esModule', {
|
|
85
95
|
value: true
|
|
@@ -37,11 +37,10 @@ var __webpack_require__ = {};
|
|
|
37
37
|
var __webpack_exports__ = {};
|
|
38
38
|
__webpack_require__.r(__webpack_exports__);
|
|
39
39
|
__webpack_require__.d(__webpack_exports__, {
|
|
40
|
-
hydrateWithReact: ()=>hydrateWithReact,
|
|
40
|
+
hydrateWithReact: ()=>external_hydrate_js_namespaceObject.hydrateWithReact,
|
|
41
41
|
render: ()=>render,
|
|
42
42
|
renderWithReact: ()=>renderWithReact
|
|
43
43
|
});
|
|
44
|
-
const constants_namespaceObject = require("@modern-js/utils/universal/constants");
|
|
45
44
|
const external_cookie_namespaceObject = require("cookie");
|
|
46
45
|
var external_cookie_default = /*#__PURE__*/ __webpack_require__.n(external_cookie_namespaceObject);
|
|
47
46
|
const client_namespaceObject = require("react-dom/client");
|
|
@@ -108,10 +107,12 @@ async function render(App, id) {
|
|
|
108
107
|
async function ModernRender(App) {
|
|
109
108
|
return renderWithReact(App, rootElement);
|
|
110
109
|
}
|
|
111
|
-
|
|
112
|
-
|
|
110
|
+
if (process.env.MODERN_ENABLE_HYDRATION && window._SSR_DATA) {
|
|
111
|
+
async function ModernHydrate(App) {
|
|
112
|
+
return (0, external_hydrate_js_namespaceObject.hydrateWithReact)(App, rootElement);
|
|
113
|
+
}
|
|
114
|
+
return (0, external_hydrate_js_namespaceObject.hydrateRoot)(App, context, ModernRender, ModernHydrate);
|
|
113
115
|
}
|
|
114
|
-
if (window._SSR_DATA) return (0, external_hydrate_js_namespaceObject.hydrateRoot)(App, context, ModernRender, ModernHydrate);
|
|
115
116
|
return ModernRender((0, wrapper_js_namespaceObject.wrapRuntimeContextProvider)(App, context));
|
|
116
117
|
}
|
|
117
118
|
throw Error('`render` function needs id in browser environment, it needs to be string or element');
|
|
@@ -121,12 +122,6 @@ async function renderWithReact(App, rootElement) {
|
|
|
121
122
|
root.render(App);
|
|
122
123
|
return root;
|
|
123
124
|
}
|
|
124
|
-
async function hydrateWithReact(App, rootElement) {
|
|
125
|
-
const root = (0, client_namespaceObject.hydrateRoot)(rootElement, App, {
|
|
126
|
-
identifierPrefix: constants_namespaceObject.SSR_HYDRATION_ID_PREFIX
|
|
127
|
-
});
|
|
128
|
-
return root;
|
|
129
|
-
}
|
|
130
125
|
exports.hydrateWithReact = __webpack_exports__.hydrateWithReact;
|
|
131
126
|
exports.render = __webpack_exports__.render;
|
|
132
127
|
exports.renderWithReact = __webpack_exports__.renderWithReact;
|
|
@@ -101,10 +101,10 @@ const routerPlugin = (userConfig = {})=>({
|
|
|
101
101
|
};
|
|
102
102
|
let cachedRouter = null;
|
|
103
103
|
const RouterWrapper = (props)=>{
|
|
104
|
-
const routerResult = useRouterCreation({
|
|
104
|
+
const routerResult = useRouterCreation(process.env.MODERN_ENABLE_RSC ? {
|
|
105
105
|
...props,
|
|
106
106
|
rscPayload: props?.rscPayload
|
|
107
|
-
}, {
|
|
107
|
+
} : props, {
|
|
108
108
|
api: api,
|
|
109
109
|
createRoutes,
|
|
110
110
|
supportHtml5History,
|
|
@@ -158,16 +158,15 @@ function useRouterCreation(props, options) {
|
|
|
158
158
|
const baseUrl = selectBasePath(location.pathname).replace(/^\/*/, '/');
|
|
159
159
|
const _basename = '/' === baseUrl ? (0, external_utils_js_namespaceObject.urlJoin)(baseUrl, runtimeContext._internalRouterBaseName || basename || '') : baseUrl;
|
|
160
160
|
const { unstable_getBlockNavState: getBlockNavState } = runtimeContext;
|
|
161
|
-
const rscPayload = props?.rscPayload ? safeUse(props.rscPayload) : null;
|
|
162
|
-
let hydrationData = window._ROUTER_DATA || rscPayload;
|
|
161
|
+
const rscPayload = process.env.MODERN_ENABLE_RSC && props?.rscPayload ? safeUse(props.rscPayload) : null;
|
|
162
|
+
let hydrationData = process.env.MODERN_ENABLE_RSC ? window._ROUTER_DATA || rscPayload : window._ROUTER_DATA;
|
|
163
163
|
return (0, external_react_namespaceObject.useMemo)(()=>{
|
|
164
164
|
if (hydrationData?.errors) hydrationData = {
|
|
165
165
|
...hydrationData,
|
|
166
166
|
errors: (0, external_utils_js_namespaceObject.deserializeErrors)(hydrationData.errors)
|
|
167
167
|
};
|
|
168
|
-
const isRscClient = (0, index_js_namespaceObject.getGlobalIsRscClient)();
|
|
169
168
|
let routes = null;
|
|
170
|
-
routes =
|
|
169
|
+
routes = process.env.MODERN_ENABLE_RSC && (0, index_js_namespaceObject.getGlobalIsRscClient)() ? createRoutes ? createRoutes() : (0, external_utils_js_namespaceObject.createRouteObjectsFromConfig)({
|
|
171
170
|
routesConfig: finalRouteConfig
|
|
172
171
|
}) : createRoutes ? createRoutes() : (0, router_namespaceObject.createRoutesFromElements)((0, external_utils_js_namespaceObject.renderRoutes)({
|
|
173
172
|
routesConfig: finalRouteConfig,
|
|
@@ -175,7 +174,7 @@ function useRouterCreation(props, options) {
|
|
|
175
174
|
}));
|
|
176
175
|
if (!routes) routes = [];
|
|
177
176
|
const hooks = api.getHooks();
|
|
178
|
-
if (rscPayload) try {
|
|
177
|
+
if (process.env.MODERN_ENABLE_RSC && rscPayload) try {
|
|
179
178
|
const router = (0, external_rsc_router_js_namespaceObject.createClientRouterFromPayload)(rscPayload, routes, _basename);
|
|
180
179
|
return {
|
|
181
180
|
router,
|
|
@@ -32,7 +32,9 @@ const ssrBuilderPlugin = (modernAPI, outputModule, exportLoadablePath)=>({
|
|
|
32
32
|
source: {
|
|
33
33
|
define: {
|
|
34
34
|
'process.env.MODERN_TARGET': isServerEnvironment ? JSON.stringify('node') : JSON.stringify('browser'),
|
|
35
|
-
'process.env.MODERN_SSR_ENV': JSON.stringify(ssrEnv)
|
|
35
|
+
'process.env.MODERN_SSR_ENV': JSON.stringify(ssrEnv),
|
|
36
|
+
'process.env.MODERN_ENABLE_HYDRATION': JSON.stringify(isUseSSRBundle(userConfig)),
|
|
37
|
+
'process.env.MODERN_ENABLE_RSC': JSON.stringify(Boolean(userConfig.server?.rsc))
|
|
36
38
|
}
|
|
37
39
|
},
|
|
38
40
|
output: {
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { loadableReady } from "@loadable/component";
|
|
3
|
+
import { SSR_HYDRATION_ID_PREFIX } from "@modern-js/utils/universal/constants";
|
|
4
|
+
import { hydrateRoot } from "react-dom/client";
|
|
3
5
|
import { RenderLevel } from "../constants.mjs";
|
|
4
6
|
import { wrapRuntimeContextProvider } from "../react/wrapper.mjs";
|
|
5
7
|
import { WithCallback } from "./withCallback.mjs";
|
|
6
|
-
function
|
|
8
|
+
async function hydrateWithReact(App, rootElement) {
|
|
9
|
+
return hydrateRoot(rootElement, App, {
|
|
10
|
+
identifierPrefix: SSR_HYDRATION_ID_PREFIX
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function hydrate_hydrateRoot(App, context, ModernRender, ModernHydrate) {
|
|
7
14
|
const hydrateContext = {
|
|
8
15
|
...context,
|
|
9
16
|
get routes () {
|
|
@@ -45,4 +52,4 @@ function hydrateRoot(App, context, ModernRender, ModernHydrate) {
|
|
|
45
52
|
return ModernRender(wrapRuntimeContextProvider(App, context));
|
|
46
53
|
}
|
|
47
54
|
}
|
|
48
|
-
export { hydrateRoot };
|
|
55
|
+
export { hydrateWithReact, hydrate_hydrateRoot as hydrateRoot };
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { SSR_HYDRATION_ID_PREFIX } from "@modern-js/utils/universal/constants";
|
|
2
1
|
import cookie from "cookie";
|
|
3
|
-
import { createRoot
|
|
2
|
+
import { createRoot } from "react-dom/client";
|
|
4
3
|
import { getGlobalInternalRuntimeContext } from "../context/index.mjs";
|
|
5
4
|
import { getInitialContext } from "../context/runtime.mjs";
|
|
6
5
|
import { wrapRuntimeContextProvider } from "../react/wrapper.mjs";
|
|
7
|
-
import { hydrateRoot
|
|
6
|
+
import { hydrateRoot, hydrateWithReact } from "./hydrate.mjs";
|
|
8
7
|
const getQuery = ()=>window.location.search.substring(1).split('&').reduce((res, item)=>{
|
|
9
8
|
const [key, value] = item.split('=');
|
|
10
9
|
if (key) res[key] = value;
|
|
@@ -64,10 +63,12 @@ async function render(App, id) {
|
|
|
64
63
|
async function ModernRender(App) {
|
|
65
64
|
return renderWithReact(App, rootElement);
|
|
66
65
|
}
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
if (process.env.MODERN_ENABLE_HYDRATION && window._SSR_DATA) {
|
|
67
|
+
async function ModernHydrate(App) {
|
|
68
|
+
return hydrateWithReact(App, rootElement);
|
|
69
|
+
}
|
|
70
|
+
return hydrateRoot(App, context, ModernRender, ModernHydrate);
|
|
69
71
|
}
|
|
70
|
-
if (window._SSR_DATA) return external_hydrate_mjs_hydrateRoot(App, context, ModernRender, ModernHydrate);
|
|
71
72
|
return ModernRender(wrapRuntimeContextProvider(App, context));
|
|
72
73
|
}
|
|
73
74
|
throw Error('`render` function needs id in browser environment, it needs to be string or element');
|
|
@@ -77,10 +78,4 @@ async function renderWithReact(App, rootElement) {
|
|
|
77
78
|
root.render(App);
|
|
78
79
|
return root;
|
|
79
80
|
}
|
|
80
|
-
async function hydrateWithReact(App, rootElement) {
|
|
81
|
-
const root = hydrateRoot(rootElement, App, {
|
|
82
|
-
identifierPrefix: SSR_HYDRATION_ID_PREFIX
|
|
83
|
-
});
|
|
84
|
-
return root;
|
|
85
|
-
}
|
|
86
81
|
export { hydrateWithReact, render, renderWithReact };
|
|
@@ -66,10 +66,10 @@ const routerPlugin = (userConfig = {})=>({
|
|
|
66
66
|
};
|
|
67
67
|
let cachedRouter = null;
|
|
68
68
|
const RouterWrapper = (props)=>{
|
|
69
|
-
const routerResult = useRouterCreation({
|
|
69
|
+
const routerResult = useRouterCreation(process.env.MODERN_ENABLE_RSC ? {
|
|
70
70
|
...props,
|
|
71
71
|
rscPayload: props?.rscPayload
|
|
72
|
-
}, {
|
|
72
|
+
} : props, {
|
|
73
73
|
api: api,
|
|
74
74
|
createRoutes,
|
|
75
75
|
supportHtml5History,
|
|
@@ -123,16 +123,15 @@ function useRouterCreation(props, options) {
|
|
|
123
123
|
const baseUrl = selectBasePath(location.pathname).replace(/^\/*/, '/');
|
|
124
124
|
const _basename = '/' === baseUrl ? urlJoin(baseUrl, runtimeContext._internalRouterBaseName || basename || '') : baseUrl;
|
|
125
125
|
const { unstable_getBlockNavState: getBlockNavState } = runtimeContext;
|
|
126
|
-
const rscPayload = props?.rscPayload ? safeUse(props.rscPayload) : null;
|
|
127
|
-
let hydrationData = window._ROUTER_DATA || rscPayload;
|
|
126
|
+
const rscPayload = process.env.MODERN_ENABLE_RSC && props?.rscPayload ? safeUse(props.rscPayload) : null;
|
|
127
|
+
let hydrationData = process.env.MODERN_ENABLE_RSC ? window._ROUTER_DATA || rscPayload : window._ROUTER_DATA;
|
|
128
128
|
return (0, __rspack_external_react.useMemo)(()=>{
|
|
129
129
|
if (hydrationData?.errors) hydrationData = {
|
|
130
130
|
...hydrationData,
|
|
131
131
|
errors: deserializeErrors(hydrationData.errors)
|
|
132
132
|
};
|
|
133
|
-
const isRscClient = getGlobalIsRscClient();
|
|
134
133
|
let routes = null;
|
|
135
|
-
routes =
|
|
134
|
+
routes = process.env.MODERN_ENABLE_RSC && getGlobalIsRscClient() ? createRoutes ? createRoutes() : createRouteObjectsFromConfig({
|
|
136
135
|
routesConfig: finalRouteConfig
|
|
137
136
|
}) : createRoutes ? createRoutes() : createRoutesFromElements(renderRoutes({
|
|
138
137
|
routesConfig: finalRouteConfig,
|
|
@@ -140,7 +139,7 @@ function useRouterCreation(props, options) {
|
|
|
140
139
|
}));
|
|
141
140
|
if (!routes) routes = [];
|
|
142
141
|
const hooks = api.getHooks();
|
|
143
|
-
if (rscPayload) try {
|
|
142
|
+
if (process.env.MODERN_ENABLE_RSC && rscPayload) try {
|
|
144
143
|
const router = createClientRouterFromPayload(rscPayload, routes, _basename);
|
|
145
144
|
return {
|
|
146
145
|
router,
|
|
@@ -34,7 +34,9 @@ const ssrBuilderPlugin = (modernAPI, outputModule, exportLoadablePath)=>({
|
|
|
34
34
|
source: {
|
|
35
35
|
define: {
|
|
36
36
|
'process.env.MODERN_TARGET': isServerEnvironment ? JSON.stringify('node') : JSON.stringify('browser'),
|
|
37
|
-
'process.env.MODERN_SSR_ENV': JSON.stringify(ssrEnv)
|
|
37
|
+
'process.env.MODERN_SSR_ENV': JSON.stringify(ssrEnv),
|
|
38
|
+
'process.env.MODERN_ENABLE_HYDRATION': JSON.stringify(isUseSSRBundle(userConfig)),
|
|
39
|
+
'process.env.MODERN_ENABLE_RSC': JSON.stringify(Boolean(userConfig.server?.rsc))
|
|
38
40
|
}
|
|
39
41
|
},
|
|
40
42
|
output: {
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import "node:module";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
import { loadableReady } from "@loadable/component";
|
|
4
|
+
import { SSR_HYDRATION_ID_PREFIX } from "@modern-js/utils/universal/constants";
|
|
5
|
+
import { hydrateRoot } from "react-dom/client";
|
|
4
6
|
import { RenderLevel } from "../constants.mjs";
|
|
5
7
|
import { wrapRuntimeContextProvider } from "../react/wrapper.mjs";
|
|
6
8
|
import { WithCallback } from "./withCallback.mjs";
|
|
7
|
-
function
|
|
9
|
+
async function hydrateWithReact(App, rootElement) {
|
|
10
|
+
return hydrateRoot(rootElement, App, {
|
|
11
|
+
identifierPrefix: SSR_HYDRATION_ID_PREFIX
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
function hydrate_hydrateRoot(App, context, ModernRender, ModernHydrate) {
|
|
8
15
|
const hydrateContext = {
|
|
9
16
|
...context,
|
|
10
17
|
get routes () {
|
|
@@ -46,4 +53,4 @@ function hydrateRoot(App, context, ModernRender, ModernHydrate) {
|
|
|
46
53
|
return ModernRender(wrapRuntimeContextProvider(App, context));
|
|
47
54
|
}
|
|
48
55
|
}
|
|
49
|
-
export { hydrateRoot };
|
|
56
|
+
export { hydrateWithReact, hydrate_hydrateRoot as hydrateRoot };
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import "node:module";
|
|
2
|
-
import { SSR_HYDRATION_ID_PREFIX } from "@modern-js/utils/universal/constants";
|
|
3
2
|
import cookie from "cookie";
|
|
4
|
-
import { createRoot
|
|
3
|
+
import { createRoot } from "react-dom/client";
|
|
5
4
|
import { getGlobalInternalRuntimeContext } from "../context/index.mjs";
|
|
6
5
|
import { getInitialContext } from "../context/runtime.mjs";
|
|
7
6
|
import { wrapRuntimeContextProvider } from "../react/wrapper.mjs";
|
|
8
|
-
import { hydrateRoot
|
|
7
|
+
import { hydrateRoot, hydrateWithReact } from "./hydrate.mjs";
|
|
9
8
|
const getQuery = ()=>window.location.search.substring(1).split('&').reduce((res, item)=>{
|
|
10
9
|
const [key, value] = item.split('=');
|
|
11
10
|
if (key) res[key] = value;
|
|
@@ -65,10 +64,12 @@ async function render(App, id) {
|
|
|
65
64
|
async function ModernRender(App) {
|
|
66
65
|
return renderWithReact(App, rootElement);
|
|
67
66
|
}
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
if (process.env.MODERN_ENABLE_HYDRATION && window._SSR_DATA) {
|
|
68
|
+
async function ModernHydrate(App) {
|
|
69
|
+
return hydrateWithReact(App, rootElement);
|
|
70
|
+
}
|
|
71
|
+
return hydrateRoot(App, context, ModernRender, ModernHydrate);
|
|
70
72
|
}
|
|
71
|
-
if (window._SSR_DATA) return external_hydrate_mjs_hydrateRoot(App, context, ModernRender, ModernHydrate);
|
|
72
73
|
return ModernRender(wrapRuntimeContextProvider(App, context));
|
|
73
74
|
}
|
|
74
75
|
throw Error('`render` function needs id in browser environment, it needs to be string or element');
|
|
@@ -78,10 +79,4 @@ async function renderWithReact(App, rootElement) {
|
|
|
78
79
|
root.render(App);
|
|
79
80
|
return root;
|
|
80
81
|
}
|
|
81
|
-
async function hydrateWithReact(App, rootElement) {
|
|
82
|
-
const root = hydrateRoot(rootElement, App, {
|
|
83
|
-
identifierPrefix: SSR_HYDRATION_ID_PREFIX
|
|
84
|
-
});
|
|
85
|
-
return root;
|
|
86
|
-
}
|
|
87
82
|
export { hydrateWithReact, render, renderWithReact };
|
|
@@ -67,10 +67,10 @@ const routerPlugin = (userConfig = {})=>({
|
|
|
67
67
|
};
|
|
68
68
|
let cachedRouter = null;
|
|
69
69
|
const RouterWrapper = (props)=>{
|
|
70
|
-
const routerResult = useRouterCreation({
|
|
70
|
+
const routerResult = useRouterCreation(process.env.MODERN_ENABLE_RSC ? {
|
|
71
71
|
...props,
|
|
72
72
|
rscPayload: props?.rscPayload
|
|
73
|
-
}, {
|
|
73
|
+
} : props, {
|
|
74
74
|
api: api,
|
|
75
75
|
createRoutes,
|
|
76
76
|
supportHtml5History,
|
|
@@ -124,16 +124,15 @@ function useRouterCreation(props, options) {
|
|
|
124
124
|
const baseUrl = selectBasePath(location.pathname).replace(/^\/*/, '/');
|
|
125
125
|
const _basename = '/' === baseUrl ? urlJoin(baseUrl, runtimeContext._internalRouterBaseName || basename || '') : baseUrl;
|
|
126
126
|
const { unstable_getBlockNavState: getBlockNavState } = runtimeContext;
|
|
127
|
-
const rscPayload = props?.rscPayload ? safeUse(props.rscPayload) : null;
|
|
128
|
-
let hydrationData = window._ROUTER_DATA || rscPayload;
|
|
127
|
+
const rscPayload = process.env.MODERN_ENABLE_RSC && props?.rscPayload ? safeUse(props.rscPayload) : null;
|
|
128
|
+
let hydrationData = process.env.MODERN_ENABLE_RSC ? window._ROUTER_DATA || rscPayload : window._ROUTER_DATA;
|
|
129
129
|
return (0, __rspack_external_react.useMemo)(()=>{
|
|
130
130
|
if (hydrationData?.errors) hydrationData = {
|
|
131
131
|
...hydrationData,
|
|
132
132
|
errors: deserializeErrors(hydrationData.errors)
|
|
133
133
|
};
|
|
134
|
-
const isRscClient = getGlobalIsRscClient();
|
|
135
134
|
let routes = null;
|
|
136
|
-
routes =
|
|
135
|
+
routes = process.env.MODERN_ENABLE_RSC && getGlobalIsRscClient() ? createRoutes ? createRoutes() : createRouteObjectsFromConfig({
|
|
137
136
|
routesConfig: finalRouteConfig
|
|
138
137
|
}) : createRoutes ? createRoutes() : createRoutesFromElements(renderRoutes({
|
|
139
138
|
routesConfig: finalRouteConfig,
|
|
@@ -141,7 +140,7 @@ function useRouterCreation(props, options) {
|
|
|
141
140
|
}));
|
|
142
141
|
if (!routes) routes = [];
|
|
143
142
|
const hooks = api.getHooks();
|
|
144
|
-
if (rscPayload) try {
|
|
143
|
+
if (process.env.MODERN_ENABLE_RSC && rscPayload) try {
|
|
145
144
|
const router = createClientRouterFromPayload(rscPayload, routes, _basename);
|
|
146
145
|
return {
|
|
147
146
|
router,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import type
|
|
2
|
+
import { type Root } from 'react-dom/client';
|
|
3
3
|
import type { TRuntimeContext } from '../context/runtime';
|
|
4
|
+
export declare function hydrateWithReact(App: React.ReactElement, rootElement: HTMLElement): Promise<Root>;
|
|
4
5
|
export declare function hydrateRoot(App: React.ReactElement, context: TRuntimeContext, ModernRender: (App: React.ReactElement) => Promise<HTMLElement | Root>, ModernHydrate: (App: React.ReactElement) => Promise<HTMLElement | Root>): Promise<HTMLElement | Root>;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
+
import { hydrateWithReact } from './hydrate';
|
|
3
|
+
export { hydrateWithReact };
|
|
2
4
|
export type RenderFunc = typeof render;
|
|
3
5
|
export declare function render(App: React.ReactElement<{
|
|
4
6
|
basename: string;
|
|
5
7
|
}>, id?: HTMLElement | string): Promise<HTMLElement | import("react-dom/client").Root>;
|
|
6
8
|
export declare function renderWithReact(App: React.ReactElement, rootElement: HTMLElement): Promise<import("react-dom/client").Root>;
|
|
7
|
-
export declare function hydrateWithReact(App: React.ReactElement, rootElement: HTMLElement): Promise<import("react-dom/client").Root>;
|
package/package.json
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"modern",
|
|
16
16
|
"modern.js"
|
|
17
17
|
],
|
|
18
|
-
"version": "3.
|
|
18
|
+
"version": "3.7.0",
|
|
19
19
|
"engines": {
|
|
20
20
|
"node": ">=20"
|
|
21
21
|
},
|
|
@@ -215,12 +215,12 @@
|
|
|
215
215
|
"isbot": "3.8.0",
|
|
216
216
|
"react-helmet": "^6.1.0",
|
|
217
217
|
"react-is": "^18.3.1",
|
|
218
|
-
"@modern-js/plugin": "3.
|
|
219
|
-
"@modern-js/plugin-data-loader": "3.
|
|
220
|
-
"@modern-js/render": "3.
|
|
221
|
-
"@modern-js/runtime-utils": "3.
|
|
222
|
-
"@modern-js/types": "3.
|
|
223
|
-
"@modern-js/utils": "3.
|
|
218
|
+
"@modern-js/plugin": "3.7.0",
|
|
219
|
+
"@modern-js/plugin-data-loader": "3.7.0",
|
|
220
|
+
"@modern-js/render": "3.7.0",
|
|
221
|
+
"@modern-js/runtime-utils": "3.7.0",
|
|
222
|
+
"@modern-js/types": "3.7.0",
|
|
223
|
+
"@modern-js/utils": "3.7.0"
|
|
224
224
|
},
|
|
225
225
|
"peerDependencies": {
|
|
226
226
|
"react": ">=18.0.0",
|
|
@@ -240,7 +240,7 @@
|
|
|
240
240
|
"react-dom": "^19.2.7",
|
|
241
241
|
"ts-node": "^10.9.2",
|
|
242
242
|
"typescript": "^5",
|
|
243
|
-
"@modern-js/app-tools": "3.
|
|
243
|
+
"@modern-js/app-tools": "3.7.0",
|
|
244
244
|
"@modern-js/rslib": "2.68.10",
|
|
245
245
|
"@scripts/rstest-config": "2.66.0"
|
|
246
246
|
},
|