@bleedingdev/modern-js-app-tools 3.2.0-ultramodern.99 → 3.4.0-ultramodern.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.
Files changed (165) hide show
  1. package/dist/cjs/baseline.js +12 -92
  2. package/dist/cjs/builder/builder-rspack/index.js +9 -5
  3. package/dist/cjs/builder/generator/adapterCopy.js +9 -5
  4. package/dist/cjs/builder/generator/createBuilderProviderConfig.js +9 -5
  5. package/dist/cjs/builder/generator/createCopyPattern.js +9 -5
  6. package/dist/cjs/builder/generator/getBuilderEnvironments.js +41 -9
  7. package/dist/cjs/builder/generator/index.js +16 -5
  8. package/dist/cjs/builder/index.js +9 -5
  9. package/dist/cjs/builder/shared/builderPlugins/adapterBasic.js +9 -5
  10. package/dist/cjs/builder/shared/builderPlugins/adapterHtml.js +10 -6
  11. package/dist/cjs/builder/shared/builderPlugins/adapterPrecompress.js +9 -5
  12. package/dist/cjs/builder/shared/builderPlugins/adapterSSR.js +39 -9
  13. package/dist/cjs/builder/shared/builderPlugins/builderHooks.js +12 -8
  14. package/dist/cjs/builder/shared/builderPlugins/index.js +9 -5
  15. package/dist/cjs/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +9 -5
  16. package/dist/cjs/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +12 -8
  17. package/dist/cjs/builder/shared/bundlerPlugins/RouterPlugin.js +41 -8
  18. package/dist/cjs/builder/shared/bundlerPlugins/index.js +9 -5
  19. package/dist/cjs/builder/shared/createCopyInfo.js +9 -5
  20. package/dist/cjs/builder/shared/index.js +9 -5
  21. package/dist/cjs/builder/shared/lazyCompilation.js +94 -0
  22. package/dist/cjs/builder/shared/loaders/serverModuleLoader.js +12 -8
  23. package/dist/cjs/commands/build.js +9 -5
  24. package/dist/cjs/commands/deploy.js +9 -5
  25. package/dist/cjs/commands/dev.js +9 -5
  26. package/dist/cjs/commands/index.js +12 -11
  27. package/dist/cjs/commands/info.js +9 -5
  28. package/dist/cjs/commands/inspect.js +12 -8
  29. package/dist/cjs/commands/runtime.js +50 -13
  30. package/dist/cjs/commands/serve.js +9 -5
  31. package/dist/cjs/compat/hooks.js +9 -5
  32. package/dist/cjs/compat/index.js +9 -5
  33. package/dist/cjs/compat/utils.js +9 -5
  34. package/dist/cjs/config/default.js +27 -7
  35. package/dist/cjs/config/index.js +9 -5
  36. package/dist/cjs/config/initialize/index.js +9 -5
  37. package/dist/cjs/config/initialize/inits.js +9 -5
  38. package/dist/cjs/constants.js +13 -9
  39. package/dist/cjs/defineConfig.js +12 -8
  40. package/dist/cjs/esm/register-esm.js +12 -8
  41. package/dist/cjs/esm/ts-paths-loader.js +9 -5
  42. package/dist/cjs/index.js +23 -17
  43. package/dist/cjs/locale/en.js +12 -8
  44. package/dist/cjs/locale/index.js +9 -5
  45. package/dist/cjs/locale/zh.js +12 -8
  46. package/dist/cjs/plugins/analyze/constants.js +14 -10
  47. package/dist/cjs/plugins/analyze/getBundleEntry.js +9 -5
  48. package/dist/cjs/plugins/analyze/getFileSystemEntry.js +9 -5
  49. package/dist/cjs/plugins/analyze/getHtmlTemplate.js +9 -5
  50. package/dist/cjs/plugins/analyze/getServerRoutes.js +9 -5
  51. package/dist/cjs/plugins/analyze/index.js +12 -6
  52. package/dist/cjs/plugins/analyze/isDefaultExportFunction.js +10 -6
  53. package/dist/cjs/plugins/analyze/templates.js +12 -8
  54. package/dist/cjs/plugins/analyze/utils.js +9 -5
  55. package/dist/cjs/plugins/deploy/index.js +9 -5
  56. package/dist/cjs/plugins/deploy/platforms/cloudflare.js +185 -7
  57. package/dist/cjs/plugins/deploy/platforms/gh-pages.js +9 -5
  58. package/dist/cjs/plugins/deploy/platforms/netlify.js +9 -5
  59. package/dist/cjs/plugins/deploy/platforms/node.js +9 -5
  60. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.mjs +141 -16
  61. package/dist/cjs/plugins/deploy/platforms/vercel.js +9 -5
  62. package/dist/cjs/plugins/deploy/utils/generator.js +9 -5
  63. package/dist/cjs/plugins/deploy/utils/index.js +19 -40
  64. package/dist/cjs/plugins/initialize/index.js +19 -6
  65. package/dist/cjs/plugins/serverBuild.js +9 -5
  66. package/dist/cjs/plugins/serverRuntime.js +12 -8
  67. package/dist/cjs/presetUltramodern.js +96 -7
  68. package/dist/cjs/rsbuild.js +55 -67
  69. package/dist/cjs/run/index.js +9 -5
  70. package/dist/cjs/types/config/cloudflareDeploy.js +18 -0
  71. package/dist/cjs/types/config/index.js +9 -5
  72. package/dist/cjs/types/config/precompress.js +18 -0
  73. package/dist/cjs/types/index.js +9 -5
  74. package/dist/cjs/ultramodern/designSystem.js +16 -12
  75. package/dist/cjs/utils/config.js +9 -5
  76. package/dist/cjs/utils/createServer.js +14 -10
  77. package/dist/cjs/utils/env.js +9 -5
  78. package/dist/cjs/utils/generateWatchFiles.js +9 -5
  79. package/dist/cjs/utils/getConfigFile.js +9 -5
  80. package/dist/cjs/utils/getSelectedEntries.js +9 -5
  81. package/dist/cjs/utils/initAppContext.js +9 -5
  82. package/dist/cjs/utils/loadPlugins.js +9 -5
  83. package/dist/cjs/utils/printInstructions.js +9 -5
  84. package/dist/cjs/utils/register.js +9 -5
  85. package/dist/cjs/utils/restart.js +9 -5
  86. package/dist/cjs/utils/routes.js +9 -5
  87. package/dist/esm/baseline.mjs +3 -77
  88. package/dist/esm/builder/generator/getBuilderEnvironments.mjs +32 -4
  89. package/dist/esm/builder/generator/index.mjs +7 -0
  90. package/dist/esm/builder/shared/builderPlugins/adapterHtml.mjs +1 -1
  91. package/dist/esm/builder/shared/builderPlugins/adapterSSR.mjs +31 -5
  92. package/dist/esm/builder/shared/bundlerPlugins/RouterPlugin.mjs +32 -3
  93. package/dist/esm/builder/shared/lazyCompilation.mjs +44 -0
  94. package/dist/esm/commands/index.mjs +2 -5
  95. package/dist/esm/commands/runtime.mjs +33 -3
  96. package/dist/esm/config/default.mjs +14 -1
  97. package/dist/esm/index.mjs +3 -2
  98. package/dist/esm/plugins/analyze/index.mjs +3 -1
  99. package/dist/esm/plugins/analyze/isDefaultExportFunction.mjs +1 -1
  100. package/dist/esm/plugins/deploy/platforms/cloudflare.mjs +176 -2
  101. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.mjs +141 -16
  102. package/dist/esm/plugins/deploy/utils/index.mjs +11 -36
  103. package/dist/esm/plugins/initialize/index.mjs +11 -2
  104. package/dist/esm/presetUltramodern.mjs +77 -3
  105. package/dist/esm/rsbuild.mjs +1 -8
  106. package/dist/esm/types/config/cloudflareDeploy.mjs +0 -0
  107. package/dist/esm/types/config/precompress.mjs +0 -0
  108. package/dist/esm-node/baseline.mjs +3 -77
  109. package/dist/esm-node/builder/generator/getBuilderEnvironments.mjs +32 -4
  110. package/dist/esm-node/builder/generator/index.mjs +7 -0
  111. package/dist/esm-node/builder/shared/builderPlugins/adapterHtml.mjs +1 -1
  112. package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.mjs +31 -5
  113. package/dist/esm-node/builder/shared/bundlerPlugins/RouterPlugin.mjs +32 -3
  114. package/dist/esm-node/builder/shared/lazyCompilation.mjs +45 -0
  115. package/dist/esm-node/commands/index.mjs +2 -5
  116. package/dist/esm-node/commands/runtime.mjs +33 -3
  117. package/dist/esm-node/config/default.mjs +14 -1
  118. package/dist/esm-node/index.mjs +3 -2
  119. package/dist/esm-node/plugins/analyze/index.mjs +3 -1
  120. package/dist/esm-node/plugins/analyze/isDefaultExportFunction.mjs +1 -1
  121. package/dist/esm-node/plugins/deploy/platforms/cloudflare.mjs +176 -2
  122. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.mjs +141 -16
  123. package/dist/esm-node/plugins/deploy/utils/index.mjs +12 -36
  124. package/dist/esm-node/plugins/initialize/index.mjs +11 -2
  125. package/dist/esm-node/presetUltramodern.mjs +77 -3
  126. package/dist/esm-node/rsbuild.mjs +1 -8
  127. package/dist/esm-node/types/config/cloudflareDeploy.mjs +1 -0
  128. package/dist/esm-node/types/config/precompress.mjs +1 -0
  129. package/dist/types/baseline.d.ts +16 -46
  130. package/dist/types/builder/builder-rspack/index.d.ts +1 -1
  131. package/dist/types/builder/generator/index.d.ts +1 -1
  132. package/dist/types/builder/shared/bundlerPlugins/RouterPlugin.d.ts +3 -1
  133. package/dist/types/builder/shared/createCopyInfo.d.ts +1 -1
  134. package/dist/types/builder/shared/lazyCompilation.d.ts +43 -0
  135. package/dist/types/builder/shared/types.d.ts +10 -0
  136. package/dist/types/commands/index.d.ts +1 -1
  137. package/dist/types/commands/inspect.d.ts +1 -1
  138. package/dist/types/commands/runtime.d.ts +1 -0
  139. package/dist/types/config/default.d.ts +6 -0
  140. package/dist/types/locale/index.d.ts +89 -2
  141. package/dist/types/plugins/analyze/getFileSystemEntry.d.ts +2 -2
  142. package/dist/types/plugins/analyze/index.d.ts +1 -1
  143. package/dist/types/plugins/analyze/utils.d.ts +1 -1
  144. package/dist/types/plugins/deploy/index.d.ts +1 -1
  145. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.d.mts +1 -1
  146. package/dist/types/plugins/deploy/platforms/templates/netlify-entry.d.cts +1 -1
  147. package/dist/types/plugins/deploy/platforms/templates/vercel-entry.d.cts +1 -1
  148. package/dist/types/plugins/deploy/utils/generator.d.ts +2 -2
  149. package/dist/types/plugins/deploy/utils/index.d.ts +1 -1
  150. package/dist/types/plugins/initialize/index.d.ts +1 -1
  151. package/dist/types/plugins/serverBuild.d.ts +1 -1
  152. package/dist/types/plugins/serverRuntime.d.ts +1 -1
  153. package/dist/types/presetUltramodern.d.ts +52 -2
  154. package/dist/types/rsbuild.d.ts +1 -1
  155. package/dist/types/run/index.d.ts +1 -1
  156. package/dist/types/types/config/cloudflareDeploy.d.ts +79 -0
  157. package/dist/types/types/config/deploy.d.ts +9 -15
  158. package/dist/types/types/config/output.d.ts +4 -20
  159. package/dist/types/types/config/precompress.d.ts +20 -0
  160. package/dist/types/types/plugin.d.ts +20 -0
  161. package/dist/types/utils/getConfigFile.d.ts +1 -1
  162. package/dist/types/utils/loadPlugins.d.ts +2 -2
  163. package/package.json +26 -21
  164. package/dist/esm/rslib-runtime.mjs +0 -18
  165. package/dist/esm-node/rslib-runtime.mjs +0 -19
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
9
13
  };
