@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
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
-
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
-
|
|
5
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
-
|
|
7
1
|
import { createManager, createPipeline, createAsyncPipeline } from '@modern-js/plugin';
|
|
8
2
|
import { createLoaderManager } from "./loader/loaderManager";
|
|
9
|
-
const hoc = createPipeline();
|
|
3
|
+
const hoc = createPipeline();
|
|
4
|
+
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
10
6
|
|
|
11
7
|
const provide = createPipeline();
|
|
12
8
|
const client = createAsyncPipeline();
|
|
@@ -21,43 +17,25 @@ const runtimeHooks = {
|
|
|
21
17
|
init,
|
|
22
18
|
pickContext
|
|
23
19
|
};
|
|
20
|
+
|
|
24
21
|
/** All hooks of runtime plugin. */
|
|
25
22
|
|
|
26
23
|
export const createRuntime = () => createManager(runtimeHooks);
|
|
24
|
+
|
|
27
25
|
/**
|
|
28
26
|
* register init hook. It would be revoked both ssr and csr.
|
|
29
27
|
*/
|
|
30
|
-
|
|
31
28
|
const registerInit = (App, _init) => {
|
|
32
29
|
const originalInit = App.init;
|
|
33
|
-
|
|
34
30
|
App.init = async context => {
|
|
35
31
|
if (!context.loaderManager) {
|
|
36
32
|
context.loaderManager = createLoaderManager({});
|
|
37
33
|
}
|
|
38
|
-
|
|
39
34
|
await Promise.all([originalInit === null || originalInit === void 0 ? void 0 : originalInit(context), _init === null || _init === void 0 ? void 0 : _init(context)]);
|
|
40
35
|
};
|
|
41
36
|
};
|
|
42
|
-
/**
|
|
43
|
-
* register prefetch hook. It would be revoked both ssr and csr.
|
|
44
|
-
* But if ssr success, It wont exec in csr again.
|
|
45
|
-
* If ssr prefetch failed, It will fallback to exec in csr.
|
|
46
|
-
*/
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const registerPrefetch = (App, prefetch) => {
|
|
50
|
-
const originalPrefetch = App.prefetch;
|
|
51
|
-
|
|
52
|
-
App.prefetch = async context => {
|
|
53
|
-
const originResult = await (originalPrefetch === null || originalPrefetch === void 0 ? void 0 : originalPrefetch(context));
|
|
54
|
-
const result = await (prefetch === null || prefetch === void 0 ? void 0 : prefetch(context));
|
|
55
|
-
return _objectSpread(_objectSpread({}, originResult), result);
|
|
56
|
-
};
|
|
57
|
-
};
|
|
58
|
-
|
|
59
37
|
export const runtime = createRuntime();
|
|
60
38
|
export const {
|
|
61
39
|
createPlugin
|
|
62
40
|
} = runtime;
|
|
63
|
-
export { registerInit
|
|
41
|
+
export { registerInit };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2
|
+
import React, { useContext } from 'react';
|
|
3
|
+
import { DOCUMENT_CHUNKSMAP_PLACEHOLDER, DOCUMENT_SSRDATASCRIPT_PLACEHOLDER } from "./constants";
|
|
4
|
+
import { DocumentStructrueContext } from "./DocumentStructrueContext";
|
|
5
|
+
import { DefaultRoot } from "./Root";
|
|
6
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
export function Body(props) {
|
|
8
|
+
const {
|
|
9
|
+
hasSetRoot
|
|
10
|
+
} = useContext(DocumentStructrueContext);
|
|
11
|
+
const {
|
|
12
|
+
children
|
|
13
|
+
} = props;
|
|
14
|
+
return /*#__PURE__*/_jsxs("body", {
|
|
15
|
+
children: [hasSetRoot ? null : DefaultRoot, children, `${DOCUMENT_CHUNKSMAP_PLACEHOLDER}`, `${DOCUMENT_SSRDATASCRIPT_PLACEHOLDER}`]
|
|
16
|
+
});
|
|
17
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2
|
+
import React, { useContext } from 'react';
|
|
3
|
+
import { DocumentStructrueContext } from "./DocumentStructrueContext";
|
|
4
|
+
import { Scripts } from "./Scripts";
|
|
5
|
+
import { DOCUMENT_META_PLACEHOLDER } from "./constants";
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
export function Head(props) {
|
|
9
|
+
const {
|
|
10
|
+
hasSetScripts
|
|
11
|
+
} = useContext(DocumentStructrueContext);
|
|
12
|
+
const {
|
|
13
|
+
children
|
|
14
|
+
} = props;
|
|
15
|
+
// todo: verify the children
|
|
16
|
+
return /*#__PURE__*/_jsxs("head", {
|
|
17
|
+
children: [`${DOCUMENT_META_PLACEHOLDER}`, !hasSetScripts && /*#__PURE__*/_jsx(Scripts, {}), children]
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
export function DefaultHead() {
|
|
21
|
+
return /*#__PURE__*/_jsx("head", {
|
|
22
|
+
children: `${DOCUMENT_META_PLACEHOLDER}`
|
|
23
|
+
});
|
|
24
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Body } from "./Body";
|
|
4
|
+
import { DocumentStructrueContext } from "./DocumentStructrueContext";
|
|
5
|
+
import { Head } from "./Head";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* get the directly son element
|
|
9
|
+
*/
|
|
10
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
function findTargetChild(tag, children) {
|
|
13
|
+
return children.find(item => getEleType(item) === tag);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* get the type of react element
|
|
18
|
+
*/
|
|
19
|
+
function getEleType(ele) {
|
|
20
|
+
// fixme: 非 react 的类型,有点儿问题。
|
|
21
|
+
return typeof (ele === null || ele === void 0 ? void 0 : ele.type) === 'function' ? ele.type.name : ele === null || ele === void 0 ? void 0 : ele.type;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* get the children(grandChild included) with target type
|
|
26
|
+
* @param tag the element type
|
|
27
|
+
* @param children son element
|
|
28
|
+
* @returns target element
|
|
29
|
+
*/
|
|
30
|
+
function findTargetElement(tag, children) {
|
|
31
|
+
if (children.length === 0) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
let nextChildren = [];
|
|
35
|
+
for (const item of children) {
|
|
36
|
+
var _item$props;
|
|
37
|
+
if (tag === getEleType(item)) {
|
|
38
|
+
return item;
|
|
39
|
+
}
|
|
40
|
+
if (item !== null && item !== void 0 && (_item$props = item.props) !== null && _item$props !== void 0 && _item$props.children) {
|
|
41
|
+
nextChildren = nextChildren.concat(item.props.children);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return findTargetElement(tag, nextChildren);
|
|
45
|
+
}
|
|
46
|
+
export function Html(props) {
|
|
47
|
+
const {
|
|
48
|
+
children
|
|
49
|
+
} = props;
|
|
50
|
+
|
|
51
|
+
// deal with the component with default
|
|
52
|
+
const hasSetHead = Boolean(findTargetChild('Head', children));
|
|
53
|
+
const hasSetScripts = Boolean(findTargetElement('Scripts', children));
|
|
54
|
+
const hasSetBody = Boolean(findTargetChild('Body', children));
|
|
55
|
+
const hasSetRoot = Boolean(findTargetElement('Root', children));
|
|
56
|
+
const notMissMustChild = [hasSetHead, hasSetBody
|
|
57
|
+
// hasSetScripts,
|
|
58
|
+
// hasSetRoot,
|
|
59
|
+
].every(item => item);
|
|
60
|
+
|
|
61
|
+
// todo: or throw an error
|
|
62
|
+
if (!notMissMustChild) {
|
|
63
|
+
return /*#__PURE__*/_jsx("html", {
|
|
64
|
+
children: /*#__PURE__*/_jsxs("body", {
|
|
65
|
+
style: {
|
|
66
|
+
color: 'red'
|
|
67
|
+
},
|
|
68
|
+
children: [`Miss the `, [hasSetHead, hasSetBody
|
|
69
|
+
// hasSetScripts,
|
|
70
|
+
// hasSetRoot,
|
|
71
|
+
].map((item, index) => {
|
|
72
|
+
return item ? null : ['Head', 'Body'
|
|
73
|
+
// 'Scripts',
|
|
74
|
+
// 'Root',
|
|
75
|
+
][index];
|
|
76
|
+
}), ` Element`]
|
|
77
|
+
})
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return /*#__PURE__*/_jsx("html", {
|
|
81
|
+
children: /*#__PURE__*/_jsxs(DocumentStructrueContext.Provider, {
|
|
82
|
+
value: {
|
|
83
|
+
hasSetHead,
|
|
84
|
+
hasSetScripts,
|
|
85
|
+
hasSetRoot,
|
|
86
|
+
hasSetBody,
|
|
87
|
+
docChild: children
|
|
88
|
+
},
|
|
89
|
+
children: [!hasSetHead && /*#__PURE__*/_jsx(Head, {}), !hasSetBody && /*#__PURE__*/_jsx(Body, {}), children]
|
|
90
|
+
})
|
|
91
|
+
});
|
|
92
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2
|
+
import React, { useContext } from 'react';
|
|
3
|
+
import { DocumentContext } from "./DocumentContext";
|
|
4
|
+
import { DOCUMENT_SSR_PLACEHOLDER } from "./constants";
|
|
5
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
export function Root(props) {
|
|
7
|
+
const {
|
|
8
|
+
rootId,
|
|
9
|
+
children
|
|
10
|
+
} = props;
|
|
11
|
+
const {
|
|
12
|
+
templateParams: {
|
|
13
|
+
mountId = 'root'
|
|
14
|
+
}
|
|
15
|
+
} = useContext(DocumentContext);
|
|
16
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
17
|
+
id: `${rootId || mountId}`,
|
|
18
|
+
children: [`${DOCUMENT_SSR_PLACEHOLDER}`, children]
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
export function DefaultRoot(props) {
|
|
22
|
+
const {
|
|
23
|
+
templateParams: {
|
|
24
|
+
mountId
|
|
25
|
+
}
|
|
26
|
+
} = useContext(DocumentContext);
|
|
27
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
28
|
+
id: `${mountId}`,
|
|
29
|
+
children: [`${DOCUMENT_SSR_PLACEHOLDER}`, props.children]
|
|
30
|
+
});
|
|
31
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { DOCUMENT_SCRIPTS_PLACEHOLDER } from "./constants";
|
|
4
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
export function Scripts() {
|
|
7
|
+
return /*#__PURE__*/_jsx(_Fragment, {
|
|
8
|
+
children: `${DOCUMENT_SCRIPTS_PLACEHOLDER}`
|
|
9
|
+
});
|
|
10
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
3
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import ReactDomServer from 'react-dom/server';
|
|
7
|
+
import { build } from 'esbuild';
|
|
8
|
+
import { createDebugger, findExists } from '@modern-js/utils';
|
|
9
|
+
import { DocumentContext } from "../DocumentContext";
|
|
10
|
+
import { DOCUMENT_SCRIPTS_PLACEHOLDER, DOCUMENT_FILE_NAME, DOCUMENT_META_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP, DOC_EXT, DOCUMENT_SSR_PLACEHOLDER, DOCUMENT_CHUNKSMAP_PLACEHOLDER, DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, HTML_SEPARATOR } from "../constants";
|
|
11
|
+
const debug = createDebugger('html_genarate');
|
|
12
|
+
const getDocumenByEntryName = function getDocumenByEntryName(entrypoints, entryName) {
|
|
13
|
+
var _entrypoints$find;
|
|
14
|
+
const entryDir = (_entrypoints$find = entrypoints.find(item => item.entryName === entryName)) === null || _entrypoints$find === void 0 ? void 0 : _entrypoints$find.absoluteEntryDir;
|
|
15
|
+
const docFile = findExists(DOC_EXT.map(item => `${entryDir}${path.sep}${DOCUMENT_FILE_NAME}.${item}`));
|
|
16
|
+
return docFile || undefined;
|
|
17
|
+
};
|
|
18
|
+
export default (() => ({
|
|
19
|
+
name: '@modern-js/plugin-document',
|
|
20
|
+
pre: ['@modern-js/plugin-analyze'],
|
|
21
|
+
setup: async api => {
|
|
22
|
+
// get params for document.tsx
|
|
23
|
+
function getDocParams(params) {
|
|
24
|
+
const {
|
|
25
|
+
config,
|
|
26
|
+
templateParameters,
|
|
27
|
+
entryName
|
|
28
|
+
} = params;
|
|
29
|
+
// for enough params, devide as:process, config, templateParams
|
|
30
|
+
return {
|
|
31
|
+
processEnv: process.env,
|
|
32
|
+
config: {
|
|
33
|
+
output: config.output
|
|
34
|
+
},
|
|
35
|
+
entryName,
|
|
36
|
+
templateParams: templateParameters
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const documentEntry = (entryName, templateParameters) => {
|
|
40
|
+
const {
|
|
41
|
+
entrypoints,
|
|
42
|
+
internalDirectory
|
|
43
|
+
} = api.useAppContext();
|
|
44
|
+
// search the document.[tsx|jsx|js|ts] under entry
|
|
45
|
+
// if not, use main as default
|
|
46
|
+
let documentFilePath = getDocumenByEntryName(entrypoints, entryName);
|
|
47
|
+
if (!documentFilePath) {
|
|
48
|
+
documentFilePath = getDocumenByEntryName(entrypoints, 'main');
|
|
49
|
+
}
|
|
50
|
+
// if no document file, do nothing as default
|
|
51
|
+
if (!documentFilePath) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
return async ({
|
|
55
|
+
htmlWebpackPlugin
|
|
56
|
+
}) => {
|
|
57
|
+
const documentParams = getDocParams({
|
|
58
|
+
config: api.useConfigContext(),
|
|
59
|
+
entryName,
|
|
60
|
+
templateParameters
|
|
61
|
+
});
|
|
62
|
+
const htmlOutputFile = path.join(internalDirectory, `./document/_${entryName}.html.js`);
|
|
63
|
+
// transform document file to html string
|
|
64
|
+
await build({
|
|
65
|
+
entryPoints: [documentFilePath],
|
|
66
|
+
// write: false,
|
|
67
|
+
outfile: htmlOutputFile,
|
|
68
|
+
platform: 'node',
|
|
69
|
+
target: 'es6',
|
|
70
|
+
loader: {
|
|
71
|
+
'.ts': 'ts',
|
|
72
|
+
'.tsx': 'tsx'
|
|
73
|
+
},
|
|
74
|
+
bundle: true,
|
|
75
|
+
plugins: [{
|
|
76
|
+
name: 'make-all-packages-external',
|
|
77
|
+
setup(build) {
|
|
78
|
+
// https://github.com/evanw/esbuild/issues/619#issuecomment-751995294
|
|
79
|
+
build.onResolve({
|
|
80
|
+
filter: /^[^./]|^\.[^./]|^\.\.[^/]/
|
|
81
|
+
}, args => {
|
|
82
|
+
let external = true;
|
|
83
|
+
// FIXME: windows external entrypoint
|
|
84
|
+
if (args.kind === 'entry-point') {
|
|
85
|
+
external = false;
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
path: args.path,
|
|
89
|
+
external
|
|
90
|
+
};
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}]
|
|
94
|
+
});
|
|
95
|
+
const Document = (await import(htmlOutputFile)).default;
|
|
96
|
+
const HTMLElement = /*#__PURE__*/React.createElement(DocumentContext.Provider, {
|
|
97
|
+
value: documentParams
|
|
98
|
+
}, /*#__PURE__*/React.createElement(Document, null));
|
|
99
|
+
const html = ReactDomServer.renderToStaticMarkup(HTMLElement);
|
|
100
|
+
debug("entry %s's document jsx rendered html: %o", entryName, html);
|
|
101
|
+
const scripts = [htmlWebpackPlugin.tags.headTags.filter(item => item.tagName === 'script').join(''), htmlWebpackPlugin.tags.bodyTags.toString()].join('');
|
|
102
|
+
const metas = [templateParameters.meta, htmlWebpackPlugin.tags.headTags.filter(item => item.tagName !== 'script').join('')].join('');
|
|
103
|
+
|
|
104
|
+
// replace the html placeholder while transfer string to jsx component is not a easy way
|
|
105
|
+
return `<!DOCTYPE html>${html}`.replace(DOCUMENT_META_PLACEHOLDER, metas).replace(DOCUMENT_SSR_PLACEHOLDER, HTML_SEPARATOR).replace(DOCUMENT_SCRIPTS_PLACEHOLDER, scripts).replace(DOCUMENT_CHUNKSMAP_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP[DOCUMENT_CHUNKSMAP_PLACEHOLDER]).replace(DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, PLACEHOLDER_REPLACER_MAP[DOCUMENT_SSRDATASCRIPT_PLACEHOLDER]);
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
return {
|
|
109
|
+
config: () => {
|
|
110
|
+
return {
|
|
111
|
+
tools: {
|
|
112
|
+
htmlPlugin: (options, entry) => {
|
|
113
|
+
// just for reuse the baseParames calculate by builder:
|
|
114
|
+
// https://github.com/modern-js-dev/modern.js/blob/1abb452a87ae1adbcf8da47d62c05da39cbe4d69/packages/builder/builder-webpack-provider/src/plugins/html.ts#L69-L103
|
|
115
|
+
const hackParameters = typeof (options === null || options === void 0 ? void 0 : options.templateParameters) === 'function' ? options === null || options === void 0 ? void 0 : options.templateParameters({}, {}, {}, {}) : _objectSpread({}, options === null || options === void 0 ? void 0 : options.templateParameters);
|
|
116
|
+
const templateContent = documentEntry(entry.entryName,
|
|
117
|
+
// options,
|
|
118
|
+
hackParameters);
|
|
119
|
+
const documentHtmlOptions = templateContent ? {
|
|
120
|
+
templateContent,
|
|
121
|
+
inject: false
|
|
122
|
+
} : {};
|
|
123
|
+
return _objectSpread(_objectSpread({}, options), documentHtmlOptions);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}));
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const DOC_EXT = ['jsx', 'tsx', 'ts', 'js'];
|
|
2
|
+
export const DOCUMENT_META_PLACEHOLDER = encodeURIComponent('<%= meta %>');
|
|
3
|
+
export const HTML_SEPARATOR = '<!--<?- html ?>-->';
|
|
4
|
+
export const HTML_CHUNKSMAP_SEPARATOR = '<!--<?- chunksMap.js ?>-->';
|
|
5
|
+
export const HTML_SSRDATASCRIPT_SEPARATOR = '<!--<?- SSRDataScript ?>-->';
|
|
6
|
+
// export const HTML_BOTTOMTPL_SEPARATOR = '<!--<?- bottomTemplate ?>-->'; // document jsx not need bottom
|
|
7
|
+
|
|
8
|
+
export const DOCUMENT_SSR_PLACEHOLDER = encodeURIComponent(HTML_SEPARATOR);
|
|
9
|
+
export const DOCUMENT_CHUNKSMAP_PLACEHOLDER = encodeURIComponent(HTML_CHUNKSMAP_SEPARATOR);
|
|
10
|
+
export const DOCUMENT_SSRDATASCRIPT_PLACEHOLDER = encodeURIComponent(HTML_SSRDATASCRIPT_SEPARATOR);
|
|
11
|
+
export const DOCUMENT_FILE_NAME = 'document';
|
|
12
|
+
export const DOCUMENT_SCRIPTS_PLACEHOLDER = encodeURIComponent('<!-- chunk scripts placeholder -->');
|
|
13
|
+
export const DOCUMENT_NO_SCRIPTE_PLACEHOLDER = encodeURIComponent('<!-- no-script -->');
|
|
14
|
+
export const PLACEHOLDER_REPLACER_MAP = {
|
|
15
|
+
[DOCUMENT_NO_SCRIPTE_PLACEHOLDER]: `We're sorry but react app doesn't work properly without JavaScript enabled. Please enable it to continue.`,
|
|
16
|
+
[DOCUMENT_SSR_PLACEHOLDER]: HTML_SEPARATOR,
|
|
17
|
+
[DOCUMENT_CHUNKSMAP_PLACEHOLDER]: HTML_CHUNKSMAP_SEPARATOR,
|
|
18
|
+
[DOCUMENT_SSRDATASCRIPT_PLACEHOLDER]: HTML_SSRDATASCRIPT_SEPARATOR
|
|
19
|
+
};
|
package/dist/js/modern/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { isBrowser } from "./common";
|
|
2
|
-
export { createApp, createPlugin, useLoader, bootstrap, RuntimeReactContext,
|
|
2
|
+
export { createApp, createPlugin, useLoader, bootstrap, RuntimeReactContext, defineConfig, registerInit, useRuntimeContext } from "./core";
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
-
|
|
3
2
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
-
|
|
5
3
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
-
|
|
7
4
|
import { getEntryOptions, createRuntimeExportsUtils, PLUGIN_SCHEMAS } from '@modern-js/utils';
|
|
8
5
|
const PLUGIN_IDENTIFIER = 'router';
|
|
9
6
|
const ROUTES_IDENTIFIER = 'routes';
|
|
@@ -25,17 +22,14 @@ export default (() => ({
|
|
|
25
22
|
}
|
|
26
23
|
};
|
|
27
24
|
},
|
|
28
|
-
|
|
29
25
|
validateSchema() {
|
|
30
26
|
return PLUGIN_SCHEMAS['@modern-js/plugin-router'];
|
|
31
27
|
},
|
|
32
|
-
|
|
33
28
|
modifyEntryImports({
|
|
34
29
|
entrypoint,
|
|
35
30
|
imports
|
|
36
31
|
}) {
|
|
37
32
|
var _userConfig$runtime, _userConfig$runtime$r;
|
|
38
|
-
|
|
39
33
|
const {
|
|
40
34
|
entryName,
|
|
41
35
|
fileSystemRoutes
|
|
@@ -47,7 +41,6 @@ export default (() => ({
|
|
|
47
41
|
} = api.useAppContext();
|
|
48
42
|
const runtimeConfig = getEntryOptions(entryName, userConfig.runtime, userConfig.runtimeByEntries, packageName);
|
|
49
43
|
runtimeConfigMap.set(entryName, runtimeConfig);
|
|
50
|
-
|
|
51
44
|
if (runtimeConfig !== null && runtimeConfig !== void 0 && runtimeConfig.router) {
|
|
52
45
|
if (!isLegacy) {
|
|
53
46
|
imports.push({
|
|
@@ -60,19 +53,16 @@ export default (() => ({
|
|
|
60
53
|
} else if (fileSystemRoutes) {
|
|
61
54
|
throw new Error(`should enable runtime.router for entry ${entryName}`);
|
|
62
55
|
}
|
|
63
|
-
|
|
64
56
|
return {
|
|
65
57
|
entrypoint,
|
|
66
58
|
imports
|
|
67
59
|
};
|
|
68
60
|
},
|
|
69
|
-
|
|
70
61
|
modifyEntryRuntimePlugins({
|
|
71
62
|
entrypoint,
|
|
72
63
|
plugins
|
|
73
64
|
}) {
|
|
74
65
|
var _userConfig$runtime2, _userConfig$runtime2$;
|
|
75
|
-
|
|
76
66
|
const {
|
|
77
67
|
entryName,
|
|
78
68
|
fileSystemRoutes
|
|
@@ -83,7 +73,6 @@ export default (() => ({
|
|
|
83
73
|
const userConfig = api.useResolvedConfigContext();
|
|
84
74
|
const isLegacy = Boolean(userConfig === null || userConfig === void 0 ? void 0 : (_userConfig$runtime2 = userConfig.runtime) === null || _userConfig$runtime2 === void 0 ? void 0 : (_userConfig$runtime2$ = _userConfig$runtime2.router) === null || _userConfig$runtime2$ === void 0 ? void 0 : _userConfig$runtime2$.legacy);
|
|
85
75
|
const runtimeConfig = runtimeConfigMap.get(entryName);
|
|
86
|
-
|
|
87
76
|
if (runtimeConfig.router && !isLegacy) {
|
|
88
77
|
// Todo: plugin-router best to only handle manage client route.
|
|
89
78
|
// here support base server route usage, part for compatibility
|
|
@@ -97,24 +86,19 @@ export default (() => ({
|
|
|
97
86
|
})).replace(/"routesConfig"\s*:\s*"((\S|\s)+)"/g, '"routesConfig": $1,')
|
|
98
87
|
});
|
|
99
88
|
}
|
|
100
|
-
|
|
101
89
|
return {
|
|
102
90
|
entrypoint,
|
|
103
91
|
plugins
|
|
104
92
|
};
|
|
105
93
|
},
|
|
106
|
-
|
|
107
94
|
addRuntimeExports() {
|
|
108
95
|
var _userConfig$runtime3, _userConfig$runtime3$;
|
|
109
|
-
|
|
110
96
|
const userConfig = api.useResolvedConfigContext();
|
|
111
97
|
const isLegacy = Boolean(userConfig === null || userConfig === void 0 ? void 0 : (_userConfig$runtime3 = userConfig.runtime) === null || _userConfig$runtime3 === void 0 ? void 0 : (_userConfig$runtime3$ = _userConfig$runtime3.router) === null || _userConfig$runtime3$ === void 0 ? void 0 : _userConfig$runtime3$.legacy);
|
|
112
|
-
|
|
113
98
|
if (!isLegacy) {
|
|
114
99
|
pluginsExportsUtils.addExport(`export { default as router } from '@modern-js/runtime/router'`);
|
|
115
100
|
}
|
|
116
101
|
}
|
|
117
|
-
|
|
118
102
|
};
|
|
119
103
|
}
|
|
120
104
|
}));
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
-
|
|
3
2
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
-
|
|
5
3
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
-
|
|
7
4
|
import React from 'react';
|
|
8
5
|
import { createBrowserRouter, createHashRouter, RouterProvider, createRoutesFromElements } from 'react-router-dom';
|
|
9
6
|
import hoistNonReactStatics from 'hoist-non-react-statics';
|
|
@@ -16,7 +13,6 @@ export const routerPlugin = ({
|
|
|
16
13
|
createRoutes
|
|
17
14
|
}) => {
|
|
18
15
|
const select = pathname => _serverBase.find(baseUrl => pathname.search(baseUrl) === 0) || '/';
|
|
19
|
-
|
|
20
16
|
return {
|
|
21
17
|
name: '@modern-js/plugin-router',
|
|
22
18
|
setup: () => {
|
|
@@ -31,11 +27,9 @@ export const routerPlugin = ({
|
|
|
31
27
|
App
|
|
32
28
|
});
|
|
33
29
|
}
|
|
34
|
-
|
|
35
30
|
const getRouteApp = () => {
|
|
36
31
|
return props => {
|
|
37
32
|
var _window$_SERVER_DATA;
|
|
38
|
-
|
|
39
33
|
const routeElements = renderRoutes(routesConfig);
|
|
40
34
|
const routes = createRoutes ? createRoutes() : createRoutesFromElements(routeElements);
|
|
41
35
|
const baseUrl = ((_window$_SERVER_DATA = window._SERVER_DATA) === null || _window$_SERVER_DATA === void 0 ? void 0 : _window$_SERVER_DATA.router.baseUrl) || select(location.pathname);
|
|
@@ -51,15 +45,12 @@ export const routerPlugin = ({
|
|
|
51
45
|
}));
|
|
52
46
|
};
|
|
53
47
|
};
|
|
54
|
-
|
|
55
48
|
const RouteApp = getRouteApp();
|
|
56
|
-
|
|
57
49
|
if (routesConfig.globalApp) {
|
|
58
50
|
return next({
|
|
59
51
|
App: hoistNonReactStatics(RouteApp, routesConfig.globalApp)
|
|
60
52
|
});
|
|
61
53
|
}
|
|
62
|
-
|
|
63
54
|
return next({
|
|
64
55
|
App: RouteApp
|
|
65
56
|
});
|