@modern-js/runtime 1.21.3 → 2.0.0-beta.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/CHANGELOG.md +48 -4
- package/dist/js/modern/cli/index.js +1 -1
- package/dist/js/modern/core/index.js +1 -1
- package/dist/js/modern/index.js +1 -0
- package/dist/js/modern/router/cli/index.js +24 -8
- package/dist/js/modern/router/runtime/index.js +1 -1
- package/dist/js/modern/router/runtime/plugin.js +26 -44
- package/dist/js/modern/router/runtime/plugin.node.js +143 -0
- package/dist/js/modern/router/runtime/types.js +1 -0
- package/dist/js/modern/router/runtime/utils.js +97 -37
- package/dist/js/modern/router/runtime/withRouter.js +22 -0
- package/dist/js/modern/runtime-context.js +2 -1
- package/dist/js/modern/ssr/cli/index.js +44 -5
- package/dist/js/modern/ssr/index.js +67 -43
- package/dist/js/modern/ssr/index.node.js +6 -2
- package/dist/js/modern/ssr/serverRender/index.js +12 -26
- package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.after.js +38 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.share.js +5 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/bulidTemplate.before.js +24 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/index.js +73 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/loadable.js +26 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +61 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/styledComponent.js +11 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/template.js +22 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/type.js +0 -0
- package/dist/js/modern/ssr/serverRender/{entry.js → renderToString/entry.js} +4 -6
- package/dist/js/modern/ssr/serverRender/renderToString/index.js +31 -0
- package/dist/js/modern/ssr/serverRender/{loadable.js → renderToString/loadable.js} +5 -13
- package/dist/js/modern/ssr/serverRender/{reduce.js → renderToString/reduce.js} +0 -0
- package/dist/js/modern/ssr/serverRender/{styledComponent.js → renderToString/styledComponent.js} +0 -0
- package/dist/js/modern/ssr/serverRender/{template.js → renderToString/template.js} +0 -0
- package/dist/js/modern/ssr/serverRender/{type.js → renderToString/type.js} +0 -1
- package/dist/js/modern/ssr/serverRender/types.js +2 -0
- package/dist/js/modern/ssr/serverRender/utils.js +24 -0
- package/dist/js/modern/ssr/utils.js +9 -3
- package/dist/js/node/cli/index.js +1 -1
- package/dist/js/node/core/index.js +8 -1
- package/dist/js/node/index.js +8 -0
- package/dist/js/node/router/cli/index.js +24 -8
- package/dist/js/node/router/runtime/index.js +4 -4
- package/dist/js/node/router/runtime/plugin.js +24 -49
- package/dist/js/node/router/runtime/plugin.node.js +169 -0
- package/dist/js/node/router/runtime/types.js +5 -0
- package/dist/js/node/router/runtime/utils.js +97 -35
- package/dist/js/node/router/runtime/withRouter.js +35 -0
- package/dist/js/node/runtime-context.js +4 -2
- package/dist/js/node/ssr/cli/index.js +43 -5
- package/dist/js/node/ssr/index.js +66 -43
- package/dist/js/node/ssr/index.node.js +7 -3
- package/dist/js/node/ssr/serverRender/index.js +13 -35
- package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.after.js +49 -0
- package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.share.js +14 -0
- package/dist/js/node/ssr/serverRender/renderToStream/bulidTemplate.before.js +37 -0
- package/dist/js/node/ssr/serverRender/renderToStream/index.js +90 -0
- package/dist/js/node/ssr/serverRender/renderToStream/loadable.js +34 -0
- package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +70 -0
- package/dist/js/node/ssr/serverRender/renderToStream/styledComponent.js +19 -0
- package/dist/js/node/ssr/serverRender/renderToStream/template.js +32 -0
- package/dist/js/node/ssr/serverRender/renderToStream/type.js +0 -0
- package/dist/js/node/ssr/serverRender/{entry.js → renderToString/entry.js} +13 -15
- package/dist/js/node/ssr/serverRender/renderToString/index.js +47 -0
- package/dist/js/node/ssr/serverRender/{loadable.js → renderToString/loadable.js} +7 -14
- package/dist/js/node/ssr/serverRender/{reduce.js → renderToString/reduce.js} +0 -0
- package/dist/js/node/ssr/serverRender/{styledComponent.js → renderToString/styledComponent.js} +0 -0
- package/dist/js/node/ssr/serverRender/{template.js → renderToString/template.js} +0 -0
- package/dist/js/node/ssr/serverRender/{type.js → renderToString/type.js} +0 -1
- package/dist/js/node/ssr/serverRender/types.js +13 -0
- package/dist/js/node/ssr/serverRender/utils.js +34 -0
- package/dist/js/node/ssr/utils.js +13 -4
- package/dist/js/treeshaking/cli/index.js +1 -1
- package/dist/js/treeshaking/core/index.js +1 -1
- package/dist/js/treeshaking/index.js +1 -0
- package/dist/js/treeshaking/router/cli/index.js +24 -8
- package/dist/js/treeshaking/router/runtime/index.js +1 -1
- package/dist/js/treeshaking/router/runtime/plugin.js +25 -43
- package/dist/js/treeshaking/router/runtime/plugin.node.js +174 -0
- package/dist/js/treeshaking/router/runtime/types.js +1 -0
- package/dist/js/treeshaking/router/runtime/utils.js +100 -36
- package/dist/js/treeshaking/router/runtime/withRouter.js +17 -0
- package/dist/js/treeshaking/runtime-context.js +2 -1
- package/dist/js/treeshaking/ssr/cli/index.js +47 -5
- package/dist/js/treeshaking/ssr/index.js +74 -45
- package/dist/js/treeshaking/ssr/index.node.js +6 -2
- package/dist/js/treeshaking/ssr/serverRender/index.js +41 -55
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.after.js +33 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.share.js +7 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +29 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +120 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +24 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +57 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/styledComponent.js +10 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +29 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/type.js +0 -0
- package/dist/js/treeshaking/ssr/serverRender/{entry.js → renderToString/entry.js} +3 -3
- package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +48 -0
- package/dist/js/treeshaking/ssr/serverRender/{loadable.js → renderToString/loadable.js} +5 -17
- package/dist/js/treeshaking/ssr/serverRender/{reduce.js → renderToString/reduce.js} +0 -0
- package/dist/js/treeshaking/ssr/serverRender/{styledComponent.js → renderToString/styledComponent.js} +0 -0
- package/dist/js/treeshaking/ssr/serverRender/{template.js → renderToString/template.js} +0 -0
- package/dist/js/treeshaking/ssr/serverRender/{type.js → renderToString/type.js} +0 -1
- package/dist/js/treeshaking/ssr/serverRender/types.js +2 -0
- package/dist/js/treeshaking/ssr/serverRender/{measure.js → utils.js} +16 -0
- package/dist/js/treeshaking/ssr/utils.js +15 -3
- package/dist/types/common.d.ts +0 -2
- package/dist/types/core/index.d.ts +1 -1
- package/dist/types/core/plugin.d.ts +1 -1
- package/dist/types/exports/server.d.ts +21 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/router/runtime/DefaultNotFound.d.ts +1 -0
- package/dist/types/router/runtime/index.d.ts +3 -3
- package/dist/types/router/runtime/plugin.d.ts +2 -45
- package/dist/types/router/runtime/plugin.node.d.ts +8 -0
- package/dist/types/router/runtime/types.d.ts +38 -0
- package/dist/types/router/runtime/utils.d.ts +5 -2
- package/dist/types/router/runtime/withRouter.d.ts +8 -0
- package/dist/types/runtime-context.d.ts +2 -1
- package/dist/types/ssr/index.d.ts +2 -2
- package/dist/types/ssr/index.node.d.ts +1 -1
- package/dist/types/ssr/react/nossr/index.d.ts +3 -1
- package/dist/types/ssr/serverRender/index.d.ts +2 -3
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +6 -0
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.share.d.ts +3 -0
- package/dist/types/ssr/serverRender/renderToStream/bulidTemplate.before.d.ts +1 -0
- package/dist/types/ssr/serverRender/renderToStream/index.d.ts +6 -0
- package/dist/types/ssr/serverRender/renderToStream/loadable.d.ts +16 -0
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +8 -0
- package/dist/types/ssr/serverRender/renderToStream/styledComponent.d.ts +12 -0
- package/dist/types/ssr/serverRender/renderToStream/template.d.ts +3 -0
- package/dist/types/ssr/serverRender/renderToStream/type.d.ts +4 -0
- package/dist/types/ssr/serverRender/{entry.d.ts → renderToString/entry.d.ts} +2 -2
- package/dist/types/ssr/serverRender/renderToString/index.d.ts +6 -0
- package/dist/types/ssr/serverRender/{loadable.d.ts → renderToString/loadable.d.ts} +0 -0
- package/dist/types/ssr/serverRender/{reduce.d.ts → renderToString/reduce.d.ts} +0 -0
- package/dist/types/ssr/serverRender/{styledComponent.d.ts → renderToString/styledComponent.d.ts} +0 -0
- package/dist/types/ssr/serverRender/{template.d.ts → renderToString/template.d.ts} +0 -0
- package/dist/types/ssr/serverRender/{type.d.ts → renderToString/type.d.ts} +1 -8
- package/dist/types/ssr/serverRender/types.d.ts +18 -0
- package/dist/types/ssr/serverRender/utils.d.ts +3 -0
- package/dist/types/ssr/utils.d.ts +4 -2
- package/dist/types/state/runtime/plugin.d.ts +1 -1
- package/package.json +57 -73
- package/types/index.d.ts +13 -0
- package/types/router.d.ts +14 -0
- package/dist/js/modern/ssr/serverRender/measure.js +0 -11
- package/dist/js/node/ssr/serverRender/measure.js +0 -20
- package/dist/types/ssr/serverRender/measure.d.ts +0 -1
- package/lib/types.d.ts +0 -10
- package/type.d.ts +0 -5
|
@@ -1,22 +1,16 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
-
import React
|
|
3
|
-
import {
|
|
4
|
-
import { Router, StaticRouter } from 'react-router-dom';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { createBrowserRouter, createHashRouter, RouterProvider, createRoutesFromElements } from 'react-router-dom';
|
|
5
4
|
import hoistNonReactStatics from 'hoist-non-react-statics';
|
|
6
|
-
import {
|
|
7
|
-
import { isBrowser } from "../../common";
|
|
8
|
-
import { renderRoutes, getLocation, urlJoin } from "./utils";
|
|
5
|
+
import { renderRoutes } from "./utils";
|
|
9
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
7
|
export var routerPlugin = function routerPlugin(_ref) {
|
|
11
8
|
var _ref$serverBase = _ref.serverBase,
|
|
12
9
|
serverBase = _ref$serverBase === void 0 ? [] : _ref$serverBase,
|
|
13
|
-
customHistory = _ref.history,
|
|
14
10
|
_ref$supportHtml5Hist = _ref.supportHtml5History,
|
|
15
11
|
supportHtml5History = _ref$supportHtml5Hist === void 0 ? true : _ref$supportHtml5Hist,
|
|
16
12
|
routesConfig = _ref.routesConfig,
|
|
17
|
-
|
|
18
|
-
historyOptions = _ref$historyOptions === void 0 ? {} : _ref$historyOptions;
|
|
19
|
-
var isBrow = isBrowser();
|
|
13
|
+
createRoutes = _ref.createRoutes;
|
|
20
14
|
|
|
21
15
|
var select = function select(pathname) {
|
|
22
16
|
return serverBase.find(function (baseUrl) {
|
|
@@ -31,49 +25,37 @@ export var routerPlugin = function routerPlugin(_ref) {
|
|
|
31
25
|
hoc: function hoc(_ref2, next) {
|
|
32
26
|
var App = _ref2.App;
|
|
33
27
|
|
|
28
|
+
// can not get routes config, skip wrapping React Router.
|
|
29
|
+
// e.g. App.tsx as the entrypoint
|
|
30
|
+
if (!routesConfig) {
|
|
31
|
+
return next({
|
|
32
|
+
App: App
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
34
36
|
var getRouteApp = function getRouteApp() {
|
|
35
|
-
|
|
37
|
+
return function (props) {
|
|
36
38
|
var _window$_SERVER_DATA;
|
|
37
39
|
|
|
40
|
+
var routeElements = renderRoutes(routesConfig);
|
|
41
|
+
var routes = createRoutes ? createRoutes() : createRoutesFromElements(routeElements);
|
|
38
42
|
var baseUrl = ((_window$_SERVER_DATA = window._SERVER_DATA) === null || _window$_SERVER_DATA === void 0 ? void 0 : _window$_SERVER_DATA.router.baseUrl) || select(location.pathname);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
history: history,
|
|
44
|
-
children: /*#__PURE__*/_jsx(App, _objectSpread(_objectSpread({}, props), {}, {
|
|
45
|
-
children: routesConfig ? renderRoutes(routesConfig, props) : null
|
|
46
|
-
}))
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return function (props) {
|
|
52
|
-
var runtimeContext = useContext(RuntimeReactContext);
|
|
53
|
-
var ssrContext = runtimeContext.ssrContext;
|
|
54
|
-
var location = getLocation(ssrContext);
|
|
55
|
-
var routerContext = (ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.redirection) || {};
|
|
56
|
-
var request = ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.request;
|
|
57
|
-
var baseUrl = request === null || request === void 0 ? void 0 : request.baseUrl;
|
|
58
|
-
var basename = baseUrl === '/' ? urlJoin(baseUrl, historyOptions.basename) : baseUrl;
|
|
59
|
-
return /*#__PURE__*/_jsx(StaticRouter, {
|
|
60
|
-
basename: basename === '/' ? '' : basename,
|
|
61
|
-
location: location,
|
|
62
|
-
context: routerContext,
|
|
63
|
-
children: /*#__PURE__*/_jsx(App, _objectSpread(_objectSpread({}, props), {}, {
|
|
64
|
-
children: routesConfig ? renderRoutes(routesConfig, props) : null
|
|
65
|
-
}))
|
|
43
|
+
var router = supportHtml5History ? createBrowserRouter(routes, {
|
|
44
|
+
basename: baseUrl
|
|
45
|
+
}) : createHashRouter(routes, {
|
|
46
|
+
basename: baseUrl
|
|
66
47
|
});
|
|
48
|
+
return /*#__PURE__*/_jsx(App, _objectSpread(_objectSpread({}, props), {}, {
|
|
49
|
+
children: /*#__PURE__*/_jsx(RouterProvider, {
|
|
50
|
+
router: router
|
|
51
|
+
})
|
|
52
|
+
}));
|
|
67
53
|
};
|
|
68
54
|
};
|
|
69
55
|
|
|
70
56
|
var RouteApp = getRouteApp();
|
|
71
57
|
|
|
72
|
-
if (
|
|
73
|
-
RouteApp = hoistNonReactStatics(RouteApp, App);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
if (routesConfig !== null && routesConfig !== void 0 && routesConfig.globalApp) {
|
|
58
|
+
if (routesConfig.globalApp) {
|
|
77
59
|
return next({
|
|
78
60
|
App: hoistNonReactStatics(RouteApp, routesConfig.globalApp)
|
|
79
61
|
});
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
|
|
3
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
4
|
+
import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
|
|
5
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
6
|
+
import React, { useContext } from 'react';
|
|
7
|
+
import { unstable_createStaticHandler as createStaticHandler } from '@remix-run/router';
|
|
8
|
+
import { unstable_createStaticRouter as createStaticRouter, unstable_StaticRouterProvider as StaticRouterProvider } from 'react-router-dom/server';
|
|
9
|
+
import hoistNonReactStatics from 'hoist-non-react-statics';
|
|
10
|
+
import { installGlobals } from '@remix-run/node';
|
|
11
|
+
import { createRoutesFromElements } from 'react-router-dom';
|
|
12
|
+
import { RuntimeReactContext } from "../../core";
|
|
13
|
+
import { renderRoutes } from "./utils"; // Polyfill Web Fetch API
|
|
14
|
+
|
|
15
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
|
+
installGlobals(); // TODO: polish
|
|
17
|
+
|
|
18
|
+
function createFetchRequest(req) {
|
|
19
|
+
// const origin = `${req.protocol}://${req.get('host')}`;
|
|
20
|
+
var origin = "".concat(req.protocol, "://").concat(req.host); // Note: This had to take originalUrl into account for presumably vite's proxying
|
|
21
|
+
|
|
22
|
+
var url = new URL(req.originalUrl || req.url, origin);
|
|
23
|
+
var controller = new AbortController(); // req.on('close', () => {
|
|
24
|
+
// controller.abort();
|
|
25
|
+
// });
|
|
26
|
+
|
|
27
|
+
var init = {
|
|
28
|
+
method: req.method,
|
|
29
|
+
headers: createFetchHeaders(req.headers),
|
|
30
|
+
signal: controller.signal
|
|
31
|
+
}; // if (req.method !== 'GET' && req.method !== 'HEAD') {
|
|
32
|
+
// init.body = req.body;
|
|
33
|
+
// }
|
|
34
|
+
|
|
35
|
+
return new Request(url.href, init);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function createFetchHeaders(requestHeaders) {
|
|
39
|
+
var headers = new Headers();
|
|
40
|
+
|
|
41
|
+
for (var _i = 0, _Object$entries = Object.entries(requestHeaders); _i < _Object$entries.length; _i++) {
|
|
42
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
43
|
+
key = _Object$entries$_i[0],
|
|
44
|
+
values = _Object$entries$_i[1];
|
|
45
|
+
|
|
46
|
+
if (values) {
|
|
47
|
+
if (Array.isArray(values)) {
|
|
48
|
+
var _iterator = _createForOfIteratorHelper(values),
|
|
49
|
+
_step;
|
|
50
|
+
|
|
51
|
+
try {
|
|
52
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
53
|
+
var value = _step.value;
|
|
54
|
+
headers.append(key, value);
|
|
55
|
+
}
|
|
56
|
+
} catch (err) {
|
|
57
|
+
_iterator.e(err);
|
|
58
|
+
} finally {
|
|
59
|
+
_iterator.f();
|
|
60
|
+
}
|
|
61
|
+
} else {
|
|
62
|
+
headers.set(key, values);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return headers;
|
|
68
|
+
}
|
|
69
|
+
export var routerPlugin = function routerPlugin(_ref) {
|
|
70
|
+
var routesConfig = _ref.routesConfig,
|
|
71
|
+
createRoutes = _ref.createRoutes;
|
|
72
|
+
return {
|
|
73
|
+
name: '@modern-js/plugin-router',
|
|
74
|
+
setup: function setup() {
|
|
75
|
+
return {
|
|
76
|
+
init: function init(_ref2, next) {
|
|
77
|
+
return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
78
|
+
var context, _ref3, request, routeElements, routes, _createStaticHandler, query, remixRequest, routerContext, router;
|
|
79
|
+
|
|
80
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
81
|
+
while (1) {
|
|
82
|
+
switch (_context.prev = _context.next) {
|
|
83
|
+
case 0:
|
|
84
|
+
context = _ref2.context;
|
|
85
|
+
|
|
86
|
+
if (routesConfig) {
|
|
87
|
+
_context.next = 3;
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return _context.abrupt("return", next({
|
|
92
|
+
context: context
|
|
93
|
+
}));
|
|
94
|
+
|
|
95
|
+
case 3:
|
|
96
|
+
_ref3 = context.ssrContext, request = _ref3.request;
|
|
97
|
+
routeElements = renderRoutes(routesConfig);
|
|
98
|
+
routes = createRoutes ? createRoutes() : createRoutesFromElements(routeElements);
|
|
99
|
+
_createStaticHandler = createStaticHandler(routes), query = _createStaticHandler.query;
|
|
100
|
+
remixRequest = createFetchRequest(request);
|
|
101
|
+
_context.next = 10;
|
|
102
|
+
return query(remixRequest);
|
|
103
|
+
|
|
104
|
+
case 10:
|
|
105
|
+
routerContext = _context.sent;
|
|
106
|
+
|
|
107
|
+
if (!(routerContext instanceof Response)) {
|
|
108
|
+
_context.next = 13;
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return _context.abrupt("return", next({
|
|
113
|
+
context: context
|
|
114
|
+
}));
|
|
115
|
+
|
|
116
|
+
case 13:
|
|
117
|
+
router = createStaticRouter(routes, routerContext);
|
|
118
|
+
context.router = router;
|
|
119
|
+
context.routerContext = routerContext;
|
|
120
|
+
return _context.abrupt("return", next({
|
|
121
|
+
context: context
|
|
122
|
+
}));
|
|
123
|
+
|
|
124
|
+
case 17:
|
|
125
|
+
case "end":
|
|
126
|
+
return _context.stop();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}, _callee);
|
|
130
|
+
}))();
|
|
131
|
+
},
|
|
132
|
+
hoc: function hoc(_ref4, next) {
|
|
133
|
+
var App = _ref4.App;
|
|
134
|
+
|
|
135
|
+
// can not get routes config, skip wrapping React Router.
|
|
136
|
+
// e.g. App.tsx as the entrypoint
|
|
137
|
+
if (!routesConfig) {
|
|
138
|
+
return next({
|
|
139
|
+
App: App
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
var getRouteApp = function getRouteApp() {
|
|
144
|
+
return function (props) {
|
|
145
|
+
var _useContext = useContext(RuntimeReactContext),
|
|
146
|
+
router = _useContext.router,
|
|
147
|
+
routerContext = _useContext.routerContext;
|
|
148
|
+
|
|
149
|
+
return /*#__PURE__*/_jsx(App, _objectSpread(_objectSpread({}, props), {}, {
|
|
150
|
+
children: /*#__PURE__*/_jsx(StaticRouterProvider, {
|
|
151
|
+
router: router,
|
|
152
|
+
context: routerContext,
|
|
153
|
+
nonce: "the-nonce"
|
|
154
|
+
})
|
|
155
|
+
}));
|
|
156
|
+
};
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
var RouteApp = getRouteApp();
|
|
160
|
+
|
|
161
|
+
if (routesConfig.globalApp) {
|
|
162
|
+
return next({
|
|
163
|
+
App: hoistNonReactStatics(RouteApp, routesConfig.globalApp)
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
return next({
|
|
168
|
+
App: RouteApp
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,19 +1,68 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
3
4
|
var _excluded = ["Component"];
|
|
4
|
-
|
|
5
|
-
import
|
|
6
|
-
import { Route, matchPath } from 'react-router-dom';
|
|
5
|
+
import React, { Suspense } from 'react';
|
|
6
|
+
import { Route } from 'react-router-dom';
|
|
7
7
|
import { DefaultNotFound } from "./DefaultNotFound";
|
|
8
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
-
export function renderRoutes(routesConfig) {
|
|
10
|
-
var extraProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
11
9
|
|
|
10
|
+
var renderNestedRoute = function renderNestedRoute(nestedRoute, parent) {
|
|
11
|
+
var children = nestedRoute.children,
|
|
12
|
+
index = nestedRoute.index,
|
|
13
|
+
id = nestedRoute.id,
|
|
14
|
+
Component = nestedRoute.component;
|
|
15
|
+
var childElements = children === null || children === void 0 ? void 0 : children.map(function (childRoute) {
|
|
16
|
+
return renderNestedRoute(childRoute, nestedRoute);
|
|
17
|
+
});
|
|
18
|
+
var routeProps = {
|
|
19
|
+
caseSensitive: nestedRoute.caseSensitive,
|
|
20
|
+
path: nestedRoute.path,
|
|
21
|
+
id: nestedRoute.id,
|
|
22
|
+
loader: nestedRoute.loader,
|
|
23
|
+
action: nestedRoute.action,
|
|
24
|
+
hasErrorBoundary: nestedRoute.hasErrorBoundary,
|
|
25
|
+
shouldRevalidate: nestedRoute.shouldRevalidate,
|
|
26
|
+
handle: nestedRoute.handle,
|
|
27
|
+
index: nestedRoute.index,
|
|
28
|
+
errorElement: nestedRoute.errorElement
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
if (nestedRoute.error) {
|
|
32
|
+
var errorElement = /*#__PURE__*/_jsx(nestedRoute.error, {});
|
|
33
|
+
|
|
34
|
+
routeProps.errorElement = errorElement;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (Component) {
|
|
38
|
+
if (parent !== null && parent !== void 0 && parent.loading) {
|
|
39
|
+
var Loading = parent.loading;
|
|
40
|
+
routeProps.element = /*#__PURE__*/_jsx(Suspense, {
|
|
41
|
+
fallback: /*#__PURE__*/_jsx(Loading, {}),
|
|
42
|
+
children: /*#__PURE__*/_jsx(Component, {})
|
|
43
|
+
});
|
|
44
|
+
} else {
|
|
45
|
+
routeProps.element = /*#__PURE__*/_jsx(Suspense, {
|
|
46
|
+
children: /*#__PURE__*/_jsx(Component, {})
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
var routeElement = index ? /*#__PURE__*/_jsx(Route, _objectSpread(_objectSpread({}, routeProps), {}, {
|
|
52
|
+
index: true
|
|
53
|
+
}), id) : /*#__PURE__*/_jsx(Route, _objectSpread(_objectSpread({}, routeProps), {}, {
|
|
54
|
+
index: false,
|
|
55
|
+
children: childElements
|
|
56
|
+
}), id);
|
|
57
|
+
return routeElement;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export function getRouteComponents(routes, globalApp) {
|
|
12
61
|
var Layout = function Layout(_ref) {
|
|
13
62
|
var Component = _ref.Component,
|
|
14
63
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
15
64
|
|
|
16
|
-
var GlobalLayout =
|
|
65
|
+
var GlobalLayout = globalApp;
|
|
17
66
|
|
|
18
67
|
if (!GlobalLayout) {
|
|
19
68
|
return /*#__PURE__*/_jsx(Component, _objectSpread({}, props));
|
|
@@ -24,40 +73,55 @@ export function renderRoutes(routesConfig) {
|
|
|
24
73
|
}, props));
|
|
25
74
|
};
|
|
26
75
|
|
|
27
|
-
var
|
|
28
|
-
var _routesConfig$routes;
|
|
76
|
+
var routeElements = [];
|
|
29
77
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
path: route.path,
|
|
33
|
-
exact: route.exact,
|
|
34
|
-
sensitive: route.sensitive
|
|
35
|
-
});
|
|
36
|
-
return Boolean(info);
|
|
37
|
-
});
|
|
38
|
-
};
|
|
78
|
+
var _iterator = _createForOfIteratorHelper(routes),
|
|
79
|
+
_step;
|
|
39
80
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
var matchedRoute = findMatchedRoute(props.location.pathname);
|
|
81
|
+
try {
|
|
82
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
83
|
+
var route = _step.value;
|
|
44
84
|
|
|
45
|
-
if (
|
|
46
|
-
|
|
47
|
-
|
|
85
|
+
if (route.type === 'nested') {
|
|
86
|
+
var routeElement = renderNestedRoute(route);
|
|
87
|
+
routeElements.push(routeElement);
|
|
88
|
+
} else {
|
|
89
|
+
var _routeElement = /*#__PURE__*/_jsx(Route, {
|
|
90
|
+
path: route.path,
|
|
91
|
+
element: /*#__PURE__*/_jsx(Layout, {
|
|
92
|
+
Component: route.component
|
|
93
|
+
})
|
|
94
|
+
}, route.path);
|
|
48
95
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
exact: matchedRoute.exact,
|
|
52
|
-
sensitive: matchedRoute.sensitive,
|
|
53
|
-
render: function render(routeProps) {
|
|
54
|
-
return /*#__PURE__*/_jsx(Layout, _objectSpread(_objectSpread({
|
|
55
|
-
Component: matchedRoute.component
|
|
56
|
-
}, routeProps), extraProps));
|
|
57
|
-
}
|
|
58
|
-
});
|
|
96
|
+
routeElements.push(_routeElement);
|
|
97
|
+
}
|
|
59
98
|
}
|
|
60
|
-
})
|
|
99
|
+
} catch (err) {
|
|
100
|
+
_iterator.e(err);
|
|
101
|
+
} finally {
|
|
102
|
+
_iterator.f();
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
routeElements.push( /*#__PURE__*/_jsx(Route, {
|
|
106
|
+
path: "*",
|
|
107
|
+
element: /*#__PURE__*/_jsx(DefaultNotFound, {})
|
|
108
|
+
}, "*"));
|
|
109
|
+
return routeElements;
|
|
110
|
+
}
|
|
111
|
+
export function renderRoutes(routesConfig) {
|
|
112
|
+
if (!routesConfig) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
var routes = routesConfig.routes,
|
|
117
|
+
globalApp = routesConfig.globalApp;
|
|
118
|
+
|
|
119
|
+
if (!routes) {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
var routeElements = getRouteComponents(routes, globalApp);
|
|
124
|
+
return routeElements;
|
|
61
125
|
}
|
|
62
126
|
export function getLocation(serverContext) {
|
|
63
127
|
var _url$replace;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
// legacy withRouter
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { useLocation, useNavigate, useParams } from 'react-router-dom';
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
export var withRouter = function withRouter(Component) {
|
|
7
|
+
return function (props) {
|
|
8
|
+
var location = useLocation();
|
|
9
|
+
var params = useParams();
|
|
10
|
+
var navigate = useNavigate();
|
|
11
|
+
return /*#__PURE__*/_jsx(Component, _objectSpread(_objectSpread({}, props), {}, {
|
|
12
|
+
location: location,
|
|
13
|
+
params: params,
|
|
14
|
+
navigate: navigate
|
|
15
|
+
}));
|
|
16
|
+
};
|
|
17
|
+
};
|
|
@@ -1,5 +1,31 @@
|
|
|
1
|
+
import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
1
2
|
import { getEntryOptions, SERVER_RENDER_FUNCTION_NAME, LOADABLE_STATS_FILE, isUseSSRBundle, createRuntimeExportsUtils, isSingleEntry } from '@modern-js/utils';
|
|
2
3
|
var PLUGIN_IDENTIFIER = 'ssr';
|
|
4
|
+
|
|
5
|
+
var hasStringSSREntry = function hasStringSSREntry(userConfig) {
|
|
6
|
+
var isStreaming = function isStreaming(ssr) {
|
|
7
|
+
return ssr && _typeof(ssr) === 'object' && ssr.mode === 'stream';
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
var server = userConfig.server;
|
|
11
|
+
|
|
12
|
+
if (server !== null && server !== void 0 && server.ssr && !isStreaming(server.ssr)) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (server !== null && server !== void 0 && server.ssrByEntries && _typeof(server.ssrByEntries) === 'object') {
|
|
17
|
+
for (var _i = 0, _Object$keys = Object.keys(server.ssrByEntries); _i < _Object$keys.length; _i++) {
|
|
18
|
+
var name = _Object$keys[_i];
|
|
19
|
+
|
|
20
|
+
if (!isStreaming(server.ssrByEntries[name])) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return false;
|
|
27
|
+
};
|
|
28
|
+
|
|
3
29
|
export default (function () {
|
|
4
30
|
return {
|
|
5
31
|
name: '@modern-js/plugin-ssr',
|
|
@@ -23,9 +49,9 @@ export default (function () {
|
|
|
23
49
|
CHAIN_ID = _ref.CHAIN_ID;
|
|
24
50
|
var userConfig = api.useResolvedConfigContext();
|
|
25
51
|
|
|
26
|
-
if (isUseSSRBundle(userConfig) && name !== 'server') {
|
|
52
|
+
if (isUseSSRBundle(userConfig) && name !== 'server' && hasStringSSREntry(userConfig)) {
|
|
27
53
|
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
28
|
-
var LoadableWebpackPlugin = require('@
|
|
54
|
+
var LoadableWebpackPlugin = require('@loadable/webpack-plugin');
|
|
29
55
|
|
|
30
56
|
chain.plugin(CHAIN_ID.PLUGIN.LOADABLE).use(LoadableWebpackPlugin, [{
|
|
31
57
|
filename: LOADABLE_STATS_FILE
|
|
@@ -35,7 +61,7 @@ export default (function () {
|
|
|
35
61
|
babel: function babel(config) {
|
|
36
62
|
var userConfig = api.useResolvedConfigContext();
|
|
37
63
|
|
|
38
|
-
if (isUseSSRBundle(userConfig)) {
|
|
64
|
+
if (isUseSSRBundle(userConfig) && hasStringSSREntry(userConfig)) {
|
|
39
65
|
config.plugins.push(require.resolve('@loadable/babel-plugin'));
|
|
40
66
|
}
|
|
41
67
|
}
|
|
@@ -45,7 +71,8 @@ export default (function () {
|
|
|
45
71
|
modifyEntryImports: function modifyEntryImports(_ref2) {
|
|
46
72
|
var entrypoint = _ref2.entrypoint,
|
|
47
73
|
imports = _ref2.imports;
|
|
48
|
-
var entryName = entrypoint.entryName
|
|
74
|
+
var entryName = entrypoint.entryName,
|
|
75
|
+
fileSystemRoutes = entrypoint.fileSystemRoutes;
|
|
49
76
|
var userConfig = api.useResolvedConfigContext();
|
|
50
77
|
|
|
51
78
|
var _api$useAppContext = api.useAppContext(),
|
|
@@ -55,6 +82,21 @@ export default (function () {
|
|
|
55
82
|
pluginsExportsUtils.addExport("export { default as ssr } from '@modern-js/runtime/ssr'"); // if use ssg then set ssr config to true
|
|
56
83
|
|
|
57
84
|
var ssrConfig = getEntryOptions(entryName, userConfig.server.ssr, userConfig.server.ssrByEntries, packageName);
|
|
85
|
+
|
|
86
|
+
if (_typeof(ssrConfig) === 'object' && ssrConfig.mode === 'stream') {
|
|
87
|
+
var _runtimeConfig$router;
|
|
88
|
+
|
|
89
|
+
var runtimeConfig = getEntryOptions(entryName, userConfig.runtime, userConfig.runtimeByEntries, packageName);
|
|
90
|
+
|
|
91
|
+
if (runtimeConfig !== null && runtimeConfig !== void 0 && (_runtimeConfig$router = runtimeConfig.router) !== null && _runtimeConfig$router !== void 0 && _runtimeConfig$router.legacy) {
|
|
92
|
+
throw new Error("Legacy router plugin doesn't support streaming SSR, check your config 'runtime.router'");
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (fileSystemRoutes && !entrypoint.nestedRoutesEntry) {
|
|
96
|
+
throw new Error("You should switch to file-system based router to support streaming SSR.");
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
58
100
|
var ssgConfig = userConfig.output.ssg;
|
|
59
101
|
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]);
|
|
60
102
|
ssrConfigMap.set(entryName, ssrConfig || useSSG);
|
|
@@ -80,7 +122,7 @@ export default (function () {
|
|
|
80
122
|
if (ssrConfigMap.get(entrypoint.entryName)) {
|
|
81
123
|
plugins.push({
|
|
82
124
|
name: PLUGIN_IDENTIFIER,
|
|
83
|
-
options: ssrConfigMap.get(entrypoint.entryName)
|
|
125
|
+
options: JSON.stringify(ssrConfigMap.get(entrypoint.entryName))
|
|
84
126
|
});
|
|
85
127
|
}
|
|
86
128
|
|