10
14
  })();
11
15
  (()=>{
@@ -23,11 +27,6 @@ var __webpack_require__ = {};
23
27
  })();
24
28
  var __webpack_exports__ = {};
25
29
  __webpack_require__.r(__webpack_exports__);
26
- __webpack_require__.d(__webpack_exports__, {
27
- closeServer: ()=>closeServer,
28
- getServer: ()=>getServer,
29
- setServer: ()=>setServer
30
- });
31
30
  let server = null;
32
31
  const getServer = ()=>server;
33
32
  const setServer = (newServer)=>{
@@ -39,6 +38,11 @@ const closeServer = async ()=>{
39
38
  server = null;
40
39
  }
41
40
  };
41
+ __webpack_require__.d(__webpack_exports__, {}, {
42
+ closeServer: closeServer,
43
+ getServer: getServer,
44
+ setServer: setServer
45
+ });
42
46
  exports.closeServer = __webpack_exports__.closeServer;
43
47
  exports.getServer = __webpack_exports__.getServer;
44
48
  exports.setServer = __webpack_exports__.setServer;
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
9
13
  };
10
14
  })();
11
15
  (()=>{
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
10
10
  };
11
11
  })();
12
12
  (()=>{
13
- __webpack_require__.d = (exports1, definition)=>{
14
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
- enumerable: true,
16
- get: definition[key]
17
- });
13
+ __webpack_require__.d = (exports1, getters, values)=>{
14
+ var define = (defs, kind)=>{
15
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
16
+ enumerable: true,
17
+ [kind]: defs[key]
18
+ });
19
+ };
20
+ define(getters, "get");
21
+ define(values, "value");
18
22
  };
