@modern-js/runtime 2.54.6 → 2.56.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/dist/cjs/{ssr/serverRender/renderToString/index.js → cli/alias.js} +29 -18
- package/dist/cjs/cli/code.js +124 -0
- package/dist/cjs/cli/constants.js +23 -2
- package/dist/cjs/cli/index.js +91 -17
- package/dist/cjs/cli/ssr/index.js +137 -0
- package/dist/cjs/cli/template.js +101 -0
- package/dist/cjs/cli/template.server.js +71 -0
- package/dist/cjs/core/browser/hydrate.js +116 -0
- package/dist/cjs/core/browser/index.js +142 -0
- package/dist/cjs/core/compatible.js +39 -74
- package/dist/cjs/{ssr/serverRender/types.js → core/constants.js} +3 -3
- package/dist/cjs/core/context/index.js +39 -2
- package/dist/cjs/core/context/runtime.js +3 -3
- package/dist/cjs/core/loader/useLoader.js +2 -2
- package/dist/cjs/core/plugin/base.js +0 -4
- package/dist/cjs/core/plugin/index.js +6 -0
- package/dist/cjs/core/react/index.js +51 -0
- package/dist/cjs/{ssr/serverRender → core/server}/helmet.js +11 -2
- package/dist/cjs/core/server/index.js +38 -0
- package/dist/cjs/core/server/requestHandler.js +156 -0
- package/dist/cjs/core/server/server.js +34 -0
- package/dist/cjs/{ssr/serverRender/renderToStream/buildTemplate.share.js → core/server/shared.js} +7 -10
- package/dist/cjs/core/server/stream/afterTemplate.js +80 -0
- package/dist/cjs/{ssr/serverRender/renderToStream/bulidTemplate.before.js → core/server/stream/beforeTemplate.js} +11 -12
- package/dist/cjs/core/server/stream/createReadableStream.js +124 -0
- package/dist/cjs/core/server/stream/createReadableStream.worker.js +105 -0
- package/dist/cjs/core/server/stream/index.js +30 -0
- package/dist/cjs/core/server/stream/shared.js +112 -0
- package/dist/cjs/{ssr/serverRender/renderToStream → core/server/stream}/template.js +6 -10
- package/dist/cjs/core/server/string/index.js +152 -0
- package/dist/cjs/{ssr/serverRender/renderToString → core/server/string}/loadable.js +9 -12
- package/dist/cjs/core/server/string/prefetch.js +112 -0
- package/dist/cjs/core/server/string/ssrData.js +100 -0
- package/dist/cjs/core/server/string/styledComponent.js +53 -0
- package/dist/cjs/core/server/string/types.js +16 -0
- package/dist/cjs/core/server/tracer.js +60 -0
- package/dist/cjs/{ssr/serverRender → core/server}/utils.js +48 -2
- package/dist/cjs/{ssr/serverRender/renderToString/styledComponent.js → core/utils/merge.js} +28 -19
- package/dist/cjs/router/cli/code/index.js +12 -8
- package/dist/cjs/router/cli/code/templates.js +58 -3
- package/dist/cjs/router/cli/constants.js +6 -0
- package/dist/cjs/router/cli/entry.js +16 -17
- package/dist/cjs/router/cli/handler.js +22 -5
- package/dist/cjs/router/cli/index.js +29 -56
- package/dist/cjs/router/runtime/PrefetchLink.js +1 -1
- package/dist/cjs/router/runtime/index.js +2 -0
- package/dist/cjs/router/runtime/plugin.js +13 -40
- package/dist/cjs/router/runtime/plugin.node.js +24 -46
- package/dist/cjs/state/cli/index.js +7 -35
- package/dist/cjs/state/runtime/plugin.js +6 -15
- package/dist/esm/cli/alias.js +30 -0
- package/dist/esm/cli/code.js +131 -0
- package/dist/esm/cli/constants.js +15 -1
- package/dist/esm/cli/index.js +110 -18
- package/dist/esm/{ssr/cli → cli/ssr}/babel-plugin-ssr-loader-id.js +1 -1
- package/dist/esm/cli/ssr/index.js +127 -0
- package/dist/esm/{ssr/cli → cli/ssr}/loadable-bundler-plugin.js +1 -1
- package/dist/esm/cli/template.js +53 -0
- package/dist/esm/cli/template.server.js +26 -0
- package/dist/esm/core/browser/hydrate.js +88 -0
- package/dist/esm/core/browser/index.js +242 -0
- package/dist/esm/core/compatible.js +48 -90
- package/dist/esm/core/context/index.js +32 -1
- package/dist/esm/core/context/runtime.js +3 -2
- package/dist/esm/core/loader/useLoader.js +2 -2
- package/dist/esm/core/plugin/base.js +0 -4
- package/dist/esm/core/plugin/index.js +10 -0
- package/dist/esm/core/react/index.js +31 -0
- package/dist/esm/{ssr/serverRender → core/server}/helmet.js +10 -2
- package/dist/esm/core/server/index.js +16 -0
- package/dist/esm/core/server/react/prerender/type.js +0 -0
- package/dist/esm/core/server/requestHandler.js +181 -0
- package/dist/esm/core/server/server.js +8 -0
- package/dist/esm/core/server/shared.js +10 -0
- package/dist/esm/core/server/stream/afterTemplate.js +60 -0
- package/dist/esm/{ssr/serverRender/renderToStream/bulidTemplate.before.js → core/server/stream/beforeTemplate.js} +10 -11
- package/dist/esm/{ssr/serverRender/renderToStream/renderToPipe.js → core/server/stream/createReadableStream.js} +43 -38
- package/dist/esm/core/server/stream/createReadableStream.worker.js +142 -0
- package/dist/esm/core/server/stream/index.js +6 -0
- package/dist/esm/core/server/stream/shared.js +102 -0
- package/dist/esm/core/server/stream/template.js +42 -0
- package/dist/esm/core/server/string/index.js +219 -0
- package/dist/esm/{ssr/serverRender/renderToString → core/server/string}/loadable.js +10 -13
- package/dist/esm/{ssr → core/server/string}/prefetch.js +28 -22
- package/dist/esm/core/server/string/ssrData.js +83 -0
- package/dist/esm/core/server/string/styledComponent.js +34 -0
- package/dist/esm/core/server/string/types.js +0 -0
- package/dist/esm/core/server/tracer.js +34 -0
- package/dist/esm/core/server/utils.js +83 -0
- package/dist/esm/core/utils/merge.js +32 -0
- package/dist/esm/router/cli/code/index.js +13 -10
- package/dist/esm/router/cli/code/templates.js +100 -7
- package/dist/esm/router/cli/constants.js +4 -0
- package/dist/esm/router/cli/entry.js +19 -19
- package/dist/esm/router/cli/handler.js +70 -8
- package/dist/esm/router/cli/index.js +52 -65
- package/dist/esm/router/runtime/PrefetchLink.js +1 -1
- package/dist/esm/router/runtime/index.js +1 -0
- package/dist/esm/router/runtime/plugin.js +12 -20
- package/dist/esm/router/runtime/plugin.node.js +26 -82
- package/dist/esm/state/cli/index.js +9 -38
- package/dist/esm/state/runtime/plugin.js +5 -5
- package/dist/esm-node/cli/alias.js +28 -0
- package/dist/esm-node/cli/code.js +90 -0
- package/dist/esm-node/cli/constants.js +15 -1
- package/dist/esm-node/cli/index.js +83 -13
- package/dist/esm-node/{ssr/cli → cli/ssr}/babel-plugin-ssr-loader-id.js +1 -1
- package/dist/esm-node/cli/ssr/index.js +103 -0
- package/dist/esm-node/{ssr/cli → cli/ssr}/loadable-bundler-plugin.js +1 -1
- package/dist/esm-node/cli/template.js +64 -0
- package/dist/esm-node/cli/template.server.js +47 -0
- package/dist/esm-node/core/browser/hydrate.js +81 -0
- package/dist/esm-node/core/browser/index.js +108 -0
- package/dist/esm-node/core/compatible.js +39 -74
- package/dist/esm-node/core/context/index.js +32 -1
- package/dist/esm-node/core/context/runtime.js +3 -3
- package/dist/esm-node/core/loader/useLoader.js +2 -2
- package/dist/esm-node/core/plugin/base.js +0 -4
- package/dist/esm-node/core/plugin/index.js +5 -0
- package/dist/esm-node/core/react/index.js +27 -0
- package/dist/esm-node/{ssr/serverRender → core/server}/helmet.js +6 -2
- package/dist/esm-node/core/server/index.js +12 -0
- package/dist/esm-node/core/server/requestHandler.js +132 -0
- package/dist/esm-node/core/server/server.js +8 -0
- package/dist/esm-node/core/server/shared.js +6 -0
- package/dist/esm-node/core/server/stream/afterTemplate.js +56 -0
- package/dist/esm-node/{ssr/serverRender/renderToStream/bulidTemplate.before.js → core/server/stream/beforeTemplate.js} +8 -9
- package/dist/esm-node/{ssr/serverRender/renderToStream/renderToPipe.js → core/server/stream/createReadableStream.js} +41 -35
- package/dist/esm-node/core/server/stream/createReadableStream.worker.js +71 -0
- package/dist/esm-node/core/server/stream/index.js +6 -0
- package/dist/esm-node/core/server/stream/shared.js +75 -0
- package/dist/esm-node/core/server/stream/template.js +15 -0
- package/dist/esm-node/core/server/string/index.js +118 -0
- package/dist/esm-node/{ssr/serverRender/renderToString → core/server/string}/loadable.js +8 -11
- package/dist/esm-node/core/server/string/prefetch.js +78 -0
- package/dist/esm-node/core/server/string/ssrData.js +76 -0
- package/dist/esm-node/core/server/string/styledComponent.js +29 -0
- package/dist/esm-node/core/server/tracer.js +33 -0
- package/dist/esm-node/core/server/utils.js +60 -0
- package/dist/esm-node/core/utils/merge.js +29 -0
- package/dist/esm-node/router/cli/code/index.js +10 -7
- package/dist/esm-node/router/cli/code/templates.js +60 -6
- package/dist/esm-node/router/cli/constants.js +4 -0
- package/dist/esm-node/router/cli/entry.js +16 -17
- package/dist/esm-node/router/cli/handler.js +21 -5
- package/dist/esm-node/router/cli/index.js +31 -58
- package/dist/esm-node/router/runtime/PrefetchLink.js +1 -1
- package/dist/esm-node/router/runtime/index.js +1 -0
- package/dist/esm-node/router/runtime/plugin.js +13 -30
- package/dist/esm-node/router/runtime/plugin.node.js +25 -46
- package/dist/esm-node/state/cli/index.js +8 -36
- package/dist/esm-node/state/runtime/plugin.js +5 -5
- package/dist/types/cli/alias.d.ts +7 -0
- package/dist/types/cli/code.d.ts +10 -0
- package/dist/types/cli/constants.d.ts +7 -0
- package/dist/types/cli/index.d.ts +8 -1
- package/dist/types/cli/template.d.ts +27 -0
- package/dist/types/cli/template.server.d.ts +15 -0
- package/dist/types/common.d.ts +9 -0
- package/dist/types/core/browser/hydrate.d.ts +5 -0
- package/dist/types/core/browser/index.d.ts +3 -0
- package/dist/types/core/config.d.ts +5 -6
- package/dist/types/core/constants.d.ts +5 -0
- package/dist/types/core/context/index.d.ts +34 -1
- package/dist/types/core/context/runtime.d.ts +2 -2
- package/dist/types/core/plugin/base.d.ts +3 -33
- package/dist/types/core/plugin/index.d.ts +2 -11
- package/dist/types/core/plugin/runner.d.ts +1 -11
- package/dist/types/core/react/index.d.ts +6 -0
- package/dist/types/core/server/helmet.d.ts +3 -0
- package/dist/types/core/server/index.d.ts +4 -0
- package/dist/types/core/server/requestHandler.d.ts +11 -0
- package/dist/types/core/server/server.d.ts +4 -0
- package/dist/types/core/server/shared.d.ts +9 -0
- package/dist/types/core/server/stream/afterTemplate.d.ts +12 -0
- package/dist/types/core/server/stream/beforeTemplate.d.ts +8 -0
- package/dist/types/core/server/stream/createReadableStream.d.ts +2 -0
- package/dist/types/core/server/stream/createReadableStream.worker.d.ts +2 -0
- package/dist/types/core/server/stream/index.d.ts +1 -0
- package/dist/types/core/server/stream/shared.d.ts +22 -0
- package/dist/types/core/server/stream/template.d.ts +9 -0
- package/dist/types/core/server/string/index.d.ts +2 -0
- package/dist/types/core/server/string/loadable.d.ts +35 -0
- package/dist/types/core/server/string/prefetch.d.ts +16 -0
- package/dist/types/core/server/string/ssrData.d.ts +18 -0
- package/dist/types/core/server/string/styledComponent.d.ts +11 -0
- package/dist/types/core/server/string/types.d.ts +12 -0
- package/dist/types/core/server/tracer.d.ts +21 -0
- package/dist/types/core/server/utils.d.ts +19 -0
- package/dist/types/core/types.d.ts +35 -1
- package/dist/types/core/utils/merge.d.ts +6 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/router/cli/code/index.d.ts +3 -4
- package/dist/types/router/cli/code/templates.d.ts +9 -1
- package/dist/types/router/cli/constants.d.ts +2 -0
- package/dist/types/router/cli/handler.d.ts +1 -0
- package/dist/types/router/runtime/index.d.ts +1 -0
- package/dist/types/router/runtime/plugin.d.ts +1 -1
- package/dist/types/router/runtime/plugin.node.d.ts +1 -3
- package/dist/types/router/runtime/types.d.ts +1 -2
- package/dist/types/state/runtime/plugin.d.ts +2 -2
- package/package.json +52 -45
- package/types/router.d.ts +7 -2
- package/dist/cjs/ssr/cli/index.js +0 -200
- package/dist/cjs/ssr/index.js +0 -183
- package/dist/cjs/ssr/index.node.js +0 -86
- package/dist/cjs/ssr/prefetch.js +0 -92
- package/dist/cjs/ssr/serverRender/index.js +0 -39
- package/dist/cjs/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -74
- package/dist/cjs/ssr/serverRender/renderToStream/index.js +0 -74
- package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.js +0 -104
- package/dist/cjs/ssr/serverRender/renderToStream/renderToPipe.worker.js +0 -108
- package/dist/cjs/ssr/serverRender/renderToString/buildHtml.js +0 -52
- package/dist/cjs/ssr/serverRender/renderToString/entry.js +0 -179
- package/dist/cjs/ssr/serverRender/renderToString/render.js +0 -61
- package/dist/cjs/ssr/serverRender/tracker.js +0 -113
- package/dist/cjs/ssr/utils.js +0 -94
- package/dist/esm/ssr/cli/index.js +0 -194
- package/dist/esm/ssr/index.js +0 -169
- package/dist/esm/ssr/index.node.js +0 -78
- package/dist/esm/ssr/serverRender/index.js +0 -55
- package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -48
- package/dist/esm/ssr/serverRender/renderToStream/buildTemplate.share.js +0 -12
- package/dist/esm/ssr/serverRender/renderToStream/index.js +0 -49
- package/dist/esm/ssr/serverRender/renderToStream/renderToPipe.worker.js +0 -164
- package/dist/esm/ssr/serverRender/renderToStream/template.js +0 -46
- package/dist/esm/ssr/serverRender/renderToString/buildHtml.js +0 -34
- package/dist/esm/ssr/serverRender/renderToString/entry.js +0 -257
- package/dist/esm/ssr/serverRender/renderToString/index.js +0 -34
- package/dist/esm/ssr/serverRender/renderToString/render.js +0 -55
- package/dist/esm/ssr/serverRender/renderToString/styledComponent.js +0 -25
- package/dist/esm/ssr/serverRender/tracker.js +0 -82
- package/dist/esm/ssr/serverRender/utils.js +0 -21
- package/dist/esm/ssr/utils.js +0 -59
- package/dist/esm-node/ssr/cli/index.js +0 -166
- package/dist/esm-node/ssr/index.js +0 -147
- package/dist/esm-node/ssr/index.node.js +0 -50
- package/dist/esm-node/ssr/prefetch.js +0 -72
- package/dist/esm-node/ssr/serverRender/index.js +0 -19
- package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.after.js +0 -50
- package/dist/esm-node/ssr/serverRender/renderToStream/buildTemplate.share.js +0 -8
- package/dist/esm-node/ssr/serverRender/renderToStream/index.js +0 -40
- package/dist/esm-node/ssr/serverRender/renderToStream/renderToPipe.worker.js +0 -88
- package/dist/esm-node/ssr/serverRender/renderToStream/template.js +0 -19
- package/dist/esm-node/ssr/serverRender/renderToString/buildHtml.js +0 -24
- package/dist/esm-node/ssr/serverRender/renderToString/entry.js +0 -149
- package/dist/esm-node/ssr/serverRender/renderToString/index.js +0 -17
- package/dist/esm-node/ssr/serverRender/renderToString/render.js +0 -27
- package/dist/esm-node/ssr/serverRender/renderToString/styledComponent.js +0 -20
- package/dist/esm-node/ssr/serverRender/tracker.js +0 -87
- package/dist/esm-node/ssr/serverRender/utils.js +0 -17
- package/dist/esm-node/ssr/utils.js +0 -57
- package/dist/types/ssr/index.d.ts +0 -11
- package/dist/types/ssr/index.node.d.ts +0 -5
- package/dist/types/ssr/prefetch.d.ts +0 -16
- package/dist/types/ssr/serverRender/helmet.d.ts +0 -2
- package/dist/types/ssr/serverRender/index.d.ts +0 -2
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +0 -7
- package/dist/types/ssr/serverRender/renderToStream/buildTemplate.share.d.ts +0 -3
- package/dist/types/ssr/serverRender/renderToStream/bulidTemplate.before.d.ts +0 -2
- package/dist/types/ssr/serverRender/renderToStream/index.d.ts +0 -3
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +0 -7
- package/dist/types/ssr/serverRender/renderToStream/renderToPipe.worker.d.ts +0 -12
- package/dist/types/ssr/serverRender/renderToStream/template.d.ts +0 -6
- package/dist/types/ssr/serverRender/renderToString/buildHtml.d.ts +0 -6
- package/dist/types/ssr/serverRender/renderToString/entry.d.ts +0 -24
- package/dist/types/ssr/serverRender/renderToString/index.d.ts +0 -2
- package/dist/types/ssr/serverRender/renderToString/loadable.d.ts +0 -26
- package/dist/types/ssr/serverRender/renderToString/render.d.ts +0 -16
- package/dist/types/ssr/serverRender/renderToString/styledComponent.d.ts +0 -15
- package/dist/types/ssr/serverRender/tracker.d.ts +0 -20
- package/dist/types/ssr/serverRender/types.d.ts +0 -49
- package/dist/types/ssr/serverRender/utils.d.ts +0 -9
- package/dist/types/ssr/utils.d.ts +0 -10
- /package/dist/cjs/{ssr/cli → cli/ssr}/babel-plugin-ssr-loader-id.js +0 -0
- /package/dist/cjs/{ssr/cli → cli/ssr}/loadable-bundler-plugin.js +0 -0
- /package/dist/cjs/{ssr/react/withCallback/index.js → core/browser/withCallback.js} +0 -0
- /package/dist/cjs/{ssr/serverRender → core/server}/constants.js +0 -0
- /package/dist/cjs/{ssr → core/server}/react/index.js +0 -0
- /package/dist/cjs/{ssr → core/server}/react/nossr/index.js +0 -0
- /package/dist/cjs/{ssr → core/server}/react/prerender/index.js +0 -0
- /package/dist/cjs/{ssr → core/server}/react/prerender/type.js +0 -0
- /package/dist/cjs/{ssr → core/server}/react/prerender/util.js +0 -0
- /package/dist/esm/{ssr/react/withCallback/index.js → core/browser/withCallback.js} +0 -0
- /package/dist/esm/{ssr/serverRender/types.js → core/constants.js} +0 -0
- /package/dist/esm/{ssr/serverRender → core/server}/constants.js +0 -0
- /package/dist/esm/{ssr → core/server}/react/index.js +0 -0
- /package/dist/esm/{ssr → core/server}/react/nossr/index.js +0 -0
- /package/dist/esm/{ssr → core/server}/react/prerender/index.js +0 -0
- /package/dist/esm/{ssr → core/server}/react/prerender/util.js +0 -0
- /package/dist/esm-node/{ssr/react/withCallback/index.js → core/browser/withCallback.js} +0 -0
- /package/dist/esm-node/{ssr/serverRender/types.js → core/constants.js} +0 -0
- /package/dist/esm-node/{ssr/serverRender → core/server}/constants.js +0 -0
- /package/dist/esm-node/{ssr → core/server}/react/index.js +0 -0
- /package/dist/esm-node/{ssr → core/server}/react/nossr/index.js +0 -0
- /package/dist/esm-node/{ssr → core/server}/react/prerender/index.js +0 -0
- /package/dist/esm-node/{ssr → core/server}/react/prerender/type.js +0 -0
- /package/dist/esm-node/{ssr → core/server}/react/prerender/util.js +0 -0
- /package/dist/{esm/ssr/react/prerender/type.js → esm-node/core/server/string/types.js} +0 -0
- /package/dist/types/{ssr/cli → cli/ssr}/babel-plugin-ssr-loader-id.d.ts +0 -0
- /package/dist/types/{ssr/cli → cli/ssr}/index.d.ts +0 -0
- /package/dist/types/{ssr/cli → cli/ssr}/loadable-bundler-plugin.d.ts +0 -0
- /package/dist/types/{ssr/react/withCallback/index.d.ts → core/browser/withCallback.d.ts} +0 -0
- /package/dist/types/{ssr/serverRender → core/server}/constants.d.ts +0 -0
- /package/dist/types/{ssr → core/server}/react/index.d.ts +0 -0
- /package/dist/types/{ssr → core/server}/react/nossr/index.d.ts +0 -0
- /package/dist/types/{ssr → core/server}/react/prerender/index.d.ts +0 -0
- /package/dist/types/{ssr → core/server}/react/prerender/type.d.ts +0 -0
- /package/dist/types/{ssr → core/server}/react/prerender/util.d.ts +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { isRouteErrorResponse } from "@modern-js/runtime-utils/remix-router";
|
|
2
|
+
function attributesToString(attributes) {
|
|
3
|
+
return Object.entries(attributes).reduce((str, [key, value]) => {
|
|
4
|
+
return value === void 0 ? str : `${str} ${key}="${value}"`;
|
|
5
|
+
}, "");
|
|
6
|
+
}
|
|
7
|
+
function safeReplace(source, searchValue, replaceValue) {
|
|
8
|
+
return source.replace(searchValue, () => replaceValue);
|
|
9
|
+
}
|
|
10
|
+
function checkIsNode() {
|
|
11
|
+
var _process_release;
|
|
12
|
+
return typeof process !== "undefined" && ((_process_release = process.release) === null || _process_release === void 0 ? void 0 : _process_release.name) === "node";
|
|
13
|
+
}
|
|
14
|
+
function serializeErrors(errors) {
|
|
15
|
+
if (!errors) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const entries = Object.entries(errors);
|
|
19
|
+
const serialized = {};
|
|
20
|
+
for (const [key, val] of entries) {
|
|
21
|
+
if (isRouteErrorResponse(val)) {
|
|
22
|
+
serialized[key] = {
|
|
23
|
+
...val,
|
|
24
|
+
__type: "RouteErrorResponse"
|
|
25
|
+
};
|
|
26
|
+
} else if (val instanceof Error) {
|
|
27
|
+
serialized[key] = {
|
|
28
|
+
message: val.message,
|
|
29
|
+
stack: val.stack,
|
|
30
|
+
__type: "Error"
|
|
31
|
+
};
|
|
32
|
+
} else {
|
|
33
|
+
serialized[key] = val;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return serialized;
|
|
37
|
+
}
|
|
38
|
+
function getSSRConfigByEntry(entryName, ssr, ssrByEntries, staticGenerate) {
|
|
39
|
+
if (staticGenerate) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
if (ssrByEntries === null || ssrByEntries === void 0 ? void 0 : ssrByEntries[entryName]) {
|
|
43
|
+
return ssrByEntries[entryName];
|
|
44
|
+
}
|
|
45
|
+
return ssr;
|
|
46
|
+
}
|
|
47
|
+
function getSSRMode(ssrConfig) {
|
|
48
|
+
if (typeof ssrConfig === "boolean") {
|
|
49
|
+
return ssrConfig ? "string" : false;
|
|
50
|
+
}
|
|
51
|
+
return (ssrConfig === null || ssrConfig === void 0 ? void 0 : ssrConfig.mode) === "stream" ? "stream" : "string";
|
|
52
|
+
}
|
|
53
|
+
export {
|
|
54
|
+
attributesToString,
|
|
55
|
+
checkIsNode,
|
|
56
|
+
getSSRConfigByEntry,
|
|
57
|
+
getSSRMode,
|
|
58
|
+
safeReplace,
|
|
59
|
+
serializeErrors
|
|
60
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
function isObject(obj) {
|
|
2
|
+
return obj && typeof obj === "object" && !Array.isArray(obj);
|
|
3
|
+
}
|
|
4
|
+
function merge(target, ...sources) {
|
|
5
|
+
if (!sources.length) {
|
|
6
|
+
return target;
|
|
7
|
+
}
|
|
8
|
+
const source = sources.shift();
|
|
9
|
+
if (isObject(target) && isObject(source)) {
|
|
10
|
+
for (const key in source) {
|
|
11
|
+
if (isObject(source[key])) {
|
|
12
|
+
if (!target[key]) {
|
|
13
|
+
Object.assign(target, {
|
|
14
|
+
[key]: {}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
merge(target[key], source[key]);
|
|
18
|
+
} else {
|
|
19
|
+
Object.assign(target, {
|
|
20
|
+
[key]: source[key]
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return merge(target, ...sources);
|
|
26
|
+
}
|
|
27
|
+
export {
|
|
28
|
+
merge
|
|
29
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import { fs, getEntryOptions, isRouterV5, isSSGEntry, isUseSSRBundle, logger } from "@modern-js/utils";
|
|
3
3
|
import { FILE_SYSTEM_ROUTES_FILE_NAME } from "../constants";
|
|
4
|
+
import { ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME } from "../../../cli/constants";
|
|
4
5
|
import * as templates from "./templates";
|
|
5
6
|
import { getClientRoutes, getClientRoutesLegacy } from "./getClientRoutes";
|
|
6
7
|
import { getServerLoadersFile, getServerCombinedModueFile } from "./utils";
|
|
@@ -10,16 +11,13 @@ const generateCode = async (appContext, config, entrypoints, api) => {
|
|
|
10
11
|
const hookRunners = api.useHookRunners();
|
|
11
12
|
const isV5 = isRouterV5(config);
|
|
12
13
|
const getRoutes = isV5 ? getClientRoutesLegacy : getClientRoutes;
|
|
13
|
-
const importsStatemets = /* @__PURE__ */ new Map();
|
|
14
14
|
const oldVersion = typeof (config === null || config === void 0 ? void 0 : config.runtime.router) === "object" ? Boolean((config === null || config === void 0 ? void 0 : config.runtime.router).oldVersion) : false;
|
|
15
15
|
await Promise.all(entrypoints.map(generateEntryCode));
|
|
16
|
-
return {
|
|
17
|
-
importsStatemets
|
|
18
|
-
};
|
|
19
16
|
async function generateEntryCode(entrypoint) {
|
|
20
|
-
const { entryName, isMainEntry, isAutoMount,
|
|
17
|
+
const { entryName, isMainEntry, isAutoMount, pageRoutesEntry, nestedRoutesEntry } = entrypoint;
|
|
18
|
+
const { metaName } = api.useAppContext();
|
|
21
19
|
if (isAutoMount) {
|
|
22
|
-
if (
|
|
20
|
+
if (pageRoutesEntry || nestedRoutesEntry) {
|
|
23
21
|
var _config_output;
|
|
24
22
|
let initialRoutes = [];
|
|
25
23
|
let nestedRoutes = null;
|
|
@@ -69,6 +67,7 @@ const generateCode = async (appContext, config, entrypoints, api) => {
|
|
|
69
67
|
const { code } = await hookRunners.beforeGenerateRoutes({
|
|
70
68
|
entrypoint,
|
|
71
69
|
code: await templates.fileSystemRoutes({
|
|
70
|
+
metaName,
|
|
72
71
|
routes,
|
|
73
72
|
ssrMode: useSSG ? "string" : mode,
|
|
74
73
|
nestedRoutesEntry: entrypoint.nestedRoutesEntry,
|
|
@@ -95,6 +94,10 @@ const generateCode = async (appContext, config, entrypoints, api) => {
|
|
|
95
94
|
}
|
|
96
95
|
}
|
|
97
96
|
};
|
|
97
|
+
function generatorRegisterCode(internalDirectory, entryName, code) {
|
|
98
|
+
fs.outputFileSync(path.resolve(internalDirectory, `./${entryName}/${ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME}`), code, "utf8");
|
|
99
|
+
}
|
|
98
100
|
export {
|
|
99
|
-
generateCode
|
|
101
|
+
generateCode,
|
|
102
|
+
generatorRegisterCode
|
|
100
103
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import path from "path";
|
|
2
|
-
import { fs, getEntryOptions, isSSGEntry, slash } from "@modern-js/utils";
|
|
2
|
+
import { findExists, formatImportPath, fs, getEntryOptions, isSSGEntry, slash } from "@modern-js/utils";
|
|
3
3
|
import { ROUTE_MODULES } from "@modern-js/utils/universal/constants";
|
|
4
|
-
import { TEMP_LOADERS_DIR } from "../constants";
|
|
5
|
-
import { getServerLoadersFile } from "./utils";
|
|
4
|
+
import { APP_CONFIG_NAME, APP_INIT_EXPORTED, TEMP_LOADERS_DIR } from "../constants";
|
|
5
|
+
import { getPathWithoutExt, getServerLoadersFile, parseModule, replaceWithAlias } from "./utils";
|
|
6
6
|
const routesForServer = ({ routes }) => {
|
|
7
7
|
const loaders = [];
|
|
8
8
|
const actions = [];
|
|
@@ -85,7 +85,7 @@ const routesForServer = ({ routes }) => {
|
|
|
85
85
|
};
|
|
86
86
|
const createMatchReg = (keyword) => new RegExp(`("${keyword}":\\s)"([^
|
|
87
87
|
]+)"`, "g");
|
|
88
|
-
const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName, internalDirectory, splitRouteChunks = true }) => {
|
|
88
|
+
const fileSystemRoutes = async ({ metaName, routes, ssrMode, nestedRoutesEntry, entryName, internalDirectory, splitRouteChunks = true }) => {
|
|
89
89
|
const components = [];
|
|
90
90
|
const loadings = [];
|
|
91
91
|
const errors = [];
|
|
@@ -96,7 +96,7 @@ const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName,
|
|
|
96
96
|
const loadersMapFile = path.join(internalDirectory, entryName, TEMP_LOADERS_DIR, "map.json");
|
|
97
97
|
const importLazyCode = `
|
|
98
98
|
import { lazy } from "react";
|
|
99
|
-
import loadable, { lazy as loadableLazy } from "
|
|
99
|
+
import loadable, { lazy as loadableLazy } from "@${metaName}/runtime/loadable"
|
|
100
100
|
`;
|
|
101
101
|
let rootLayoutCode = ``;
|
|
102
102
|
const getDataLoaderPath = ({ loaderId, clientData, action, inline, routeId }) => {
|
|
@@ -295,7 +295,7 @@ const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName,
|
|
|
295
295
|
await fs.ensureFile(loadersMapFile);
|
|
296
296
|
await fs.writeJSON(loadersMapFile, loadersMap);
|
|
297
297
|
const importRuntimeRouterCode = `
|
|
298
|
-
import { createShouldRevalidate, handleRouteModule, handleRouteModuleError} from '
|
|
298
|
+
import { createShouldRevalidate, handleRouteModule, handleRouteModuleError} from '@${metaName}/runtime/router';
|
|
299
299
|
`;
|
|
300
300
|
const routeModulesCode = `
|
|
301
301
|
if(typeof document !== 'undefined'){
|
|
@@ -328,8 +328,62 @@ function ssrLoaderCombinedModule(entrypoints, entrypoint, config, appContext) {
|
|
|
328
328
|
}
|
|
329
329
|
return null;
|
|
330
330
|
}
|
|
331
|
+
const runtimeGlobalContext = async ({ metaName, srcDirectory, nestedRoutesEntry, internalSrcAlias, globalApp }) => {
|
|
332
|
+
const imports = [
|
|
333
|
+
`import { setGlobalContext } from '@${metaName}/runtime/context';`
|
|
334
|
+
];
|
|
335
|
+
if (nestedRoutesEntry) {
|
|
336
|
+
const rootLayoutPath = path.join(nestedRoutesEntry, "layout");
|
|
337
|
+
const rootLayoutFile = findExists([
|
|
338
|
+
".js",
|
|
339
|
+
".ts",
|
|
340
|
+
".jsx",
|
|
341
|
+
".tsx"
|
|
342
|
+
].map((ext) => `${rootLayoutPath}${ext}`));
|
|
343
|
+
if (rootLayoutFile) {
|
|
344
|
+
const rootLayoutBuffer = await fs.readFile(rootLayoutFile);
|
|
345
|
+
const rootLayout = rootLayoutBuffer.toString();
|
|
346
|
+
const [, moduleExports] = await parseModule({
|
|
347
|
+
source: rootLayout.toString(),
|
|
348
|
+
filename: rootLayoutFile
|
|
349
|
+
});
|
|
350
|
+
const hasAppConfig = moduleExports.some((e) => e.n === APP_CONFIG_NAME);
|
|
351
|
+
const hasAppInit = moduleExports.some((e) => e.n === APP_INIT_EXPORTED);
|
|
352
|
+
const layoutPath = formatImportPath(getPathWithoutExt(replaceWithAlias(srcDirectory, rootLayoutFile, internalSrcAlias)));
|
|
353
|
+
if (hasAppConfig) {
|
|
354
|
+
imports.push(`import { config as appConfig } from '${layoutPath}';`);
|
|
355
|
+
} else {
|
|
356
|
+
imports.push(`let appConfig;`);
|
|
357
|
+
}
|
|
358
|
+
if (hasAppInit) {
|
|
359
|
+
imports.push(`import { init as appInit } from '${layoutPath}';`);
|
|
360
|
+
} else {
|
|
361
|
+
imports.push(`let appInit;`);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
} else {
|
|
365
|
+
imports.push(`let appConfig;`);
|
|
366
|
+
imports.push(`let appInit;`);
|
|
367
|
+
}
|
|
368
|
+
if (globalApp) {
|
|
369
|
+
imports.push(`import layoutApp from '${formatImportPath(globalApp.replace(srcDirectory, internalSrcAlias))}';`);
|
|
370
|
+
} else {
|
|
371
|
+
imports.push(`let layoutApp;`);
|
|
372
|
+
}
|
|
373
|
+
return `${imports.join("\n")}
|
|
374
|
+
|
|
375
|
+
import { routes } from './routes.js';
|
|
376
|
+
|
|
377
|
+
setGlobalContext({
|
|
378
|
+
layoutApp,
|
|
379
|
+
routes,
|
|
380
|
+
appInit,
|
|
381
|
+
appConfig,
|
|
382
|
+
});`;
|
|
383
|
+
};
|
|
331
384
|
export {
|
|
332
385
|
fileSystemRoutes,
|
|
333
386
|
routesForServer,
|
|
387
|
+
runtimeGlobalContext,
|
|
334
388
|
ssrLoaderCombinedModule
|
|
335
389
|
};
|
|
@@ -10,6 +10,8 @@ const FILE_SYSTEM_ROUTES_INDEX = "index";
|
|
|
10
10
|
const FILE_SYSTEM_ROUTES_IGNORED_REGEX = /\.(d|test|spec|e2e)\.(js|jsx|ts|tsx)$/;
|
|
11
11
|
const FILE_SYSTEM_ROUTES_DYNAMIC_REGEXP = /^\[(\S+)\]([*+?]?)$/;
|
|
12
12
|
const FILE_SYSTEM_ROUTES_COMPONENTS_DIR = "internal_components";
|
|
13
|
+
const APP_CONFIG_NAME = "config";
|
|
14
|
+
const APP_INIT_EXPORTED = "init";
|
|
13
15
|
const NESTED_ROUTE = {
|
|
14
16
|
LAYOUT_FILE: "layout",
|
|
15
17
|
LAYOUT_CONFIG_FILE: "layout.config",
|
|
@@ -32,6 +34,8 @@ const NESTED_ROUTE = {
|
|
|
32
34
|
};
|
|
33
35
|
export {
|
|
34
36
|
ACTION_EXPORT_NAME,
|
|
37
|
+
APP_CONFIG_NAME,
|
|
38
|
+
APP_INIT_EXPORTED,
|
|
35
39
|
FILE_SYSTEM_ROUTES_COMPONENTS_DIR,
|
|
36
40
|
FILE_SYSTEM_ROUTES_DYNAMIC_REGEXP,
|
|
37
41
|
FILE_SYSTEM_ROUTES_FILE_NAME,
|
|
@@ -18,31 +18,30 @@ const modifyEntrypoints = (entrypoints, config = {}) => {
|
|
|
18
18
|
if (!entrypoint.isAutoMount) {
|
|
19
19
|
return entrypoint;
|
|
20
20
|
}
|
|
21
|
+
if (entrypoint === null || entrypoint === void 0 ? void 0 : entrypoint.isCustomSourceEntry) {
|
|
22
|
+
if (entrypoint.fileSystemRoutes) {
|
|
23
|
+
if (isRouterV5(config)) {
|
|
24
|
+
throw Error("Custom entries with conventional routing not support use react router v5!");
|
|
25
|
+
}
|
|
26
|
+
entrypoint.nestedRoutesEntry = entrypoint.entry;
|
|
27
|
+
}
|
|
28
|
+
return entrypoint;
|
|
29
|
+
}
|
|
21
30
|
const isHasApp = hasApp(entrypoint.absoluteEntryDir);
|
|
22
31
|
if (isHasApp) {
|
|
23
32
|
return entrypoint;
|
|
24
33
|
}
|
|
25
|
-
const isHasNestedRoutes = hasNestedRoutes(entrypoint.absoluteEntryDir);
|
|
26
34
|
const isHasPages = hasPages(entrypoint.absoluteEntryDir);
|
|
27
|
-
if (
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
if (entrypoint.fileSystemRoutes && !isRouterV5(config)) {
|
|
31
|
-
entrypoint.nestedRoutesEntry = entrypoint.entry;
|
|
32
|
-
} else if (!entrypoint.fileSystemRoutes) {
|
|
35
|
+
if (isHasPages) {
|
|
36
|
+
entrypoint.pageRoutesEntry = path.join(entrypoint.absoluteEntryDir, PAGES_DIR_NAME);
|
|
33
37
|
entrypoint.fileSystemRoutes = {
|
|
38
|
+
...entrypoint.fileSystemRoutes,
|
|
34
39
|
globalApp: findExists(JS_EXTENSIONS.map((ext) => path.resolve(entrypoint.absoluteEntryDir, `./${PAGES_DIR_NAME}/${FILE_SYSTEM_ROUTES_GLOBAL_LAYOUT}${ext}`)))
|
|
35
40
|
};
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (isHasNestedRoutes) {
|
|
41
|
-
entrypoint.entry = path.join(entrypoint.absoluteEntryDir, NESTED_ROUTES_DIR);
|
|
42
|
-
entrypoint.nestedRoutesEntry = entrypoint.entry;
|
|
43
|
-
}
|
|
44
|
-
} else {
|
|
45
|
-
throw Error("Custom entries with conventional routing not support use react router v5!");
|
|
41
|
+
}
|
|
42
|
+
const isHasNestedRoutes = hasNestedRoutes(entrypoint.absoluteEntryDir);
|
|
43
|
+
if (isHasNestedRoutes) {
|
|
44
|
+
entrypoint.nestedRoutesEntry = path.join(entrypoint.absoluteEntryDir, NESTED_ROUTES_DIR);
|
|
46
45
|
}
|
|
47
46
|
return entrypoint;
|
|
48
47
|
});
|
|
@@ -2,17 +2,32 @@ import path from "path";
|
|
|
2
2
|
import { cloneDeep } from "@modern-js/utils/lodash";
|
|
3
3
|
import { modifyEntrypoints } from "./entry";
|
|
4
4
|
import { isPageComponentFile } from "./code/utils";
|
|
5
|
+
import * as templates from "./code/templates";
|
|
5
6
|
let originEntrypoints = [];
|
|
6
7
|
async function handleModifyEntrypoints(api, entrypoints) {
|
|
7
8
|
const config = api.useResolvedConfigContext();
|
|
8
|
-
|
|
9
|
+
return modifyEntrypoints(entrypoints, config);
|
|
10
|
+
}
|
|
11
|
+
async function handleGeneratorEntryCode(api, entrypoints) {
|
|
9
12
|
const appContext = api.useAppContext();
|
|
13
|
+
const { internalDirectory } = api.useAppContext();
|
|
10
14
|
const resolvedConfig = api.useResolvedConfigContext();
|
|
11
|
-
|
|
12
|
-
originEntrypoints = cloneDeep(
|
|
13
|
-
const { generateCode } = await import("./code");
|
|
15
|
+
const { generatorRegisterCode, generateCode } = await import("./code");
|
|
16
|
+
originEntrypoints = cloneDeep(entrypoints);
|
|
14
17
|
await generateCode(appContext, resolvedConfig, entrypoints, api);
|
|
15
|
-
|
|
18
|
+
await Promise.all(entrypoints.map(async (entrypoint) => {
|
|
19
|
+
if (entrypoint.nestedRoutesEntry || entrypoint.pageRoutesEntry) {
|
|
20
|
+
var _entrypoint_fileSystemRoutes;
|
|
21
|
+
generatorRegisterCode(internalDirectory, entrypoint.entryName, await templates.runtimeGlobalContext({
|
|
22
|
+
metaName: appContext.metaName,
|
|
23
|
+
srcDirectory: appContext.srcDirectory,
|
|
24
|
+
nestedRoutesEntry: entrypoint.nestedRoutesEntry,
|
|
25
|
+
internalSrcAlias: appContext.internalSrcAlias,
|
|
26
|
+
globalApp: (_entrypoint_fileSystemRoutes = entrypoint.fileSystemRoutes) === null || _entrypoint_fileSystemRoutes === void 0 ? void 0 : _entrypoint_fileSystemRoutes.globalApp
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
}));
|
|
30
|
+
return entrypoints;
|
|
16
31
|
}
|
|
17
32
|
async function handleFileChange(api, e) {
|
|
18
33
|
const appContext = api.useAppContext();
|
|
@@ -32,5 +47,6 @@ async function handleFileChange(api, e) {
|
|
|
32
47
|
}
|
|
33
48
|
export {
|
|
34
49
|
handleFileChange,
|
|
50
|
+
handleGeneratorEntryCode,
|
|
35
51
|
handleModifyEntrypoints
|
|
36
52
|
};
|
|
@@ -1,19 +1,38 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createRuntimeExportsUtils, getEntryOptions, isRouterV5 as isV5 } from "@modern-js/utils";
|
|
2
2
|
import { isRouteEntry } from "./entry";
|
|
3
|
-
import { handleFileChange, handleModifyEntrypoints } from "./handler";
|
|
3
|
+
import { handleFileChange, handleGeneratorEntryCode, handleModifyEntrypoints } from "./handler";
|
|
4
4
|
import { isRouteEntry as isRouteEntry2 } from "./entry";
|
|
5
5
|
import { handleFileChange as handleFileChange2, handleModifyEntrypoints as handleModifyEntrypoints2 } from "./handler";
|
|
6
|
-
const PLUGIN_IDENTIFIER = "router";
|
|
7
|
-
const ROUTES_IDENTIFIER = "routes";
|
|
8
6
|
const routerPlugin = () => ({
|
|
9
7
|
name: "@modern-js/plugin-router",
|
|
10
8
|
required: [
|
|
11
9
|
"@modern-js/runtime"
|
|
12
10
|
],
|
|
13
11
|
setup: (api) => {
|
|
14
|
-
const runtimeConfigMap = /* @__PURE__ */ new Map();
|
|
15
|
-
let pluginsExportsUtils;
|
|
16
12
|
return {
|
|
13
|
+
_internalRuntimePlugins({ entrypoint, plugins }) {
|
|
14
|
+
var _getEntryOptions;
|
|
15
|
+
const { packageName, serverRoutes, metaName } = api.useAppContext();
|
|
16
|
+
const serverBase = serverRoutes.filter((route) => route.entryName === entrypoint.entryName).map((route) => route.urlPath).sort((a, b) => a.length - b.length > 0 ? -1 : 1);
|
|
17
|
+
const userConfig = api.useResolvedConfigContext();
|
|
18
|
+
const routerConfig = (_getEntryOptions = getEntryOptions(entrypoint.entryName, entrypoint.isMainEntry, userConfig.runtime, userConfig.runtimeByEntries, packageName)) === null || _getEntryOptions === void 0 ? void 0 : _getEntryOptions.router;
|
|
19
|
+
if (routerConfig && !isV5(userConfig)) {
|
|
20
|
+
plugins.push({
|
|
21
|
+
name: "router",
|
|
22
|
+
path: `@${metaName}/runtime/router`,
|
|
23
|
+
config: typeof routerConfig === "boolean" ? {
|
|
24
|
+
serverBase
|
|
25
|
+
} : {
|
|
26
|
+
...routerConfig,
|
|
27
|
+
serverBase
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
entrypoint,
|
|
33
|
+
plugins
|
|
34
|
+
};
|
|
35
|
+
},
|
|
17
36
|
checkEntryPoint({ path, entry }) {
|
|
18
37
|
return {
|
|
19
38
|
path,
|
|
@@ -21,8 +40,6 @@ const routerPlugin = () => ({
|
|
|
21
40
|
};
|
|
22
41
|
},
|
|
23
42
|
config() {
|
|
24
|
-
const appContext = api.useAppContext();
|
|
25
|
-
pluginsExportsUtils = createRuntimeExportsUtils(appContext.internalDirectory, "plugins");
|
|
26
43
|
return {
|
|
27
44
|
source: {
|
|
28
45
|
include: [
|
|
@@ -32,10 +49,7 @@ const routerPlugin = () => ({
|
|
|
32
49
|
/node_modules\/react-router/,
|
|
33
50
|
/node_modules\/react-router-dom/,
|
|
34
51
|
/node_modules\/@remix-run\/router/
|
|
35
|
-
]
|
|
36
|
-
alias: {
|
|
37
|
-
"@modern-js/runtime/plugins": pluginsExportsUtils.getPath()
|
|
38
|
-
}
|
|
52
|
+
]
|
|
39
53
|
}
|
|
40
54
|
};
|
|
41
55
|
},
|
|
@@ -45,56 +59,15 @@ const routerPlugin = () => ({
|
|
|
45
59
|
entrypoints: newEntryPoints
|
|
46
60
|
};
|
|
47
61
|
},
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const userConfig = api.useResolvedConfigContext();
|
|
51
|
-
const { packageName } = api.useAppContext();
|
|
52
|
-
const runtimeConfig = getEntryOptions(entryName, isMainEntry, userConfig.runtime, userConfig.runtimeByEntries, packageName);
|
|
53
|
-
runtimeConfigMap.set(entryName, runtimeConfig);
|
|
54
|
-
if (runtimeConfig === null || runtimeConfig === void 0 ? void 0 : runtimeConfig.router) {
|
|
55
|
-
if (!isV5(userConfig)) {
|
|
56
|
-
imports.push({
|
|
57
|
-
value: "@modern-js/runtime/plugins",
|
|
58
|
-
specifiers: [
|
|
59
|
-
{
|
|
60
|
-
imported: PLUGIN_IDENTIFIER
|
|
61
|
-
}
|
|
62
|
-
]
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
} else if (fileSystemRoutes) {
|
|
66
|
-
throw new Error(`should enable runtime.router for entry ${entryName}`);
|
|
67
|
-
}
|
|
68
|
-
return {
|
|
69
|
-
entrypoint,
|
|
70
|
-
imports
|
|
71
|
-
};
|
|
72
|
-
},
|
|
73
|
-
modifyEntryRuntimePlugins({ entrypoint, plugins }) {
|
|
74
|
-
const { entryName, fileSystemRoutes } = entrypoint;
|
|
75
|
-
const { serverRoutes } = api.useAppContext();
|
|
76
|
-
const userConfig = api.useResolvedConfigContext();
|
|
77
|
-
const runtimeConfig = runtimeConfigMap.get(entryName);
|
|
78
|
-
if (runtimeConfig.router && !isV5(userConfig)) {
|
|
79
|
-
const serverBase = serverRoutes.filter((route) => route.entryName === entryName).map((route) => route.urlPath).sort((a, b) => a.length - b.length > 0 ? -1 : 1);
|
|
80
|
-
plugins.push({
|
|
81
|
-
name: PLUGIN_IDENTIFIER,
|
|
82
|
-
options: JSON.stringify({
|
|
83
|
-
serverBase,
|
|
84
|
-
...runtimeConfig.router,
|
|
85
|
-
routesConfig: fileSystemRoutes ? `{ ${ROUTES_IDENTIFIER}, globalApp: App }` : void 0
|
|
86
|
-
}).replace(/"routesConfig"\s*:\s*"((\S|\s)+)"/g, '"routesConfig": $1,')
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
return {
|
|
90
|
-
entrypoint,
|
|
91
|
-
plugins
|
|
92
|
-
};
|
|
62
|
+
async generateEntryCode({ entrypoints }) {
|
|
63
|
+
await handleGeneratorEntryCode(api, entrypoints);
|
|
93
64
|
},
|
|
94
65
|
addRuntimeExports() {
|
|
95
66
|
const userConfig = api.useResolvedConfigContext();
|
|
67
|
+
const { internalDirectory, metaName } = api.useAppContext();
|
|
68
|
+
const pluginsExportsUtils = createRuntimeExportsUtils(internalDirectory, "plugins");
|
|
96
69
|
if (!isV5(userConfig)) {
|
|
97
|
-
pluginsExportsUtils.addExport(`export { default as router } from '
|
|
70
|
+
pluginsExportsUtils.addExport(`export { default as router } from '@${metaName}/runtime/router'`);
|
|
98
71
|
}
|
|
99
72
|
},
|
|
100
73
|
async fileChange(e) {
|
|
@@ -70,7 +70,7 @@ async function loadRouteModule(route, routeAssets) {
|
|
|
70
70
|
}
|
|
71
71
|
try {
|
|
72
72
|
await Promise.all(chunkIds.map((chunkId) => {
|
|
73
|
-
return __webpack_chunk_load__ === null || __webpack_chunk_load__ === void 0 ? void 0 : __webpack_chunk_load__(
|
|
73
|
+
return __webpack_chunk_load__ === null || __webpack_chunk_load__ === void 0 ? void 0 : __webpack_chunk_load__(chunkId);
|
|
74
74
|
}));
|
|
75
75
|
} catch (error) {
|
|
76
76
|
console.error(error);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useContext, useMemo } from "react";
|
|
3
3
|
import { createBrowserRouter, createHashRouter, RouterProvider, createRoutesFromElements, useMatches, useLocation, useHref } from "@modern-js/runtime-utils/router";
|
|
4
|
-
import hoistNonReactStatics from "hoist-non-react-statics";
|
|
5
4
|
import { parsedJSONFromElement } from "@modern-js/runtime-utils/parsed";
|
|
5
|
+
import { getGlobalLayoutApp, getGlobalRoutes } from "../../core/context";
|
|
6
6
|
import { RuntimeReactContext } from "../../core";
|
|
7
7
|
import { modifyRoutes as modifyRoutesHook } from "./hooks";
|
|
8
8
|
import { deserializeErrors, renderRoutes, urlJoin } from "./utils";
|
|
@@ -19,19 +19,14 @@ function modifyRoutes(modifyFunction) {
|
|
|
19
19
|
console.error("It is not allowed to modify routes config after create router.");
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
const routerPlugin = ({
|
|
23
|
-
serverBase = [],
|
|
24
|
-
supportHtml5History = true,
|
|
25
|
-
basename = "",
|
|
26
|
-
// when the current child app has multiple entries, there is a problem,
|
|
27
|
-
// so we have added a new parameter, the parameter will replace basename and baseUrl after the major version.
|
|
28
|
-
originalBaseUrl = "",
|
|
29
|
-
routesConfig,
|
|
30
|
-
createRoutes
|
|
31
|
-
}) => {
|
|
22
|
+
const routerPlugin = ({ serverBase = [], supportHtml5History = true, basename = "", routesConfig, createRoutes }) => {
|
|
32
23
|
const select = (pathname) => serverBase.find((baseUrl) => pathname.search(baseUrl) === 0) || "/";
|
|
33
24
|
let routes = [];
|
|
34
|
-
finalRouteConfig =
|
|
25
|
+
finalRouteConfig = {
|
|
26
|
+
routes: getGlobalRoutes(),
|
|
27
|
+
globalApp: getGlobalLayoutApp(),
|
|
28
|
+
...routesConfig
|
|
29
|
+
};
|
|
35
30
|
window._SERVER_DATA = parsedJSONFromElement("__MODERN_SERVER_DATA__");
|
|
36
31
|
return {
|
|
37
32
|
name: "@modern-js/plugin-router",
|
|
@@ -56,7 +51,7 @@ const routerPlugin = ({
|
|
|
56
51
|
});
|
|
57
52
|
},
|
|
58
53
|
hoc: ({ App, config }, next) => {
|
|
59
|
-
if (!finalRouteConfig && !createRoutes) {
|
|
54
|
+
if (!finalRouteConfig.routes && !createRoutes) {
|
|
60
55
|
return next({
|
|
61
56
|
App,
|
|
62
57
|
config
|
|
@@ -64,8 +59,8 @@ const routerPlugin = ({
|
|
|
64
59
|
}
|
|
65
60
|
const getRouteApp = () => {
|
|
66
61
|
const useCreateRouter = (props) => {
|
|
67
|
-
var _window__SERVER_DATA;
|
|
68
|
-
const baseUrl =
|
|
62
|
+
var _config_router, _window__SERVER_DATA;
|
|
63
|
+
const baseUrl = ((config === null || config === void 0 ? void 0 : (_config_router = config.router) === null || _config_router === void 0 ? void 0 : _config_router.basename) || ((_window__SERVER_DATA = window._SERVER_DATA) === null || _window__SERVER_DATA === void 0 ? void 0 : _window__SERVER_DATA.router.baseUrl) || select(location.pathname)).replace(/^\/*/, "/");
|
|
69
64
|
const _basename = baseUrl === "/" ? urlJoin(baseUrl, basename) : baseUrl;
|
|
70
65
|
let hydrationData = window._ROUTER_DATA;
|
|
71
66
|
const runtimeContext = useContext(RuntimeReactContext);
|
|
@@ -119,24 +114,12 @@ const routerPlugin = ({
|
|
|
119
114
|
return (props) => {
|
|
120
115
|
beforeCreateRouter = false;
|
|
121
116
|
const router = useCreateRouter(props);
|
|
122
|
-
return /* @__PURE__ */ _jsx(
|
|
123
|
-
|
|
124
|
-
children: /* @__PURE__ */ _jsx(RouterProvider, {
|
|
125
|
-
router
|
|
126
|
-
})
|
|
117
|
+
return /* @__PURE__ */ _jsx(RouterProvider, {
|
|
118
|
+
router
|
|
127
119
|
});
|
|
128
120
|
};
|
|
129
121
|
};
|
|
130
|
-
|
|
131
|
-
if (App) {
|
|
132
|
-
RouteApp = hoistNonReactStatics(RouteApp, App);
|
|
133
|
-
}
|
|
134
|
-
if (routesConfig === null || routesConfig === void 0 ? void 0 : routesConfig.globalApp) {
|
|
135
|
-
return next({
|
|
136
|
-
App: hoistNonReactStatics(RouteApp, routesConfig.globalApp),
|
|
137
|
-
config
|
|
138
|
-
});
|
|
139
|
-
}
|
|
122
|
+
const RouteApp = getRouteApp();
|
|
140
123
|
return next({
|
|
141
124
|
App: RouteApp,
|
|
142
125
|
config
|