@modern-js/runtime 2.68.0 → 2.68.2

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.
Files changed (88) hide show
  1. package/dist/cjs/cli/code.js +6 -3
  2. package/dist/cjs/cli/template.js +72 -21
  3. package/dist/cjs/cli/template.server.js +62 -13
  4. package/dist/cjs/core/context/index.js +19 -2
  5. package/dist/cjs/core/context/serverPayload.server.js +40 -0
  6. package/dist/cjs/core/server/requestHandler.js +47 -11
  7. package/dist/cjs/router/cli/code/index.js +13 -6
  8. package/dist/cjs/router/cli/code/templates.js +44 -20
  9. package/dist/cjs/router/cli/handler.js +17 -2
  10. package/dist/cjs/router/cli/index.js +6 -5
  11. package/dist/cjs/router/index.js +0 -21
  12. package/dist/cjs/router/internal.js +30 -0
  13. package/dist/cjs/router/runtime/PrefetchLink.js +3 -4
  14. package/dist/cjs/router/runtime/constants.js +2 -2
  15. package/dist/cjs/router/runtime/index.js +1 -12
  16. package/dist/cjs/router/runtime/internal.js +36 -0
  17. package/dist/cjs/router/runtime/plugin.js +134 -76
  18. package/dist/cjs/router/runtime/plugin.node.js +73 -32
  19. package/dist/cjs/router/runtime/rsc-router.js +322 -0
  20. package/dist/cjs/router/runtime/utils.js +76 -1
  21. package/dist/cjs/rsc/client.js +11 -0
  22. package/dist/cjs/rsc/server.js +40 -0
  23. package/dist/esm/cli/code.js +6 -3
  24. package/dist/esm/cli/template.js +25 -6
  25. package/dist/esm/cli/template.server.js +3 -3
  26. package/dist/esm/core/context/index.js +14 -1
  27. package/dist/esm/core/context/serverPayload.server.js +15 -0
  28. package/dist/esm/core/server/requestHandler.js +102 -9
  29. package/dist/esm/router/cli/code/index.js +12 -6
  30. package/dist/esm/router/cli/code/templates.js +29 -13
  31. package/dist/esm/router/cli/handler.js +33 -6
  32. package/dist/esm/router/cli/index.js +6 -5
  33. package/dist/esm/router/index.js +0 -6
  34. package/dist/esm/router/internal.js +5 -0
  35. package/dist/esm/router/runtime/PrefetchLink.js +2 -2
  36. package/dist/esm/router/runtime/constants.js +2 -2
  37. package/dist/esm/router/runtime/index.js +1 -9
  38. package/dist/esm/router/runtime/internal.js +10 -0
  39. package/dist/esm/router/runtime/plugin.js +134 -85
  40. package/dist/esm/router/runtime/plugin.node.js +110 -40
  41. package/dist/esm/router/runtime/rsc-router.js +437 -0
  42. package/dist/esm/router/runtime/utils.js +95 -1
  43. package/dist/esm/rsc/client.js +6 -0
  44. package/dist/esm/rsc/server.js +86 -0
  45. package/dist/esm-node/cli/code.js +6 -3
  46. package/dist/esm-node/cli/template.js +72 -21
  47. package/dist/esm-node/cli/template.server.js +62 -13
  48. package/dist/esm-node/core/context/index.js +14 -1
  49. package/dist/esm-node/core/context/serverPayload.server.js +15 -0
  50. package/dist/esm-node/core/server/requestHandler.js +45 -9
  51. package/dist/esm-node/router/cli/code/index.js +12 -6
  52. package/dist/esm-node/router/cli/code/templates.js +44 -20
  53. package/dist/esm-node/router/cli/handler.js +17 -2
  54. package/dist/esm-node/router/cli/index.js +6 -5
  55. package/dist/esm-node/router/index.js +0 -6
  56. package/dist/esm-node/router/internal.js +5 -0
  57. package/dist/esm-node/router/runtime/PrefetchLink.js +2 -2
  58. package/dist/esm-node/router/runtime/constants.js +2 -2
  59. package/dist/esm-node/router/runtime/index.js +1 -9
  60. package/dist/esm-node/router/runtime/internal.js +10 -0
  61. package/dist/esm-node/router/runtime/plugin.js +126 -78
  62. package/dist/esm-node/router/runtime/plugin.node.js +75 -34
  63. package/dist/esm-node/router/runtime/rsc-router.js +284 -0
  64. package/dist/esm-node/router/runtime/utils.js +74 -1
  65. package/dist/esm-node/rsc/client.js +6 -0
  66. package/dist/esm-node/rsc/server.js +35 -0
  67. package/dist/types/cli/template.d.ts +4 -2
  68. package/dist/types/cli/template.server.d.ts +2 -1
  69. package/dist/types/common.d.ts +1 -1
  70. package/dist/types/config.d.ts +1 -1
  71. package/dist/types/core/context/index.d.ts +38 -3
  72. package/dist/types/core/context/serverPayload.server.d.ts +3 -0
  73. package/dist/types/core/server/requestHandler.d.ts +1 -1
  74. package/dist/types/index.d.ts +1 -1
  75. package/dist/types/router/cli/code/index.d.ts +1 -0
  76. package/dist/types/router/cli/code/templates.d.ts +4 -2
  77. package/dist/types/router/index.d.ts +0 -2
  78. package/dist/types/router/internal.d.ts +2 -0
  79. package/dist/types/router/runtime/PrefetchLink.d.ts +0 -1
  80. package/dist/types/router/runtime/constants.d.ts +3 -3
  81. package/dist/types/router/runtime/index.d.ts +1 -9
  82. package/dist/types/router/runtime/internal.d.ts +8 -0
  83. package/dist/types/router/runtime/rsc-router.d.ts +14 -0
  84. package/dist/types/router/runtime/utils.d.ts +26 -5
  85. package/dist/types/rsc/client.d.ts +1 -0
  86. package/dist/types/rsc/server.d.ts +1 -0
  87. package/package.json +21 -12
  88. package/static/modern-inline.js +1 -1
@@ -63,7 +63,8 @@ var generateCode = function() {
63
63
  mountId,
64
64
  urlPath: (_serverRoutes_find = serverRoutes.find(function(route) {
65
65
  return route.entryName === entryName;
66
- })) === null || _serverRoutes_find === void 0 ? void 0 : _serverRoutes_find.urlPath
66
+ })) === null || _serverRoutes_find === void 0 ? void 0 : _serverRoutes_find.urlPath,
67
+ isNestedRouter: entrypoint.nestedRoutesEntry
67
68
  });