19
23
  })();
20
24
  (()=>{
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
10
10
  };
11
11
  })();
12
12
  (()=>{
13
- __webpack_require__.d = (exports1, definition)=>{
14
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
- enumerable: true,
16
- get: definition[key]
17
- });
13
+ __webpack_require__.d = (exports1, getters, values)=>{
14
+ var define = (defs, kind)=>{
15
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
16
+ enumerable: true,
17
+ [kind]: defs[key]
18
+ });
19
+ };
20
+ define(getters, "get");
21
+ define(values, "value");
18
22
  };
19
23
  })();
20
24
  (()=>{
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
9
13
  };
10
14
  })();
11
15
  (()=>{
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
10
10
  };
11
11
  })();
12
12
  (()=>{
13
- __webpack_require__.d = (exports1, definition)=>{
14
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
- enumerable: true,
16
- get: definition[key]
17
- });
13
+ __webpack_require__.d = (exports1, getters, values)=>{
14
+ var define = (defs, kind)=>{
15
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
16
+ enumerable: true,
17
+ [kind]: defs[key]
18
+ });
19
+ };
20
+ define(getters, "get");
21
+ define(values, "value");
18
22
  };
19
23
  })();
20
24
  (()=>{
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
9
13
  };
10
14
  })();
11
15
  (()=>{
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
9
13
  };
10
14
  })();
