@modern-js/runtime 2.0.0-beta.0 → 2.0.0-beta.1
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/CHANGELOG.md +77 -0
- package/dist/js/modern/cli/index.js +3 -5
- package/dist/js/modern/core/app-config.js +2 -1
- package/dist/js/modern/core/compatible.js +63 -46
- package/dist/js/modern/core/index.js +3 -2
- package/dist/js/modern/core/loader/loaderManager.js +12 -34
- package/dist/js/modern/core/loader/useLoader.js +8 -26
- package/dist/js/modern/core/plugin.js +6 -28
- package/dist/js/modern/document/Body.js +17 -0
- package/dist/js/modern/document/DocumentContext.js +6 -0
- package/dist/js/modern/document/DocumentStructrueContext.js +7 -0
- package/dist/js/modern/document/Head.js +24 -0
- package/dist/js/modern/document/Html.js +92 -0
- package/dist/js/modern/document/Root.js +31 -0
- package/dist/js/modern/document/Scripts.js +10 -0
- package/dist/js/modern/document/cli/index.js +130 -0
- package/dist/js/modern/document/constants.js +19 -0
- package/dist/js/modern/document/index.js +8 -0
- package/dist/js/modern/index.js +1 -1
- package/dist/js/modern/router/cli/index.js +0 -16
- package/dist/js/modern/router/runtime/plugin.js +0 -9
- package/dist/js/modern/router/runtime/plugin.node.js +18 -24
- package/dist/js/modern/router/runtime/root/index.js +19 -0
- package/dist/js/modern/router/runtime/root/load.js +61 -0
- package/dist/js/modern/router/runtime/utils.js +16 -35
- package/dist/js/modern/router/runtime/withRouter.js +1 -3
- package/dist/js/modern/ssr/cli/index.js +2 -23
- package/dist/js/modern/ssr/index.js +23 -34
- package/dist/js/modern/ssr/index.node.js +0 -13
- package/dist/js/modern/ssr/prefetch.js +0 -7
- package/dist/js/modern/ssr/react/prerender/index.js +2 -23
- package/dist/js/modern/ssr/react/prerender/util.js +2 -17
- package/dist/js/modern/ssr/react/withCallback/index.js +0 -1
- package/dist/js/modern/ssr/serverRender/helmet.js +12 -20
- package/dist/js/modern/ssr/serverRender/index.js +1 -2
- package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.after.js +5 -5
- package/dist/js/modern/ssr/serverRender/renderToStream/bulidTemplate.before.js +45 -11
- package/dist/js/modern/ssr/serverRender/renderToStream/index.js +6 -39
- package/dist/js/modern/ssr/serverRender/renderToStream/loadable.js +0 -2
- package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +26 -15
- package/dist/js/modern/ssr/serverRender/renderToStream/template.js +14 -18
- package/dist/js/modern/ssr/serverRender/renderToString/entry.js +2 -34
- package/dist/js/modern/ssr/serverRender/renderToString/index.js +0 -2
- package/dist/js/modern/ssr/serverRender/renderToString/loadable.js +0 -10
- package/dist/js/modern/ssr/serverRender/renderToString/reduce.js +0 -2
- package/dist/js/modern/ssr/serverRender/renderToString/template.js +0 -15
- package/dist/js/modern/ssr/serverRender/renderToString/type.js +0 -1
- package/dist/js/modern/ssr/serverRender/utils.js +2 -6
- package/dist/js/modern/ssr/utils.js +0 -11
- package/dist/js/modern/state/cli/index.js +0 -10
- package/dist/js/modern/state/runtime/plugin.js +1 -14
- package/dist/js/node/cli/index.js +3 -13
- package/dist/js/node/common.js +0 -2
- package/dist/js/node/core/app-config.js +2 -5
- package/dist/js/node/core/compatible.js +63 -64
- package/dist/js/node/core/index.js +0 -16
- package/dist/js/node/core/loader/index.js +0 -2
- package/dist/js/node/core/loader/loaderManager.js +12 -37
- package/dist/js/node/core/loader/useLoader.js +8 -31
- package/dist/js/node/core/plugin.js +5 -34
- package/dist/js/node/document/Body.js +26 -0
- package/dist/js/node/document/DocumentContext.js +14 -0
- package/dist/js/node/document/DocumentStructrueContext.js +15 -0
- package/dist/js/node/document/Head.js +33 -0
- package/dist/js/node/document/Html.js +98 -0
- package/dist/js/node/document/Root.js +41 -0
- package/dist/js/node/document/Scripts.js +17 -0
- package/dist/js/node/document/cli/index.js +140 -0
- package/dist/js/node/document/constants.js +36 -0
- package/dist/js/node/document/index.js +93 -0
- package/dist/js/node/exports/head.js +0 -5
- package/dist/js/node/exports/loadable.js +0 -5
- package/dist/js/node/exports/server.js +0 -2
- package/dist/js/node/exports/styled.js +0 -5
- package/dist/js/node/index.js +0 -8
- package/dist/js/node/router/cli/index.js +0 -20
- package/dist/js/node/router/index.js +0 -4
- package/dist/js/node/router/runtime/DefaultNotFound.js +1 -5
- package/dist/js/node/router/runtime/index.js +0 -5
- package/dist/js/node/router/runtime/plugin.js +0 -17
- package/dist/js/node/router/runtime/plugin.node.js +16 -38
- package/dist/js/node/router/runtime/root/index.js +26 -0
- package/dist/js/node/router/runtime/root/load.js +69 -0
- package/dist/js/node/router/runtime/utils.js +16 -44
- package/dist/js/node/router/runtime/withRouter.js +0 -9
- package/dist/js/node/runtime-context.js +0 -2
- package/dist/js/node/ssr/cli/index.js +2 -26
- package/dist/js/node/ssr/index.js +23 -45
- package/dist/js/node/ssr/index.node.js +0 -23
- package/dist/js/node/ssr/prefetch.js +0 -11
- package/dist/js/node/ssr/react/index.js +0 -2
- package/dist/js/node/ssr/react/nossr/index.js +0 -6
- package/dist/js/node/ssr/react/prerender/index.js +2 -30
- package/dist/js/node/ssr/react/prerender/util.js +2 -25
- package/dist/js/node/ssr/react/withCallback/index.js +1 -4
- package/dist/js/node/ssr/serverRender/helmet.js +13 -20
- package/dist/js/node/ssr/serverRender/index.js +1 -4
- package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.after.js +5 -9
- package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.share.js +0 -1
- package/dist/js/node/ssr/serverRender/renderToStream/bulidTemplate.before.js +43 -15
- package/dist/js/node/ssr/serverRender/renderToStream/index.js +6 -48
- package/dist/js/node/ssr/serverRender/renderToStream/loadable.js +0 -4
- package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +26 -17
- package/dist/js/node/ssr/serverRender/renderToStream/styledComponent.js +0 -2
- package/dist/js/node/ssr/serverRender/renderToStream/template.js +16 -23
- package/dist/js/node/ssr/serverRender/renderToString/entry.js +2 -51
- package/dist/js/node/ssr/serverRender/renderToString/index.js +0 -10
- package/dist/js/node/ssr/serverRender/renderToString/loadable.js +0 -14
- package/dist/js/node/ssr/serverRender/renderToString/reduce.js +0 -3
- package/dist/js/node/ssr/serverRender/renderToString/styledComponent.js +0 -3
- package/dist/js/node/ssr/serverRender/renderToString/template.js +0 -18
- package/dist/js/node/ssr/serverRender/renderToString/type.js +0 -1
- package/dist/js/node/ssr/serverRender/types.js +0 -1
- package/dist/js/node/ssr/serverRender/utils.js +2 -8
- package/dist/js/node/ssr/utils.js +0 -20
- package/dist/js/node/state/cli/index.js +0 -15
- package/dist/js/node/state/index.js +0 -4
- package/dist/js/node/state/plugins.js +0 -11
- package/dist/js/node/state/runtime/index.js +0 -7
- package/dist/js/node/state/runtime/plugin.js +1 -25
- package/dist/js/treeshaking/cli/index.js +3 -3
- package/dist/js/treeshaking/core/app-config.js +2 -1
- package/dist/js/treeshaking/core/compatible.js +66 -63
- package/dist/js/treeshaking/core/index.js +3 -2
- package/dist/js/treeshaking/core/loader/loaderManager.js +19 -51
- package/dist/js/treeshaking/core/loader/useLoader.js +11 -28
- package/dist/js/treeshaking/core/plugin.js +6 -51
- package/dist/js/treeshaking/document/Body.js +14 -0
- package/dist/js/treeshaking/document/DocumentContext.js +6 -0
- package/dist/js/treeshaking/document/DocumentStructrueContext.js +7 -0
- package/dist/js/treeshaking/document/Head.js +21 -0
- package/dist/js/treeshaking/document/Html.js +104 -0
- package/dist/js/treeshaking/document/Root.js +24 -0
- package/dist/js/treeshaking/document/Scripts.js +10 -0
- package/dist/js/treeshaking/document/cli/index.js +170 -0
- package/dist/js/treeshaking/document/constants.js +16 -0
- package/dist/js/treeshaking/document/index.js +8 -0
- package/dist/js/treeshaking/index.js +1 -1
- package/dist/js/treeshaking/router/cli/index.js +6 -18
- package/dist/js/treeshaking/router/runtime/plugin.js +5 -13
- package/dist/js/treeshaking/router/runtime/plugin.node.js +23 -36
- package/dist/js/treeshaking/router/runtime/root/index.js +17 -0
- package/dist/js/treeshaking/router/runtime/root/load.js +102 -0
- package/dist/js/treeshaking/router/runtime/utils.js +21 -39
- package/dist/js/treeshaking/router/runtime/withRouter.js +1 -0
- package/dist/js/treeshaking/ssr/cli/index.js +9 -31
- package/dist/js/treeshaking/ssr/index.js +26 -40
- package/dist/js/treeshaking/ssr/index.node.js +12 -29
- package/dist/js/treeshaking/ssr/prefetch.js +0 -13
- package/dist/js/treeshaking/ssr/react/nossr/index.js +3 -4
- package/dist/js/treeshaking/ssr/react/prerender/index.js +2 -21
- package/dist/js/treeshaking/ssr/react/prerender/util.js +3 -20
- package/dist/js/treeshaking/ssr/react/withCallback/index.js +1 -2
- package/dist/js/treeshaking/ssr/serverRender/helmet.js +12 -11
- package/dist/js/treeshaking/ssr/serverRender/index.js +1 -9
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.after.js +5 -6
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +46 -15
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +9 -79
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +3 -5
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +46 -35
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +17 -24
- package/dist/js/treeshaking/ssr/serverRender/renderToString/entry.js +20 -73
- package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +2 -6
- package/dist/js/treeshaking/ssr/serverRender/renderToString/loadable.js +5 -16
- package/dist/js/treeshaking/ssr/serverRender/renderToString/reduce.js +0 -2
- package/dist/js/treeshaking/ssr/serverRender/renderToString/template.js +2 -18
- package/dist/js/treeshaking/ssr/serverRender/renderToString/type.js +0 -1
- package/dist/js/treeshaking/ssr/serverRender/utils.js +5 -10
- package/dist/js/treeshaking/ssr/utils.js +8 -17
- package/dist/js/treeshaking/state/cli/index.js +3 -10
- package/dist/js/treeshaking/state/runtime/plugin.js +2 -10
- package/dist/types/cli/index.d.ts +0 -2
- package/dist/types/core/compatible.d.ts +5 -5
- package/dist/types/core/index.d.ts +1 -1
- package/dist/types/core/loader/loaderManager.d.ts +0 -1
- package/dist/types/core/loader/useLoader.d.ts +0 -5
- package/dist/types/core/plugin.d.ts +1 -13
- package/dist/types/document/Body.d.ts +4 -0
- package/dist/types/document/DocumentContext.d.ts +13 -0
- package/dist/types/document/DocumentStructrueContext.d.ts +10 -0
- package/dist/types/document/Head.d.ts +5 -0
- package/dist/types/document/Html.d.ts +4 -0
- package/dist/types/document/Root.d.ts +8 -0
- package/dist/types/document/Scripts.d.ts +2 -0
- package/dist/types/document/cli/index.d.ts +3 -0
- package/dist/types/document/constants.d.ts +14 -0
- package/dist/types/document/index.d.ts +8 -0
- package/dist/types/exports/server.d.ts +3 -3
- package/dist/types/index.d.ts +1 -1
- package/dist/types/router/cli/index.d.ts +0 -2
- package/dist/types/router/runtime/root/index.d.ts +8 -0
- package/dist/types/router/runtime/root/load.d.ts +22 -0
- package/dist/types/router/runtime/types.d.ts +0 -2
- package/dist/types/runtime-context.d.ts +1 -0
- package/dist/types/ssr/cli/index.d.ts +0 -2
- package/dist/types/ssr/prefetch.d.ts +2 -2
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +3 -2
- package/dist/types/ssr/serverRender/renderToStream/bulidTemplate.before.d.ts +2 -1
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +3 -3
- package/dist/types/ssr/serverRender/renderToStream/template.d.ts +2 -2
- package/dist/types/ssr/serverRender/types.d.ts +1 -4
- package/dist/types/state/cli/index.d.ts +0 -2
- package/dist/types/state/types.d.ts +0 -1
- package/package.json +19 -11
|
@@ -5,13 +5,13 @@ var _excluded = ["Component"];
|
|
|
5
5
|
import React, { Suspense } from 'react';
|
|
6
6
|
import { Route } from 'react-router-dom';
|
|
7
7
|
import { DefaultNotFound } from "./DefaultNotFound";
|
|
8
|
+
import { RootLayout } from "./root";
|
|
8
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
-
|
|
10
10
|
var renderNestedRoute = function renderNestedRoute(nestedRoute, parent) {
|
|
11
11
|
var children = nestedRoute.children,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
index = nestedRoute.index,
|
|
13
|
+
id = nestedRoute.id,
|
|
14
|
+
Component = nestedRoute.component;
|
|
15
15
|
var childElements = children === null || children === void 0 ? void 0 : children.map(function (childRoute) {
|
|
16
16
|
return renderNestedRoute(childRoute, nestedRoute);
|
|
17
17
|
});
|
|
@@ -27,27 +27,33 @@ var renderNestedRoute = function renderNestedRoute(nestedRoute, parent) {
|
|
|
27
27
|
index: nestedRoute.index,
|
|
28
28
|
errorElement: nestedRoute.errorElement
|
|
29
29
|
};
|
|
30
|
-
|
|
31
30
|
if (nestedRoute.error) {
|
|
32
31
|
var errorElement = /*#__PURE__*/_jsx(nestedRoute.error, {});
|
|
33
|
-
|
|
34
32
|
routeProps.errorElement = errorElement;
|
|
35
33
|
}
|
|
36
|
-
|
|
34
|
+
var element;
|
|
37
35
|
if (Component) {
|
|
38
36
|
if (parent !== null && parent !== void 0 && parent.loading) {
|
|
39
37
|
var Loading = parent.loading;
|
|
40
|
-
|
|
38
|
+
element = /*#__PURE__*/_jsx(Suspense, {
|
|
41
39
|
fallback: /*#__PURE__*/_jsx(Loading, {}),
|
|
42
40
|
children: /*#__PURE__*/_jsx(Component, {})
|
|
43
41
|
});
|
|
44
42
|
} else {
|
|
45
|
-
|
|
43
|
+
element = /*#__PURE__*/_jsx(Suspense, {
|
|
46
44
|
children: /*#__PURE__*/_jsx(Component, {})
|
|
47
45
|
});
|
|
48
46
|
}
|
|
49
47
|
}
|
|
50
|
-
|
|
48
|
+
if (!parent) {
|
|
49
|
+
element = /*#__PURE__*/_jsx(RootLayout, {
|
|
50
|
+
routes: [nestedRoute],
|
|
51
|
+
children: /*#__PURE__*/_jsx(Suspense, {
|
|
52
|
+
children: element
|
|
53
|
+
})
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
routeProps.element = element;
|
|
51
57
|
var routeElement = index ? /*#__PURE__*/_jsx(Route, _objectSpread(_objectSpread({}, routeProps), {}, {
|
|
52
58
|
index: true
|
|
53
59
|
}), id) : /*#__PURE__*/_jsx(Route, _objectSpread(_objectSpread({}, routeProps), {}, {
|
|
@@ -56,32 +62,24 @@ var renderNestedRoute = function renderNestedRoute(nestedRoute, parent) {
|
|
|
56
62
|
}), id);
|
|
57
63
|
return routeElement;
|
|
58
64
|
};
|
|
59
|
-
|
|
60
65
|
export function getRouteComponents(routes, globalApp) {
|
|
61
66
|
var Layout = function Layout(_ref) {
|
|
62
67
|
var Component = _ref.Component,
|
|
63
|
-
|
|
64
|
-
|
|
68
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
65
69
|
var GlobalLayout = globalApp;
|
|
66
|
-
|
|
67
70
|
if (!GlobalLayout) {
|
|
68
71
|
return /*#__PURE__*/_jsx(Component, _objectSpread({}, props));
|
|
69
72
|
}
|
|
70
|
-
|
|
71
73
|
return /*#__PURE__*/_jsx(GlobalLayout, _objectSpread({
|
|
72
74
|
Component: Component
|
|
73
75
|
}, props));
|
|
74
76
|
};
|
|
75
|
-
|
|
76
77
|
var routeElements = [];
|
|
77
|
-
|
|
78
78
|
var _iterator = _createForOfIteratorHelper(routes),
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
_step;
|
|
81
80
|
try {
|
|
82
81
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
83
82
|
var route = _step.value;
|
|
84
|
-
|
|
85
83
|
if (route.type === 'nested') {
|
|
86
84
|
var routeElement = renderNestedRoute(route);
|
|
87
85
|
routeElements.push(routeElement);
|
|
@@ -92,7 +90,6 @@ export function getRouteComponents(routes, globalApp) {
|
|
|
92
90
|
Component: route.component
|
|
93
91
|
})
|
|
94
92
|
}, route.path);
|
|
95
|
-
|
|
96
93
|
routeElements.push(_routeElement);
|
|
97
94
|
}
|
|
98
95
|
}
|
|
@@ -101,7 +98,6 @@ export function getRouteComponents(routes, globalApp) {
|
|
|
101
98
|
} finally {
|
|
102
99
|
_iterator.f();
|
|
103
100
|
}
|
|
104
|
-
|
|
105
101
|
routeElements.push( /*#__PURE__*/_jsx(Route, {
|
|
106
102
|
path: "*",
|
|
107
103
|
element: /*#__PURE__*/_jsx(DefaultNotFound, {})
|
|
@@ -112,61 +108,47 @@ export function renderRoutes(routesConfig) {
|
|
|
112
108
|
if (!routesConfig) {
|
|
113
109
|
return null;
|
|
114
110
|
}
|
|
115
|
-
|
|
116
111
|
var routes = routesConfig.routes,
|
|
117
|
-
|
|
118
|
-
|
|
112
|
+
globalApp = routesConfig.globalApp;
|
|
119
113
|
if (!routes) {
|
|
120
114
|
return null;
|
|
121
115
|
}
|
|
122
|
-
|
|
123
116
|
var routeElements = getRouteComponents(routes, globalApp);
|
|
124
117
|
return routeElements;
|
|
125
118
|
}
|
|
126
119
|
export function getLocation(serverContext) {
|
|
127
120
|
var _url$replace;
|
|
128
|
-
|
|
129
121
|
var _ref2 = (serverContext === null || serverContext === void 0 ? void 0 : serverContext.request) || {},
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
122
|
+
pathname = _ref2.pathname,
|
|
123
|
+
url = _ref2.url;
|
|
133
124
|
var cleanUrl = url === null || url === void 0 ? void 0 : (_url$replace = url.replace('http://', '')) === null || _url$replace === void 0 ? void 0 : _url$replace.replace('https://', '');
|
|
134
125
|
var index = (cleanUrl || '').indexOf(pathname);
|
|
135
|
-
|
|
136
126
|
if (index === -1) {
|
|
137
127
|
return pathname;
|
|
138
128
|
}
|
|
139
|
-
|
|
140
129
|
return cleanUrl.substring(index);
|
|
141
130
|
}
|
|
142
131
|
export var urlJoin = function urlJoin() {
|
|
143
132
|
var separator = '/';
|
|
144
133
|
var replace = new RegExp("".concat(separator, "{1,}"), 'g');
|
|
145
|
-
|
|
146
134
|
for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
147
135
|
parts[_key] = arguments[_key];
|
|
148
136
|
}
|
|
149
|
-
|
|
150
137
|
return standardSlash(parts.join(separator).replace(replace, separator));
|
|
151
138
|
};
|
|
152
139
|
export function standardSlash(str) {
|
|
153
140
|
var addr = str;
|
|
154
|
-
|
|
155
141
|
if (!addr || typeof addr !== 'string') {
|
|
156
142
|
return addr;
|
|
157
143
|
}
|
|
158
|
-
|
|
159
144
|
if (addr.startsWith('.')) {
|
|
160
145
|
addr = addr.slice(1);
|
|
161
146
|
}
|
|
162
|
-
|
|
163
147
|
if (!addr.startsWith('/')) {
|
|
164
148
|
addr = "/".concat(addr);
|
|
165
149
|
}
|
|
166
|
-
|
|
167
150
|
if (addr.endsWith('/') && addr !== '/') {
|
|
168
151
|
addr = addr.slice(0, addr.length - 1);
|
|
169
152
|
}
|
|
170
|
-
|
|
171
153
|
return addr;
|
|
172
154
|
}
|
|
@@ -1,31 +1,24 @@
|
|
|
1
1
|
import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
2
2
|
import { getEntryOptions, SERVER_RENDER_FUNCTION_NAME, LOADABLE_STATS_FILE, isUseSSRBundle, createRuntimeExportsUtils, isSingleEntry } from '@modern-js/utils';
|
|
3
3
|
var PLUGIN_IDENTIFIER = 'ssr';
|
|
4
|
-
|
|
5
4
|
var hasStringSSREntry = function hasStringSSREntry(userConfig) {
|
|
6
5
|
var isStreaming = function isStreaming(ssr) {
|
|
7
6
|
return ssr && _typeof(ssr) === 'object' && ssr.mode === 'stream';
|
|
8
7
|
};
|
|
9
|
-
|
|
10
8
|
var server = userConfig.server;
|
|
11
|
-
|
|
12
9
|
if (server !== null && server !== void 0 && server.ssr && !isStreaming(server.ssr)) {
|
|
13
10
|
return true;
|
|
14
11
|
}
|
|
15
|
-
|
|
16
12
|
if (server !== null && server !== void 0 && server.ssrByEntries && _typeof(server.ssrByEntries) === 'object') {
|
|
17
13
|
for (var _i = 0, _Object$keys = Object.keys(server.ssrByEntries); _i < _Object$keys.length; _i++) {
|
|
18
14
|
var name = _Object$keys[_i];
|
|
19
|
-
|
|
20
15
|
if (!isStreaming(server.ssrByEntries[name])) {
|
|
21
16
|
return true;
|
|
22
17
|
}
|
|
23
18
|
}
|
|
24
19
|
}
|
|
25
|
-
|
|
26
20
|
return false;
|
|
27
21
|
};
|
|
28
|
-
|
|
29
22
|
export default (function () {
|
|
30
23
|
return {
|
|
31
24
|
name: '@modern-js/plugin-ssr',
|
|
@@ -46,13 +39,11 @@ export default (function () {
|
|
|
46
39
|
tools: {
|
|
47
40
|
webpackChain: function webpackChain(chain, _ref) {
|
|
48
41
|
var name = _ref.name,
|
|
49
|
-
|
|
42
|
+
CHAIN_ID = _ref.CHAIN_ID;
|
|
50
43
|
var userConfig = api.useResolvedConfigContext();
|
|
51
|
-
|
|
52
44
|
if (isUseSSRBundle(userConfig) && name !== 'server' && hasStringSSREntry(userConfig)) {
|
|
53
45
|
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
54
46
|
var LoadableWebpackPlugin = require('@loadable/webpack-plugin');
|
|
55
|
-
|
|
56
47
|
chain.plugin(CHAIN_ID.PLUGIN.LOADABLE).use(LoadableWebpackPlugin, [{
|
|
57
48
|
filename: LOADABLE_STATS_FILE
|
|
58
49
|
}]);
|
|
@@ -60,7 +51,6 @@ export default (function () {
|
|
|
60
51
|
},
|
|
61
52
|
babel: function babel(config) {
|
|
62
53
|
var userConfig = api.useResolvedConfigContext();
|
|
63
|
-
|
|
64
54
|
if (isUseSSRBundle(userConfig) && hasStringSSREntry(userConfig)) {
|
|
65
55
|
config.plugins.push(require.resolve('@loadable/babel-plugin'));
|
|
66
56
|
}
|
|
@@ -70,37 +60,30 @@ export default (function () {
|
|
|
70
60
|
},
|
|
71
61
|
modifyEntryImports: function modifyEntryImports(_ref2) {
|
|
72
62
|
var entrypoint = _ref2.entrypoint,
|
|
73
|
-
|
|
63
|
+
imports = _ref2.imports;
|
|
74
64
|
var entryName = entrypoint.entryName,
|
|
75
|
-
|
|
65
|
+
fileSystemRoutes = entrypoint.fileSystemRoutes;
|
|
76
66
|
var userConfig = api.useResolvedConfigContext();
|
|
77
|
-
|
|
78
67
|
var _api$useAppContext = api.useAppContext(),
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
pluginsExportsUtils.addExport("export { default as ssr } from '@modern-js/runtime/ssr'"); // if use ssg then set ssr config to true
|
|
68
|
+
packageName = _api$useAppContext.packageName,
|
|
69
|
+
entrypoints = _api$useAppContext.entrypoints;
|
|
70
|
+
pluginsExportsUtils.addExport("export { default as ssr } from '@modern-js/runtime/ssr'");
|
|
83
71
|
|
|
72
|
+
// if use ssg then set ssr config to true
|
|
84
73
|
var ssrConfig = getEntryOptions(entryName, userConfig.server.ssr, userConfig.server.ssrByEntries, packageName);
|
|
85
|
-
|
|
86
74
|
if (_typeof(ssrConfig) === 'object' && ssrConfig.mode === 'stream') {
|
|
87
75
|
var _runtimeConfig$router;
|
|
88
|
-
|
|
89
76
|
var runtimeConfig = getEntryOptions(entryName, userConfig.runtime, userConfig.runtimeByEntries, packageName);
|
|
90
|
-
|
|
91
77
|
if (runtimeConfig !== null && runtimeConfig !== void 0 && (_runtimeConfig$router = runtimeConfig.router) !== null && _runtimeConfig$router !== void 0 && _runtimeConfig$router.legacy) {
|
|
92
78
|
throw new Error("Legacy router plugin doesn't support streaming SSR, check your config 'runtime.router'");
|
|
93
79
|
}
|
|
94
|
-
|
|
95
80
|
if (fileSystemRoutes && !entrypoint.nestedRoutesEntry) {
|
|
96
81
|
throw new Error("You should switch to file-system based router to support streaming SSR.");
|
|
97
82
|
}
|
|
98
83
|
}
|
|
99
|
-
|
|
100
84
|
var ssgConfig = userConfig.output.ssg;
|
|
101
85
|
var useSSG = isSingleEntry(entrypoints) ? Boolean(ssgConfig) : ssgConfig === true || typeof (ssgConfig === null || ssgConfig === void 0 ? void 0 : ssgConfig[0]) === 'function' || Boolean(ssgConfig === null || ssgConfig === void 0 ? void 0 : ssgConfig[entryName]);
|
|
102
86
|
ssrConfigMap.set(entryName, ssrConfig || useSSG);
|
|
103
|
-
|
|
104
87
|
if (ssrConfig || useSSG) {
|
|
105
88
|
imports.push({
|
|
106
89
|
value: '@modern-js/runtime/plugins',
|
|
@@ -109,7 +92,6 @@ export default (function () {
|
|
|
109
92
|
}]
|
|
110
93
|
});
|
|
111
94
|
}
|
|
112
|
-
|
|
113
95
|
return {
|
|
114
96
|
entrypoint: entrypoint,
|
|
115
97
|
imports: imports
|
|
@@ -117,15 +99,13 @@ export default (function () {
|
|
|
117
99
|
},
|
|
118
100
|
modifyEntryRuntimePlugins: function modifyEntryRuntimePlugins(_ref3) {
|
|
119
101
|
var entrypoint = _ref3.entrypoint,
|
|
120
|
-
|
|
121
|
-
|
|
102
|
+
plugins = _ref3.plugins;
|
|
122
103
|
if (ssrConfigMap.get(entrypoint.entryName)) {
|
|
123
104
|
plugins.push({
|
|
124
105
|
name: PLUGIN_IDENTIFIER,
|
|
125
106
|
options: JSON.stringify(ssrConfigMap.get(entrypoint.entryName))
|
|
126
107
|
});
|
|
127
108
|
}
|
|
128
|
-
|
|
129
109
|
return {
|
|
130
110
|
entrypoint: entrypoint,
|
|
131
111
|
plugins: plugins
|
|
@@ -133,15 +113,13 @@ export default (function () {
|
|
|
133
113
|
},
|
|
134
114
|
modifyEntryExport: function modifyEntryExport(_ref4) {
|
|
135
115
|
var entrypoint = _ref4.entrypoint,
|
|
136
|
-
|
|
137
|
-
|
|
116
|
+
exportStatement = _ref4.exportStatement;
|
|
138
117
|
if (ssrConfigMap.get(entrypoint.entryName)) {
|
|
139
118
|
return {
|
|
140
119
|
entrypoint: entrypoint,
|
|
141
120
|
exportStatement: ["export function ".concat(SERVER_RENDER_FUNCTION_NAME, "(context) {\n return bootstrap(AppWrapper, context)\n }"), exportStatement].join('\n')
|
|
142
121
|
};
|
|
143
122
|
}
|
|
144
|
-
|
|
145
123
|
return {
|
|
146
124
|
entrypoint: entrypoint,
|
|
147
125
|
exportStatement: exportStatement
|
|
@@ -15,32 +15,33 @@ export var ssr = function ssr(config) {
|
|
|
15
15
|
return {
|
|
16
16
|
client: function () {
|
|
17
17
|
var _client = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) {
|
|
18
|
-
var
|
|
18
|
+
var _window, _window$_SSR_DATA;
|
|
19
|
+
var App, context, ModernRender, ModernHydrate, hydrateContext, callback, renderLevel, stringSSRHydrate, streamSSRHydrate;
|
|
19
20
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
20
21
|
while (1) {
|
|
21
22
|
switch (_context.prev = _context.next) {
|
|
22
23
|
case 0:
|
|
23
24
|
streamSSRHydrate = function _streamSSRHydrate() {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
if (renderLevel === RenderLevel.SERVER_RENDER) {
|
|
26
|
+
// callback: https://github.com/reactwg/react-18/discussions/5
|
|
27
|
+
var SSRApp = function SSRApp() {
|
|
28
|
+
return /*#__PURE__*/_jsx(WithCallback, {
|
|
29
|
+
callback: callback,
|
|
30
|
+
children: /*#__PURE__*/_jsx(App, {
|
|
31
|
+
context: hydrateContext
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
SSRApp = hoistNonReactStatics(SSRApp, App);
|
|
36
|
+
ModernHydrate( /*#__PURE__*/_jsx(SSRApp, {}));
|
|
37
|
+
} else {
|
|
38
|
+
ModernRender( /*#__PURE__*/_jsx(App, {
|
|
39
|
+
context: context
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
36
42
|
};
|
|
37
|
-
|
|
38
43
|
stringSSRHydrate = function _stringSSRHydrate() {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
// if render level not exist, use client render
|
|
42
|
-
var renderLevel = ((_window = window) === null || _window === void 0 ? void 0 : (_window$_SSR_DATA = _window._SSR_DATA) === null || _window$_SSR_DATA === void 0 ? void 0 : _window$_SSR_DATA.renderLevel) || RenderLevel.CLIENT_RENDER; // client render and server prefetch use same logic
|
|
43
|
-
|
|
44
|
+
// client render and server prefetch use same logic
|
|
44
45
|
if (renderLevel === RenderLevel.CLIENT_RENDER || renderLevel === RenderLevel.SERVER_PREFETCH) {
|
|
45
46
|
ModernRender( /*#__PURE__*/_jsx(App, {
|
|
46
47
|
context: context
|
|
@@ -57,7 +58,6 @@ export var ssr = function ssr(config) {
|
|
|
57
58
|
})
|
|
58
59
|
});
|
|
59
60
|
};
|
|
60
|
-
|
|
61
61
|
SSRApp = hoistNonReactStatics(SSRApp, App);
|
|
62
62
|
ModernHydrate( /*#__PURE__*/_jsx(SSRApp, {}));
|
|
63
63
|
});
|
|
@@ -76,48 +76,38 @@ export var ssr = function ssr(config) {
|
|
|
76
76
|
}));
|
|
77
77
|
}
|
|
78
78
|
};
|
|
79
|
-
|
|
80
79
|
App = _ref.App, context = _ref.context, ModernRender = _ref.ModernRender, ModernHydrate = _ref.ModernHydrate;
|
|
81
80
|
hydrateContext = _objectSpread(_objectSpread({}, context), {}, {
|
|
82
81
|
_hydration: true
|
|
83
82
|
});
|
|
84
|
-
|
|
85
83
|
callback = function callback() {
|
|
86
84
|
// won't cause component re-render because context's reference identity doesn't change
|
|
87
85
|
delete hydrateContext._hydration;
|
|
88
|
-
}; //
|
|
89
|
-
|
|
90
|
-
|
|
86
|
+
}; // if render level not exist, use client render
|
|
87
|
+
renderLevel = ((_window = window) === null || _window === void 0 ? void 0 : (_window$_SSR_DATA = _window._SSR_DATA) === null || _window$_SSR_DATA === void 0 ? void 0 : _window$_SSR_DATA.renderLevel) || RenderLevel.CLIENT_RENDER; // react streamSSR hydrate
|
|
91
88
|
if (!(isReact18() && config.mode === 'stream')) {
|
|
92
|
-
_context.next =
|
|
89
|
+
_context.next = 8;
|
|
93
90
|
break;
|
|
94
91
|
}
|
|
95
|
-
|
|
96
92
|
return _context.abrupt("return", streamSSRHydrate());
|
|
97
|
-
|
|
98
|
-
case 7:
|
|
99
|
-
return _context.abrupt("return", stringSSRHydrate());
|
|
100
|
-
|
|
101
93
|
case 8:
|
|
94
|
+
return _context.abrupt("return", stringSSRHydrate());
|
|
95
|
+
case 9:
|
|
102
96
|
case "end":
|
|
103
97
|
return _context.stop();
|
|
104
98
|
}
|
|
105
99
|
}
|
|
106
100
|
}, _callee);
|
|
107
101
|
}));
|
|
108
|
-
|
|
109
102
|
function client(_x) {
|
|
110
103
|
return _client.apply(this, arguments);
|
|
111
104
|
}
|
|
112
|
-
|
|
113
105
|
return client;
|
|
114
106
|
}(),
|
|
115
107
|
init: function init(_ref2, next) {
|
|
116
108
|
var _window2, _window2$_SSR_DATA, _window2$_SSR_DATA$co;
|
|
117
|
-
|
|
118
109
|
var context = _ref2.context;
|
|
119
110
|
var request = (_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$_SSR_DATA = _window2._SSR_DATA) === null || _window2$_SSR_DATA === void 0 ? void 0 : (_window2$_SSR_DATA$co = _window2$_SSR_DATA.context) === null || _window2$_SSR_DATA$co === void 0 ? void 0 : _window2$_SSR_DATA$co.request;
|
|
120
|
-
|
|
121
111
|
if (!request) {
|
|
122
112
|
context.ssrContext = _objectSpread(_objectSpread({}, context.ssrContext), {}, {
|
|
123
113
|
response: mockResp,
|
|
@@ -127,7 +117,6 @@ export var ssr = function ssr(config) {
|
|
|
127
117
|
context: context
|
|
128
118
|
});
|
|
129
119
|
}
|
|
130
|
-
|
|
131
120
|
context.ssrContext.response = mockResp;
|
|
132
121
|
context.ssrContext.request = formatClient(request);
|
|
133
122
|
return next({
|
|
@@ -136,12 +125,10 @@ export var ssr = function ssr(config) {
|
|
|
136
125
|
},
|
|
137
126
|
pickContext: function pickContext(_ref3, next) {
|
|
138
127
|
var _window3, _window3$_SSR_DATA, _window3$_SSR_DATA$co;
|
|
139
|
-
|
|
140
128
|
var context = _ref3.context,
|
|
141
|
-
|
|
129
|
+
pickedContext = _ref3.pickedContext;
|
|
142
130
|
var request = (_window3 = window) === null || _window3 === void 0 ? void 0 : (_window3$_SSR_DATA = _window3._SSR_DATA) === null || _window3$_SSR_DATA === void 0 ? void 0 : (_window3$_SSR_DATA$co = _window3$_SSR_DATA.context) === null || _window3$_SSR_DATA$co === void 0 ? void 0 : _window3$_SSR_DATA$co.request;
|
|
143
131
|
var initialData = context.initialData;
|
|
144
|
-
|
|
145
132
|
if (!request) {
|
|
146
133
|
return next({
|
|
147
134
|
context: context,
|
|
@@ -150,7 +137,6 @@ export var ssr = function ssr(config) {
|
|
|
150
137
|
})
|
|
151
138
|
});
|
|
152
139
|
}
|
|
153
|
-
|
|
154
140
|
return next({
|
|
155
141
|
context: context,
|
|
156
142
|
pickedContext: _objectSpread(_objectSpread({}, pickedContext), {}, {
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
2
|
import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
|
|
3
3
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
4
|
-
import { registerPrefetch } from "../core";
|
|
5
|
-
import prefetch from "./prefetch";
|
|
6
4
|
import { formatServer } from "./utils";
|
|
7
5
|
import render from "./serverRender";
|
|
8
|
-
var registeredApps = new WeakSet();
|
|
9
6
|
export var ssr = function ssr() {
|
|
10
7
|
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
11
8
|
return {
|
|
@@ -15,48 +12,36 @@ export var ssr = function ssr() {
|
|
|
15
12
|
server: function () {
|
|
16
13
|
var _server = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) {
|
|
17
14
|
var App, context, html;
|
|
18
|
-
return _regeneratorRuntime().wrap(function _callee$(
|
|
15
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
19
16
|
while (1) {
|
|
20
|
-
switch (
|
|
17
|
+
switch (_context.prev = _context.next) {
|
|
21
18
|
case 0:
|
|
22
19
|
App = _ref.App, context = _ref.context;
|
|
23
|
-
|
|
24
|
-
if (!registeredApps.has(App)) {
|
|
25
|
-
registerPrefetch(App, function (_context) {
|
|
26
|
-
return prefetch(App, _context);
|
|
27
|
-
});
|
|
28
|
-
registeredApps.add(App);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
_context2.next = 4;
|
|
20
|
+
_context.next = 3;
|
|
32
21
|
return render({
|
|
33
22
|
context: context,
|
|
34
23
|
App: App,
|
|
35
24
|
config: config
|
|
36
25
|
});
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
case 6:
|
|
26
|
+
case 3:
|
|
27
|
+
html = _context.sent;
|
|
28
|
+
return _context.abrupt("return", html);
|
|
29
|
+
case 5:
|
|
43
30
|
case "end":
|
|
44
|
-
return
|
|
31
|
+
return _context.stop();
|
|
45
32
|
}
|
|
46
33
|
}
|
|
47
34
|
}, _callee);
|
|
48
35
|
}));
|
|
49
|
-
|
|
50
36
|
function server(_x) {
|
|
51
37
|
return _server.apply(this, arguments);
|
|
52
38
|
}
|
|
53
|
-
|
|
54
39
|
return server;
|
|
55
40
|
}(),
|
|
56
41
|
init: function init(_ref2, next) {
|
|
57
42
|
var context = _ref2.context;
|
|
58
43
|
var _ref3 = context.ssrContext,
|
|
59
|
-
|
|
44
|
+
request = _ref3.request;
|
|
60
45
|
context.ssrContext.request = formatServer(request);
|
|
61
46
|
return next({
|
|
62
47
|
context: context
|
|
@@ -64,13 +49,11 @@ export var ssr = function ssr() {
|
|
|
64
49
|
},
|
|
65
50
|
pickContext: function pickContext(_ref4, next) {
|
|
66
51
|
var context = _ref4.context,
|
|
67
|
-
|
|
68
|
-
|
|
52
|
+
pickedContext = _ref4.pickedContext;
|
|
69
53
|
// eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain
|
|
70
54
|
var _ref5 = context === null || context === void 0 ? void 0 : context.ssrContext,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
55
|
+
request = _ref5.request,
|
|
56
|
+
response = _ref5.response;
|
|
74
57
|
var initialData = context.initialData;
|
|
75
58
|
return next({
|
|
76
59
|
context: context,
|
|
@@ -4,7 +4,6 @@ import { renderToStaticMarkup } from 'react-dom/server';
|
|
|
4
4
|
import { run } from '@modern-js/utils/ssr';
|
|
5
5
|
import { ChunkExtractor } from '@loadable/server';
|
|
6
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
-
|
|
8
7
|
// todo: SSRContext
|
|
9
8
|
var prefetch = /*#__PURE__*/function () {
|
|
10
9
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(App, context) {
|
|
@@ -14,16 +13,13 @@ var prefetch = /*#__PURE__*/function () {
|
|
|
14
13
|
case 0:
|
|
15
14
|
return _context2.abrupt("return", run(context.ssrContext.request.headers, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
16
15
|
var _context$store;
|
|
17
|
-
|
|
18
16
|
var ssrContext, _ref3, loadableStats, extractor, loadersData;
|
|
19
|
-
|
|
20
17
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
21
18
|
while (1) {
|
|
22
19
|
switch (_context.prev = _context.next) {
|
|
23
20
|
case 0:
|
|
24
21
|
ssrContext = context.ssrContext;
|
|
25
22
|
_ref3 = ssrContext, loadableStats = _ref3.loadableStats;
|
|
26
|
-
|
|
27
23
|
if (loadableStats) {
|
|
28
24
|
extractor = new ChunkExtractor({
|
|
29
25
|
stats: loadableStats,
|
|
@@ -37,26 +33,21 @@ var prefetch = /*#__PURE__*/function () {
|
|
|
37
33
|
context: context
|
|
38
34
|
}));
|
|
39
35
|
}
|
|
40
|
-
|
|
41
36
|
if (context.loaderManager.hasPendingLoaders()) {
|
|
42
37
|
_context.next = 5;
|
|
43
38
|
break;
|
|
44
39
|
}
|
|
45
|
-
|
|
46
40
|
return _context.abrupt("return", {
|
|
47
41
|
initialData: context.initialData,
|
|
48
42
|
i18nData: context.__i18nData__
|
|
49
43
|
});
|
|
50
|
-
|
|
51
44
|
case 5:
|
|
52
45
|
_context.next = 7;
|
|
53
46
|
return context.loaderManager.awaitPendingLoaders();
|
|
54
|
-
|
|
55
47
|
case 7:
|
|
56
48
|
loadersData = _context.sent;
|
|
57
49
|
Object.keys(loadersData).forEach(function (id) {
|
|
58
50
|
var data = loadersData[id];
|
|
59
|
-
|
|
60
51
|
if (data._error) {
|
|
61
52
|
ssrContext.logger.error('App Prefetch Loader', data._error);
|
|
62
53
|
ssrContext.metrics.emitCounter('app.prefetch.loader.error', 1);
|
|
@@ -70,7 +61,6 @@ var prefetch = /*#__PURE__*/function () {
|
|
|
70
61
|
// todo: move to plugin state
|
|
71
62
|
storeState: context === null || context === void 0 ? void 0 : (_context$store = context.store) === null || _context$store === void 0 ? void 0 : _context$store.getState()
|
|
72
63
|
});
|
|
73
|
-
|
|
74
64
|
case 10:
|
|
75
65
|
case "end":
|
|
76
66
|
return _context.stop();
|
|
@@ -78,7 +68,6 @@ var prefetch = /*#__PURE__*/function () {
|
|
|
78
68
|
}
|
|
79
69
|
}, _callee);
|
|
80
70
|
}))));
|
|
81
|
-
|
|
82
71
|
case 1:
|
|
83
72
|
case "end":
|
|
84
73
|
return _context2.stop();
|
|
@@ -86,10 +75,8 @@ var prefetch = /*#__PURE__*/function () {
|
|
|
86
75
|
}
|
|
87
76
|
}, _callee2);
|
|
88
77
|
}));
|
|
89
|
-
|
|
90
78
|
return function prefetch(_x, _x2) {
|
|
91
79
|
return _ref.apply(this, arguments);
|
|
92
80
|
};
|
|
93
81
|
}();
|
|
94
|
-
|
|
95
82
|
export default prefetch;
|
|
@@ -3,10 +3,9 @@ import React, { useEffect, useState } from 'react';
|
|
|
3
3
|
var csr = false;
|
|
4
4
|
export var NoSSR = function NoSSR(props) {
|
|
5
5
|
var _useState = useState(csr),
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
7
|
+
isMounted = _useState2[0],
|
|
8
|
+
setMounted = _useState2[1];
|
|
10
9
|
useEffect(function () {
|
|
11
10
|
csr = true;
|
|
12
11
|
setMounted(true);
|