@bleedingdev/modern-js-app-tools 3.8.2-ultramodern.9 → 3.8.3-ultramodern.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 (242) hide show
  1. package/bin/modern-bundle-docs.js +11 -0
  2. package/bin/modern.js +11 -0
  3. package/dist/cjs/builder/generator/getBuilderEnvironments.js +13 -241
  4. package/dist/cjs/builder/generator/index.js +0 -1
  5. package/dist/cjs/builder/shared/builderPlugins/adapterSSR.js +37 -9
  6. package/dist/cjs/builder/shared/builderPlugins/index.js +6 -13
  7. package/dist/cjs/builder/shared/bundlerPlugins/index.js +6 -13
  8. package/dist/cjs/builder/shared/lazyCompilation.js +9 -9
  9. package/dist/cjs/bundleDocs.js +1 -1
  10. package/dist/cjs/index.js +59 -60
  11. package/dist/cjs/plugins/analyze/getServerRoutes.js +1 -1
  12. package/dist/cjs/plugins/analyze/isDefaultExportFunction.js +1 -9
  13. package/dist/cjs/plugins/backend-federation/codegen.js +2 -1
  14. package/dist/cjs/plugins/backend-federation/config.js +2 -2
  15. package/dist/cjs/plugins/backend-federation/emit.js +6 -4
  16. package/dist/cjs/plugins/deploy/index.js +4 -4
  17. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/index.js +23 -149
  18. package/dist/cjs/plugins/deploy/platforms/templates/netlify-entry.cjs +41 -62
  19. package/dist/cjs/plugins/deploy/platforms/templates/netlify-entry.mjs +41 -63
  20. package/dist/cjs/plugins/deploy/platforms/templates/node-entry.cjs +35 -52
  21. package/dist/cjs/plugins/deploy/platforms/templates/node-entry.mjs +35 -53
  22. package/dist/cjs/plugins/deploy/platforms/templates/vercel-entry.cjs +41 -61
  23. package/dist/cjs/plugins/deploy/platforms/templates/vercel-entry.mjs +40 -61
  24. package/dist/cjs/plugins/ultramodernReleaseEnvelope.js +3 -59
  25. package/dist/cjs/presetUltramodern.js +15 -8
  26. package/dist/cjs/run/index.js +9 -9
  27. package/dist/cjs/utils/env.js +1 -1
  28. package/dist/cjs/utils/register.js +6 -3
  29. package/dist/esm/builder/generator/getBuilderEnvironments.mjs +12 -231
  30. package/dist/esm/builder/generator/index.mjs +1 -2
  31. package/dist/esm/builder/shared/builderPlugins/adapterSSR.mjs +34 -9
  32. package/dist/esm/builder/shared/builderPlugins/index.mjs +0 -1
  33. package/dist/esm/builder/shared/bundlerPlugins/index.mjs +0 -1
  34. package/dist/esm/builder/shared/lazyCompilation.mjs +4 -4
  35. package/dist/esm/bundleDocs.mjs +1 -1
  36. package/dist/esm/index.mjs +3 -3
  37. package/dist/esm/plugins/analyze/getServerRoutes.mjs +1 -1
  38. package/dist/esm/plugins/analyze/isDefaultExportFunction.mjs +1 -9
  39. package/dist/esm/plugins/backend-federation/codegen.mjs +2 -1
  40. package/dist/esm/plugins/backend-federation/config.mjs +1 -1
  41. package/dist/esm/plugins/backend-federation/emit.mjs +5 -3
  42. package/dist/esm/plugins/deploy/index.mjs +1 -1
  43. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/index.mjs +1 -133
  44. package/dist/esm/plugins/deploy/platforms/templates/netlify-entry.cjs +41 -62
  45. package/dist/esm/plugins/deploy/platforms/templates/netlify-entry.mjs +41 -63
  46. package/dist/esm/plugins/deploy/platforms/templates/node-entry.cjs +35 -52
  47. package/dist/esm/plugins/deploy/platforms/templates/node-entry.mjs +35 -53
  48. package/dist/esm/plugins/deploy/platforms/templates/vercel-entry.cjs +41 -61
  49. package/dist/esm/plugins/deploy/platforms/templates/vercel-entry.mjs +40 -61
  50. package/dist/esm/plugins/ultramodernReleaseEnvelope.mjs +3 -49
  51. package/dist/esm/presetUltramodern.mjs +8 -5
  52. package/dist/esm/run/index.mjs +9 -9
  53. package/dist/esm/utils/env.mjs +1 -1
  54. package/dist/esm/utils/register.mjs +6 -3
  55. package/dist/esm-node/builder/generator/getBuilderEnvironments.mjs +12 -234
  56. package/dist/esm-node/builder/generator/index.mjs +1 -2
  57. package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.mjs +34 -9
  58. package/dist/esm-node/builder/shared/builderPlugins/index.mjs +0 -1
  59. package/dist/esm-node/builder/shared/bundlerPlugins/index.mjs +0 -1
  60. package/dist/esm-node/builder/shared/lazyCompilation.mjs +4 -4
  61. package/dist/esm-node/bundleDocs.mjs +1 -1
  62. package/dist/esm-node/index.mjs +3 -3
  63. package/dist/esm-node/plugins/analyze/getServerRoutes.mjs +1 -1
  64. package/dist/esm-node/plugins/analyze/isDefaultExportFunction.mjs +1 -9
  65. package/dist/esm-node/plugins/backend-federation/codegen.mjs +2 -1
  66. package/dist/esm-node/plugins/backend-federation/config.mjs +1 -1
  67. package/dist/esm-node/plugins/backend-federation/emit.mjs +5 -3
  68. package/dist/esm-node/plugins/deploy/index.mjs +1 -1
  69. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/index.mjs +1 -133
  70. package/dist/esm-node/plugins/deploy/platforms/templates/netlify-entry.cjs +41 -62
  71. package/dist/esm-node/plugins/deploy/platforms/templates/netlify-entry.mjs +41 -63
  72. package/dist/esm-node/plugins/deploy/platforms/templates/node-entry.cjs +35 -52
  73. package/dist/esm-node/plugins/deploy/platforms/templates/node-entry.mjs +35 -53
  74. package/dist/esm-node/plugins/deploy/platforms/templates/vercel-entry.cjs +41 -61
  75. package/dist/esm-node/plugins/deploy/platforms/templates/vercel-entry.mjs +40 -61
  76. package/dist/esm-node/plugins/ultramodernReleaseEnvelope.mjs +3 -49
  77. package/dist/esm-node/presetUltramodern.mjs +8 -5
  78. package/dist/esm-node/run/index.mjs +9 -9
  79. package/dist/esm-node/utils/env.mjs +1 -1
  80. package/dist/esm-node/utils/register.mjs +6 -3
  81. package/dist/types/builder/generator/getBuilderEnvironments.d.ts +0 -29
  82. package/dist/types/builder/shared/builderPlugins/adapterSSR.d.ts +11 -0
  83. package/dist/types/builder/shared/builderPlugins/index.d.ts +0 -1
  84. package/dist/types/builder/shared/bundlerPlugins/index.d.ts +0 -1
  85. package/dist/types/builder/shared/lazyCompilation.d.ts +7 -7
  86. package/dist/types/plugins/analyze/getServerRoutes.d.ts +1 -1
  87. package/dist/types/plugins/backend-federation/codegen.d.ts +4 -1
  88. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/index.d.ts +1 -18
  89. package/dist/types/presetUltramodern.d.ts +23 -2
  90. package/dist/types/types/config/deploy.d.ts +2 -2
  91. package/docs/community/showcase.md +3 -5
  92. package/docs/configure/app/bff/effect.md +7 -7
  93. package/docs/guides/advanced-features/bff/frameworks.md +1 -1
  94. package/docs/guides/basic-features/deploy.md +2 -2
  95. package/docs/guides/get-started/quick-start.md +10 -9
  96. package/docs/guides/get-started/tech-stack.md +1 -1
  97. package/docs/guides/get-started/ultramodern.md +123 -38
  98. package/docs/guides/troubleshooting/cli.md +1 -1
  99. package/docs/llms.txt +2 -2
  100. package/docs/tutorials/examples/csr-auth.md +1 -1
  101. package/package.json +16 -28
  102. package/rslib.config.mts +4 -7
  103. package/dist/cjs/builder/shared/builderPlugins/adapterLazyCompilation.js +0 -74
  104. package/dist/cjs/builder/shared/bundlerPlugins/CssExtractRuntimePlugin.js +0 -72
  105. package/dist/cjs/plugins/deploy/platforms/cloudflare/artifacts.js +0 -127
  106. package/dist/cjs/plugins/deploy/platforms/cloudflare/constants.js +0 -141
  107. package/dist/cjs/plugins/deploy/platforms/cloudflare/delivery-unit.js +0 -139
  108. package/dist/cjs/plugins/deploy/platforms/cloudflare/i18n-worker.js +0 -135
  109. package/dist/cjs/plugins/deploy/platforms/cloudflare/index.js +0 -150
  110. package/dist/cjs/plugins/deploy/platforms/cloudflare/security-policies.js +0 -205
  111. package/dist/cjs/plugins/deploy/platforms/cloudflare/types.js +0 -18
  112. package/dist/cjs/plugins/deploy/platforms/cloudflare/utils.js +0 -66
  113. package/dist/cjs/plugins/deploy/platforms/cloudflare/worker-manifest.js +0 -208
  114. package/dist/cjs/plugins/deploy/platforms/cloudflare/wrangler-config.js +0 -204
  115. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-contract.js +0 -108
  116. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-plan.js +0 -93
  117. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/identity.js +0 -83
  118. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/issues.js +0 -54
  119. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/manifest.js +0 -89
  120. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/mutation-policy.js +0 -151
  121. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.js +0 -378
  122. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +0 -251
  123. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.002-assets-routes.mjs +0 -191
  124. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.003-i18n-locales.mjs +0 -514
  125. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.004-rendering-css.mjs +0 -1012
  126. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.005-worker-dispatch.mjs +0 -363
  127. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.006-fetch-handler.mjs +0 -93
  128. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-worker-fs-promises.mjs +0 -11
  129. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-worker-loadable-server.mjs +0 -281
  130. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +0 -14
  131. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-worker-path.mjs +0 -98
  132. package/dist/cjs/types/config/cloudflareDeploy.js +0 -18
  133. package/dist/cjs/ultramodern-release-envelope/canonical.js +0 -68
  134. package/dist/cjs/ultramodern-release-envelope/framework-output.js +0 -649
  135. package/dist/cjs/ultramodern-release-envelope/index.js +0 -399
  136. package/dist/cjs/ultramodern-release-envelope/types.js +0 -51
  137. package/dist/cjs/ultramodern-release-identity.js +0 -110
  138. package/dist/esm/builder/shared/builderPlugins/adapterLazyCompilation.mjs +0 -36
  139. package/dist/esm/builder/shared/bundlerPlugins/CssExtractRuntimePlugin.mjs +0 -30
  140. package/dist/esm/plugins/deploy/platforms/cloudflare/artifacts.mjs +0 -64
  141. package/dist/esm/plugins/deploy/platforms/cloudflare/constants.mjs +0 -34
  142. package/dist/esm/plugins/deploy/platforms/cloudflare/delivery-unit.mjs +0 -88
  143. package/dist/esm/plugins/deploy/platforms/cloudflare/i18n-worker.mjs +0 -97
  144. package/dist/esm/plugins/deploy/platforms/cloudflare/index.mjs +0 -102
  145. package/dist/esm/plugins/deploy/platforms/cloudflare/security-policies.mjs +0 -167
  146. package/dist/esm/plugins/deploy/platforms/cloudflare/types.mjs +0 -0
  147. package/dist/esm/plugins/deploy/platforms/cloudflare/utils.mjs +0 -12
  148. package/dist/esm/plugins/deploy/platforms/cloudflare/worker-manifest.mjs +0 -148
  149. package/dist/esm/plugins/deploy/platforms/cloudflare/wrangler-config.mjs +0 -150
  150. package/dist/esm/plugins/deploy/platforms/cloudflare-output-contract.mjs +0 -31
  151. package/dist/esm/plugins/deploy/platforms/cloudflare-output-plan.mjs +0 -45
  152. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/identity.mjs +0 -45
  153. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/issues.mjs +0 -10
  154. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/manifest.mjs +0 -51
  155. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/mutation-policy.mjs +0 -99
  156. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.mjs +0 -313
  157. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +0 -251
  158. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.002-assets-routes.mjs +0 -191
  159. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.003-i18n-locales.mjs +0 -514
  160. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.004-rendering-css.mjs +0 -1012
  161. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.005-worker-dispatch.mjs +0 -363
  162. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.006-fetch-handler.mjs +0 -93
  163. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-worker-fs-promises.mjs +0 -11
  164. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-worker-loadable-server.mjs +0 -281
  165. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +0 -14
  166. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-worker-path.mjs +0 -98
  167. package/dist/esm/types/config/cloudflareDeploy.mjs +0 -0
  168. package/dist/esm/ultramodern-release-envelope/canonical.mjs +0 -21
  169. package/dist/esm/ultramodern-release-envelope/framework-output.mjs +0 -573
  170. package/dist/esm/ultramodern-release-envelope/index.mjs +0 -335
  171. package/dist/esm/ultramodern-release-envelope/types.mjs +0 -7
  172. package/dist/esm/ultramodern-release-identity.mjs +0 -66
  173. package/dist/esm-node/builder/shared/builderPlugins/adapterLazyCompilation.mjs +0 -37
  174. package/dist/esm-node/builder/shared/bundlerPlugins/CssExtractRuntimePlugin.mjs +0 -31
  175. package/dist/esm-node/plugins/deploy/platforms/cloudflare/artifacts.mjs +0 -65
  176. package/dist/esm-node/plugins/deploy/platforms/cloudflare/constants.mjs +0 -35
  177. package/dist/esm-node/plugins/deploy/platforms/cloudflare/delivery-unit.mjs +0 -89
  178. package/dist/esm-node/plugins/deploy/platforms/cloudflare/i18n-worker.mjs +0 -98
  179. package/dist/esm-node/plugins/deploy/platforms/cloudflare/index.mjs +0 -103
  180. package/dist/esm-node/plugins/deploy/platforms/cloudflare/security-policies.mjs +0 -168
  181. package/dist/esm-node/plugins/deploy/platforms/cloudflare/types.mjs +0 -1
  182. package/dist/esm-node/plugins/deploy/platforms/cloudflare/utils.mjs +0 -13
  183. package/dist/esm-node/plugins/deploy/platforms/cloudflare/worker-manifest.mjs +0 -149
  184. package/dist/esm-node/plugins/deploy/platforms/cloudflare/wrangler-config.mjs +0 -151
  185. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-contract.mjs +0 -32
  186. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-plan.mjs +0 -46
  187. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/identity.mjs +0 -46
  188. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/issues.mjs +0 -11
  189. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/manifest.mjs +0 -52
  190. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/mutation-policy.mjs +0 -100
  191. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.mjs +0 -314
  192. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +0 -251
  193. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.002-assets-routes.mjs +0 -191
  194. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.003-i18n-locales.mjs +0 -514
  195. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.004-rendering-css.mjs +0 -1012
  196. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.005-worker-dispatch.mjs +0 -363
  197. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.006-fetch-handler.mjs +0 -93
  198. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-worker-fs-promises.mjs +0 -11
  199. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-worker-loadable-server.mjs +0 -281
  200. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +0 -14
  201. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-worker-path.mjs +0 -98
  202. package/dist/esm-node/types/config/cloudflareDeploy.mjs +0 -1
  203. package/dist/esm-node/ultramodern-release-envelope/canonical.mjs +0 -22
  204. package/dist/esm-node/ultramodern-release-envelope/framework-output.mjs +0 -574
  205. package/dist/esm-node/ultramodern-release-envelope/index.mjs +0 -336
  206. package/dist/esm-node/ultramodern-release-envelope/types.mjs +0 -8
  207. package/dist/esm-node/ultramodern-release-identity.mjs +0 -67
  208. package/dist/types/builder/shared/builderPlugins/adapterLazyCompilation.d.ts +0 -3
  209. package/dist/types/builder/shared/bundlerPlugins/CssExtractRuntimePlugin.d.ts +0 -6
  210. package/dist/types/plugins/deploy/platforms/cloudflare/artifacts.d.ts +0 -15
  211. package/dist/types/plugins/deploy/platforms/cloudflare/constants.d.ts +0 -24
  212. package/dist/types/plugins/deploy/platforms/cloudflare/delivery-unit.d.ts +0 -23
  213. package/dist/types/plugins/deploy/platforms/cloudflare/i18n-worker.d.ts +0 -22
  214. package/dist/types/plugins/deploy/platforms/cloudflare/index.d.ts +0 -2
  215. package/dist/types/plugins/deploy/platforms/cloudflare/security-policies.d.ts +0 -51
  216. package/dist/types/plugins/deploy/platforms/cloudflare/types.d.ts +0 -5
  217. package/dist/types/plugins/deploy/platforms/cloudflare/utils.d.ts +0 -6
  218. package/dist/types/plugins/deploy/platforms/cloudflare/worker-manifest.d.ts +0 -122
  219. package/dist/types/plugins/deploy/platforms/cloudflare/wrangler-config.d.ts +0 -46
  220. package/dist/types/plugins/deploy/platforms/cloudflare-output-contract.d.ts +0 -14
  221. package/dist/types/plugins/deploy/platforms/cloudflare-output-plan.d.ts +0 -34
  222. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/identity.d.ts +0 -4
  223. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/issues.d.ts +0 -14
  224. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/manifest.d.ts +0 -2
  225. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/mutation-policy.d.ts +0 -14
  226. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.d.ts +0 -20
  227. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.d.mts +0 -1
  228. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.002-assets-routes.d.mts +0 -1
  229. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.003-i18n-locales.d.mts +0 -1
  230. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.004-rendering-css.d.mts +0 -1
  231. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.005-worker-dispatch.d.mts +0 -1
  232. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.006-fetch-handler.d.mts +0 -4
  233. package/dist/types/plugins/deploy/platforms/templates/cloudflare-worker-fs-promises.d.mts +0 -5
  234. package/dist/types/plugins/deploy/platforms/templates/cloudflare-worker-loadable-server.d.mts +0 -48
  235. package/dist/types/plugins/deploy/platforms/templates/cloudflare-worker-mf-ssr-runtime-plugin.d.mts +0 -13
  236. package/dist/types/plugins/deploy/platforms/templates/cloudflare-worker-path.d.mts +0 -21
  237. package/dist/types/types/config/cloudflareDeploy.d.ts +0 -161
  238. package/dist/types/ultramodern-release-envelope/canonical.d.ts +0 -5
  239. package/dist/types/ultramodern-release-envelope/framework-output.d.ts +0 -32
  240. package/dist/types/ultramodern-release-envelope/index.d.ts +0 -6
  241. package/dist/types/ultramodern-release-envelope/types.d.ts +0 -62
  242. package/dist/types/ultramodern-release-identity.d.ts +0 -16