68
69
  } else {
69
70
  indexCode = template.index({
@@ -75,7 +76,8 @@ var generateCode = function() {
75
76
  customEntry,
76
77
  customBootstrap,
77
78
  mountId,
78
- enableRsc: config.server.rsc
79
+ enableRsc: config.server.rsc,
80
+ isNestedRouter: !!entrypoint.nestedRoutesEntry
79
81
  });
80
82
  }
81
83
  indexFile = path.resolve(internalDirectory, "./".concat(entryName, "/").concat(ENTRY_POINT_FILE_NAME));
@@ -145,6 +147,7 @@ var generateCode = function() {
145
147
  ];
146
148
  indexServerFile1 = path.resolve(internalDirectory, "./".concat(entryName, "/").concat(SERVER_ENTRY_POINT_FILE_NAME));
147
149
  indexServerCode1 = serverTemplate.entryForCSRWithRSC({
150
+ entryName,
148
151
  metaName
149
152
  });
150
153
  return [
@@ -179,7 +182,7 @@ var generateCode = function() {
179
182
  case 11:
180
183
  _state2.sent();
181
184
  contextCode = "";
182
- if (!!config.server.rsc)
185
+ if (!(!config.server.rsc || entrypoint.nestedRoutesEntry))
183
186
  return [
184
187
  3,
185
188
  12
@@ -1,19 +1,37 @@
1
1
  import path from "path";
2
2
  import { JS_EXTENSIONS, findExists, formatImportPath } from "@modern-js/utils";
3
3
  import { ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME, ENTRY_POINT_RUNTIME_REGISTER_FILE_NAME } from "./constants";
4
+ var genRenderStatement = function(param) {
5
+ var customBootstrap = param.customBootstrap, enableRsc = param.enableRsc, mountId = param.mountId, isNestedRouter = param.isNestedRouter;
6
+ if (customBootstrap) {
7
+ return "customBootstrap(ModernRoot, () => render(<ModernRoot />, '".concat(mountId || "root", "'));");
8
+ }
9
+ if (enableRsc) {
10
+ if (!isNestedRouter) {
11
+ return "render(<ModernRoot>\n <RscClientRoot rscPayload={data} />\n </ModernRoot>, '".concat(mountId || "root", "');");
12
+ }
13
+ return "render(<ModernRoot rscPayload={data} />, '".concat(mountId || "root", "');");
14
+ }
15
+ return "render(<ModernRoot />, '".concat(mountId || "root", "');");
16
+ };
4
17
  var genRenderCode = function(param) {
5
- var srcDirectory = param.srcDirectory, internalSrcAlias = param.internalSrcAlias, metaName = param.metaName, entry = param.entry, customEntry = param.customEntry, customBootstrap = param.customBootstrap, mountId = param.mountId, enableRsc = param.enableRsc;
18
+ var srcDirectory = param.srcDirectory, internalSrcAlias = param.internalSrcAlias, metaName = param.metaName, entry = param.entry, customEntry = param.customEntry, customBootstrap = param.customBootstrap, mountId = param.mountId, enableRsc = param.enableRsc, isNestedRouter = param.isNestedRouter;
6
19
  if (customEntry) {
7
20
  return "import '".concat(formatImportPath(entry.replace(srcDirectory, internalSrcAlias)), "'");
8
21
  }
9
- return "import { createRoot } from '@".concat(metaName, "/runtime/react';\nimport { render } from '@").concat(metaName, "/runtime/browser';\n\n").concat(enableRsc ? "import { RscClientRoot, createFromReadableStream, rscStream, callServer } from '@".concat(metaName, "/runtime/rsc/client';") : "", "\n\n").concat(enableRsc ? "const data = createFromReadableStream(rscStream, {\n callServer: callServer,\n });" : "", "\n\n").concat(customBootstrap ? "import customBootstrap from '".concat(formatImportPath(customBootstrap.replace(srcDirectory, internalSrcAlias)), "';") : "", "\n\n\n\nconst ModernRoot = createRoot();\n\n").concat(customBootstrap ? "customBootstrap(ModernRoot, () => render(<ModernRoot />, '".concat(mountId || "root", "'));") : enableRsc ? "render(<ModernRoot>\n <RscClientRoot data={data} />\n </ModernRoot>, '".concat(mountId || "root", "');") : "render(<ModernRoot />, '".concat(mountId || "root", "');"));
22
+ return "import { createRoot } from '@".concat(metaName, "/runtime/react';\nimport { render } from '@").concat(metaName, "/runtime/browser';\n\n").concat(enableRsc ? "import { RscClientRoot, createFromReadableStream, rscStream, callServer } from '@".concat(metaName, "/runtime/rsc/client';") : "", "\n\n").concat(enableRsc ? "const data = createFromReadableStream(rscStream, {\n callServer: callServer,\n });" : "", "\n\n").concat(customBootstrap ? "import customBootstrap from '".concat(formatImportPath(customBootstrap.replace(srcDirectory, internalSrcAlias)), "';") : "", "\n\n\n\nconst ModernRoot = createRoot();\n\n").concat(genRenderStatement({
23
+ customBootstrap,
24
+ enableRsc,
25
+ mountId,
26
+ isNestedRouter
27
+ }));
10
28
  };
11
29
  var entryForCSRWithRSC = function(param) {
12
- var metaName = param.metaName, entryName = param.entryName, _param_urlPath = param.urlPath, urlPath = _param_urlPath === void 0 ? "/" : _param_urlPath, _param_mountId = param.mountId, mountId = _param_mountId === void 0 ? "root" : _param_mountId;
13
- return "\n import '@".concat(metaName, "/runtime/registry/").concat(entryName, "';\n import { render } from '@").concat(metaName, "/runtime/browser';\n import { createRoot } from '@").concat(metaName, "/runtime/react';\n\n import {\n RscClientRoot,\n createFromFetch\n } from '@").concat(metaName, "/runtime/rsc/client';\n\n const content = createFromFetch(\n fetch('").concat(urlPath, "', {\n headers: {\n 'x-rsc-tree': 'true',\n },\n }),\n );\n\n const ModernRoot = createRoot();\n\n render(\n <ModernRoot>\n <RscClientRoot data={content} />\n </ModernRoot>,\n '").concat(mountId, "',\n );\n ");
30
+ var metaName = param.metaName, entryName = param.entryName, _param_urlPath = param.urlPath, urlPath = _param_urlPath === void 0 ? "/" : _param_urlPath, _param_mountId = param.mountId, mountId = _param_mountId === void 0 ? "root" : _param_mountId, isNestedRouter = param.isNestedRouter;
31
+ return "\n import '@".concat(metaName, "/runtime/registry/").concat(entryName, "';\n import { render } from '@").concat(metaName, "/runtime/browser';\n import { createRoot } from '@").concat(metaName, "/runtime/react';\n\n import {\n RscClientRoot,\n createFromFetch,\n isRedirectResponse,\n rscStream,\n callServer,\n createFromReadableStream\n } from '@").concat(metaName, "/runtime/rsc/client';\n\n const handleRedirectResponse = (res: Response) => {\n const { headers } = res;\n const location = headers.get('X-Modernjs-Redirect');\n const baseUrl = headers.get('X-Modernjs-BaseUrl');\n if (location) {\n if (baseUrl !== '/') {\n window.location.replace(baseUrl + location);\n } else {\n window.location.replace(location);\n }\n return;\n }\n return res;\n };\n\n ").concat(process.env.MODERN_DISABLE_INJECT_RSC_DATA ? "\n const data = createFromFetch(\n fetch(location.pathname, {\n headers: {\n 'x-rsc-tree': 'true',\n },\n }).then(handleRedirectResponse),\n )\n " : "\n const data = createFromReadableStream(rscStream, {\n callServer: callServer,\n });\n ", "\n\n const ModernRoot = createRoot();\n\n ").concat(isNestedRouter ? "\n render(\n <ModernRoot rscPayload={data}>\n </ModernRoot>,\n '".concat(mountId, "',\n );\n ") : "\n render(\n <ModernRoot>\n <RscClientRoot rscPayload={data} />\n </ModernRoot>,\n '".concat(mountId, "',\n );\n "), "\n ");
14
32
  };
15
33
  var index = function(param) {
16
- var srcDirectory = param.srcDirectory, internalSrcAlias = param.internalSrcAlias, metaName = param.metaName, entry = param.entry, entryName = param.entryName, customEntry = param.customEntry, customBootstrap = param.customBootstrap, mountId = param.mountId, enableRsc = param.enableRsc;
34
+ var srcDirectory = param.srcDirectory, internalSrcAlias = param.internalSrcAlias, metaName = param.metaName, entry = param.entry, entryName = param.entryName, customEntry = param.customEntry, customBootstrap = param.customBootstrap, mountId = param.mountId, enableRsc = param.enableRsc, isNestedRouter = param.isNestedRouter;
17
35
  return "import '@".concat(metaName, "/runtime/registry/").concat(entryName, "';\n").concat(genRenderCode({
18
36
  srcDirectory,
19
37
  internalSrcAlias,
@@ -22,7 +40,8 @@ var index = function(param) {
22
40
  customEntry,
23
41
  customBootstrap,
24
42
  mountId,
25
- enableRsc
43
+ enableRsc,
44
+ isNestedRouter
26
45
  }), "\n");
27
46
  };
28
47
  var register = function() {
@@ -1,13 +1,13 @@
1
1
  import { formatImportPath } from "@modern-js/utils";
2
2
  var SERVER_ENTRY = "\nimport {\n #render,\n createRequestHandler,\n} from '@#metaName/runtime/ssr/server';\n\nconst handleRequest = async (request, ServerRoot, options) => {\n\n const body = await #render(request, <ServerRoot />, options);\n\n return new Response(body, {\n headers: {\n 'content-type': 'text/html; charset=utf-8'\n },\n })\n};\n\nexport const requestHandler = createRequestHandler(handleRequest);\n";
3
- var SERVER_ENTRY_RSC = "\nimport {\n renderStreaming,\n createRequestHandler,\n} from '@#metaName/runtime/ssr/server';\nimport { RSCServerSlot } from '@#metaName/runtime/rsc/client';\nexport { handleAction } from '@#metaName/runtime/rsc/server';\n\nconst handleRequest = async (request, ServerRoot, options) => {\n\n const body = await renderStreaming(request,\n <ServerRoot>\n <RSCServerSlot />\n </ServerRoot>,\n {\n ...options,\n rscRoot: <options.RSCRoot />,\n },\n );\n\n return new Response(body, {\n headers: {\n 'content-type': 'text/html; charset=utf-8'\n },\n })\n};\n\nexport const requestHandler = createRequestHandler(handleRequest, {\n enableRsc: true,\n});\n";
3
+ var SERVER_ENTRY_RSC = "\nimport {\n renderStreaming,\n createRequestHandler,\n} from '@#metaName/runtime/ssr/server';\nimport { RSCServerSlot } from '@#metaName/runtime/rsc/client';\nimport { renderRsc } from '@#metaName/runtime/rsc/server';\nexport { handleAction } from '@#metaName/runtime/rsc/server';\n\nconst handleRequest = async (request, ServerRoot, options) => {\n\n const body = await renderStreaming(request,\n <ServerRoot>\n <RSCServerSlot />\n </ServerRoot>,\n {\n ...options,\n rscRoot: options.rscRoot,\n },\n );\n\n return new Response(body, {\n headers: {\n 'content-type': 'text/html; charset=utf-8'\n },\n })\n};\n\nexport const requestHandler = createRequestHandler(handleRequest, {\n enableRsc: true\n});\n\nconst handleRSCRequest = async (request, ServerRoot, options) => {\n const { serverPayload } = options;\n const stream = renderRsc({\n element: options.rscRoot,\n clientManifest: options.rscClientManifest!,\n });\n\n return new Response(stream);\n}\n\n\nexport const rscPayloadHandler = createRequestHandler(handleRSCRequest, {\n enableRsc: true\n});\n";
4
4
  var serverIndex = function(options) {
5
5
  var _options_metaName = options.metaName, metaName = _options_metaName === void 0 ? "modern-js" : _options_metaName, entryName = options.entryName;
6
6
  return "\n import '@".concat(metaName, "/runtime/registry/").concat(entryName, "';\n ").concat(genHandlerCode(options), "\n ");
7
7
  };
8
8
  var entryForCSRWithRSC = function(param) {
9
- var metaName = param.metaName;
10
- return "\n import App from './AppProxy';\n import { renderRsc } from '@".concat(metaName, "/runtime/rsc/server'\n export { handleAction } from '@").concat(metaName, "/runtime/rsc/server';\n\n\n export const rscRequestHandler = ({\n clientManifest\n }) => {\n const stream = renderRsc({\n element: <App/>,\n clientManifest,\n })\n\n const response = new Response(stream);\n return response\n }\n");
9
+ var metaName = param.metaName, entryName = param.entryName;
10
+ return "\n import '@".concat(metaName, "/runtime/registry/").concat(entryName, "';\n import {\n createRequestHandler,\n } from '@").concat(metaName, "/runtime/ssr/server';\n import { renderRsc, processRSCStream } from '@").concat(metaName, "/runtime/rsc/server'\n export { handleAction } from '@").concat(metaName, "/runtime/rsc/server';\n\n const handleCSRRender = async (request, ServerRoot, options) => {\n const rscPayloadStream = renderRsc({\n element: options.rscRoot,\n clientManifest: options.rscClientManifest!,\n });\n const stream = new ReadableStream({\n start(controller) {\n const encoder = new TextEncoder();\n\n controller.enqueue(encoder.encode(options.html));\n\n processRSCStream(rscPayloadStream, controller, encoder)\n .catch(err => {\n controller.error(err);\n });\n }\n });\n\n return new Response(stream, {\n status: 200,\n headers: new Headers({\n 'content-type': 'text/html; charset=UTF-8',\n }),\n });\n }\n\n export const renderRscStreamHandler = createRequestHandler(handleCSRRender, {\n enableRsc: true\n });\n\n const handleRequest = async (request, ServerRoot, options) => {\n const stream = renderRsc({\n element: options.rscRoot,\n clientManifest: options.rscClientManifest!,\n });\n\n return new Response(stream);\n }\n\n export const rscPayloadHandler = createRequestHandler(handleRequest, {\n enableRsc: true\n });\n");
11
11
  };
12
12
  function genHandlerCode(param) {
13
13
  var mode = param.mode, metaName = param.metaName, customServerEntry = param.customServerEntry, srcDirectory = param.srcDirectory, internalSrcAlias = param.internalSrcAlias, enableRsc = param.enableRsc;
@@ -1,5 +1,12 @@
1
1
  import { RuntimeReactContext, getInitialContext } from "./runtime";
2
2
  var globalContext = {};
3
+ import { getServerPayload, setServerPayload } from "./serverPayload.server";
4
+ function getGlobalIsRscClient() {
5
+ return globalContext.isRscClient;
6
+ }
7
+ function getGlobalEnableRsc() {
8
+ return globalContext.enableRsc;
9
+ }
3
10
  function setGlobalContext(context) {
4
11
  globalContext.entryName = context.entryName;
5
12
  globalContext.App = context.App;
@@ -8,6 +15,8 @@ function setGlobalContext(context) {
8
15
  globalContext.appConfig = typeof context.appConfig === "function" ? context.appConfig() : context.appConfig;
9
16
  globalContext.layoutApp = context.layoutApp;
10
17
  globalContext.RSCRoot = context.RSCRoot;
18
+ globalContext.isRscClient = context.isRscClient;
19
+ globalContext.enableRsc = context.enableRsc;
11
20
  }
12
21
  function getCurrentEntryName() {
13
22
  return globalContext.entryName;
@@ -44,11 +53,15 @@ export {
44
53
  getGlobalApp,
45
54
  getGlobalAppConfig,
46
55
  getGlobalAppInit,
56
+ getGlobalEnableRsc,
47
57
  getGlobalInternalRuntimeContext,
58
+ getGlobalIsRscClient,
48
59
  getGlobalLayoutApp,
49
60
  getGlobalRSCRoot,
50
61
  getGlobalRoutes,
51
62
  getInitialContext,
63
+ getServerPayload,
52
64
  setGlobalContext,
53
- setGlobalInternalRuntimeContext
65
+ setGlobalInternalRuntimeContext,
66
+ setServerPayload
54
67
  };
@@ -0,0 +1,15 @@
1
+ import { storage } from "@modern-js/runtime-utils/node";
2
+ var getServerPayload = function() {
3
+ var context = storage.useContext();
4
+ return context === null || context === void 0 ? void 0 : context.serverPayload;
5
+ };
6
+ var setServerPayload = function(payload) {
7
+ var context = storage.useContext();
8
+ if (context) {
9
+ context.serverPayload = payload;
10
+ }
11
+ };
12
+ export {
13
+ getServerPayload,
14
+ setServerPayload
15
+ };
@@ -5,15 +5,81 @@ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
5
5
  import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
6
6
  import { _ as _type_of } from "@swc/helpers/_/_type_of";
7
7
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
8
+ import { jsx as _jsx } from "react/jsx-runtime";
8
9
  import { storage } from "@modern-js/runtime-utils/node";
9
10
  import { getPathname, parseCookie, parseHeaders, parseQuery } from "@modern-js/runtime-utils/universal/request";
11
+ import { Fragment } from "react";
10
12
  import { getGlobalAppInit, getGlobalInternalRuntimeContext, getGlobalRSCRoot } from "../context";
11
13
  import { getInitialContext } from "../context/runtime";
14
+ import { getServerPayload } from "../context/serverPayload.server";
12
15
  import { createLoaderManager } from "../loader/loaderManager";
13
16
  import { createRoot } from "../react";
14
17
  import { CHUNK_CSS_PLACEHOLDER } from "./constants";
15
18
  import { SSRErrors } from "./tracer";
16
19
  import { getSSRConfigByEntry, getSSRMode } from "./utils";
20
+ function handleRSCRequest(request, Root, context, options, handleRequest) {
21
+ return _handleRSCRequest.apply(this, arguments);
22
+ }
23
+ function _handleRSCRequest() {
24
+ _handleRSCRequest = _async_to_generator(function(request, Root, context, options, handleRequest) {
25
+ var serverPayload, App;
26
+ return _ts_generator(this, function(_state) {
27
+ switch (_state.label) {
28
+ case 0:
29
+ serverPayload = getServerPayload();
30
+ if (!(typeof serverPayload !== "undefined"))
31
+ return [
32
+ 3,
33
+ 2
34
+ ];
35
+ return [
36
+ 4,
37
+ handleRequest(request, Root, _object_spread_props(_object_spread({}, options), {
38
+ runtimeContext: context,
39
+ rscRoot: serverPayload
40
+ }))
41
+ ];
42
+ case 1:
43
+ return [
44
+ 2,
45
+ _state.sent()
46
+ ];
47
+ case 2:
48
+ App = getGlobalRSCRoot();
49
+ if (!App)
50
+ return [
51
+ 3,
52
+ 4
53
+ ];
54
+ return [
55
+ 4,
56
+ handleRequest(request, Fragment, _object_spread_props(_object_spread({}, options), {
57
+ runtimeContext: context,
58
+ rscRoot: /* @__PURE__ */ _jsx(App, {})
59
+ }))
60
+ ];
61
+ case 3:
62
+ return [
63
+ 2,
64
+ _state.sent()
65
+ ];
66
+ case 4:
67
+ return [
68
+ 4,
69
+ handleRequest(request, Root, _object_spread_props(_object_spread({}, options), {
70
+ runtimeContext: context
71
+ }))
72
+ ];
73
+ case 5:
74
+ return [
75
+ 2,
76
+ _state.sent()
77
+ ];
78
+ }
79
+ });
80
+ });
81
+ return _handleRSCRequest.apply(this, arguments);
82
+ }
17
83
  function createSSRContext(request, options) {
18
84
  var config = options.config, loaderContext = options.loaderContext, onError = options.onError, onTiming = options.onTiming, locals = options.locals, resource = options.resource, params = options.params, responseProxy = options.responseProxy, logger = options.logger, metrics = options.metrics, reporter = options.reporter;
19
85
  var nonce = config.nonce, useJsonScript = config.useJsonScript;
@@ -92,7 +158,8 @@ var createRequestHandler = function() {
92
158
  request,
93
159
  monitors: options.monitors,
94
160
  responseProxy,
95
- activeDeferreds
161
+ activeDeferreds,
162
+ serverPayload: void 0
96
163
  }, /* @__PURE__ */ _async_to_generator(function() {
97
164
  var _context_routerContext, _context_routerContext1, _context_routerContext2, Root, internalRuntimeContext, hooks, routeManifest, context, runBeforeRender, ssrContext, getRedirectResponse, initialData, _context_routerContext3, _context_ssrContext, errors, redirectResponse, htmlTemplate, response;
98
165
  return _ts_generator(this, function(_state3) {
@@ -179,22 +246,48 @@ var createRequestHandler = function() {
179
246
  context.initialData = initialData;
180
247
  redirectResponse = getRedirectResponse(initialData);
181
248
  if (redirectResponse) {
249
+ if (createRequestOptions === null || createRequestOptions === void 0 ? void 0 : createRequestOptions.enableRsc) {
250
+ return [
251
+ 2,
252
+ initialData
253
+ ];
254
+ } else {
255
+ return [
256
+ 2,
257
+ redirectResponse
258
+ ];
259
+ }
260
+ }
261
+ if (!(createRequestOptions === null || createRequestOptions === void 0 ? void 0 : createRequestOptions.enableRsc)) {
262
+ htmlTemplate = options.resource.htmlTemplate;
263
+ options.resource.htmlTemplate = htmlTemplate.replace("</head>", "".concat(CHUNK_CSS_PLACEHOLDER, "</head>"));
264
+ }
265
+ if (!(createRequestOptions === null || createRequestOptions === void 0 ? void 0 : createRequestOptions.enableRsc))
182
266
  return [
183
- 2,
184
- redirectResponse
267
+ 3,
268
+ 3
185
269
  ];
186
- }
187
- htmlTemplate = options.resource.htmlTemplate;
188
- options.resource.htmlTemplate = htmlTemplate.replace("</head>", "".concat(CHUNK_CSS_PLACEHOLDER, "</head>"));
270
+ return [
271
+ 4,
272
+ handleRSCRequest(request, Root, context, options, handleRequest)
273
+ ];
274
+ case 2:
275
+ response = _state3.sent();
276
+ return [
277
+ 3,
278
+ 5
279
+ ];
280
+ case 3:
189
281
  return [
190
282
  4,
191
283
  handleRequest(request, Root, _object_spread_props(_object_spread({}, options), {
192
- runtimeContext: context,
193
- RSCRoot: (createRequestOptions === null || createRequestOptions === void 0 ? void 0 : createRequestOptions.enableRsc) && getGlobalRSCRoot()
284
+ runtimeContext: context
194
285
  }))
195
286
  ];
196
- case 2:
287
+ case 4:
197
288
  response = _state3.sent();
289
+ _state3.label = 5;
290
+ case 5:
198
291
  Object.entries(responseProxy.headers).forEach(function(param) {
199
292
  var _param = _sliced_to_array(param, 2), key = _param[0], value = _param[1];
200
293
  response.headers.set(key, value);
@@ -2,7 +2,7 @@ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
2
  import { _ as _type_of } from "@swc/helpers/_/_type_of";
3
3
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
4
4
  import path from "path";
5
- import { fs, getEntryOptions, isSSGEntry, isUseSSRBundle, logger } from "@modern-js/utils";
5
+ import { fs, getEntryOptions, isSSGEntry, isUseRsc, isUseSSRBundle, logger } from "@modern-js/utils";
6
6
  import { filterRoutesForServer, filterRoutesLoader, markRoutes } from "@modern-js/utils";
7
7
  import { cloneDeep } from "@modern-js/utils/lodash";
8
8
  import { ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME } from "../../../cli/constants";
@@ -125,11 +125,12 @@ var generateCode = function() {
125
125
  templates.fileSystemRoutes({
126
126
  metaName,
127
127
  routes,
128
- ssrMode: useSSG ? "string" : mode,
128
+ ssrMode: useSSG ? "string" : isUseRsc(_$config) ? "stream" : mode,
129
129
  nestedRoutesEntry: entrypoint.nestedRoutesEntry,
130
130
  entryName: entrypoint.entryName,
131
131
  internalDirectory,
132
- splitRouteChunks: _$config === null || _$config === void 0 ? void 0 : (_config_output = _$config.output) === null || _config_output === void 0 ? void 0 : _config_output.splitRouteChunks
132
+ splitRouteChunks: _$config === null || _$config === void 0 ? void 0 : (_config_output = _$config.output) === null || _config_output === void 0 ? void 0 : _config_output.splitRouteChunks,
133
+ isRscClient: isUseRsc(_$config)
133
134
  })
134
135
  ];
135
136
  case 4:
@@ -141,7 +142,7 @@ var generateCode = function() {
141
142
  ];
142
143
  case 5:
143
144
  code = _state.sent().code;
144
- if (!(entrypoint.nestedRoutesEntry && isUseSSRBundle(_$config)))
145
+ if (!(entrypoint.nestedRoutesEntry && (isUseSSRBundle(_$config) || isUseRsc(_$config))))
145
146
  return [
146
147
  3,
147
148
  10
@@ -173,7 +174,8 @@ var generateCode = function() {
173
174
  nestedRoutesEntry: entrypoint.nestedRoutesEntry,
174
175
  entryName: entrypoint.entryName,
175
176
  internalDirectory,
176
- splitRouteChunks: _$config === null || _$config === void 0 ? void 0 : (_config_output1 = _$config.output) === null || _config_output1 === void 0 ? void 0 : _config_output1.splitRouteChunks
177
+ splitRouteChunks: _$config === null || _$config === void 0 ? void 0 : (_config_output1 = _$config.output) === null || _config_output1 === void 0 ? void 0 : _config_output1.splitRouteChunks,
178
+ isRscClient: false
177
179
  })
178
180
  ];
179
181
  case 8:
@@ -243,7 +245,11 @@ var generateCode = function() {
243
245
  function generatorRegisterCode(internalDirectory, entryName, code) {
244
246
  fs.outputFileSync(path.resolve(internalDirectory, "./".concat(entryName, "/").concat(ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME, ".js")), code, "utf8");
245
247
  }
248
+ function generatorServerRegisterCode(internalDirectory, entryName, code) {
249
+ fs.outputFileSync(path.resolve(internalDirectory, "./".concat(entryName, "/").concat(ENTRY_POINT_RUNTIME_GLOBAL_CONTEXT_FILE_NAME, ".server.js")), code, "utf8");
250
+ }
246
251
  export {
247
252
  generateCode,
248
- generatorRegisterCode
253
+ generatorRegisterCode,
254
+ generatorServerRegisterCode
249
255
  };
@@ -120,11 +120,11 @@ var createMatchReg = function(keyword) {
120
120
  };
121
121
  var fileSystemRoutes = function() {
122
122
  var _ref = _async_to_generator(function(param) {
123
- var metaName, routes, ssrMode, nestedRoutesEntry, entryName, internalDirectory, _param_splitRouteChunks, splitRouteChunks, components, loadings, errors, loaders, loadersMap, configs, configsMap, loadersMapFile, importLazyCode, rootLayoutCode, getDataLoaderPath, createLazyImport, traverseRouteTree, routeComponentsCode, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, route, newRoute, routeStr, keywords, regs, newRouteStr, component, finalRoute, keywords1, routeStr1, regs1, newRouteStr1, importLoadingCode, importComponentsCode, importErrorComponentsCode, importLoadersCode, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, _step_value, key, loaderInfo, route1, importConfigsCode, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, _step_value1, key1, configPath, importRuntimeRouterCode, routeModulesCode;
123
+ var metaName, routes, ssrMode, nestedRoutesEntry, entryName, internalDirectory, _param_splitRouteChunks, splitRouteChunks, _param_isRscClient, isRscClient, components, loadings, errors, loaders, loadersMap, configs, configsMap, loadersMapFile, importLazyCode, rootLayoutCode, getDataLoaderPath, createLazyImport, traverseRouteTree, routeComponentsCode, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, route, newRoute, routeStr, keywords, regs, newRouteStr, component, finalRoute, keywords1, routeStr1, regs1, newRouteStr1, importLoadingCode, importComponentsCode, importErrorComponentsCode, importLoadersCode, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, _step_value, key, loaderInfo, route1, importConfigsCode, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, _step_value1, key1, configPath, importRuntimeRouterCode, routeModulesCode;
124
124
  return _ts_generator(this, function(_state) {
125
125
  switch (_state.label) {
126
126
  case 0:
127
- metaName = param.metaName, routes = param.routes, ssrMode = param.ssrMode, nestedRoutesEntry = param.nestedRoutesEntry, entryName = param.entryName, internalDirectory = param.internalDirectory, _param_splitRouteChunks = param.splitRouteChunks, splitRouteChunks = _param_splitRouteChunks === void 0 ? true : _param_splitRouteChunks;
127
+ metaName = param.metaName, routes = param.routes, ssrMode = param.ssrMode, nestedRoutesEntry = param.nestedRoutesEntry, entryName = param.entryName, internalDirectory = param.internalDirectory, _param_splitRouteChunks = param.splitRouteChunks, splitRouteChunks = _param_splitRouteChunks === void 0 ? true : _param_splitRouteChunks, _param_isRscClient = param.isRscClient, isRscClient = _param_isRscClient === void 0 ? false : _param_isRscClient;
128
128
  components = [];
129
129
  loadings = [];
130
130
  errors = [];
@@ -149,14 +149,16 @@ var fileSystemRoutes = function() {
149
149
  };
150
150
  createLazyImport = function(param2) {
151
151
  var componentPath = param2.componentPath, routeId = param2.routeId, webpackChunkName = param2.webpackChunkName, eager = param2.eager;
152
- var importOptions = webpackChunkName ? '/* webpackChunkName: "'.concat(routeId, '" */ ') : eager ? '/* webpackMode: "eager" */ ' : "";
152
+ var importOptions = webpackChunkName ? '/* webpackChunkName: "'.concat(routeId, '" */ ') : eager ? '/* webpackMode: "eager" */ ' : "";
153
153
  return "() => import(".concat(importOptions, "'").concat(componentPath, `').then(routeModule => handleRouteModule(routeModule, "`).concat(routeId, '")).catch(handleRouteModuleError)');
154
154
  };
155
- traverseRouteTree = function(route2) {
155
+ traverseRouteTree = function(route2, isRscClient2) {
156
156
  var children;
157
157
  if ("children" in route2 && route2.children) {
158
158
  var _route_children;
159
- children = route2 === null || route2 === void 0 ? void 0 : (_route_children = route2.children) === null || _route_children === void 0 ? void 0 : _route_children.map(traverseRouteTree);
159
+ children = route2 === null || route2 === void 0 ? void 0 : (_route_children = route2.children) === null || _route_children === void 0 ? void 0 : _route_children.map(function(child) {
160
+ return traverseRouteTree(child, isRscClient2);
161
+ });
160
162
  }
161
163
  var loading;
162
164
  var error;
@@ -238,7 +240,6 @@ var fileSystemRoutes = function() {
238
240
  }
239
241
  }
240
242
  var finalRoute2 = _object_spread_props(_object_spread({}, route2), {
241
- lazyImport,
242
243
  loading,
243
244
  loader,
244
245
  action,
@@ -246,7 +247,10 @@ var fileSystemRoutes = function() {
246
247
  error,
247
248
  children
248
249
  });
249
- if (route2._component) {
250
+ if (!isRscClient2) {
251
+ finalRoute2.lazyImport = lazyImport;
252
+ }
253
+ if (route2._component && !isRscClient2) {
250
254
  finalRoute2.component = component2;
251
255
  }
252
256
  if (route2.type === "nested" && route2._component && (route2.loader || route2.data)) {
@@ -260,7 +264,7 @@ var fileSystemRoutes = function() {
260
264
  for (_iterator = routes[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
261
265
  route = _step.value;
262
266
  if ("type" in route) {
263
- newRoute = traverseRouteTree(route);
267
+ newRoute = traverseRouteTree(route, isRscClient);
264
268
  routeStr = JSON.stringify(newRoute, null, 2);
265
269
  keywords = [
266
270
  "component",
@@ -406,7 +410,7 @@ var fileSystemRoutes = function() {
406
410
  routeModulesCode = "\n if(typeof document !== 'undefined'){\n window.".concat(ROUTE_MODULES, " = {}\n }\n ");
407
411
  return [
408
412
  2,
409
- "\n ".concat(importLazyCode, "\n ").concat(importComponentsCode, "\n ").concat(importRuntimeRouterCode, "\n ").concat(rootLayoutCode, "\n ").concat(importLoadingCode, "\n ").concat(importErrorComponentsCode, "\n ").concat(importLoadersCode, "\n ").concat(importConfigsCode, "\n ").concat(routeModulesCode, "\n ").concat(routeComponentsCode, "\n ")
413
+ "\n ".concat(importLazyCode, "\n ").concat(!isRscClient ? importComponentsCode : "", "\n ").concat(importRuntimeRouterCode, "\n ").concat(!isRscClient ? rootLayoutCode : "", "\n ").concat(importLoadingCode, "\n ").concat(importErrorComponentsCode, "\n ").concat(importLoadersCode, "\n ").concat(importConfigsCode, "\n ").concat(routeModulesCode, "\n ").concat(routeComponentsCode, "\n ")
410
414
  ];
411
415
  }
412
416
  });
@@ -433,11 +437,11 @@ function ssrLoaderCombinedModule(entrypoints, entrypoint, config, appContext) {
433
437
  }
434
438
  var runtimeGlobalContext = function() {
435
439
  var _ref = _async_to_generator(function(param) {
436
- var entryName, metaName, srcDirectory, nestedRoutesEntry, internalSrcAlias, globalApp, imports, rootLayoutPath, rootLayoutFile, rootLayoutBuffer, rootLayout, _ref2, moduleExports, hasAppConfig, hasAppInit, layoutPath;
440
+ var entryName, metaName, srcDirectory, nestedRoutesEntry, internalSrcAlias, globalApp, _param_rscType, rscType, imports, rootLayoutPath, rootLayoutFile, rootLayoutBuffer, rootLayout, _ref2, moduleExports, hasAppConfig, hasAppInit, layoutPath, isClient, enableRsc;
437
441
  return _ts_generator(this, function(_state) {
438
442
  switch (_state.label) {
439
443
  case 0:
440
- entryName = param.entryName, metaName = param.metaName, srcDirectory = param.srcDirectory, nestedRoutesEntry = param.nestedRoutesEntry, internalSrcAlias = param.internalSrcAlias, globalApp = param.globalApp;
444
+ entryName = param.entryName, metaName = param.metaName, srcDirectory = param.srcDirectory, nestedRoutesEntry = param.nestedRoutesEntry, internalSrcAlias = param.internalSrcAlias, globalApp = param.globalApp, _param_rscType = param.rscType, rscType = _param_rscType === void 0 ? false : _param_rscType;
441
445
  imports = [
442
446
  "import { setGlobalContext } from '@".concat(metaName, "/runtime/context';")
443
447
  ];
@@ -519,9 +523,21 @@ var runtimeGlobalContext = function() {
519
523
  } else {
520
524
  imports.push("let layoutApp;");
521
525
  }
526
+ isClient = rscType === "client";
527
+ enableRsc = Boolean(rscType);
528
+ if (isClient) {
529
+ return [
530
+ 2,
531
+ "".concat(imports.join("\n"), "\n\n import { routes } from './routes';\n\n const entryName = '").concat(entryName, "';\n setGlobalContext({\n entryName,\n layoutApp,\n routes,\n appInit,\n appConfig,\n isRscClient: true,\n enableRsc: true,\n });\n ")
532
+ ];
533
+ } else {
534
+ return [
535
+ 2,
536
+ "".concat(imports.join("\n"), "\n\n import { routes } from './routes';\n\n const entryName = '").concat(entryName, "';\n setGlobalContext({\n entryName,\n layoutApp,\n routes,\n appInit,\n appConfig,\n enableRsc: ").concat(enableRsc, ",\n });\n ")
537
+ ];
538
+ }
522
539
  return [
523
- 2,
524
- "".concat(imports.join("\n"), "\n\nimport { routes } from './routes';\n\nconst entryName = '").concat(entryName, "';\nsetGlobalContext({\n entryName,\n layoutApp,\n routes,\n appInit,\n appConfig,\n});")
540
+ 2
525
541
  ];
526
542
  }
527
543
  });
@@ -25,7 +25,7 @@ function handleGeneratorEntryCode(api, entrypoints, isRouterV5) {
25
25
  }
26
26
  function _handleGeneratorEntryCode() {
27
27
  _handleGeneratorEntryCode = _async_to_generator(function(api, entrypoints, isRouterV5) {
28
- var appContext, internalDirectory, resolvedConfig, _ref, generatorRegisterCode, generateCode;
28
+ var _resolvedConfig_server, appContext, internalDirectory, resolvedConfig, _ref, generatorRegisterCode, generateCode, generatorServerRegisterCode, enableRsc;
29
29
  return _ts_generator(this, function(_state) {
30
30
  switch (_state.label) {
31
31
  case 0:
@@ -37,8 +37,9 @@ function _handleGeneratorEntryCode() {
37
37
  import("./code")
38
38
  ];
39
39
  case 1:
40
- _ref = _state.sent(), generatorRegisterCode = _ref.generatorRegisterCode, generateCode = _ref.generateCode;
40
+ _ref = _state.sent(), generatorRegisterCode = _ref.generatorRegisterCode, generateCode = _ref.generateCode, generatorServerRegisterCode = _ref.generatorServerRegisterCode;
41
41
  originEntrypoints = cloneDeep(entrypoints);
42
+ enableRsc = resolvedConfig === null || resolvedConfig === void 0 ? void 0 : (_resolvedConfig_server = resolvedConfig.server) === null || _resolvedConfig_server === void 0 ? void 0 : _resolvedConfig_server.rsc;
42
43
  return [
43
44
  4,
44
45
  generateCode(appContext, resolvedConfig, entrypoints, api, isRouterV5)
@@ -49,14 +50,14 @@ function _handleGeneratorEntryCode() {
49
50
  4,
50
51
  Promise.all(entrypoints.map(function() {
51
52
  var _ref2 = _async_to_generator(function(entrypoint) {
52
- var _entrypoint_fileSystemRoutes, _tmp;
53
+ var _entrypoint_fileSystemRoutes, _tmp, _entrypoint_fileSystemRoutes1, _tmp1;
53
54
  return _ts_generator(this, function(_state2) {
54
55
  switch (_state2.label) {
55
56
  case 0:
56
57
  if (!(entrypoint.nestedRoutesEntry || entrypoint.pageRoutesEntry))
57
58
  return [
58
59
  3,
59
- 2
60
+ 3
60
61
  ];
61
62
  _tmp = [
62
63
  internalDirectory,
@@ -70,15 +71,41 @@ function _handleGeneratorEntryCode() {
70
71
  srcDirectory: appContext.srcDirectory,
71
72
  nestedRoutesEntry: entrypoint.nestedRoutesEntry,
72
73
  internalSrcAlias: appContext.internalSrcAlias,
73
- globalApp: (_entrypoint_fileSystemRoutes = entrypoint.fileSystemRoutes) === null || _entrypoint_fileSystemRoutes === void 0 ? void 0 : _entrypoint_fileSystemRoutes.globalApp
74
+ globalApp: (_entrypoint_fileSystemRoutes = entrypoint.fileSystemRoutes) === null || _entrypoint_fileSystemRoutes === void 0 ? void 0 : _entrypoint_fileSystemRoutes.globalApp,
75
+ rscType: enableRsc ? "client" : void 0
74
76
  })
75
77
  ];
76
78
  case 1:
77
79
  generatorRegisterCode.apply(void 0, _tmp.concat([
78
80
  _state2.sent()
79
81
  ]));
80
- _state2.label = 2;
82
+ if (!enableRsc)
83
+ return [
84
+ 3,
85
+ 3
86
+ ];
87
+ _tmp1 = [
88
+ internalDirectory,
89
+ entrypoint.entryName
90
+ ];
91
+ return [
92
+ 4,
93
+ templates.runtimeGlobalContext({
94
+ entryName: entrypoint.entryName,
95
+ metaName: appContext.metaName,
96
+ srcDirectory: appContext.srcDirectory,
97
+ nestedRoutesEntry: entrypoint.nestedRoutesEntry,
98
+ internalSrcAlias: appContext.internalSrcAlias,
99
+ globalApp: (_entrypoint_fileSystemRoutes1 = entrypoint.fileSystemRoutes) === null || _entrypoint_fileSystemRoutes1 === void 0 ? void 0 : _entrypoint_fileSystemRoutes1.globalApp,
100
+ rscType: "server"
101
+ })
102
+ ];
81
103
  case 2:
104
+ generatorServerRegisterCode.apply(void 0, _tmp1.concat([
105
+ _state2.sent()
106
+ ]));
107
+ _state2.label = 3;
108
+ case 3:
82
109
  return [
83
110
  2
84
111
  ];
@@ -37,7 +37,7 @@ var routerPlugin = function() {
37
37
  if ((nestedRoutesEntry || pageRoutesEntry) && !isRouterV5) {
38
38
  plugins.push({
39
39
  name: "router",
40
- path: "@".concat(metaName2, "/runtime/router"),
40
+ path: "@".concat(metaName2, "/runtime/router/internal"),
41
41
  config: typeof routerConfig === "boolean" ? {
42
42
  serverBase
43
43
  } : _object_spread_props(_object_spread({}, routerConfig), {
@@ -64,9 +64,10 @@ var routerPlugin = function() {
64
64
  // react-router v6 is no longer support ie 11
65
65
  // so we need to compile these packages to ensure the compatibility
66
66
  // https://github.com/remix-run/react-router/commit/f6df0697e1b2064a2b3a12e8b39577326fdd945b
67
- /node_modules\/react-router/,
68
- /node_modules\/react-router-dom/,
69
- /node_modules\/@remix-run\/router/
67
+ /[\\/]node_modules[\\/]react-router[\\/]/,
68
+ /[\\/]node_modules[\\/]react-router-dom[\\/]/,
69
+ /[\\/]node_modules[\\/]@remix-run[\\/]router[\\/]/,
70
+ path.resolve(__dirname, "../runtime").replace("cjs", "esm")
70
71
  ],
71
72
  globalVars: {
72
73
  "process.env._MODERN_ROUTER_VERSION": "v6"
@@ -127,7 +128,7 @@ var routerPlugin = function() {
127
128
  var _api_useAppContext = api.useAppContext(), internalDirectory = _api_useAppContext.internalDirectory, metaName2 = _api_useAppContext.metaName;
128
129
  var pluginsExportsUtils = createRuntimeExportsUtils(internalDirectory, "plugins");
129
130
  if (!isRouterV5) {
130
- pluginsExportsUtils.addExport("export { default as router } from '@".concat(metaName2, "/runtime/router'"));
131
+ pluginsExportsUtils.addExport("export { default as router } from '@".concat(metaName2, "/runtime/router/internal'"));
131
132
  }
132
133
  });
133
134
  api.onFileChanged(function() {
@@ -1,7 +1 @@
1
- import { default as default2 } from "./runtime";
2
- import { default as default3 } from "./runtime";
3
1
  export * from "./runtime";
4
- export {
5
- default3 as default,
6
- default2 as router
7
- };
@@ -0,0 +1,5 @@
1
+ export * from "./runtime/internal";
2
+ import { routerPlugin } from "./runtime/internal";
3
+ export {
4
+ routerPlugin as default
5
+ };
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
3
  import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
3
4
  import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
@@ -242,6 +243,5 @@ var NavLink = createPrefetchLink(RouterNavLink);
242
243
  NavLink.displayName = "NavLink";
243
244
  export {
244
245
  Link,
245
- NavLink,
246
- composeEventHandlers
246
+ NavLink
247
247
  };