@modern-js/runtime 1.21.5 → 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 +117 -18
- 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 +47 -48
- package/dist/js/modern/core/index.js +4 -3
- 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 +2 -1
- package/dist/js/modern/router/cli/index.js +20 -20
- package/dist/js/modern/router/runtime/index.js +1 -1
- package/dist/js/modern/router/runtime/plugin.js +25 -52
- package/dist/js/modern/router/runtime/plugin.node.js +137 -0
- 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/types.js +1 -0
- package/dist/js/modern/router/runtime/utils.js +99 -58
- package/dist/js/modern/router/runtime/withRouter.js +20 -0
- package/dist/js/modern/runtime-context.js +2 -1
- package/dist/js/modern/ssr/cli/index.js +35 -17
- package/dist/js/modern/ssr/index.js +64 -51
- package/dist/js/modern/ssr/index.node.js +6 -15
- 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 +12 -27
- 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 +58 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/index.js +40 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/loadable.js +24 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +72 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/styledComponent.js +11 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/template.js +18 -0
- package/dist/js/modern/ssr/serverRender/renderToStream/type.js +0 -0
- package/dist/js/modern/ssr/serverRender/{entry.js → renderToString/entry.js} +6 -40
- package/dist/js/modern/ssr/serverRender/renderToString/index.js +29 -0
- package/dist/js/modern/ssr/serverRender/{loadable.js → renderToString/loadable.js} +2 -24
- package/dist/js/modern/ssr/serverRender/{reduce.js → renderToString/reduce.js} +0 -2
- 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 -15
- package/dist/js/modern/ssr/serverRender/{type.js → renderToString/type.js} +0 -2
- package/dist/js/modern/ssr/serverRender/types.js +2 -0
- package/dist/js/modern/ssr/serverRender/utils.js +20 -0
- package/dist/js/modern/ssr/utils.js +8 -13
- 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 +47 -66
- package/dist/js/node/core/index.js +8 -17
- 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 +5 -5
- package/dist/js/node/router/cli/index.js +20 -24
- 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 +4 -9
- package/dist/js/node/router/runtime/plugin.js +23 -65
- package/dist/js/node/router/runtime/plugin.node.js +147 -0
- 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/types.js +5 -0
- package/dist/js/node/router/runtime/utils.js +101 -67
- package/dist/js/node/router/runtime/withRouter.js +26 -0
- package/dist/js/node/runtime-context.js +4 -4
- package/dist/js/node/ssr/cli/index.js +35 -21
- package/dist/js/node/ssr/index.js +63 -62
- package/dist/js/node/ssr/index.node.js +6 -25
- 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 +14 -39
- package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.after.js +45 -0
- package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.share.js +13 -0
- package/dist/js/node/ssr/serverRender/renderToStream/bulidTemplate.before.js +65 -0
- package/dist/js/node/ssr/serverRender/renderToStream/index.js +48 -0
- package/dist/js/node/ssr/serverRender/renderToStream/loadable.js +30 -0
- package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +79 -0
- package/dist/js/node/ssr/serverRender/renderToStream/styledComponent.js +17 -0
- package/dist/js/node/ssr/serverRender/renderToStream/template.js +25 -0
- package/dist/js/node/ssr/serverRender/renderToStream/type.js +0 -0
- package/dist/js/node/ssr/serverRender/{entry.js → renderToString/entry.js} +13 -64
- package/dist/js/node/ssr/serverRender/renderToString/index.js +37 -0
- package/dist/js/node/ssr/serverRender/{loadable.js → renderToString/loadable.js} +3 -28
- package/dist/js/node/ssr/serverRender/{reduce.js → renderToString/reduce.js} +0 -3
- package/dist/js/node/ssr/serverRender/{styledComponent.js → renderToString/styledComponent.js} +0 -3
- package/dist/js/node/ssr/serverRender/{template.js → renderToString/template.js} +0 -18
- package/dist/js/node/ssr/serverRender/{type.js → renderToString/type.js} +0 -2
- package/dist/js/node/ssr/serverRender/types.js +12 -0
- package/dist/js/node/ssr/serverRender/utils.js +28 -0
- package/dist/js/node/ssr/utils.js +10 -21
- 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 +50 -65
- package/dist/js/treeshaking/core/index.js +4 -3
- 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 +2 -1
- package/dist/js/treeshaking/router/cli/index.js +26 -22
- package/dist/js/treeshaking/router/runtime/index.js +1 -1
- package/dist/js/treeshaking/router/runtime/plugin.js +28 -54
- package/dist/js/treeshaking/router/runtime/plugin.node.js +161 -0
- 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/types.js +1 -0
- package/dist/js/treeshaking/router/runtime/utils.js +104 -58
- package/dist/js/treeshaking/router/runtime/withRouter.js +18 -0
- package/dist/js/treeshaking/runtime-context.js +2 -1
- package/dist/js/treeshaking/ssr/cli/index.js +43 -23
- package/dist/js/treeshaking/ssr/index.js +74 -59
- package/dist/js/treeshaking/ssr/index.node.js +18 -31
- 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 +33 -55
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.after.js +32 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.share.js +7 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +60 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +50 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +22 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +68 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/styledComponent.js +10 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +22 -0
- package/dist/js/treeshaking/ssr/serverRender/renderToStream/type.js +0 -0
- package/dist/js/treeshaking/ssr/serverRender/{entry.js → renderToString/entry.js} +23 -76
- package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +44 -0
- package/dist/js/treeshaking/ssr/serverRender/{loadable.js → renderToString/loadable.js} +7 -34
- package/dist/js/treeshaking/ssr/serverRender/{reduce.js → renderToString/reduce.js} +0 -2
- package/dist/js/treeshaking/ssr/serverRender/{styledComponent.js → renderToString/styledComponent.js} +0 -0
- package/dist/js/treeshaking/ssr/serverRender/{template.js → renderToString/template.js} +2 -18
- package/dist/js/treeshaking/ssr/serverRender/{type.js → renderToString/type.js} +0 -2
- package/dist/js/treeshaking/ssr/serverRender/types.js +2 -0
- package/dist/js/treeshaking/ssr/serverRender/utils.js +28 -0
- package/dist/js/treeshaking/ssr/utils.js +20 -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/common.d.ts +0 -2
- package/dist/types/core/compatible.d.ts +2 -2
- package/dist/types/core/index.d.ts +2 -2
- 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 +2 -14
- 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 +21 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/router/cli/index.d.ts +0 -2
- 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/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 +36 -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 +3 -1
- package/dist/types/ssr/cli/index.d.ts +0 -2
- package/dist/types/ssr/index.d.ts +2 -2
- package/dist/types/ssr/index.node.d.ts +1 -1
- package/dist/types/ssr/prefetch.d.ts +2 -2
- 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 +7 -0
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.share.d.ts +3 -0
- package/dist/types/ssr/serverRender/renderToStream/bulidTemplate.before.d.ts +2 -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 +15 -0
- package/dist/types/ssr/serverRender/utils.d.ts +3 -0
- package/dist/types/ssr/utils.d.ts +4 -2
- package/dist/types/state/cli/index.d.ts +0 -2
- package/dist/types/state/runtime/plugin.d.ts +1 -1
- package/dist/types/state/types.d.ts +0 -1
- package/package.json +63 -71
- 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/js/treeshaking/ssr/serverRender/measure.js +0 -17
- 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,170 @@
|
|
|
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 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
|
+
var debug = createDebugger('html_genarate');
|
|
12
|
+
var getDocumenByEntryName = function getDocumenByEntryName(entrypoints, entryName) {
|
|
13
|
+
var _entrypoints$find;
|
|
14
|
+
var entryDir = (_entrypoints$find = entrypoints.find(function (item) {
|
|
15
|
+
return item.entryName === entryName;
|
|
16
|
+
})) === null || _entrypoints$find === void 0 ? void 0 : _entrypoints$find.absoluteEntryDir;
|
|
17
|
+
var docFile = findExists(DOC_EXT.map(function (item) {
|
|
18
|
+
return "".concat(entryDir).concat(path.sep).concat(DOCUMENT_FILE_NAME, ".").concat(item);
|
|
19
|
+
}));
|
|
20
|
+
return docFile || undefined;
|
|
21
|
+
};
|
|
22
|
+
export default (function () {
|
|
23
|
+
return {
|
|
24
|
+
name: '@modern-js/plugin-document',
|
|
25
|
+
pre: ['@modern-js/plugin-analyze'],
|
|
26
|
+
setup: function () {
|
|
27
|
+
var _setup = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(api) {
|
|
28
|
+
var getDocParams, documentEntry;
|
|
29
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
30
|
+
while (1) {
|
|
31
|
+
switch (_context2.prev = _context2.next) {
|
|
32
|
+
case 0:
|
|
33
|
+
getDocParams = function _getDocParams(params) {
|
|
34
|
+
var config = params.config,
|
|
35
|
+
templateParameters = params.templateParameters,
|
|
36
|
+
entryName = params.entryName;
|
|
37
|
+
// for enough params, devide as:process, config, templateParams
|
|
38
|
+
return {
|
|
39
|
+
processEnv: process.env,
|
|
40
|
+
config: {
|
|
41
|
+
output: config.output
|
|
42
|
+
},
|
|
43
|
+
entryName: entryName,
|
|
44
|
+
templateParams: templateParameters
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
documentEntry = function documentEntry(entryName, templateParameters) {
|
|
48
|
+
var _api$useAppContext = api.useAppContext(),
|
|
49
|
+
entrypoints = _api$useAppContext.entrypoints,
|
|
50
|
+
internalDirectory = _api$useAppContext.internalDirectory;
|
|
51
|
+
// search the document.[tsx|jsx|js|ts] under entry
|
|
52
|
+
// if not, use main as default
|
|
53
|
+
var documentFilePath = getDocumenByEntryName(entrypoints, entryName);
|
|
54
|
+
if (!documentFilePath) {
|
|
55
|
+
documentFilePath = getDocumenByEntryName(entrypoints, 'main');
|
|
56
|
+
}
|
|
57
|
+
// if no document file, do nothing as default
|
|
58
|
+
if (!documentFilePath) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
return /*#__PURE__*/function () {
|
|
62
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) {
|
|
63
|
+
var htmlWebpackPlugin, documentParams, htmlOutputFile, Document, HTMLElement, html, scripts, metas;
|
|
64
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
65
|
+
while (1) {
|
|
66
|
+
switch (_context.prev = _context.next) {
|
|
67
|
+
case 0:
|
|
68
|
+
htmlWebpackPlugin = _ref.htmlWebpackPlugin;
|
|
69
|
+
documentParams = getDocParams({
|
|
70
|
+
config: api.useConfigContext(),
|
|
71
|
+
entryName: entryName,
|
|
72
|
+
templateParameters: templateParameters
|
|
73
|
+
});
|
|
74
|
+
htmlOutputFile = path.join(internalDirectory, "./document/_".concat(entryName, ".html.js")); // transform document file to html string
|
|
75
|
+
_context.next = 5;
|
|
76
|
+
return build({
|
|
77
|
+
entryPoints: [documentFilePath],
|
|
78
|
+
// write: false,
|
|
79
|
+
outfile: htmlOutputFile,
|
|
80
|
+
platform: 'node',
|
|
81
|
+
target: 'es6',
|
|
82
|
+
loader: {
|
|
83
|
+
'.ts': 'ts',
|
|
84
|
+
'.tsx': 'tsx'
|
|
85
|
+
},
|
|
86
|
+
bundle: true,
|
|
87
|
+
plugins: [{
|
|
88
|
+
name: 'make-all-packages-external',
|
|
89
|
+
setup: function setup(build) {
|
|
90
|
+
// https://github.com/evanw/esbuild/issues/619#issuecomment-751995294
|
|
91
|
+
build.onResolve({
|
|
92
|
+
filter: /^[^./]|^\.[^./]|^\.\.[^/]/
|
|
93
|
+
}, function (args) {
|
|
94
|
+
var external = true;
|
|
95
|
+
// FIXME: windows external entrypoint
|
|
96
|
+
if (args.kind === 'entry-point') {
|
|
97
|
+
external = false;
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
path: args.path,
|
|
101
|
+
external: external
|
|
102
|
+
};
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}]
|
|
106
|
+
});
|
|
107
|
+
case 5:
|
|
108
|
+
_context.next = 7;
|
|
109
|
+
return import(htmlOutputFile);
|
|
110
|
+
case 7:
|
|
111
|
+
Document = _context.sent["default"];
|
|
112
|
+
HTMLElement = /*#__PURE__*/React.createElement(DocumentContext.Provider, {
|
|
113
|
+
value: documentParams
|
|
114
|
+
}, /*#__PURE__*/React.createElement(Document, null));
|
|
115
|
+
html = ReactDomServer.renderToStaticMarkup(HTMLElement);
|
|
116
|
+
debug("entry %s's document jsx rendered html: %o", entryName, html);
|
|
117
|
+
scripts = [htmlWebpackPlugin.tags.headTags.filter(function (item) {
|
|
118
|
+
return item.tagName === 'script';
|
|
119
|
+
}).join(''), htmlWebpackPlugin.tags.bodyTags.toString()].join('');
|
|
120
|
+
metas = [templateParameters.meta, htmlWebpackPlugin.tags.headTags.filter(function (item) {
|
|
121
|
+
return item.tagName !== 'script';
|
|
122
|
+
}).join('')].join(''); // replace the html placeholder while transfer string to jsx component is not a easy way
|
|
123
|
+
return _context.abrupt("return", "<!DOCTYPE html>".concat(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]));
|
|
124
|
+
case 14:
|
|
125
|
+
case "end":
|
|
126
|
+
return _context.stop();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}, _callee);
|
|
130
|
+
}));
|
|
131
|
+
return function (_x2) {
|
|
132
|
+
return _ref2.apply(this, arguments);
|
|
133
|
+
};
|
|
134
|
+
}();
|
|
135
|
+
};
|
|
136
|
+
return _context2.abrupt("return", {
|
|
137
|
+
config: function config() {
|
|
138
|
+
return {
|
|
139
|
+
tools: {
|
|
140
|
+
htmlPlugin: function htmlPlugin(options, entry) {
|
|
141
|
+
// just for reuse the baseParames calculate by builder:
|
|
142
|
+
// https://github.com/modern-js-dev/modern.js/blob/1abb452a87ae1adbcf8da47d62c05da39cbe4d69/packages/builder/builder-webpack-provider/src/plugins/html.ts#L69-L103
|
|
143
|
+
var 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);
|
|
144
|
+
var templateContent = documentEntry(entry.entryName,
|
|
145
|
+
// options,
|
|
146
|
+
hackParameters);
|
|
147
|
+
var documentHtmlOptions = templateContent ? {
|
|
148
|
+
templateContent: templateContent,
|
|
149
|
+
inject: false
|
|
150
|
+
} : {};
|
|
151
|
+
return _objectSpread(_objectSpread({}, options), documentHtmlOptions);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
case 3:
|
|
158
|
+
case "end":
|
|
159
|
+
return _context2.stop();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}, _callee2);
|
|
163
|
+
}));
|
|
164
|
+
function setup(_x) {
|
|
165
|
+
return _setup.apply(this, arguments);
|
|
166
|
+
}
|
|
167
|
+
return setup;
|
|
168
|
+
}()
|
|
169
|
+
};
|
|
170
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
var _PLACEHOLDER_REPLACER;
|
|
3
|
+
export var DOC_EXT = ['jsx', 'tsx', 'ts', 'js'];
|
|
4
|
+
export var DOCUMENT_META_PLACEHOLDER = encodeURIComponent('<%= meta %>');
|
|
5
|
+
export var HTML_SEPARATOR = '<!--<?- html ?>-->';
|
|
6
|
+
export var HTML_CHUNKSMAP_SEPARATOR = '<!--<?- chunksMap.js ?>-->';
|
|
7
|
+
export var HTML_SSRDATASCRIPT_SEPARATOR = '<!--<?- SSRDataScript ?>-->';
|
|
8
|
+
// export const HTML_BOTTOMTPL_SEPARATOR = '<!--<?- bottomTemplate ?>-->'; // document jsx not need bottom
|
|
9
|
+
|
|
10
|
+
export var DOCUMENT_SSR_PLACEHOLDER = encodeURIComponent(HTML_SEPARATOR);
|
|
11
|
+
export var DOCUMENT_CHUNKSMAP_PLACEHOLDER = encodeURIComponent(HTML_CHUNKSMAP_SEPARATOR);
|
|
12
|
+
export var DOCUMENT_SSRDATASCRIPT_PLACEHOLDER = encodeURIComponent(HTML_SSRDATASCRIPT_SEPARATOR);
|
|
13
|
+
export var DOCUMENT_FILE_NAME = 'document';
|
|
14
|
+
export var DOCUMENT_SCRIPTS_PLACEHOLDER = encodeURIComponent('<!-- chunk scripts placeholder -->');
|
|
15
|
+
export var DOCUMENT_NO_SCRIPTE_PLACEHOLDER = encodeURIComponent('<!-- no-script -->');
|
|
16
|
+
export var PLACEHOLDER_REPLACER_MAP = (_PLACEHOLDER_REPLACER = {}, _defineProperty(_PLACEHOLDER_REPLACER, DOCUMENT_NO_SCRIPTE_PLACEHOLDER, "We're sorry but react app doesn't work properly without JavaScript enabled. Please enable it to continue."), _defineProperty(_PLACEHOLDER_REPLACER, DOCUMENT_SSR_PLACEHOLDER, HTML_SEPARATOR), _defineProperty(_PLACEHOLDER_REPLACER, DOCUMENT_CHUNKSMAP_PLACEHOLDER, HTML_CHUNKSMAP_SEPARATOR), _defineProperty(_PLACEHOLDER_REPLACER, DOCUMENT_SSRDATASCRIPT_PLACEHOLDER, HTML_SSRDATASCRIPT_SEPARATOR), _PLACEHOLDER_REPLACER);
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { isBrowser } from "./common";
|
|
2
|
+
export { createApp, createPlugin, useLoader, bootstrap, RuntimeReactContext, defineConfig, registerInit, useRuntimeContext } from "./core";
|
|
@@ -25,46 +25,46 @@ export default (function () {
|
|
|
25
25
|
return PLUGIN_SCHEMAS['@modern-js/plugin-router'];
|
|
26
26
|
},
|
|
27
27
|
modifyEntryImports: function modifyEntryImports(_ref) {
|
|
28
|
+
var _userConfig$runtime, _userConfig$runtime$r;
|
|
28
29
|
var entrypoint = _ref.entrypoint,
|
|
29
|
-
|
|
30
|
+
imports = _ref.imports;
|
|
30
31
|
var entryName = entrypoint.entryName,
|
|
31
|
-
|
|
32
|
+
fileSystemRoutes = entrypoint.fileSystemRoutes;
|
|
32
33
|
var userConfig = api.useResolvedConfigContext();
|
|
33
|
-
|
|
34
|
+
var 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);
|
|
34
35
|
var _api$useAppContext = api.useAppContext(),
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
packageName = _api$useAppContext.packageName;
|
|
37
37
|
var runtimeConfig = getEntryOptions(entryName, userConfig.runtime, userConfig.runtimeByEntries, packageName);
|
|
38
38
|
runtimeConfigMap.set(entryName, runtimeConfig);
|
|
39
|
-
|
|
40
39
|
if (runtimeConfig !== null && runtimeConfig !== void 0 && runtimeConfig.router) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
if (!isLegacy) {
|
|
41
|
+
imports.push({
|
|
42
|
+
value: '@modern-js/runtime/plugins',
|
|
43
|
+
specifiers: [{
|
|
44
|
+
imported: PLUGIN_IDENTIFIER
|
|
45
|
+
}]
|
|
46
|
+
});
|
|
47
|
+
}
|
|
47
48
|
} else if (fileSystemRoutes) {
|
|
48
49
|
throw new Error("should enable runtime.router for entry ".concat(entryName));
|
|
49
50
|
}
|
|
50
|
-
|
|
51
51
|
return {
|
|
52
52
|
entrypoint: entrypoint,
|
|
53
53
|
imports: imports
|
|
54
54
|
};
|
|
55
55
|
},
|
|
56
56
|
modifyEntryRuntimePlugins: function modifyEntryRuntimePlugins(_ref2) {
|
|
57
|
+
var _userConfig$runtime2, _userConfig$runtime2$;
|
|
57
58
|
var entrypoint = _ref2.entrypoint,
|
|
58
|
-
|
|
59
|
+
plugins = _ref2.plugins;
|
|
59
60
|
var entryName = entrypoint.entryName,
|
|
60
|
-
|
|
61
|
-
|
|
61
|
+
fileSystemRoutes = entrypoint.fileSystemRoutes;
|
|
62
62
|
var _api$useAppContext2 = api.useAppContext(),
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
serverRoutes = _api$useAppContext2.serverRoutes;
|
|
64
|
+
var userConfig = api.useResolvedConfigContext();
|
|
65
|
+
var 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);
|
|
65
66
|
var runtimeConfig = runtimeConfigMap.get(entryName);
|
|
66
|
-
|
|
67
|
-
if (runtimeConfig.router) {
|
|
67
|
+
if (runtimeConfig.router && !isLegacy) {
|
|
68
68
|
// Todo: plugin-router best to only handle manage client route.
|
|
69
69
|
// here support base server route usage, part for compatibility
|
|
70
70
|
var serverBase = serverRoutes.filter(function (route) {
|
|
@@ -83,14 +83,18 @@ export default (function () {
|
|
|
83
83
|
})).replace(/"routesConfig"\s*:\s*"((\S|\s)+)"/g, '"routesConfig": $1,')
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
|
-
|
|
87
86
|
return {
|
|
88
87
|
entrypoint: entrypoint,
|
|
89
88
|
plugins: plugins
|
|
90
89
|
};
|
|
91
90
|
},
|
|
92
91
|
addRuntimeExports: function addRuntimeExports() {
|
|
93
|
-
|
|
92
|
+
var _userConfig$runtime3, _userConfig$runtime3$;
|
|
93
|
+
var userConfig = api.useResolvedConfigContext();
|
|
94
|
+
var 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);
|
|
95
|
+
if (!isLegacy) {
|
|
96
|
+
pluginsExportsUtils.addExport("export { default as router } from '@modern-js/runtime/router'");
|
|
97
|
+
}
|
|
94
98
|
}
|
|
95
99
|
};
|
|
96
100
|
}
|
|
@@ -1,84 +1,58 @@
|
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
_ref$historyOptions = _ref.historyOptions,
|
|
18
|
-
historyOptions = _ref$historyOptions === void 0 ? {} : _ref$historyOptions;
|
|
19
|
-
var isBrow = isBrowser();
|
|
20
|
-
|
|
9
|
+
serverBase = _ref$serverBase === void 0 ? [] : _ref$serverBase,
|
|
10
|
+
_ref$supportHtml5Hist = _ref.supportHtml5History,
|
|
11
|
+
supportHtml5History = _ref$supportHtml5Hist === void 0 ? true : _ref$supportHtml5Hist,
|
|
12
|
+
routesConfig = _ref.routesConfig,
|
|
13
|
+
createRoutes = _ref.createRoutes;
|
|
21
14
|
var select = function select(pathname) {
|
|
22
15
|
return serverBase.find(function (baseUrl) {
|
|
23
16
|
return pathname.search(baseUrl) === 0;
|
|
24
17
|
}) || '/';
|
|
25
18
|
};
|
|
26
|
-
|
|
27
19
|
return {
|
|
28
20
|
name: '@modern-js/plugin-router',
|
|
29
21
|
setup: function setup() {
|
|
30
22
|
return {
|
|
31
23
|
hoc: function hoc(_ref2, next) {
|
|
32
24
|
var App = _ref2.App;
|
|
33
|
-
|
|
25
|
+
// can not get routes config, skip wrapping React Router.
|
|
26
|
+
// e.g. App.tsx as the entrypoint
|
|
27
|
+
if (!routesConfig) {
|
|
28
|
+
return next({
|
|
29
|
+
App: App
|
|
30
|
+
});
|
|
31
|
+
}
|
|
34
32
|
var getRouteApp = function getRouteApp() {
|
|
35
|
-
|
|
33
|
+
return function (props) {
|
|
36
34
|
var _window$_SERVER_DATA;
|
|
37
|
-
|
|
35
|
+
var routeElements = renderRoutes(routesConfig);
|
|
36
|
+
var routes = createRoutes ? createRoutes() : createRoutesFromElements(routeElements);
|
|
38
37
|
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
|
-
}))
|
|
38
|
+
var router = supportHtml5History ? createBrowserRouter(routes, {
|
|
39
|
+
basename: baseUrl
|
|
40
|
+
}) : createHashRouter(routes, {
|
|
41
|
+
basename: baseUrl
|
|
66
42
|
});
|
|
43
|
+
return /*#__PURE__*/_jsx(App, _objectSpread(_objectSpread({}, props), {}, {
|
|
44
|
+
children: /*#__PURE__*/_jsx(RouterProvider, {
|
|
45
|
+
router: router
|
|
46
|
+
})
|
|
47
|
+
}));
|
|
67
48
|
};
|
|
68
49
|
};
|
|
69
|
-
|
|
70
50
|
var RouteApp = getRouteApp();
|
|
71
|
-
|
|
72
|
-
if (App) {
|
|
73
|
-
RouteApp = hoistNonReactStatics(RouteApp, App);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
if (routesConfig !== null && routesConfig !== void 0 && routesConfig.globalApp) {
|
|
51
|
+
if (routesConfig.globalApp) {
|
|
77
52
|
return next({
|
|
78
53
|
App: hoistNonReactStatics(RouteApp, routesConfig.globalApp)
|
|
79
54
|
});
|
|
80
55
|
}
|
|
81
|
-
|
|
82
56
|
return next({
|
|
83
57
|
App: RouteApp
|
|
84
58
|
});
|
|
@@ -0,0 +1,161 @@
|
|
|
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";
|
|
14
|
+
|
|
15
|
+
// Polyfill Web Fetch API
|
|
16
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
17
|
+
installGlobals();
|
|
18
|
+
|
|
19
|
+
// TODO: polish
|
|
20
|
+
function createFetchRequest(req) {
|
|
21
|
+
// const origin = `${req.protocol}://${req.get('host')}`;
|
|
22
|
+
var origin = "".concat(req.protocol, "://").concat(req.host);
|
|
23
|
+
// Note: This had to take originalUrl into account for presumably vite's proxying
|
|
24
|
+
var url = new URL(req.originalUrl || req.url, origin);
|
|
25
|
+
var controller = new AbortController();
|
|
26
|
+
|
|
27
|
+
// req.on('close', () => {
|
|
28
|
+
// controller.abort();
|
|
29
|
+
// });
|
|
30
|
+
|
|
31
|
+
var init = {
|
|
32
|
+
method: req.method,
|
|
33
|
+
headers: createFetchHeaders(req.headers),
|
|
34
|
+
signal: controller.signal
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
// if (req.method !== 'GET' && req.method !== 'HEAD') {
|
|
38
|
+
// init.body = req.body;
|
|
39
|
+
// }
|
|
40
|
+
|
|
41
|
+
return new Request(url.href, init);
|
|
42
|
+
}
|
|
43
|
+
export function createFetchHeaders(requestHeaders) {
|
|
44
|
+
var headers = new Headers();
|
|
45
|
+
for (var _i = 0, _Object$entries = Object.entries(requestHeaders); _i < _Object$entries.length; _i++) {
|
|
46
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
47
|
+
key = _Object$entries$_i[0],
|
|
48
|
+
values = _Object$entries$_i[1];
|
|
49
|
+
if (values) {
|
|
50
|
+
if (Array.isArray(values)) {
|
|
51
|
+
var _iterator = _createForOfIteratorHelper(values),
|
|
52
|
+
_step;
|
|
53
|
+
try {
|
|
54
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
55
|
+
var value = _step.value;
|
|
56
|
+
headers.append(key, value);
|
|
57
|
+
}
|
|
58
|
+
} catch (err) {
|
|
59
|
+
_iterator.e(err);
|
|
60
|
+
} finally {
|
|
61
|
+
_iterator.f();
|
|
62
|
+
}
|
|
63
|
+
} else {
|
|
64
|
+
headers.set(key, values);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return headers;
|
|
69
|
+
}
|
|
70
|
+
export var routerPlugin = function routerPlugin(_ref) {
|
|
71
|
+
var routesConfig = _ref.routesConfig,
|
|
72
|
+
createRoutes = _ref.createRoutes;
|
|
73
|
+
return {
|
|
74
|
+
name: '@modern-js/plugin-router',
|
|
75
|
+
setup: function setup() {
|
|
76
|
+
return {
|
|
77
|
+
init: function init(_ref2, next) {
|
|
78
|
+
return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
79
|
+
var context, _ref3, request, routeElements, routes, _createStaticHandler, query, remixRequest, routerContext, router;
|
|
80
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
81
|
+
while (1) {
|
|
82
|
+
switch (_context.prev = _context.next) {
|
|
83
|
+
case 0:
|
|
84
|
+
context = _ref2.context;
|
|
85
|
+
if (routesConfig) {
|
|
86
|
+
_context.next = 3;
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
return _context.abrupt("return", next({
|
|
90
|
+
context: context
|
|
91
|
+
}));
|
|
92
|
+
case 3:
|
|
93
|
+
_ref3 = context.ssrContext, request = _ref3.request;
|
|
94
|
+
routeElements = renderRoutes(routesConfig);
|
|
95
|
+
routes = createRoutes ? createRoutes() : createRoutesFromElements(routeElements);
|
|
96
|
+
_createStaticHandler = createStaticHandler(routes), query = _createStaticHandler.query;
|
|
97
|
+
remixRequest = createFetchRequest(request);
|
|
98
|
+
_context.next = 10;
|
|
99
|
+
return query(remixRequest);
|
|
100
|
+
case 10:
|
|
101
|
+
routerContext = _context.sent;
|
|
102
|
+
if (!(routerContext instanceof Response)) {
|
|
103
|
+
_context.next = 13;
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
return _context.abrupt("return", routerContext);
|
|
107
|
+
case 13:
|
|
108
|
+
router = createStaticRouter(routes, routerContext);
|
|
109
|
+
context.router = router;
|
|
110
|
+
context.routerContext = routerContext;
|
|
111
|
+
context.routes = routes;
|
|
112
|
+
// set routeManifest in context to be consistent with csr context
|
|
113
|
+
context.routeManifest = context.ssrContext.routeManifest;
|
|
114
|
+
return _context.abrupt("return", next({
|
|
115
|
+
context: context
|
|
116
|
+
}));
|
|
117
|
+
case 19:
|
|
118
|
+
case "end":
|
|
119
|
+
return _context.stop();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}, _callee);
|
|
123
|
+
}))();
|
|
124
|
+
},
|
|
125
|
+
hoc: function hoc(_ref4, next) {
|
|
126
|
+
var App = _ref4.App;
|
|
127
|
+
// can not get routes config, skip wrapping React Router.
|
|
128
|
+
// e.g. App.tsx as the entrypoint
|
|
129
|
+
if (!routesConfig) {
|
|
130
|
+
return next({
|
|
131
|
+
App: App
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
var getRouteApp = function getRouteApp() {
|
|
135
|
+
return function (props) {
|
|
136
|
+
var _useContext = useContext(RuntimeReactContext),
|
|
137
|
+
router = _useContext.router,
|
|
138
|
+
routerContext = _useContext.routerContext;
|
|
139
|
+
return /*#__PURE__*/_jsx(App, _objectSpread(_objectSpread({}, props), {}, {
|
|
140
|
+
children: /*#__PURE__*/_jsx(StaticRouterProvider, {
|
|
141
|
+
router: router,
|
|
142
|
+
context: routerContext,
|
|
143
|
+
nonce: "the-nonce"
|
|
144
|
+
})
|
|
145
|
+
}));
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
var RouteApp = getRouteApp();
|
|
149
|
+
if (routesConfig.globalApp) {
|
|
150
|
+
return next({
|
|
151
|
+
App: hoistNonReactStatics(RouteApp, routesConfig.globalApp)
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
return next({
|
|
155
|
+
App: RouteApp
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React, { useContext, useEffect } from 'react';
|
|
2
|
+
import { useLocation } from 'react-router-dom';
|
|
3
|
+
import { RuntimeReactContext } from "../../../core";
|
|
4
|
+
import { handleLoad } from "./load";
|
|
5
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
export function RootLayout(props) {
|
|
8
|
+
var location = useLocation();
|
|
9
|
+
var context = useContext(RuntimeReactContext);
|
|
10
|
+
useEffect(function () {
|
|
11
|
+
var routes = props.routes;
|
|
12
|
+
handleLoad(routes, location, context.routeManifest);
|
|
13
|
+
}, [location]);
|
|
14
|
+
return /*#__PURE__*/_jsx(_Fragment, {
|
|
15
|
+
children: props.children
|
|
16
|
+
});
|
|
17
|
+
}
|