11
15
  (()=>{
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
10
10
  };
11
11
  })();
12
12
  (()=>{
13
- __webpack_require__.d = (exports1, definition)=>{
14
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
- enumerable: true,
16
- get: definition[key]
17
- });
13
+ __webpack_require__.d = (exports1, getters, values)=>{
14
+ var define = (defs, kind)=>{
15
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
16
+ enumerable: true,
17
+ [kind]: defs[key]
18
+ });
19
+ };
20
+ define(getters, "get");
21
+ define(values, "value");
18
22
  };
19
23
  })();
20
24
  (()=>{
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  var __webpack_require__ = {};
3
3
  (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
9
13
  };
10
14
  })();
11
15
  (()=>{
@@ -10,11 +10,15 @@ var __webpack_require__ = {};
10
10
  };
11
11
  })();
12
12
  (()=>{
13
- __webpack_require__.d = (exports1, definition)=>{
14
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
- enumerable: true,
16
- get: definition[key]
17
- });
13
+ __webpack_require__.d = (exports1, getters, values)=>{
14
+ var define = (defs, kind)=>{
15
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
16
+ enumerable: true,
17
+ [kind]: defs[key]
18
+ });
19
+ };
20
+ define(getters, "get");
21
+ define(values, "value");
18
22
  };
19
23
  })();
