@modern-js/runtime 1.21.2 → 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 +52 -0
- 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
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export function getLoadableScripts(extractor) {
|
|
2
|
+
const check = scripts => (scripts || '').includes('__LOADABLE_REQUIRED_CHUNKS___ext');
|
|
3
|
+
|
|
4
|
+
const scripts = extractor.getScriptTags();
|
|
5
|
+
|
|
6
|
+
if (!check(scripts)) {
|
|
7
|
+
return '';
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
return scripts.split('</script>') // 前两个 script为 loadable 必须的 script
|
|
11
|
+
.slice(0, 2).map(i => `${i}</script>`).join('');
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const getLatency = hrtime => {
|
|
15
|
+
const [s, ns] = process.hrtime(hrtime);
|
|
16
|
+
return s * 1e3 + ns / 1e6;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const time = () => {
|
|
20
|
+
const hrtime = process.hrtime();
|
|
21
|
+
return () => {
|
|
22
|
+
return getLatency(hrtime);
|
|
23
|
+
};
|
|
24
|
+
};
|
|
@@ -4,6 +4,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
4
4
|
|
|
5
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
6
|
|
|
7
|
+
export const isReact18 = () => process.env.IS_REACT18 === 'true';
|
|
7
8
|
export const formatServer = request => {
|
|
8
9
|
const {
|
|
9
10
|
cookie = '',
|
|
@@ -46,16 +47,21 @@ export const formatClient = request => {
|
|
|
46
47
|
export const mockResponse = () => {
|
|
47
48
|
return {
|
|
48
49
|
setHeader() {
|
|
49
|
-
console.
|
|
50
|
+
console.warn('response.setHeader() can only be used in the server side');
|
|
50
51
|
},
|
|
51
52
|
|
|
52
53
|
status() {
|
|
53
|
-
console.
|
|
54
|
+
console.warn('response.status() can only be used in the server side');
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
get locals() {
|
|
58
|
+
console.warn('response.locals can only be used in the server side');
|
|
59
|
+
return {};
|
|
54
60
|
}
|
|
55
61
|
|
|
56
62
|
};
|
|
57
63
|
};
|
|
58
|
-
export const isCrossOrigin = (url, base) => {
|
|
64
|
+
export const isCrossOrigin = (url = '', base) => {
|
|
59
65
|
if (url.startsWith('/') || url.startsWith('./')) {
|
|
60
66
|
return false;
|
|
61
67
|
} else if (!url.includes(base)) {
|
|
@@ -20,7 +20,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
20
20
|
var _default = () => ({
|
|
21
21
|
name: '@modern-js/runtime',
|
|
22
22
|
post: ['@modern-js/plugin-router', '@modern-js/plugin-ssr', '@modern-js/plugin-state', '@modern-js/plugin-design-token'],
|
|
23
|
-
usePlugins: [(0, _cli.default)(), (0,
|
|
23
|
+
usePlugins: [(0, _cli.default)(), (0, _cli2.default)(), (0, _cli3.default)()],
|
|
24
24
|
setup: api => {
|
|
25
25
|
return {
|
|
26
26
|
config() {
|
|
@@ -11,7 +11,8 @@ var _exportNames = {
|
|
|
11
11
|
registerPrefetch: true,
|
|
12
12
|
defineConfig: true,
|
|
13
13
|
getConfig: true,
|
|
14
|
-
RuntimeReactContext: true
|
|
14
|
+
RuntimeReactContext: true,
|
|
15
|
+
ServerRouterContext: true
|
|
15
16
|
};
|
|
16
17
|
Object.defineProperty(exports, "RuntimeReactContext", {
|
|
17
18
|
enumerable: true,
|
|
@@ -19,6 +20,12 @@ Object.defineProperty(exports, "RuntimeReactContext", {
|
|
|
19
20
|
return _runtimeContext.RuntimeReactContext;
|
|
20
21
|
}
|
|
21
22
|
});
|
|
23
|
+
Object.defineProperty(exports, "ServerRouterContext", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function () {
|
|
26
|
+
return _runtimeContext.ServerRouterContext;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
22
29
|
Object.defineProperty(exports, "createPlugin", {
|
|
23
30
|
enumerable: true,
|
|
24
31
|
get: function () {
|
package/dist/js/node/index.js
CHANGED
|
@@ -33,6 +33,12 @@ Object.defineProperty(exports, "defineConfig", {
|
|
|
33
33
|
return _core.defineConfig;
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
|
+
Object.defineProperty(exports, "isBrowser", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _common.isBrowser;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
36
42
|
Object.defineProperty(exports, "registerInit", {
|
|
37
43
|
enumerable: true,
|
|
38
44
|
get: function () {
|
|
@@ -58,4 +64,6 @@ Object.defineProperty(exports, "useRuntimeContext", {
|
|
|
58
64
|
}
|
|
59
65
|
});
|
|
60
66
|
|
|
67
|
+
var _common = require("./common");
|
|
68
|
+
|
|
61
69
|
var _core = require("./core");
|
|
@@ -43,11 +43,14 @@ var _default = () => ({
|
|
|
43
43
|
entrypoint,
|
|
44
44
|
imports
|
|
45
45
|
}) {
|
|
46
|
+
var _userConfig$runtime, _userConfig$runtime$r;
|
|
47
|
+
|
|
46
48
|
const {
|
|
47
49
|
entryName,
|
|
48
50
|
fileSystemRoutes
|
|
49
51
|
} = entrypoint;
|
|
50
52
|
const userConfig = api.useResolvedConfigContext();
|
|
53
|
+
const isLegacy = Boolean(userConfig === null || userConfig === void 0 ? void 0 : (_userConfig$runtime = userConfig.runtime) === null || _userConfig$runtime === void 0 ? void 0 : (_userConfig$runtime$r = _userConfig$runtime.router) === null || _userConfig$runtime$r === void 0 ? void 0 : _userConfig$runtime$r.legacy);
|
|
51
54
|
const {
|
|
52
55
|
packageName
|
|
53
56
|
} = api.useAppContext();
|
|
@@ -55,12 +58,14 @@ var _default = () => ({
|
|
|
55
58
|
runtimeConfigMap.set(entryName, runtimeConfig);
|
|
56
59
|
|
|
57
60
|
if (runtimeConfig !== null && runtimeConfig !== void 0 && runtimeConfig.router) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
if (!isLegacy) {
|
|
62
|
+
imports.push({
|
|
63
|
+
value: '@modern-js/runtime/plugins',
|
|
64
|
+
specifiers: [{
|
|
65
|
+
imported: PLUGIN_IDENTIFIER
|
|
66
|
+
}]
|
|
67
|
+
});
|
|
68
|
+
}
|
|
64
69
|
} else if (fileSystemRoutes) {
|
|
65
70
|
throw new Error(`should enable runtime.router for entry ${entryName}`);
|
|
66
71
|
}
|
|
@@ -75,6 +80,8 @@ var _default = () => ({
|
|
|
75
80
|
entrypoint,
|
|
76
81
|
plugins
|
|
77
82
|
}) {
|
|
83
|
+
var _userConfig$runtime2, _userConfig$runtime2$;
|
|
84
|
+
|
|
78
85
|
const {
|
|
79
86
|
entryName,
|
|
80
87
|
fileSystemRoutes
|
|
@@ -82,9 +89,11 @@ var _default = () => ({
|
|
|
82
89
|
const {
|
|
83
90
|
serverRoutes
|
|
84
91
|
} = api.useAppContext();
|
|
92
|
+
const userConfig = api.useResolvedConfigContext();
|
|
93
|
+
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
94
|
const runtimeConfig = runtimeConfigMap.get(entryName);
|
|
86
95
|
|
|
87
|
-
if (runtimeConfig.router) {
|
|
96
|
+
if (runtimeConfig.router && !isLegacy) {
|
|
88
97
|
// Todo: plugin-router best to only handle manage client route.
|
|
89
98
|
// here support base server route usage, part for compatibility
|
|
90
99
|
const serverBase = serverRoutes.filter(route => route.entryName === entryName).map(route => route.urlPath).sort((a, b) => a.length - b.length > 0 ? -1 : 1);
|
|
@@ -105,7 +114,14 @@ var _default = () => ({
|
|
|
105
114
|
},
|
|
106
115
|
|
|
107
116
|
addRuntimeExports() {
|
|
108
|
-
|
|
117
|
+
var _userConfig$runtime3, _userConfig$runtime3$;
|
|
118
|
+
|
|
119
|
+
const userConfig = api.useResolvedConfigContext();
|
|
120
|
+
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);
|
|
121
|
+
|
|
122
|
+
if (!isLegacy) {
|
|
123
|
+
pluginsExportsUtils.addExport(`export { default as router } from '@modern-js/runtime/router'`);
|
|
124
|
+
}
|
|
109
125
|
}
|
|
110
126
|
|
|
111
127
|
};
|
|
@@ -22,16 +22,16 @@ Object.keys(_reactRouterDom).forEach(function (key) {
|
|
|
22
22
|
});
|
|
23
23
|
});
|
|
24
24
|
|
|
25
|
-
var
|
|
25
|
+
var _withRouter = require("./withRouter");
|
|
26
26
|
|
|
27
|
-
Object.keys(
|
|
27
|
+
Object.keys(_withRouter).forEach(function (key) {
|
|
28
28
|
if (key === "default" || key === "__esModule") return;
|
|
29
29
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
30
|
-
if (key in exports && exports[key] ===
|
|
30
|
+
if (key in exports && exports[key] === _withRouter[key]) return;
|
|
31
31
|
Object.defineProperty(exports, key, {
|
|
32
32
|
enumerable: true,
|
|
33
33
|
get: function () {
|
|
34
|
-
return
|
|
34
|
+
return _withRouter[key];
|
|
35
35
|
}
|
|
36
36
|
});
|
|
37
37
|
});
|
|
@@ -5,28 +5,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.routerPlugin = void 0;
|
|
7
7
|
|
|
8
|
-
var _react =
|
|
9
|
-
|
|
10
|
-
var _history = require("history");
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
9
|
|
|
12
10
|
var _reactRouterDom = require("react-router-dom");
|
|
13
11
|
|
|
14
12
|
var _hoistNonReactStatics = _interopRequireDefault(require("hoist-non-react-statics"));
|
|
15
13
|
|
|
16
|
-
var _core = require("../../core");
|
|
17
|
-
|
|
18
|
-
var _common = require("../../common");
|
|
19
|
-
|
|
20
14
|
var _utils = require("./utils");
|
|
21
15
|
|
|
22
16
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
23
17
|
|
|
24
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
19
|
|
|
26
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
|
-
|
|
28
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
29
|
-
|
|
30
20
|
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; }
|
|
31
21
|
|
|
32
22
|
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; }
|
|
@@ -35,13 +25,10 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
35
25
|
|
|
36
26
|
const routerPlugin = ({
|
|
37
27
|
serverBase: _serverBase = [],
|
|
38
|
-
history: customHistory,
|
|
39
28
|
supportHtml5History: _supportHtml5History = true,
|
|
40
29
|
routesConfig,
|
|
41
|
-
|
|
30
|
+
createRoutes
|
|
42
31
|
}) => {
|
|
43
|
-
const isBrow = (0, _common.isBrowser)();
|
|
44
|
-
|
|
45
32
|
const select = pathname => _serverBase.find(baseUrl => pathname.search(baseUrl) === 0) || '/';
|
|
46
33
|
|
|
47
34
|
return {
|
|
@@ -51,49 +38,37 @@ const routerPlugin = ({
|
|
|
51
38
|
hoc: ({
|
|
52
39
|
App
|
|
53
40
|
}, next) => {
|
|
41
|
+
// can not get routes config, skip wrapping React Router.
|
|
42
|
+
// e.g. App.tsx as the entrypoint
|
|
43
|
+
if (!routesConfig) {
|
|
44
|
+
return next({
|
|
45
|
+
App
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
54
49
|
const getRouteApp = () => {
|
|
55
|
-
|
|
50
|
+
return props => {
|
|
56
51
|
var _window$_SERVER_DATA;
|
|
57
52
|
|
|
53
|
+
const routeElements = (0, _utils.renderRoutes)(routesConfig);
|
|
54
|
+
const routes = createRoutes ? createRoutes() : (0, _reactRouterDom.createRoutesFromElements)(routeElements);
|
|
58
55
|
const baseUrl = ((_window$_SERVER_DATA = window._SERVER_DATA) === null || _window$_SERVER_DATA === void 0 ? void 0 : _window$_SERVER_DATA.router.baseUrl) || select(location.pathname);
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(App, _objectSpread(_objectSpread({}, props), {}, {
|
|
64
|
-
children: routesConfig ? (0, _utils.renderRoutes)(routesConfig, props) : null
|
|
65
|
-
}))
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return props => {
|
|
70
|
-
const runtimeContext = (0, _react.useContext)(_core.RuntimeReactContext);
|
|
71
|
-
const {
|
|
72
|
-
ssrContext
|
|
73
|
-
} = runtimeContext;
|
|
74
|
-
const location = (0, _utils.getLocation)(ssrContext);
|
|
75
|
-
const routerContext = (ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.redirection) || {};
|
|
76
|
-
const request = ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.request;
|
|
77
|
-
const baseUrl = request === null || request === void 0 ? void 0 : request.baseUrl;
|
|
78
|
-
const basename = baseUrl === '/' ? (0, _utils.urlJoin)(baseUrl, _historyOptions.basename) : baseUrl;
|
|
79
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactRouterDom.StaticRouter, {
|
|
80
|
-
basename: basename === '/' ? '' : basename,
|
|
81
|
-
location: location,
|
|
82
|
-
context: routerContext,
|
|
83
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(App, _objectSpread(_objectSpread({}, props), {}, {
|
|
84
|
-
children: routesConfig ? (0, _utils.renderRoutes)(routesConfig, props) : null
|
|
85
|
-
}))
|
|
56
|
+
const router = _supportHtml5History ? (0, _reactRouterDom.createBrowserRouter)(routes, {
|
|
57
|
+
basename: baseUrl
|
|
58
|
+
}) : (0, _reactRouterDom.createHashRouter)(routes, {
|
|
59
|
+
basename: baseUrl
|
|
86
60
|
});
|
|
61
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(App, _objectSpread(_objectSpread({}, props), {}, {
|
|
62
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactRouterDom.RouterProvider, {
|
|
63
|
+
router: router
|
|
64
|
+
})
|
|
65
|
+
}));
|
|
87
66
|
};
|
|
88
67
|
};
|
|
89
68
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
if (App) {
|
|
93
|
-
RouteApp = (0, _hoistNonReactStatics.default)(RouteApp, App);
|
|
94
|
-
}
|
|
69
|
+
const RouteApp = getRouteApp();
|
|
95
70
|
|
|
96
|
-
if (routesConfig
|
|
71
|
+
if (routesConfig.globalApp) {
|
|
97
72
|
return next({
|
|
98
73
|
App: (0, _hoistNonReactStatics.default)(RouteApp, routesConfig.globalApp)
|
|
99
74
|
});
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createFetchHeaders = createFetchHeaders;
|
|
7
|
+
exports.routerPlugin = void 0;
|
|
8
|
+
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
|
|
11
|
+
var _router = require("@remix-run/router");
|
|
12
|
+
|
|
13
|
+
var _server = require("react-router-dom/server");
|
|
14
|
+
|
|
15
|
+
var _hoistNonReactStatics = _interopRequireDefault(require("hoist-non-react-statics"));
|
|
16
|
+
|
|
17
|
+
var _node = require("@remix-run/node");
|
|
18
|
+
|
|
19
|
+
var _reactRouterDom = require("react-router-dom");
|
|
20
|
+
|
|
21
|
+
var _core = require("../../core");
|
|
22
|
+
|
|
23
|
+
var _utils = require("./utils");
|
|
24
|
+
|
|
25
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
26
|
+
|
|
27
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
28
|
+
|
|
29
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
30
|
+
|
|
31
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
32
|
+
|
|
33
|
+
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; }
|
|
34
|
+
|
|
35
|
+
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; }
|
|
36
|
+
|
|
37
|
+
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; }
|
|
38
|
+
|
|
39
|
+
// Polyfill Web Fetch API
|
|
40
|
+
(0, _node.installGlobals)(); // TODO: polish
|
|
41
|
+
|
|
42
|
+
function createFetchRequest(req) {
|
|
43
|
+
// const origin = `${req.protocol}://${req.get('host')}`;
|
|
44
|
+
const origin = `${req.protocol}://${req.host}`; // Note: This had to take originalUrl into account for presumably vite's proxying
|
|
45
|
+
|
|
46
|
+
const url = new URL(req.originalUrl || req.url, origin);
|
|
47
|
+
const controller = new AbortController(); // req.on('close', () => {
|
|
48
|
+
// controller.abort();
|
|
49
|
+
// });
|
|
50
|
+
|
|
51
|
+
const init = {
|
|
52
|
+
method: req.method,
|
|
53
|
+
headers: createFetchHeaders(req.headers),
|
|
54
|
+
signal: controller.signal
|
|
55
|
+
}; // if (req.method !== 'GET' && req.method !== 'HEAD') {
|
|
56
|
+
// init.body = req.body;
|
|
57
|
+
// }
|
|
58
|
+
|
|
59
|
+
return new Request(url.href, init);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function createFetchHeaders(requestHeaders) {
|
|
63
|
+
const headers = new Headers();
|
|
64
|
+
|
|
65
|
+
for (const [key, values] of Object.entries(requestHeaders)) {
|
|
66
|
+
if (values) {
|
|
67
|
+
if (Array.isArray(values)) {
|
|
68
|
+
for (const value of values) {
|
|
69
|
+
headers.append(key, value);
|
|
70
|
+
}
|
|
71
|
+
} else {
|
|
72
|
+
headers.set(key, values);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return headers;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const routerPlugin = ({
|
|
81
|
+
routesConfig,
|
|
82
|
+
createRoutes
|
|
83
|
+
}) => {
|
|
84
|
+
return {
|
|
85
|
+
name: '@modern-js/plugin-router',
|
|
86
|
+
setup: () => {
|
|
87
|
+
return {
|
|
88
|
+
async init({
|
|
89
|
+
context
|
|
90
|
+
}, next) {
|
|
91
|
+
// can not get routes config, skip wrapping React Router.
|
|
92
|
+
// e.g. App.tsx as the entrypoint
|
|
93
|
+
if (!routesConfig) {
|
|
94
|
+
return next({
|
|
95
|
+
context
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const {
|
|
100
|
+
request
|
|
101
|
+
} = context.ssrContext;
|
|
102
|
+
const routeElements = (0, _utils.renderRoutes)(routesConfig);
|
|
103
|
+
const routes = createRoutes ? createRoutes() : (0, _reactRouterDom.createRoutesFromElements)(routeElements);
|
|
104
|
+
const {
|
|
105
|
+
query
|
|
106
|
+
} = (0, _router.unstable_createStaticHandler)(routes);
|
|
107
|
+
const remixRequest = createFetchRequest(request);
|
|
108
|
+
const routerContext = await query(remixRequest);
|
|
109
|
+
|
|
110
|
+
if (routerContext instanceof Response) {
|
|
111
|
+
// TODO: resolve repsonse ?
|
|
112
|
+
return next({
|
|
113
|
+
context
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const router = (0, _server.unstable_createStaticRouter)(routes, routerContext);
|
|
118
|
+
context.router = router;
|
|
119
|
+
context.routerContext = routerContext;
|
|
120
|
+
return next({
|
|
121
|
+
context
|
|
122
|
+
});
|
|
123
|
+
},
|
|
124
|
+
|
|
125
|
+
hoc: ({
|
|
126
|
+
App
|
|
127
|
+
}, next) => {
|
|
128
|
+
// can not get routes config, skip wrapping React Router.
|
|
129
|
+
// e.g. App.tsx as the entrypoint
|
|
130
|
+
if (!routesConfig) {
|
|
131
|
+
return next({
|
|
132
|
+
App
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const getRouteApp = () => {
|
|
137
|
+
return props => {
|
|
138
|
+
const {
|
|
139
|
+
router,
|
|
140
|
+
routerContext
|
|
141
|
+
} = (0, _react.useContext)(_core.RuntimeReactContext);
|
|
142
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(App, _objectSpread(_objectSpread({}, props), {}, {
|
|
143
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_server.unstable_StaticRouterProvider, {
|
|
144
|
+
router: router,
|
|
145
|
+
context: routerContext,
|
|
146
|
+
nonce: "the-nonce"
|
|
147
|
+
})
|
|
148
|
+
}));
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
const RouteApp = getRouteApp();
|
|
153
|
+
|
|
154
|
+
if (routesConfig.globalApp) {
|
|
155
|
+
return next({
|
|
156
|
+
App: (0, _hoistNonReactStatics.default)(RouteApp, routesConfig.globalApp)
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return next({
|
|
161
|
+
App: RouteApp
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
exports.routerPlugin = routerPlugin;
|