@@ -1,4 +1,15 @@
1
1
  #!/usr/bin/env node
2
+ const nodeVersion = /^(\d+)\.(\d+)\.(\d+)$/.exec(process.versions.node);
3
+ if (
4
+ !nodeVersion ||
5
+ +nodeVersion[1] < 26 ||
6
+ (+nodeVersion[1] === 26 && +nodeVersion[2] < 7)
7
+ ) {
8
+ console.error(
9
+ `UltraModern.js requires Node.js >=26.7.0; detected v${process.versions.node}. Legacy Node runtimes and transpiler fallbacks are unsupported.`,
10
+ );
11
+ process.exit(1);
12
+ }
2
13
  // The CLI body lives in the compiled ESM output; a CommonJS shim keeps the
3
14
  // shebang and stays executable on any Node without a loader.
4
15
  const path = require('path');
package/bin/modern.js CHANGED
@@ -1,4 +1,15 @@
1
1
  #!/usr/bin/env node
2
+ const nodeVersion = /^(\d+)\.(\d+)\.(\d+)$/.exec(process.versions.node);
3
+ if (
4
+ !nodeVersion ||
5
+ +nodeVersion[1] < 26 ||
6
+ (+nodeVersion[1] === 26 && +nodeVersion[2] < 7)
7
+ ) {
8
+ console.error(
9
+ `UltraModern.js requires Node.js >=26.7.0; detected v${process.versions.node}. Legacy Node runtimes and transpiler fallbacks are unsupported.`,
10
+ );
11
+ process.exit(1);
12
+ }
2
13
  const { INTERNAL_RUNTIME_PLUGINS } = require('@modern-js/utils');