20
24
  (()=>{
@@ -1,78 +1,4 @@
1
- import { createRequire } from "node:module";
2
- import node_path from "node:path";
3
- import { mergeConfig } from "@modern-js/plugin/cli";
4
- const resolveReactRouterPackageDir = ()=>{
5
- const localRequire = createRequire(node_path.join(process.cwd(), 'package.json'));
6
- try {
7
- const reactRouterDomPackageJson = localRequire.resolve('react-router-dom/package.json', {
8
- paths: [
9
- process.cwd()
10
- ]
11
- });
12
- const reactRouterPackageJson = localRequire.resolve('react-router/package.json', {
13
- paths: [
14
- node_path.dirname(reactRouterDomPackageJson)
15
- ]
16
- });
17
- return node_path.dirname(reactRouterPackageJson);
18
- } catch {
19
- return;
20
- }
21
- };
22
- const setReactRouterBridgeSafeAliases = (chain)=>{
23
- const reactRouterPackageDir = resolveReactRouterPackageDir();
24
- if (!reactRouterPackageDir) return;
25
- const productionEntry = node_path.join(reactRouterPackageDir, 'dist/production/index.mjs');
26
- const developmentEntry = node_path.join(reactRouterPackageDir, 'dist/development/index.mjs');
27
- chain.resolve.alias.set('react-router$', productionEntry);
28
- chain.resolve.alias.set('react-router/dist/production/index.js', productionEntry);
29
- chain.resolve.alias.set('react-router/dist/development/index.js', developmentEntry);
30
- };
31
- const createAppBaselineConfig = (options = {})=>{
32
- const { appId = 'app', enableBffRequestId = true, enableTelemetry = true, enableTelemetryExporters = true, otlpEndpoint = process.env.MODERN_TELEMETRY_OTLP_ENDPOINT || 'http://127.0.0.1:4318/v1/logs', victoriaMetricsEndpoint = process.env.MODERN_TELEMETRY_VICTORIA_ENDPOINT || 'http://127.0.0.1:8428/api/v1/import/prometheus', telemetryFailLoudStartup = true, enableModuleFederationSSR = true } = options;
33
- const server = {};
34
- if (enableTelemetry) {
35
- server.telemetry = {
36
- enabled: true,
37
- failLoudStartup: telemetryFailLoudStartup
38
- };
39
- if (enableTelemetryExporters) server.telemetry.exporters = {
40
- otlp: {
41
- enabled: true,
42
- endpoint: otlpEndpoint
43
- },
44
- victoriaMetrics: {
45
- enabled: true,
46
- endpoint: victoriaMetricsEndpoint
47
- }
48
- };
49
- }
50
- if (enableModuleFederationSSR) server.ssr = {
51
- mode: 'stream',
52
- moduleFederationAppSSR: true
53
- };
54
- const baselineConfig = {
55
- output: {
56
- precompress: true
57
- },
58
- performance: {
59
- rsdoctor: {
60
- enabled: 'production' === process.env.NODE_ENV,
61
- disableClientServer: true
62
- }
63
- },
64
- server,
65
- tools: {
66
- bundlerChain: setReactRouterBridgeSafeAliases
67
- }
68
- };
69
- if (enableBffRequestId) baselineConfig.bff = {
70
- requestId: appId
71
- };
72
- return baselineConfig;
73
- };
74
- const withAppBaseline = (config, options = {})=>mergeConfig([
75
- createAppBaselineConfig(options),
76
- config
77
- ]);
1
+ import { createPresetUltramodernConfig, presetUltramodern } from "./presetUltramodern.mjs";
2
+ const createAppBaselineConfig = createPresetUltramodernConfig;
3
+ const withAppBaseline = presetUltramodern;
78
4
  export { createAppBaselineConfig, withAppBaseline };
@@ -12,6 +12,20 @@ const JS_OR_TS_EXTS = [
12
12
  '.mjs',
13
13
  '.cjs'
14
14
  ];
15
+ const CLOUDFLARE_WORKER_NODE_BUILTINS = [
16
+ 'async_hooks',
17
+ 'buffer',
18
+ 'crypto',
19
+ 'events',
20
+ 'fs/promises',
21
+ 'module',
22
+ 'path',
23
+ 'process',
24
+ 'stream',
25
+ 'string_decoder',
26
+ 'url',
27
+ 'util'
28
+ ];
15
29
  const CLOUDFLARE_WORKER_COMPAT_TEMPLATE_DIR = node_path.resolve(__dirname, '../../plugins/deploy/platforms/templates');
16
30
  function findExistingFile(candidates) {
17
31
  return candidates.find((candidate)=>node_fs.existsSync(candidate));
@@ -55,6 +69,21 @@ function setAliasIfPresent(alias, name, value) {
55
69
  function getCloudflareWorkerCompatFile(file) {
56
70
  return node_path.join(CLOUDFLARE_WORKER_COMPAT_TEMPLATE_DIR, file);
57
71
  }
72
+ function getCloudflareWorkerNodeExternals() {
73
+ return Object.fromEntries(CLOUDFLARE_WORKER_NODE_BUILTINS.flatMap((builtin)=>{
74
+ const nodeBuiltin = `node:${builtin}`;
75
+ return [
76
+ [
77
+ builtin,
78
+ `module-import ${nodeBuiltin}`
79
+ ],
80
+ [
81
+ nodeBuiltin,
82
+ `module-import ${nodeBuiltin}`
83
+ ]
84
+ ];
85
+ }));
86
+ }
58
87
  function getEffectBffEntry(normalizedConfig, appContext) {
59
88
  if (!normalizedConfig.bff || 'hono' === normalizedConfig.bff.runtimeFramework) return;
60
89
  const configuredEntry = normalizedConfig.bff.effect?.entry;
@@ -176,12 +205,13 @@ function getBuilderEnvironments(normalizedConfig, appContext, tempBuilderConfig)
176
205
  chain.merge({
177
206
  experiments: {
178
207
  outputModule: true
179
- }
208
+ },
209
+ externals: getCloudflareWorkerNodeExternals(),
210
+ externalsType: 'module-import'
180
211
  });
181
212
  chain.output.module(true).library({
182
213
  type: 'module'
183
214
  }).chunkFormat('module').chunkLoading('import').workerChunkLoading('import');
184
- chain.target('webworker');
185
215
  chain.plugins.delete('plugin-module-federation');
186
216
  if (tanstackRouterSsrServerFile) {
187
217
  chain.resolve.alias.set('@tanstack/router-core/ssr/server$', tanstackRouterSsrServerFile);
@@ -211,8 +241,6 @@ function getBuilderEnvironments(normalizedConfig, appContext, tempBuilderConfig)
211
241
  chain.resolve.alias.set('react-server-dom-rspack/server.node', 'react-server-dom-rspack/server.edge');
212
242
  chain.resolve.alias.set('react-server-dom-rspack/client.node$', 'react-server-dom-rspack/client.edge');
213
243
  chain.resolve.alias.set('react-server-dom-rspack/client.node', 'react-server-dom-rspack/client.edge');
214
- chain.resolve.fallback.set('async_hooks', false);
215
- chain.resolve.fallback.set('node:async_hooks', false);
216
244
  chain.resolve.fallback.set('fs', false);
217
245
  chain.resolve.fallback.set('node:fs', false);
218
246
  }
@@ -16,6 +16,13 @@ async function generateBuilder(options, bundlerType) {
16
16
  else mergedEnvironments[name] = builderConfig.environments[name];
17
17
  builderConfig.environments = mergedEnvironments;
18
18
  } else builderConfig.environments = environments;
19
+ const hooks = appContext._internalContext.pluginAPI?.getHooks();
20
+ if (hooks?.modifyBuilderEnvironments) {
21
+ const { environments: modifiedEnvironments } = await hooks.modifyBuilderEnvironments.call({
22
+ environments: builderConfig.environments
23
+ });
24
+ builderConfig.environments = modifiedEnvironments;
25
+ }
19
26
  const builder = await createBuilder({
20
27
  cwd: appContext.appDirectory,
21
28
  rscClientRuntimePath: `@${appContext.metaName}/runtime/rsc/client`,
@@ -38,7 +38,7 @@ function applyBottomHtmlPlugin({ chain, options, CHAIN_ID, HtmlBundlerPlugin, ht
38
38
  const baseTemplateParams = {
39
39
  entryName,
40
40
  title: modernConfig.html.title,
41
- mountId: modernConfig.html.templateParameters
41
+ mountId: modernConfig.html.mountId
42
42
  };
43
43
  chain.plugin(`${CHAIN_ID.PLUGIN.HTML}-${entryName}`).tap((args)=>[
44
44
  {
@@ -1,21 +1,30 @@
1
1
  import { SERVICE_WORKER_ENVIRONMENT_NAME, isHtmlDisabled } from "@modern-js/builder";
2
- import { fs, isUseRsc, isUseSSRBundle } from "@modern-js/utils";
2
+ import { fs, isUseRsc, isUseSSRBundle, logger } from "@modern-js/utils";
3
3
  import { mergeRsbuildConfig } from "@rsbuild/core";
4
4
  import { getServerCombinedModuleFile } from "../../../plugins/analyze/utils.mjs";
5
5
  import { HtmlAsyncChunkPlugin, RouterPlugin } from "../bundlerPlugins/index.mjs";
6
+ import { aggregateEagerRouteComponentFiles, planSSRLazyCompilation } from "../lazyCompilation.mjs";
6
7
  import * as __rspack_external_path from "path";
7
8
  const builderPluginAdapterSSR = (options)=>({
8
9
  name: 'builder-plugin-adapter-modern-ssr',
9
10
  setup (api) {
10
- const { normalizedConfig } = options;
11
- api.modifyRsbuildConfig((config)=>mergeRsbuildConfig(config, {
11
+ const { normalizedConfig, appContext, eagerRouteComponentFilesByEntry } = options;
12
+ api.modifyRsbuildConfig((config)=>{
13
+ const merged = mergeRsbuildConfig(config, {
12
14
  html: {
13
15
  inject: isStreamingSSR(normalizedConfig) ? 'head' : void 0
14
16
  },
15
17
  server: {
16
18
  compress: isStreamingSSR(normalizedConfig) || isUseRsc(normalizedConfig) ? false : void 0
17
19
  }
18
- }));
20
+ });
21
+ const lazyCompilation = getSSRLazyCompilation(merged.dev?.lazyCompilation, normalizedConfig, appContext, eagerRouteComponentFilesByEntry);
22
+ if (void 0 !== lazyCompilation) merged.dev = {
23
+ ...merged.dev,
24
+ lazyCompilation
25
+ };
26
+ return merged;
27
+ });
19
28
  api.modifyBundlerChain(async (chain, { target, isProd, HtmlPlugin: HtmlBundlerPlugin, isServer, environment })=>{
20
29
  const builderConfig = environment.config;
21
30
  const { normalizedConfig } = options;
@@ -51,6 +60,22 @@ const isStreamingSSR = (userConfig)=>{
51
60
  }
52
61
  return false;
53
62
  };
63
+ function getSSRLazyCompilation(current, normalizedConfig, appContext, eagerRouteComponentFilesByEntry) {
64
+ if (!current || isUseRsc(normalizedConfig) || !isStreamingSSR(normalizedConfig)) return;
65
+ const plan = planSSRLazyCompilation(current, aggregateEagerRouteComponentFiles(eagerRouteComponentFilesByEntry));
66
+ if (!plan.apply) {
67
+ if (plan.unresolvedByEntry) warnUnresolvedRouteComponents(appContext.appDirectory, plan.unresolvedByEntry);
68
+ return;
69
+ }
70
+ return plan.lazyCompilation;
71
+ }
72
+ const warnedLazyApps = new Set();
73
+ function warnUnresolvedRouteComponents(appDirectory, unresolvedByEntry) {
74
+ if (warnedLazyApps.has(appDirectory)) return;
75
+ warnedLazyApps.add(appDirectory);
76
+ const detail = Array.from(unresolvedByEntry).map(([entry, comps])=>`${entry}: ${comps.join(', ')}`).join('; ');
77
+ logger.warn(`[lazyCompilation] Skipped stream SSR route-eager optimization because some route components could not be resolved to a file (${detail}). Lazy compilation may break first-screen CSS/JS for these routes.`);
78
+ }
54
79
  function applyAsyncChunkHtmlPlugin({ chain, modernConfig, HtmlBundlerPlugin }) {
55
80
  if (isStreamingSSR(modernConfig) || isUseRsc(modernConfig)) chain.plugin('html-async-chunk').use(HtmlAsyncChunkPlugin, [
56
81
  HtmlBundlerPlugin
@@ -70,7 +95,8 @@ function applyRouterPlugin(chain, pluginName, options, HtmlBundlerPlugin) {
70
95
  staticJsDir: normalizedConfig.output?.distPath?.js,
71
96
  disableFilenameHash: normalizedConfig.output?.filenameHash === false,
72
97
  scriptLoading: normalizedConfig.html?.scriptLoading,
73
- nonce: normalizedConfig.security?.nonce
98
+ nonce: normalizedConfig.security?.nonce,
99
+ useRsc: isUseRsc(normalizedConfig)
74
100
  }
75
101
  ]);
76
102
  }
@@ -64,6 +64,25 @@ class RouterPlugin {
64
64
  routeAssets: {}
65
65
  });
66
66
  const prevManifest = JSON.parse(prevManifestStr);
67
+ const namedChunkGroupInstances = new Map();
68
+ for (const cg of compilation.chunkGroups || [])if (cg.name) namedChunkGroupInstances.set(cg.name, cg);
69
+ const collectDescendantCssAssets = (name)=>{
70
+ const root = namedChunkGroupInstances.get(name);
71
+ if (!root) return [];
72
+ const cssFiles = new Set();
73
+ const visited = new Set();
74
+ const stack = [
75
+ ...root.childrenIterable
76
+ ];
77
+ while(stack.length){
78
+ const child = stack.pop();
79
+ if (visited.has(child)) continue;
80
+ visited.add(child);
81
+ for (const chunk of child.chunks)for (const file of chunk.files)if (/\.css$/.test(file)) cssFiles.add(publicPath ? normalizePath(publicPath) + file : file);
82
+ for (const c of child.childrenIterable)stack.push(c);
83
+ }
84
+ return Array.from(cssFiles);
85
+ };
67
86
  const asyncEntryNames = [];
68
87
  for (const [name, chunkGroup] of Object.entries(namedChunkGroups)){
69
88
  if (name.startsWith('async-')) asyncEntryNames.push(name);
@@ -71,7 +90,12 @@ class RouterPlugin {
71
90
  const filename = asset.name;
72
91
  return publicPath ? normalizePath(publicPath) + filename : filename;
73
92
  });
74
- const referenceCssAssets = assets.filter((asset)=>/\.css$/.test(asset));
93
+ const directCssAssets = assets.filter((asset)=>/\.css$/.test(asset));
94
+ const descendantCssAssets = collectDescendantCssAssets(name).filter((asset)=>!directCssAssets.includes(asset));
95
+ const referenceCssAssets = [
96
+ ...directCssAssets,
97
+ ...descendantCssAssets
98
+ ];
75
99
  routeAssets[name] = {
76
100
  chunkIds: chunkGroup.chunks,
77
101
  assets,
@@ -113,10 +137,14 @@ class RouterPlugin {
113
137
  const manifest = {
114
138
  routeAssets: relatedAssets
115
139
  };
140
+ const { useRsc } = this;
116
141
  const injectedContent = `
117
142
  ;(function(){
118
143
  window.${ROUTE_MANIFEST} = ${JSON.stringify(manifest, (k, v)=>{
119
- if (('assets' === k || 'referenceCssAssets' === k) && Array.isArray(v)) return v.map((item)=>item.replace(publicPath, ''));
144
+ if (('assets' === k || 'referenceCssAssets' === k) && Array.isArray(v)) {
145
+ if (!useRsc) return;
146
+ return v.map((item)=>item.replace(publicPath, ''));
147
+ }
120
148
  return v;
121
149
  })};
122
150
  })();
@@ -144,7 +172,7 @@ class RouterPlugin {
144
172
  });
145
173
  });
146
174
  }
147
- constructor({ staticJsDir = 'static/js', HtmlBundlerPlugin, enableInlineRouteManifests, disableFilenameHash = false, scriptLoading = 'defer', nonce }){
175
+ constructor({ staticJsDir = 'static/js', HtmlBundlerPlugin, enableInlineRouteManifests, disableFilenameHash = false, scriptLoading = 'defer', nonce, useRsc = false }){
148
176
  this.name = 'RouterPlugin';
149
177
  this.HtmlBundlerPlugin = HtmlBundlerPlugin;
150
178
  this.enableInlineRouteManifests = enableInlineRouteManifests;
@@ -152,6 +180,7 @@ class RouterPlugin {
152
180
  this.disableFilenameHash = disableFilenameHash;
153
181
  this.scriptLoading = scriptLoading;
154
182
  this.nonce = nonce;
183
+ this.useRsc = useRsc;
155
184
  }
156
185
  }
157
186
  export { RouterPlugin };
@@ -0,0 +1,44 @@
1
+ import { collectRouteComponentFiles, normalizeModulePath } from "@modern-js/utils";
2
+ function aggregateEagerRouteComponentFiles(byEntry) {
3
+ const files = new Set();
4
+ const unresolvedByEntry = new Map();
5
+ if (byEntry) for (const [entryName, collection] of byEntry){
6
+ for (const file of collection.resolvedFiles)files.add(file);
7
+ if (collection.unresolvedSpecifiers.length > 0) unresolvedByEntry.set(entryName, collection.unresolvedSpecifiers);
8
+ }
9
+ return {
10
+ files,
11
+ unresolvedByEntry
12
+ };
13
+ }
14
+ function buildSSRLazyCompilationTest(eagerRouteFiles, userTest) {
15
+ const userTestFn = 'function' == typeof userTest ? userTest : userTest instanceof RegExp ? (m)=>userTest.test(m.resource || '') : ()=>true;
16
+ return (m)=>{
17
+ const resource = m.resource;
18
+ if (!resource) return userTestFn(m);
19
+ if (eagerRouteFiles.has(normalizeModulePath(resource))) return false;
20
+ return userTestFn(m);
21
+ };
22
+ }
23
+ function planSSRLazyCompilation(current, info) {
24
+ if (!current) return {
25
+ apply: false
26
+ };
27
+ if (info.unresolvedByEntry.size > 0) return {
28
+ apply: false,
29
+ unresolvedByEntry: info.unresolvedByEntry
30
+ };
31
+ if (0 === info.files.size) return {
32
+ apply: false
33
+ };
34
+ const base = 'object' == typeof current ? current : {};
35
+ const userTest = current.test;
36
+ return {
37
+ apply: true,
38
+ lazyCompilation: {
39
+ ...base,
40
+ test: buildSSRLazyCompilationTest(info.files, userTest)
41
+ }
42
+ };
43
+ }
44
+ export { aggregateEagerRouteComponentFiles, buildSSRLazyCompilationTest, collectRouteComponentFiles, normalizeModulePath, planSSRLazyCompilation };
@@ -1,5 +1,4 @@
1
1
  import { i18n, localeKeys } from "../locale/index.mjs";
2
- import { runtimeCommand } from "./runtime.mjs";
3
2
  const devCommand = async (program, api)=>{
4
3
  program.command('dev').alias('start').usage('[options]').description(i18n.t(localeKeys.command.dev.describe)).option('-c --config <config>', i18n.t(localeKeys.command.shared.config)).option('-e --entry [entry...]', i18n.t(localeKeys.command.dev.entry)).option('--analyze', i18n.t(localeKeys.command.shared.analyze)).option('--api-only', i18n.t(localeKeys.command.dev.apiOnly)).option('--web-only', i18n.t(localeKeys.command.dev.webOnly)).action(async (options)=>{
5
4
  const { dev } = await import("./dev.mjs");
@@ -41,7 +40,5 @@ const infoCommand = (program, api)=>{
41
40
  await info(api, options);
42
41
  });
43
42
  };
44
- const runtimeOperationsCommand = async (program, api)=>{
45
- await runtimeCommand(program, api);
46
- };
47
- export { buildCommand, deployCommand, devCommand, infoCommand, inspectCommand, runtimeOperationsCommand, serverCommand };
43
+ export { runtimeCommand } from "./runtime.mjs";
44
+ export { buildCommand, deployCommand, devCommand, infoCommand, inspectCommand, serverCommand };