3
14
 
4
15
  const { version } = require('../package.json');
@@ -37,10 +37,7 @@ var __webpack_require__ = {};
37
37
  var __webpack_exports__ = {};
38
38
  __webpack_require__.r(__webpack_exports__);
39
39
  __webpack_require__.d(__webpack_exports__, {
40
- applyCloudflareWorkerMfRuntimeBoundary: ()=>applyCloudflareWorkerMfRuntimeBoundary,
41
- applyCloudflareWorkerRspackConfig: ()=>applyCloudflareWorkerRspackConfig,
42
- getBuilderEnvironments: ()=>getBuilderEnvironments,
43
- getCloudflareWorkerRspackConfig: ()=>getCloudflareWorkerRspackConfig
40
+ getBuilderEnvironments: ()=>getBuilderEnvironments
44
41
  });
45
42
  const external_node_fs_namespaceObject = require("node:fs");
46
43
  var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
@@ -48,30 +45,6 @@ const external_node_path_namespaceObject = require("node:path");
48
45
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
49
46
  const builder_namespaceObject = require("@modern-js/builder");
50
47
  const utils_namespaceObject = require("@modern-js/utils");
51
- const cloudflare_output_contract_js_namespaceObject = require("../../plugins/deploy/platforms/cloudflare-output-contract.js");
52
- const BFF_EFFECT_WORKER_ENTRY_NAME = '__modern_bff_effect';
53
- const BFF_EFFECT_WORKER_RUNTIME_QUERY = 'modern-bff-runtime';
54
- const MF_SSR_DATA_FETCH_RUNTIME_PLUGIN = '@module-federation/modern-js-v3/ssr-inject-data-fetch-function-plugin';
55
- const MF_SSR_DEV_RUNTIME_PLUGIN = '@module-federation/modern-js-v3/ssr-dev-plugin';
56
- const JS_OR_TS_EXTS = [
57
- '.js',
58
- '.jsx',
59
- '.ts',
60
- '.tsx',
61
- '.mjs',
62
- '.mts',
63
- '.cjs',
64
- '.cts'
65
- ];
66
- const CLOUDFLARE_WORKER_COMPAT_TEMPLATE_DIR = external_node_path_default().resolve(__dirname, '../../plugins/deploy/platforms/templates');
67
- function findExistingFile(candidates) {
68
- return candidates.find((candidate)=>external_node_fs_default().existsSync(candidate));
69
- }
70
- function resolveJsOrTsEntry(entryWithoutOrWithExt) {
71
- const extension = external_node_path_default().extname(entryWithoutOrWithExt);
72
- if (JS_OR_TS_EXTS.includes(extension)) return external_node_fs_default().existsSync(entryWithoutOrWithExt) ? entryWithoutOrWithExt : void 0;
73
- return findExistingFile(JS_OR_TS_EXTS.map((extension)=>`${entryWithoutOrWithExt}${extension}`));
74
- }
75
48
  function resolvePackageEntry(packageName, paths) {
76
49
  try {
77
50
  return external_node_fs_default().realpathSync(require.resolve(packageName, {
@@ -115,94 +88,6 @@ function findPackageRoot(entryFile, packageName) {
115
88
  function setAliasIfPresent(alias, name, value) {
116
89
  if (value) alias.set(name, value);
117
90
  }
118
- function getCloudflareWorkerCompatFile(file) {
119
- return external_node_path_default().join(CLOUDFLARE_WORKER_COMPAT_TEMPLATE_DIR, file);
120
- }
121
- function getCloudflareWorkerNodeExternals() {
122
- return Object.fromEntries(cloudflare_output_contract_js_namespaceObject.CLOUDFLARE_WORKER_NODE_BUILTINS.flatMap((builtin)=>{
123
- const nodeBuiltin = `node:${builtin}`;
124
- return [
125
- [
126
- builtin,
127
- `module-import ${nodeBuiltin}`
128
- ],
129
- [
130
- nodeBuiltin,
131
- `module-import ${nodeBuiltin}`
132
- ]
133
- ];
134
- }));
135
- }
136
- const reserveWorkerChunkName = (baseName, reservedOutputNames)=>{
137
- let name = baseName;
138
- while(reservedOutputNames.has(normalizeWorkerOutputName(name)))name = `${name}_`;
139
- return name;
140
- };
141
- const normalizeWorkerOutputName = (name)=>external_node_path_default().posix.normalize(name.replace(/\\/gu, '/')).toLowerCase();
142
- function getCloudflareWorkerRspackConfig(workerEntryNames) {
143
- const entryNames = [
144
- ...workerEntryNames
145
- ];
146
- for (const entryName of entryNames){
147
- const slashName = entryName.replace(/\\/gu, '/');
148
- const normalizedName = external_node_path_default().posix.normalize(slashName);
149
- if (entryName !== slashName || normalizedName !== slashName || '.' === normalizedName || normalizedName.startsWith('../') || external_node_path_default().posix.isAbsolute(normalizedName) || external_node_path_default().win32.isAbsolute(slashName) || /^[A-Za-z]:/u.test(slashName)) throw new Error(`Cloudflare worker entry name "${entryName}" must be a canonical relative output path without dot segments or backslashes.`);
150
- }
151
- const reservedNames = new Set(entryNames.map(normalizeWorkerOutputName));
152
- const runtimeName = reserveWorkerChunkName('__modern_worker_runtime', reservedNames);
153
- reservedNames.add(normalizeWorkerOutputName(runtimeName));
154
- const sharedName = reserveWorkerChunkName('__modern_worker_shared', reservedNames);
155
- return {
156
- experiments: {
157
- outputModule: true
158
- },
159
- externals: getCloudflareWorkerNodeExternals(),
160
- externalsType: 'module-import',
161
- module: {
162
- parser: {
163
- javascript: {
164
- dynamicImportMode: 'eager'
165
- }
166
- }
167
- },
168
- optimization: {
169
- runtimeChunk: {
170
- name: runtimeName
171
- },
172
- splitChunks: {
173
- chunks: 'all',
174
- minSize: 0,
175
- name: sharedName
176
- }
177
- }
178
- };
179
- }
180
- function applyCloudflareWorkerRspackConfig(chain, workerEntryNames) {
181
- const config = getCloudflareWorkerRspackConfig(workerEntryNames);
182
- chain.experiments(config.experiments);
183
- chain.externals(config.externals);
184
- chain.externalsType(config.externalsType);
185
- chain.module.parser.merge(config.module.parser);
186
- chain.optimization.runtimeChunk(config.optimization.runtimeChunk);
187
- chain.optimization.splitChunks(config.optimization.splitChunks);
188
- }
189
- function applyCloudflareWorkerMfRuntimeBoundary(chain) {
190
- chain.plugins.delete('plugin-module-federation');
191
- chain.resolve.alias.set(`${MF_SSR_DATA_FETCH_RUNTIME_PLUGIN}$`, getCloudflareWorkerCompatFile('cloudflare-worker-mf-ssr-runtime-plugin.mjs'));
192
- chain.resolve.alias.set(`${MF_SSR_DEV_RUNTIME_PLUGIN}$`, getCloudflareWorkerCompatFile('cloudflare-worker-mf-ssr-runtime-plugin.mjs'));
193
- }
194
- function getEffectBffEntry(normalizedConfig, appContext) {
195
- if (!normalizedConfig.bff || 'hono' === normalizedConfig.bff.runtimeFramework) return;
196
- const configuredEntry = normalizedConfig.bff.effect?.entry;
197
- if (configuredEntry) {
198
- const entryWithoutOrWithExtension = external_node_path_default().isAbsolute(configuredEntry) ? configuredEntry : external_node_path_default().resolve(appContext.appDirectory, configuredEntry);
199
- return resolveJsOrTsEntry(entryWithoutOrWithExtension);
200
- }
201
- return resolveJsOrTsEntry(external_node_path_default().resolve(appContext.apiDirectory, 'index'));
202
- }
203
- function isCloudflareWorkerDeploy(normalizedConfig) {
204
- return normalizedConfig.deploy?.target === 'cloudflare' || 'cloudflare' === process.env.MODERNJS_DEPLOY;
205
- }
206
91
  function getConsumingReactRuntimeAliases(appContext) {
207
92
  const resolvePaths = [
208
93
  appContext.appDirectory,
@@ -256,11 +141,6 @@ function getBuilderEnvironments(normalizedConfig, appContext, tempBuilderConfig)
256
141
  const v = entries[entry];
257
142
  serverEntries[entry] = v.map((entry)=>entry.replace('index.jsx', 'index.server.jsx')).map((entry)=>entry.replace('bootstrap.jsx', 'bootstrap.server.jsx'));
258
143
  }
259
- const cloudflareWorkerServerEntries = {};
260
- for(const entry in entries){
261
- const v = entries[entry];
262
- cloudflareWorkerServerEntries[entry] = v.map((entry)=>entry.replace('index.jsx', 'index.server.jsx')).map((entry)=>entry.replace('bootstrap.jsx', 'index.server.jsx'));
263
- }
264
144
  const environments = {
265
145
  client: {
266
146
  output: {
@@ -285,133 +165,25 @@ function getBuilderEnvironments(normalizedConfig, appContext, tempBuilderConfig)
285
165
  }
286
166
  };
287
167
  const useWorkerTarget = (0, utils_namespaceObject.isServiceWorker)(normalizedConfig);
288
- if (useWorkerTarget) {
289
- const useCloudflareModuleWorker = isCloudflareWorkerDeploy(normalizedConfig);
290
- const effectApiEntry = useCloudflareModuleWorker ? getEffectBffEntry(normalizedConfig, appContext) : void 0;
291
- const tanstackRouterSsrServerFile = useCloudflareModuleWorker ? resolvePackageFile('@tanstack/router-core', 'dist/esm/ssr/ssr-server.js', [
292
- appContext.appDirectory,
293
- process.cwd()
294
- ]) : void 0;
295
- const runtimeRscWorkerFile = useCloudflareModuleWorker ? resolvePackageFile('@modern-js/runtime', 'dist/esm/rsc/server.worker.mjs', [
296
- appContext.appDirectory,
297
- process.cwd()
298
- ]) : void 0;
299
- const renderRscWorkerFile = useCloudflareModuleWorker ? resolvePackageFile('@modern-js/render', 'dist/esm/rscWorker.mjs', [
300
- appContext.appDirectory,
301
- process.cwd()
302
- ]) : void 0;
303
- const reactFile = useCloudflareModuleWorker ? resolvePackageFile('react', 'index.js', [
304
- appContext.appDirectory,
305
- process.cwd()
306
- ]) : void 0;
307
- const reactJsxRuntimeFile = useCloudflareModuleWorker ? resolvePackageFile('react', 'jsx-runtime.js', [
308
- appContext.appDirectory,
309
- process.cwd()
310
- ]) : void 0;
311
- const reactJsxDevRuntimeFile = useCloudflareModuleWorker ? resolvePackageFile('react', 'jsx-dev-runtime.js', [
312
- appContext.appDirectory,
313
- process.cwd()
314
- ]) : void 0;
315
- const reactDomFile = useCloudflareModuleWorker ? resolvePackageFile('react-dom', 'index.js', [
316
- appContext.appDirectory,
317
- process.cwd()
318
- ]) : void 0;
319
- const reactDomServerEdgeFile = useCloudflareModuleWorker ? resolvePackageFile('react-dom', 'server.edge.js', [
320
- appContext.appDirectory,
321
- process.cwd()
322
- ]) : void 0;
323
- const loadableComponentFile = useCloudflareModuleWorker ? resolvePackageFile('@loadable/component', 'dist/esm/loadable.esm.mjs', [
324
- appContext.appDirectory,
325
- process.cwd(),
326
- CLOUDFLARE_WORKER_COMPAT_TEMPLATE_DIR
327
- ]) : void 0;
328
- const loadableServerWorkerFile = useCloudflareModuleWorker ? getCloudflareWorkerCompatFile('cloudflare-worker-loadable-server.mjs') : void 0;
329
- const fsPromisesWorkerFile = useCloudflareModuleWorker ? getCloudflareWorkerCompatFile('cloudflare-worker-fs-promises.mjs') : void 0;
330
- const pathWorkerFile = useCloudflareModuleWorker ? getCloudflareWorkerCompatFile('cloudflare-worker-path.mjs') : void 0;
331
- const baseWorkerEntries = useCloudflareModuleWorker ? cloudflareWorkerServerEntries : serverEntries;
332
- const workerEntries = effectApiEntry ? {
333
- ...baseWorkerEntries,
334
- [BFF_EFFECT_WORKER_ENTRY_NAME]: [
335
- `${effectApiEntry}?${BFF_EFFECT_WORKER_RUNTIME_QUERY}`
336
- ]
337
- } : baseWorkerEntries;
338
- environments[builder_namespaceObject.SERVICE_WORKER_ENVIRONMENT_NAME] = {
339
- output: {
340
- target: useCloudflareModuleWorker ? 'web' : 'web-worker',
341
- ...useCloudflareModuleWorker ? {
342
- module: true
343
- } : {}
344
- },
345
- source: {
346
- entry: workerEntries
347
- },
348
- tools: {
349
- htmlPlugin: false,
350
- ...useCloudflareModuleWorker ? {
351
- bundlerChain: (chain)=>{
352
- applyCloudflareWorkerRspackConfig(chain, Object.keys(workerEntries));
353
- chain.output.module(true).library({
354
- type: 'module'
355
- }).publicPath('/').chunkFormat('module').chunkLoading('import').workerChunkLoading('import');
356
- for (const condition of [
357
- 'workerd',
358
- 'worker',
359
- 'webpack',
360
- (0, utils_namespaceObject.isProd)() ? 'production' : 'development',
361
- 'import',
362
- 'require',
363
- 'module'
364
- ])chain.resolve.conditionNames.add(condition);
365
- applyCloudflareWorkerMfRuntimeBoundary(chain);
366
- if (tanstackRouterSsrServerFile) {
367
- chain.resolve.alias.set('@tanstack/router-core/ssr/server$', tanstackRouterSsrServerFile);
368
- chain.resolve.alias.set('@tanstack/router-core/ssr/server', tanstackRouterSsrServerFile);
369
- }
370
- if (runtimeRscWorkerFile) {
371
- chain.resolve.alias.set('@modern-js/runtime/rsc/server$', runtimeRscWorkerFile);
372
- chain.resolve.alias.set('@modern-js/runtime/rsc/server', runtimeRscWorkerFile);
373
- }
374
- if (renderRscWorkerFile) {
375
- chain.resolve.alias.set('@modern-js/render/rsc$', renderRscWorkerFile);
376
- chain.resolve.alias.set('@modern-js/render/rsc', renderRscWorkerFile);
377
- chain.resolve.alias.set('@modern-js/render/rsc-worker$', renderRscWorkerFile);
378
- }
379
- setAliasIfPresent(chain.resolve.alias, 'react$', reactFile);
380
- setAliasIfPresent(chain.resolve.alias, 'react/jsx-runtime$', reactJsxRuntimeFile);
381
- setAliasIfPresent(chain.resolve.alias, 'react/jsx-dev-runtime$', reactJsxDevRuntimeFile);
382
- setAliasIfPresent(chain.resolve.alias, 'react-dom$', reactDomFile);
383
- setAliasIfPresent(chain.resolve.alias, 'react-dom/server.edge$', reactDomServerEdgeFile);
384
- setAliasIfPresent(chain.resolve.alias, '@loadable/component$', loadableComponentFile);
385
- setAliasIfPresent(chain.resolve.alias, '@loadable/server$', loadableServerWorkerFile);
386
- setAliasIfPresent(chain.resolve.alias, 'fs/promises$', fsPromisesWorkerFile);
387
- setAliasIfPresent(chain.resolve.alias, 'node:fs/promises$', fsPromisesWorkerFile);
388
- setAliasIfPresent(chain.resolve.alias, 'path$', pathWorkerFile);
389
- setAliasIfPresent(chain.resolve.alias, 'node:path$', pathWorkerFile);
390
- chain.resolve.alias.set('react-server-dom-rspack/server.node$', 'react-server-dom-rspack/server.edge');
391
- chain.resolve.alias.set('react-server-dom-rspack/server.node', 'react-server-dom-rspack/server.edge');
392
- chain.resolve.alias.set('react-server-dom-rspack/client.node$', 'react-server-dom-rspack/client.edge');
393
- chain.resolve.alias.set('react-server-dom-rspack/client.node', 'react-server-dom-rspack/client.edge');
394
- chain.resolve.fallback.set('fs', false);
395
- chain.resolve.fallback.set('node:fs', false);
396
- }
397
- } : {}
398
- }
399
- };
400
- }
168
+ if (useWorkerTarget) environments[builder_namespaceObject.SERVICE_WORKER_ENVIRONMENT_NAME] = {
169
+ output: {
170
+ target: 'web-worker'
171
+ },
172
+ source: {
173
+ entry: serverEntries
174
+ },
175
+ tools: {
176
+ htmlPlugin: false
177
+ }
178
+ };
401
179
  return {
402
180
  environments,
403
181
  builderConfig: tempBuilderConfig
404
182
  };
405
183
  }
406
- exports.applyCloudflareWorkerMfRuntimeBoundary = __webpack_exports__.applyCloudflareWorkerMfRuntimeBoundary;
407
- exports.applyCloudflareWorkerRspackConfig = __webpack_exports__.applyCloudflareWorkerRspackConfig;
408
184
  exports.getBuilderEnvironments = __webpack_exports__.getBuilderEnvironments;
409
- exports.getCloudflareWorkerRspackConfig = __webpack_exports__.getCloudflareWorkerRspackConfig;
410
185
  for(var __rspack_i in __webpack_exports__)if (-1 === [
411
- "applyCloudflareWorkerMfRuntimeBoundary",
412
- "applyCloudflareWorkerRspackConfig",
413
- "getBuilderEnvironments",
414
- "getCloudflareWorkerRspackConfig"
186
+ "getBuilderEnvironments"
415
187
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
416
188
  Object.defineProperty(exports, '__esModule', {
417
189
  value: true
@@ -70,7 +70,6 @@ async function generateBuilder(options, bundlerType) {
70
70
  async function applyBuilderPlugins(builder, options) {
71
71
  builder.addPlugins([
72
72
  (0, index_js_namespaceObject.builderPluginAdapterBasic)(options),
73
- (0, index_js_namespaceObject.builderPluginAdapterLazyCompilation)(options),
74
73
  (0, index_js_namespaceObject.builderPluginAdapterSSR)(options),
75
74
  (0, index_js_namespaceObject.builderPluginAdapterHtml)(options),
76
75
  (0, index_js_namespaceObject.builderPluginAdapterPrecompress)(options),
@@ -28,26 +28,37 @@ var __webpack_require__ = {};
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
- builderPluginAdapterSSR: ()=>builderPluginAdapterSSR
31
+ builderPluginAdapterSSR: ()=>builderPluginAdapterSSR,
32
+ getSSRLazyCompilation: ()=>getSSRLazyCompilation
32
33
  });
34
+ const app_tools_extensions_namespaceObject = require("@modern-js/app-tools-extensions");
33
35
  const builder_namespaceObject = require("@modern-js/builder");
34
36
  const utils_namespaceObject = require("@modern-js/utils");
35
37
  const core_namespaceObject = require("@rsbuild/core");
36
38
  const external_path_namespaceObject = require("path");
37
39
  const utils_js_namespaceObject = require("../../../plugins/analyze/utils.js");
38
40
  const index_js_namespaceObject = require("../bundlerPlugins/index.js");
41
+ const external_lazyCompilation_js_namespaceObject = require("../lazyCompilation.js");
39
42
  const builderPluginAdapterSSR = (options)=>({
40
43
  name: 'builder-plugin-adapter-modern-ssr',
41
44
  setup (api) {
42
- const { normalizedConfig, appContext } = options;
43
- api.modifyRsbuildConfig((config)=>(0, core_namespaceObject.mergeRsbuildConfig)(config, {
45
+ const { normalizedConfig, appContext, eagerRouteComponentFilesByEntry } = options;
46
+ api.modifyRsbuildConfig((config)=>{
47
+ const merged = (0, core_namespaceObject.mergeRsbuildConfig)(config, {
44
48
  html: {
45
49
  inject: isStreamingSSR(normalizedConfig) ? 'head' : void 0
46
50
  },
47
51
  server: {
48
52
  compress: isStreamingSSR(normalizedConfig) || (0, utils_namespaceObject.isUseRsc)(normalizedConfig) ? false : void 0
49
53
  }
50
- }));
54
+ });
55
+ const lazyCompilation = getSSRLazyCompilation(merged.dev?.lazyCompilation, normalizedConfig, appContext, eagerRouteComponentFilesByEntry);
56
+ if (void 0 !== lazyCompilation) merged.dev = {
57
+ ...merged.dev,
58
+ lazyCompilation
59
+ };
60
+ return merged;
61
+ });
51
62
  api.modifyBundlerChain(async (chain, { target, isProd, HtmlPlugin: HtmlBundlerPlugin, isServer, environment })=>{
52
63
  const builderConfig = environment.config;
53
64
  const { normalizedConfig } = options;
@@ -83,6 +94,22 @@ const isStreamingSSR = (userConfig)=>{
83
94
  }
84
95
  return false;
85
96
  };
97
+ function getSSRLazyCompilation(current, normalizedConfig, appContext, eagerRouteComponentFilesByEntry) {
98
+ if (!current || (0, utils_namespaceObject.isUseRsc)(normalizedConfig) || !isStreamingSSR(normalizedConfig)) return;
99
+ const plan = (0, external_lazyCompilation_js_namespaceObject.planSSRLazyCompilation)(current, (0, external_lazyCompilation_js_namespaceObject.aggregateEagerRouteComponentFiles)(eagerRouteComponentFilesByEntry));
100
+ if (!plan.apply) {
101
+ if (plan.unresolvedByEntry) warnUnresolvedRouteComponents(appContext.appDirectory, plan.unresolvedByEntry);
102
+ return;
103
+ }
104
+ return plan.lazyCompilation;
105
+ }
106
+ const warnedLazyApps = new Set();
107
+ function warnUnresolvedRouteComponents(appDirectory, unresolvedByEntry) {
108
+ if (warnedLazyApps.has(appDirectory)) return;
109
+ warnedLazyApps.add(appDirectory);
110
+ const detail = Array.from(unresolvedByEntry).map(([entry, comps])=>`${entry}: ${comps.join(', ')}`).join('; ');
111
+ utils_namespaceObject.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.`);
112
+ }
86
113
  function applyAsyncChunkHtmlPlugin({ chain, modernConfig, HtmlBundlerPlugin }) {
87
114
  if (isStreamingSSR(modernConfig) || (0, utils_namespaceObject.isUseRsc)(modernConfig)) chain.plugin('html-async-chunk').use(index_js_namespaceObject.HtmlAsyncChunkPlugin, [
88
115
  HtmlBundlerPlugin
@@ -96,7 +123,7 @@ function applyRouterPlugin(chain, pluginName, options, HtmlBundlerPlugin) {
96
123
  const { enableInlineRouteManifests, disableInlineRouteManifests } = normalizedConfig.output;
97
124
  const inlineRouteManifests = disableInlineRouteManifests ? !disableInlineRouteManifests : enableInlineRouteManifests;
98
125
  if (existNestedRoutes || workerSSR) {
99
- chain.plugin(`${pluginName}-css-extract-runtime`).use(index_js_namespaceObject.CssExtractRuntimePlugin);
126
+ chain.plugin(`${pluginName}-css-extract-runtime`).use(app_tools_extensions_namespaceObject.CssExtractRuntimePlugin);
100
127
  chain.plugin(pluginName).use(index_js_namespaceObject.RouterPlugin, [
101
128
  {
102
129
  HtmlBundlerPlugin,
@@ -130,10 +157,9 @@ function applyFilterEntriesBySSRConfig({ isProd, chain, appNormalizedConfig }) {
130
157
  });
131
158
  }
132
159
  async function applySSRLoaderEntry(chain, optinos, isServer) {
133
- const { appContext, normalizedConfig } = optinos;
160
+ const { appContext } = optinos;
134
161
  const { internalDirectory } = appContext;
135
162
  const { entrypoints } = appContext;
136
- const isRsc = (0, utils_namespaceObject.isUseRsc)(normalizedConfig);
137
163
  await Promise.all(entrypoints.map(async (entrypoint)=>{
138
164
  const { entryName } = entrypoint;
139
165
  const serverLoadersFile = (0, utils_js_namespaceObject.getServerCombinedModuleFile)(internalDirectory, entryName);
@@ -141,7 +167,7 @@ async function applySSRLoaderEntry(chain, optinos, isServer) {
141
167
  await utils_namespaceObject.fs.access(serverLoadersFile, utils_namespaceObject.fs.constants.F_OK);
142
168
  chain.entry(`${entryName}-server-loaders`).add(serverLoadersFile);
143
169
  } catch (err) {}
144
- else if (isRsc) chain.entry(`${entryName}-server-loaders`).add("data:text/javascript,export%20{};");
170
+ else if ((0, utils_namespaceObject.isUseRsc)(optinos.normalizedConfig)) chain.entry(`${entryName}-server-loaders`).add("data:text/javascript,export%20{};");
145
171
  }));
146
172
  }
147
173
  function applySSRDataLoader(chain, options) {
@@ -153,8 +179,10 @@ function applySSRDataLoader(chain, options) {
153
179
  chain.module.rule('ssr-data-loader').test(reg).use('data-loader').loader(require.resolve('@modern-js/plugin-data-loader/loader')).end();
154
180
  }
155
181
  exports.builderPluginAdapterSSR = __webpack_exports__.builderPluginAdapterSSR;
182
+ exports.getSSRLazyCompilation = __webpack_exports__.getSSRLazyCompilation;
156
183
  for(var __rspack_i in __webpack_exports__)if (-1 === [
157
- "builderPluginAdapterSSR"
184
+ "builderPluginAdapterSSR",
185
+ "getSSRLazyCompilation"
158
186
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
159
187
  Object.defineProperty(exports, '__esModule', {
160
188
  value: true
@@ -6,9 +6,6 @@ var __webpack_modules__ = {
6
6
  "./adapterHtml" (module) {
7
7
  module.exports = require("./adapterHtml.js");
8
8
  },
9
- "./adapterLazyCompilation" (module) {
10
- module.exports = require("./adapterLazyCompilation.js");
11
- },
12
9
  "./adapterPrecompress" (module) {
13
10
  module.exports = require("./adapterPrecompress.js");
14
11
  },
@@ -74,21 +71,17 @@ var __webpack_exports__ = {};
74
71
  var __rspack_reexport = {};
75
72
  for(const __rspack_import_key in _adapterHtml__rspack_import_1)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_adapterHtml__rspack_import_1[__rspack_import_key];
76
73
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
77
- var _adapterLazyCompilation__rspack_import_2 = __webpack_require__("./adapterLazyCompilation");
78
- var __rspack_reexport = {};
79
- for(const __rspack_import_key in _adapterLazyCompilation__rspack_import_2)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_adapterLazyCompilation__rspack_import_2[__rspack_import_key];
80
- __webpack_require__.d(__webpack_exports__, __rspack_reexport);
81
- var _adapterPrecompress__rspack_import_3 = __webpack_require__("./adapterPrecompress");
74
+ var _adapterPrecompress__rspack_import_2 = __webpack_require__("./adapterPrecompress");
82
75
  var __rspack_reexport = {};
83
- for(const __rspack_import_key in _adapterPrecompress__rspack_import_3)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_adapterPrecompress__rspack_import_3[__rspack_import_key];
76
+ for(const __rspack_import_key in _adapterPrecompress__rspack_import_2)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_adapterPrecompress__rspack_import_2[__rspack_import_key];
84
77
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
85
- var _adapterSSR__rspack_import_4 = __webpack_require__("./adapterSSR");
78
+ var _adapterSSR__rspack_import_3 = __webpack_require__("./adapterSSR");
86
79
  var __rspack_reexport = {};
87
- for(const __rspack_import_key in _adapterSSR__rspack_import_4)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_adapterSSR__rspack_import_4[__rspack_import_key];
80
+ for(const __rspack_import_key in _adapterSSR__rspack_import_3)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_adapterSSR__rspack_import_3[__rspack_import_key];
88
81
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
89
- var _builderHooks__rspack_import_5 = __webpack_require__("./builderHooks");
82
+ var _builderHooks__rspack_import_4 = __webpack_require__("./builderHooks");
90
83
  var __rspack_reexport = {};
91
- for(const __rspack_import_key in _builderHooks__rspack_import_5)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_builderHooks__rspack_import_5[__rspack_import_key];
84
+ for(const __rspack_import_key in _builderHooks__rspack_import_4)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_builderHooks__rspack_import_4[__rspack_import_key];
92
85
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
93
86
  })();
94
87
  for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
@@ -1,8 +1,5 @@
1
1
  "use strict";
2
2
  var __webpack_modules__ = {
3
- "./CssExtractRuntimePlugin" (module) {
4
- module.exports = require("./CssExtractRuntimePlugin.js");
5
- },
6
3
  "./HtmlAsyncChunkPlugin" (module) {
7
4
  module.exports = require("./HtmlAsyncChunkPlugin.js");
8
5
  },
@@ -60,21 +57,17 @@ function __webpack_require__(moduleId) {
60
57
  var __webpack_exports__ = {};
61
58
  (()=>{
62
59
  __webpack_require__.r(__webpack_exports__);
63
- var _CssExtractRuntimePlugin__rspack_import_0 = __webpack_require__("./CssExtractRuntimePlugin");
64
- var __rspack_reexport = {};
65
- for(const __rspack_import_key in _CssExtractRuntimePlugin__rspack_import_0)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_CssExtractRuntimePlugin__rspack_import_0[__rspack_import_key];
66
- __webpack_require__.d(__webpack_exports__, __rspack_reexport);
67
- var _HtmlAsyncChunkPlugin__rspack_import_1 = __webpack_require__("./HtmlAsyncChunkPlugin");
60
+ var _HtmlAsyncChunkPlugin__rspack_import_0 = __webpack_require__("./HtmlAsyncChunkPlugin");
68
61
  var __rspack_reexport = {};
69
- for(const __rspack_import_key in _HtmlAsyncChunkPlugin__rspack_import_1)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_HtmlAsyncChunkPlugin__rspack_import_1[__rspack_import_key];
62
+ for(const __rspack_import_key in _HtmlAsyncChunkPlugin__rspack_import_0)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_HtmlAsyncChunkPlugin__rspack_import_0[__rspack_import_key];
70
63
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
71
- var _HtmlBottomTemplate__rspack_import_2 = __webpack_require__("./HtmlBottomTemplate");
64
+ var _HtmlBottomTemplate__rspack_import_1 = __webpack_require__("./HtmlBottomTemplate");
72
65
  var __rspack_reexport = {};
73
- for(const __rspack_import_key in _HtmlBottomTemplate__rspack_import_2)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_HtmlBottomTemplate__rspack_import_2[__rspack_import_key];
66
+ for(const __rspack_import_key in _HtmlBottomTemplate__rspack_import_1)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_HtmlBottomTemplate__rspack_import_1[__rspack_import_key];
74
67
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
75
- var _RouterPlugin__rspack_import_3 = __webpack_require__("./RouterPlugin");
68
+ var _RouterPlugin__rspack_import_2 = __webpack_require__("./RouterPlugin");
76
69
  var __rspack_reexport = {};
77
- for(const __rspack_import_key in _RouterPlugin__rspack_import_3)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_RouterPlugin__rspack_import_3[__rspack_import_key];
70
+ for(const __rspack_import_key in _RouterPlugin__rspack_import_2)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_RouterPlugin__rspack_import_2[__rspack_import_key];
78
71
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
79
72
  })();
80
73
  for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
@@ -29,10 +29,10 @@ var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
31
  aggregateEagerRouteComponentFiles: ()=>aggregateEagerRouteComponentFiles,
32
- buildRouteEagerLazyCompilationTest: ()=>buildRouteEagerLazyCompilationTest,
32
+ buildSSRLazyCompilationTest: ()=>buildSSRLazyCompilationTest,
33
33
  collectRouteComponentFiles: ()=>utils_namespaceObject.collectRouteComponentFiles,
34
34
  normalizeModulePath: ()=>utils_namespaceObject.normalizeModulePath,
35
- planRouteEagerLazyCompilation: ()=>planRouteEagerLazyCompilation
35
+ planSSRLazyCompilation: ()=>planSSRLazyCompilation
36
36
  });
37
37
  const utils_namespaceObject = require("@modern-js/utils");
38
38
  function aggregateEagerRouteComponentFiles(byEntry) {
@@ -47,7 +47,7 @@ function aggregateEagerRouteComponentFiles(byEntry) {
47
47
  unresolvedByEntry
48
48
  };
49
49
  }
50
- function buildRouteEagerLazyCompilationTest(eagerRouteFiles, userTest) {
50
+ function buildSSRLazyCompilationTest(eagerRouteFiles, userTest) {
51
51
  const userTestFn = 'function' == typeof userTest ? userTest : userTest instanceof RegExp ? (m)=>userTest.test(m.resource || '') : ()=>true;
52
52
  return (m)=>{
53
53
  const resource = m.resource;
@@ -56,7 +56,7 @@ function buildRouteEagerLazyCompilationTest(eagerRouteFiles, userTest) {
56
56
  return userTestFn(m);
57
57
  };
58
58
  }
59
- function planRouteEagerLazyCompilation(current, info) {
59
+ function planSSRLazyCompilation(current, info) {
60
60
  if (!current) return {
61
61
  apply: false
62
62
  };
@@ -73,21 +73,21 @@ function planRouteEagerLazyCompilation(current, info) {
73
73
  apply: true,
74
74
  lazyCompilation: {
75
75
  ...base,
76
- test: buildRouteEagerLazyCompilationTest(info.files, userTest)
76
+ test: buildSSRLazyCompilationTest(info.files, userTest)
77
77
  }
78
78
  };
79
79
  }
80
80
  exports.aggregateEagerRouteComponentFiles = __webpack_exports__.aggregateEagerRouteComponentFiles;
81
- exports.buildRouteEagerLazyCompilationTest = __webpack_exports__.buildRouteEagerLazyCompilationTest;
81
+ exports.buildSSRLazyCompilationTest = __webpack_exports__.buildSSRLazyCompilationTest;
82
82
  exports.collectRouteComponentFiles = __webpack_exports__.collectRouteComponentFiles;
83
83
  exports.normalizeModulePath = __webpack_exports__.normalizeModulePath;
84
- exports.planRouteEagerLazyCompilation = __webpack_exports__.planRouteEagerLazyCompilation;
84
+ exports.planSSRLazyCompilation = __webpack_exports__.planSSRLazyCompilation;
85
85
  for(var __rspack_i in __webpack_exports__)if (-1 === [
86
86
  "aggregateEagerRouteComponentFiles",
87
- "buildRouteEagerLazyCompilationTest",
87
+ "buildSSRLazyCompilationTest",
88
88
  "collectRouteComponentFiles",
89
89
  "normalizeModulePath",
90
- "planRouteEagerLazyCompilation"
90
+ "planSSRLazyCompilation"
91
91
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
92
92
  Object.defineProperty(exports, '__esModule', {
93
93
  value: true
@@ -65,7 +65,7 @@ function bundleDocs({ source, target, indexFile = DEFAULT_INDEX_FILE, excludedDi
65
65
  withFileTypes: true
66
66
  })){
67
67
  if (!entry.isFile()) continue;
68
- const from = external_node_path_default().join(entry.parentPath ?? entry.path, entry.name);
68
+ const from = external_node_path_default().join(entry.parentPath, entry.name);
69
69
  const rel = external_node_path_default().relative(source, from);
70
70
  if (!isBundled(rel)) continue;
71
71
  const to = external_node_path_default().join(target, rel);