@bleedingdev/modern-js-app-tools 3.5.0-ultramodern.10 → 3.5.0-ultramodern.101

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 (558) hide show
  1. package/bin/modern-bundle-docs.js +7 -0
  2. package/bin/modern.js +0 -0
  3. package/dist/cjs/builder/generator/createBuilderProviderConfig.js +5 -1
  4. package/dist/cjs/builder/generator/getBuilderEnvironments.js +20 -16
  5. package/dist/cjs/builder/shared/builderPlugins/adapterPrecompress.js +13 -4
  6. package/dist/cjs/builder/shared/builderPlugins/adapterSSR.js +14 -11
  7. package/dist/cjs/builder/shared/bundlerPlugins/CssExtractRuntimePlugin.js +72 -0
  8. package/dist/cjs/builder/shared/bundlerPlugins/RouterPlugin.js +28 -11
  9. package/dist/cjs/builder/shared/bundlerPlugins/index.js +13 -6
  10. package/dist/cjs/builder/shared/lazyCompilation.js +2 -10
  11. package/dist/cjs/bundleDocs.js +114 -0
  12. package/dist/cjs/commands/build.js +2 -1
  13. package/dist/cjs/commands/deploy.js +4 -2
  14. package/dist/cjs/commands/index.js +0 -8
  15. package/dist/cjs/config/build-environment.js +268 -0
  16. package/dist/cjs/config/default.js +2 -0
  17. package/dist/cjs/config/index.js +11 -4
  18. package/dist/cjs/config/public.js +46 -0
  19. package/dist/cjs/index.js +93 -75
  20. package/dist/cjs/plugins/analyze/getServerRoutes.js +19 -0
  21. package/dist/cjs/plugins/analyze/index.js +22 -14
  22. package/dist/cjs/plugins/analyze/utils.js +3 -2
  23. package/dist/cjs/plugins/backend-federation/codegen.js +255 -0
  24. package/dist/cjs/plugins/backend-federation/config.js +204 -0
  25. package/dist/cjs/plugins/backend-federation/emit.js +148 -0
  26. package/dist/cjs/plugins/backendFederationBuild.js +53 -0
  27. package/dist/cjs/plugins/deploy/index.js +4 -4
  28. package/dist/cjs/plugins/deploy/platforms/cloudflare/artifacts.js +127 -0
  29. package/dist/cjs/plugins/deploy/platforms/cloudflare/constants.js +141 -0
  30. package/dist/cjs/plugins/deploy/platforms/cloudflare/delivery-unit.js +139 -0
  31. package/dist/cjs/plugins/deploy/platforms/cloudflare/i18n-worker.js +135 -0
  32. package/dist/cjs/plugins/deploy/platforms/cloudflare/index.js +150 -0
  33. package/dist/cjs/plugins/deploy/platforms/cloudflare/security-policies.js +205 -0
  34. package/dist/cjs/plugins/deploy/platforms/cloudflare/types.js +18 -0
  35. package/dist/cjs/plugins/deploy/platforms/cloudflare/utils.js +66 -0
  36. package/dist/cjs/plugins/deploy/platforms/cloudflare/worker-manifest.js +208 -0
  37. package/dist/cjs/plugins/deploy/platforms/cloudflare/wrangler-config.js +204 -0
  38. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-contract.js +108 -0
  39. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-plan.js +93 -0
  40. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/identity.js +83 -0
  41. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/index.js +188 -0
  42. package/dist/cjs/{baseline.js → plugins/deploy/platforms/cloudflare-output-verifier/issues.js} +19 -10
  43. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/manifest.js +89 -0
  44. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/mutation-policy.js +151 -0
  45. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.js +302 -0
  46. package/dist/cjs/plugins/deploy/platforms/node.js +20 -2
  47. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +250 -0
  48. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.002-assets-routes.mjs +191 -0
  49. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.003-i18n-locales.mjs +514 -0
  50. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.004-rendering-css.mjs +1012 -0
  51. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.005-worker-dispatch.mjs +363 -0
  52. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.006-fetch-handler.mjs +93 -0
  53. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-worker-fs-promises.mjs +8 -4
  54. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-worker-loadable-server.mjs +251 -155
  55. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-worker-path.mjs +78 -39
  56. package/dist/cjs/plugins/deploy/platforms/templates/netlify-entry.cjs +62 -41
  57. package/dist/cjs/plugins/deploy/platforms/templates/netlify-entry.mjs +63 -41
  58. package/dist/cjs/plugins/deploy/platforms/templates/node-entry.cjs +52 -35
  59. package/dist/cjs/plugins/deploy/platforms/templates/node-entry.mjs +53 -35
  60. package/dist/cjs/plugins/deploy/platforms/templates/vercel-entry.cjs +61 -41
  61. package/dist/cjs/plugins/deploy/platforms/templates/vercel-entry.mjs +61 -40
  62. package/dist/cjs/plugins/deploy/utils/npmAliases.js +226 -0
  63. package/dist/cjs/plugins/initialize/index.js +4 -3
  64. package/dist/cjs/plugins/serverBuild.js +3 -2
  65. package/dist/cjs/plugins/ultramodernReleaseEnvelope.js +100 -0
  66. package/dist/cjs/presetUltramodern.js +33 -2
  67. package/dist/cjs/ultramodern-release-envelope/canonical.js +68 -0
  68. package/dist/cjs/ultramodern-release-envelope/framework-output.js +597 -0
  69. package/dist/cjs/ultramodern-release-envelope/index.js +399 -0
  70. package/dist/cjs/ultramodern-release-envelope/types.js +51 -0
  71. package/dist/cjs/ultramodern-release-identity.js +110 -0
  72. package/dist/esm/builder/generator/createBuilderProviderConfig.mjs +5 -1
  73. package/dist/esm/builder/generator/getBuilderEnvironments.mjs +19 -15
  74. package/dist/esm/builder/shared/builderPlugins/adapterPrecompress.mjs +13 -4
  75. package/dist/esm/builder/shared/builderPlugins/adapterSSR.mjs +15 -12
  76. package/dist/esm/builder/shared/bundlerPlugins/CssExtractRuntimePlugin.mjs +30 -0
  77. package/dist/esm/builder/shared/bundlerPlugins/RouterPlugin.mjs +24 -10
  78. package/dist/esm/builder/shared/bundlerPlugins/index.mjs +1 -0
  79. package/dist/esm/builder/shared/lazyCompilation.mjs +1 -3
  80. package/dist/esm/bundleDocs.mjs +62 -0
  81. package/dist/esm/commands/build.mjs +2 -1
  82. package/dist/esm/commands/deploy.mjs +4 -2
  83. package/dist/esm/commands/index.mjs +0 -5
  84. package/dist/esm/config/build-environment.mjs +224 -0
  85. package/dist/esm/config/default.mjs +2 -0
  86. package/dist/esm/config/index.mjs +1 -0
  87. package/dist/esm/config/public.mjs +1 -0
  88. package/dist/esm/index.mjs +20 -5
  89. package/dist/esm/plugins/analyze/getHtmlTemplate.mjs +2 -2
  90. package/dist/esm/plugins/analyze/getServerRoutes.mjs +17 -1
  91. package/dist/esm/plugins/analyze/index.mjs +22 -14
  92. package/dist/esm/plugins/analyze/isDefaultExportFunction.mjs +2 -2
  93. package/dist/esm/plugins/analyze/utils.mjs +3 -2
  94. package/dist/esm/plugins/backend-federation/codegen.mjs +204 -0
  95. package/dist/esm/plugins/backend-federation/config.mjs +128 -0
  96. package/dist/esm/plugins/backend-federation/emit.mjs +97 -0
  97. package/dist/esm/plugins/backendFederationBuild.mjs +1 -0
  98. package/dist/esm/plugins/deploy/index.mjs +1 -1
  99. package/dist/esm/plugins/deploy/platforms/cloudflare/artifacts.mjs +64 -0
  100. package/dist/esm/plugins/deploy/platforms/cloudflare/constants.mjs +34 -0
  101. package/dist/esm/plugins/deploy/platforms/cloudflare/delivery-unit.mjs +88 -0
  102. package/dist/esm/plugins/deploy/platforms/cloudflare/i18n-worker.mjs +97 -0
  103. package/dist/esm/plugins/deploy/platforms/cloudflare/index.mjs +102 -0
  104. package/dist/esm/plugins/deploy/platforms/cloudflare/security-policies.mjs +167 -0
  105. package/dist/esm/plugins/deploy/platforms/cloudflare/types.mjs +0 -0
  106. package/dist/esm/plugins/deploy/platforms/cloudflare/utils.mjs +12 -0
  107. package/dist/esm/plugins/deploy/platforms/cloudflare/worker-manifest.mjs +148 -0
  108. package/dist/esm/plugins/deploy/platforms/cloudflare/wrangler-config.mjs +150 -0
  109. package/dist/esm/plugins/deploy/platforms/cloudflare-output-contract.mjs +31 -0
  110. package/dist/esm/plugins/deploy/platforms/cloudflare-output-plan.mjs +45 -0
  111. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/identity.mjs +45 -0
  112. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/index.mjs +133 -0
  113. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/issues.mjs +10 -0
  114. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/manifest.mjs +51 -0
  115. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/mutation-policy.mjs +99 -0
  116. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.mjs +238 -0
  117. package/dist/esm/plugins/deploy/platforms/node.mjs +20 -2
  118. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +250 -0
  119. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.002-assets-routes.mjs +191 -0
  120. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.003-i18n-locales.mjs +514 -0
  121. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.004-rendering-css.mjs +1012 -0
  122. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.005-worker-dispatch.mjs +363 -0
  123. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.006-fetch-handler.mjs +93 -0
  124. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-worker-fs-promises.mjs +8 -4
  125. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-worker-loadable-server.mjs +251 -155
  126. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-worker-path.mjs +78 -39
  127. package/dist/esm/plugins/deploy/platforms/templates/netlify-entry.cjs +62 -41
  128. package/dist/esm/plugins/deploy/platforms/templates/netlify-entry.mjs +63 -41
  129. package/dist/esm/plugins/deploy/platforms/templates/node-entry.cjs +52 -35
  130. package/dist/esm/plugins/deploy/platforms/templates/node-entry.mjs +53 -35
  131. package/dist/esm/plugins/deploy/platforms/templates/vercel-entry.cjs +61 -41
  132. package/dist/esm/plugins/deploy/platforms/templates/vercel-entry.mjs +61 -40
  133. package/dist/esm/plugins/deploy/utils/npmAliases.mjs +174 -0
  134. package/dist/esm/plugins/initialize/index.mjs +4 -3
  135. package/dist/esm/plugins/serverBuild.mjs +3 -2
  136. package/dist/esm/plugins/ultramodernReleaseEnvelope.mjs +52 -0
  137. package/dist/esm/presetUltramodern.mjs +33 -2
  138. package/dist/esm/ultramodern-release-envelope/canonical.mjs +21 -0
  139. package/dist/esm/ultramodern-release-envelope/framework-output.mjs +524 -0
  140. package/dist/esm/ultramodern-release-envelope/index.mjs +335 -0
  141. package/dist/esm/ultramodern-release-envelope/types.mjs +7 -0
  142. package/dist/esm/ultramodern-release-identity.mjs +66 -0
  143. package/dist/esm-node/builder/generator/createBuilderProviderConfig.mjs +5 -1
  144. package/dist/esm-node/builder/generator/getBuilderEnvironments.mjs +19 -15
  145. package/dist/esm-node/builder/shared/builderPlugins/adapterPrecompress.mjs +13 -4
  146. package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.mjs +15 -12
  147. package/dist/esm-node/builder/shared/bundlerPlugins/CssExtractRuntimePlugin.mjs +31 -0
  148. package/dist/esm-node/builder/shared/bundlerPlugins/RouterPlugin.mjs +24 -10
  149. package/dist/esm-node/builder/shared/bundlerPlugins/index.mjs +1 -0
  150. package/dist/esm-node/builder/shared/lazyCompilation.mjs +1 -3
  151. package/dist/esm-node/bundleDocs.mjs +63 -0
  152. package/dist/esm-node/commands/build.mjs +2 -1
  153. package/dist/esm-node/commands/deploy.mjs +4 -2
  154. package/dist/esm-node/commands/index.mjs +0 -5
  155. package/dist/esm-node/config/build-environment.mjs +225 -0
  156. package/dist/esm-node/config/default.mjs +2 -0
  157. package/dist/esm-node/config/index.mjs +1 -0
  158. package/dist/esm-node/config/public.mjs +2 -0
  159. package/dist/esm-node/index.mjs +20 -5
  160. package/dist/esm-node/plugins/analyze/getHtmlTemplate.mjs +2 -2
  161. package/dist/esm-node/plugins/analyze/getServerRoutes.mjs +17 -1
  162. package/dist/esm-node/plugins/analyze/index.mjs +22 -14
  163. package/dist/esm-node/plugins/analyze/isDefaultExportFunction.mjs +2 -2
  164. package/dist/esm-node/plugins/analyze/utils.mjs +3 -2
  165. package/dist/esm-node/plugins/backend-federation/codegen.mjs +205 -0
  166. package/dist/esm-node/plugins/backend-federation/config.mjs +129 -0
  167. package/dist/esm-node/plugins/backend-federation/emit.mjs +98 -0
  168. package/dist/esm-node/plugins/backendFederationBuild.mjs +2 -0
  169. package/dist/esm-node/plugins/deploy/index.mjs +1 -1
  170. package/dist/esm-node/plugins/deploy/platforms/cloudflare/artifacts.mjs +65 -0
  171. package/dist/esm-node/plugins/deploy/platforms/cloudflare/constants.mjs +35 -0
  172. package/dist/esm-node/plugins/deploy/platforms/cloudflare/delivery-unit.mjs +89 -0
  173. package/dist/esm-node/plugins/deploy/platforms/cloudflare/i18n-worker.mjs +98 -0
  174. package/dist/esm-node/plugins/deploy/platforms/cloudflare/index.mjs +103 -0
  175. package/dist/esm-node/plugins/deploy/platforms/cloudflare/security-policies.mjs +168 -0
  176. package/dist/esm-node/plugins/deploy/platforms/cloudflare/types.mjs +1 -0
  177. package/dist/esm-node/plugins/deploy/platforms/cloudflare/utils.mjs +13 -0
  178. package/dist/esm-node/plugins/deploy/platforms/cloudflare/worker-manifest.mjs +149 -0
  179. package/dist/esm-node/plugins/deploy/platforms/cloudflare/wrangler-config.mjs +151 -0
  180. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-contract.mjs +32 -0
  181. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-plan.mjs +46 -0
  182. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/identity.mjs +46 -0
  183. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/index.mjs +134 -0
  184. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/issues.mjs +11 -0
  185. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/manifest.mjs +52 -0
  186. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/mutation-policy.mjs +100 -0
  187. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.mjs +239 -0
  188. package/dist/esm-node/plugins/deploy/platforms/node.mjs +20 -2
  189. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +250 -0
  190. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.002-assets-routes.mjs +191 -0
  191. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.003-i18n-locales.mjs +514 -0
  192. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.004-rendering-css.mjs +1012 -0
  193. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.005-worker-dispatch.mjs +363 -0
  194. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.006-fetch-handler.mjs +93 -0
  195. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-worker-fs-promises.mjs +8 -4
  196. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-worker-loadable-server.mjs +251 -155
  197. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-worker-path.mjs +78 -39
  198. package/dist/esm-node/plugins/deploy/platforms/templates/netlify-entry.cjs +62 -41
  199. package/dist/esm-node/plugins/deploy/platforms/templates/netlify-entry.mjs +63 -41
  200. package/dist/esm-node/plugins/deploy/platforms/templates/node-entry.cjs +52 -35
  201. package/dist/esm-node/plugins/deploy/platforms/templates/node-entry.mjs +53 -35
  202. package/dist/esm-node/plugins/deploy/platforms/templates/vercel-entry.cjs +61 -41
  203. package/dist/esm-node/plugins/deploy/platforms/templates/vercel-entry.mjs +61 -40
  204. package/dist/esm-node/plugins/deploy/utils/npmAliases.mjs +175 -0
  205. package/dist/esm-node/plugins/initialize/index.mjs +4 -3
  206. package/dist/esm-node/plugins/serverBuild.mjs +3 -2
  207. package/dist/esm-node/plugins/ultramodernReleaseEnvelope.mjs +53 -0
  208. package/dist/esm-node/presetUltramodern.mjs +33 -2
  209. package/dist/esm-node/ultramodern-release-envelope/canonical.mjs +22 -0
  210. package/dist/esm-node/ultramodern-release-envelope/framework-output.mjs +525 -0
  211. package/dist/esm-node/ultramodern-release-envelope/index.mjs +336 -0
  212. package/dist/esm-node/ultramodern-release-envelope/types.mjs +8 -0
  213. package/dist/esm-node/ultramodern-release-identity.mjs +67 -0
  214. package/dist/types/builder/generator/createCopyPattern.d.ts +7 -5
  215. package/dist/types/builder/shared/bundlerPlugins/CssExtractRuntimePlugin.d.ts +6 -0
  216. package/dist/types/builder/shared/bundlerPlugins/RouterPlugin.d.ts +1 -0
  217. package/dist/types/builder/shared/bundlerPlugins/index.d.ts +1 -0
  218. package/dist/types/builder/shared/lazyCompilation.d.ts +2 -4
  219. package/dist/types/bundleDocs.d.ts +20 -0
  220. package/dist/types/commands/deploy.d.ts +2 -1
  221. package/dist/types/commands/index.d.ts +0 -1
  222. package/dist/types/config/build-environment.d.ts +22 -0
  223. package/dist/types/config/index.d.ts +1 -0
  224. package/dist/types/config/public.d.ts +2 -0
  225. package/dist/types/index.d.ts +4 -3
  226. package/dist/types/plugins/analyze/getServerRoutes.d.ts +1 -0
  227. package/dist/types/plugins/analyze/utils.d.ts +1 -1
  228. package/dist/types/plugins/backend-federation/codegen.d.ts +83 -0
  229. package/dist/types/plugins/backend-federation/config.d.ts +103 -0
  230. package/dist/types/plugins/backend-federation/emit.d.ts +13 -0
  231. package/dist/types/plugins/backendFederationBuild.d.ts +2 -0
  232. package/dist/types/plugins/deploy/platforms/cloudflare/artifacts.d.ts +15 -0
  233. package/dist/types/plugins/deploy/platforms/cloudflare/constants.d.ts +24 -0
  234. package/dist/types/plugins/deploy/platforms/cloudflare/delivery-unit.d.ts +23 -0
  235. package/dist/types/plugins/deploy/platforms/cloudflare/i18n-worker.d.ts +22 -0
  236. package/dist/types/plugins/deploy/platforms/{cloudflare.d.ts → cloudflare/index.d.ts} +1 -1
  237. package/dist/types/plugins/deploy/platforms/cloudflare/security-policies.d.ts +51 -0
  238. package/dist/types/plugins/deploy/platforms/cloudflare/types.d.ts +5 -0
  239. package/dist/types/plugins/deploy/platforms/cloudflare/utils.d.ts +6 -0
  240. package/dist/types/plugins/deploy/platforms/cloudflare/worker-manifest.d.ts +122 -0
  241. package/dist/types/plugins/deploy/platforms/cloudflare/wrangler-config.d.ts +46 -0
  242. package/dist/types/plugins/deploy/platforms/cloudflare-output-contract.d.ts +14 -0
  243. package/dist/types/plugins/deploy/platforms/cloudflare-output-plan.d.ts +34 -0
  244. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/identity.d.ts +4 -0
  245. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/index.d.ts +18 -0
  246. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/issues.d.ts +14 -0
  247. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/manifest.d.ts +2 -0
  248. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/mutation-policy.d.ts +14 -0
  249. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.d.ts +20 -0
  250. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.d.mts +1 -0
  251. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.002-assets-routes.d.mts +1 -0
  252. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.003-i18n-locales.d.mts +1 -0
  253. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.004-rendering-css.d.mts +1 -0
  254. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.005-worker-dispatch.d.mts +1 -0
  255. package/dist/types/plugins/deploy/utils/npmAliases.d.ts +14 -0
  256. package/dist/types/plugins/ultramodernReleaseEnvelope.d.ts +3 -0
  257. package/dist/types/presetUltramodern.d.ts +10 -0
  258. package/dist/types/run/index.d.ts +1 -1
  259. package/dist/types/types/config/cloudflareDeploy.d.ts +41 -0
  260. package/dist/types/types/config/deploy.d.ts +15 -2
  261. package/dist/types/types/config/dev.d.ts +6 -0
  262. package/dist/types/ultramodern-release-envelope/canonical.d.ts +5 -0
  263. package/dist/types/ultramodern-release-envelope/framework-output.d.ts +31 -0
  264. package/dist/types/ultramodern-release-envelope/index.d.ts +6 -0
  265. package/dist/types/ultramodern-release-envelope/types.d.ts +62 -0
  266. package/dist/types/ultramodern-release-identity.d.ts +16 -0
  267. package/docs/apis/app/commands.md +231 -0
  268. package/docs/apis/app/hooks/api/lambda.md +9 -0
  269. package/docs/apis/app/hooks/config/favicon.md +24 -0
  270. package/docs/apis/app/hooks/config/html.md +5 -0
  271. package/docs/apis/app/hooks/config/icon.md +24 -0
  272. package/docs/apis/app/hooks/config/mock.md +6 -0
  273. package/docs/apis/app/hooks/config/public.md +26 -0
  274. package/docs/apis/app/hooks/config/upload.md +50 -0
  275. package/docs/apis/app/hooks/modern-config.md +5 -0
  276. package/docs/apis/app/hooks/server/server.md +5 -0
  277. package/docs/apis/app/hooks/shared.md +3 -0
  278. package/docs/apis/app/hooks/src/app.md +30 -0
  279. package/docs/apis/app/hooks/src/entry.md +34 -0
  280. package/docs/apis/app/hooks/src/entry.server.md +51 -0
  281. package/docs/apis/app/hooks/src/modern.runtime.md +5 -0
  282. package/docs/apis/app/hooks/src/routes.md +86 -0
  283. package/docs/apis/app/hooks/src/server.md +3 -0
  284. package/docs/apis/app/runtime/bff/use-backend-context.md +27 -0
  285. package/docs/apis/app/runtime/core/create-root.md +19 -0
  286. package/docs/apis/app/runtime/core/render.md +39 -0
  287. package/docs/apis/app/runtime/core/runtime-context.md +156 -0
  288. package/docs/apis/app/runtime/router/router.md +283 -0
  289. package/docs/apis/app/runtime/ssr/no-ssr.md +35 -0
  290. package/docs/apis/app/runtime/ssr/renderStreaming.md +67 -0
  291. package/docs/apis/app/runtime/ssr/renderString.md +60 -0
  292. package/docs/apis/app/runtime/ssr/requestHandler.md +44 -0
  293. package/docs/apis/app/runtime/utility/css-in-js.md +40 -0
  294. package/docs/apis/app/runtime/utility/head.md +35 -0
  295. package/docs/apis/app/runtime/utility/loadable.md +82 -0
  296. package/docs/community/blog/2022-0708-updates.md +91 -0
  297. package/docs/community/blog/2022-0910-updates.md +76 -0
  298. package/docs/community/blog/overview.md +63 -0
  299. package/docs/community/blog/v2-release-note.md +238 -0
  300. package/docs/community/blog/v3-release-note.md +622 -0
  301. package/docs/community/contributing-guide.md +252 -0
  302. package/docs/community/releases.md +23 -0
  303. package/docs/community/showcase.md +24 -0
  304. package/docs/community/team.md +14 -0
  305. package/docs/configure/app/bff/cross-project.md +20 -0
  306. package/docs/configure/app/bff/effect.md +315 -0
  307. package/docs/configure/app/bff/prefix.md +29 -0
  308. package/docs/configure/app/bff/runtime-framework.md +26 -0
  309. package/docs/configure/app/builder-plugins.md +66 -0
  310. package/docs/configure/app/dev/asset-prefix.md +13 -0
  311. package/docs/configure/app/dev/before-start-url.md +17 -0
  312. package/docs/configure/app/dev/client.md +41 -0
  313. package/docs/configure/app/dev/hmr.md +10 -0
  314. package/docs/configure/app/dev/host.md +18 -0
  315. package/docs/configure/app/dev/https.md +77 -0
  316. package/docs/configure/app/dev/lazy-compilation.md +39 -0
  317. package/docs/configure/app/dev/live-reload.md +10 -0
  318. package/docs/configure/app/dev/mock-dir.md +31 -0
  319. package/docs/configure/app/dev/progress-bar.md +19 -0
  320. package/docs/configure/app/dev/server.md +124 -0
  321. package/docs/configure/app/dev/setup-middlewares.md +32 -0
  322. package/docs/configure/app/dev/start-url.md +48 -0
  323. package/docs/configure/app/dev/watch-files.md +27 -0
  324. package/docs/configure/app/dev/write-to-disk.md +10 -0
  325. package/docs/configure/app/experiments/source-build.md +31 -0
  326. package/docs/configure/app/html/app-icon.md +28 -0
  327. package/docs/configure/app/html/crossorigin.md +10 -0
  328. package/docs/configure/app/html/favicon.md +16 -0
  329. package/docs/configure/app/html/inject.md +10 -0
  330. package/docs/configure/app/html/meta.md +24 -0
  331. package/docs/configure/app/html/mount-id.md +10 -0
  332. package/docs/configure/app/html/output-structure.md +10 -0
  333. package/docs/configure/app/html/script-loading.md +10 -0
  334. package/docs/configure/app/html/tags.md +15 -0
  335. package/docs/configure/app/html/template-parameters.md +33 -0
  336. package/docs/configure/app/html/template.md +10 -0
  337. package/docs/configure/app/html/title.md +18 -0
  338. package/docs/configure/app/output/asset-prefix.md +11 -0
  339. package/docs/configure/app/output/assets-retry.md +77 -0
  340. package/docs/configure/app/output/charset.md +10 -0
  341. package/docs/configure/app/output/clean-dist-path.md +16 -0
  342. package/docs/configure/app/output/convert-to-rem.md +79 -0
  343. package/docs/configure/app/output/copy.md +10 -0
  344. package/docs/configure/app/output/css-modules.md +48 -0
  345. package/docs/configure/app/output/data-uri-limit.md +26 -0
  346. package/docs/configure/app/output/disable-css-module-extension.md +55 -0
  347. package/docs/configure/app/output/disable-inline-runtime-chunk.md +41 -0
  348. package/docs/configure/app/output/disable-svgr.md +18 -0
  349. package/docs/configure/app/output/disable-ts-checker.md +49 -0
  350. package/docs/configure/app/output/dist-path.md +43 -0
  351. package/docs/configure/app/output/enable-asset-manifest.md +36 -0
  352. package/docs/configure/app/output/enable-css-module-tsdeclaration.md +28 -0
  353. package/docs/configure/app/output/enable-inline-route-manifests.md +16 -0
  354. package/docs/configure/app/output/externals.md +20 -0
  355. package/docs/configure/app/output/filename-hash.md +10 -0
  356. package/docs/configure/app/output/filename.md +55 -0
  357. package/docs/configure/app/output/inject-styles.md +10 -0
  358. package/docs/configure/app/output/inline-scripts.md +29 -0
  359. package/docs/configure/app/output/inline-styles.md +29 -0
  360. package/docs/configure/app/output/legal-comments.md +18 -0
  361. package/docs/configure/app/output/minify.md +22 -0
  362. package/docs/configure/app/output/override-browserslist.md +22 -0
  363. package/docs/configure/app/output/polyfill.md +12 -0
  364. package/docs/configure/app/output/source-map.md +30 -0
  365. package/docs/configure/app/output/split-route-chunks.md +16 -0
  366. package/docs/configure/app/output/ssg.md +81 -0
  367. package/docs/configure/app/output/ssgByEntries.md +90 -0
  368. package/docs/configure/app/output/svg-default-export.md +30 -0
  369. package/docs/configure/app/output/temp-dir.md +20 -0
  370. package/docs/configure/app/performance/build-cache.md +44 -0
  371. package/docs/configure/app/performance/chunk-split.md +40 -0
  372. package/docs/configure/app/performance/dns-prefetch.md +15 -0
  373. package/docs/configure/app/performance/preconnect.md +16 -0
  374. package/docs/configure/app/performance/prefetch.md +21 -0
  375. package/docs/configure/app/performance/preload.md +23 -0
  376. package/docs/configure/app/performance/print-file-size.md +40 -0
  377. package/docs/configure/app/performance/profile.md +10 -0
  378. package/docs/configure/app/performance/remove-console.md +10 -0
  379. package/docs/configure/app/performance/remove-moment-locale.md +10 -0
  380. package/docs/configure/app/performance/rsdoctor.md +38 -0
  381. package/docs/configure/app/plugins.md +59 -0
  382. package/docs/configure/app/resolve/alias-strategy.md +10 -0
  383. package/docs/configure/app/resolve/alias.md +9 -0
  384. package/docs/configure/app/resolve/condition-names.md +13 -0
  385. package/docs/configure/app/resolve/dedupe.md +9 -0
  386. package/docs/configure/app/resolve/extensions.md +13 -0
  387. package/docs/configure/app/runtime/0-intro.md +58 -0
  388. package/docs/configure/app/runtime/plugins.md +58 -0
  389. package/docs/configure/app/runtime/router.md +35 -0
  390. package/docs/configure/app/security/check-syntax.md +69 -0
  391. package/docs/configure/app/security/nonce.md +15 -0
  392. package/docs/configure/app/security/sri.md +20 -0
  393. package/docs/configure/app/server/base-url.md +26 -0
  394. package/docs/configure/app/server/port.md +18 -0
  395. package/docs/configure/app/server/public-routes.md +22 -0
  396. package/docs/configure/app/server/routes.md +86 -0
  397. package/docs/configure/app/server/rsc.md +26 -0
  398. package/docs/configure/app/server/ssr-by-entries.md +25 -0
  399. package/docs/configure/app/server/ssr.md +80 -0
  400. package/docs/configure/app/server/tsconfig-path.md +59 -0
  401. package/docs/configure/app/source/alias-strategy.md +14 -0
  402. package/docs/configure/app/source/alias.md +23 -0
  403. package/docs/configure/app/source/config-dir.md +20 -0
  404. package/docs/configure/app/source/decorators.md +25 -0
  405. package/docs/configure/app/source/define.md +16 -0
  406. package/docs/configure/app/source/disable-default-entries.md +28 -0
  407. package/docs/configure/app/source/enable-async-entry.md +54 -0
  408. package/docs/configure/app/source/enable-async-pre-entry.md +26 -0
  409. package/docs/configure/app/source/entries-dir.md +35 -0
  410. package/docs/configure/app/source/entries.md +179 -0
  411. package/docs/configure/app/source/exclude.md +10 -0
  412. package/docs/configure/app/source/global-vars.md +106 -0
  413. package/docs/configure/app/source/include.md +36 -0
  414. package/docs/configure/app/source/main-entry-name.md +24 -0
  415. package/docs/configure/app/source/pre-entry.md +10 -0
  416. package/docs/configure/app/source/react-compiler.md +68 -0
  417. package/docs/configure/app/source/transform-import.md +27 -0
  418. package/docs/configure/app/split-chunks.md +17 -0
  419. package/docs/configure/app/tools/autoprefixer.md +44 -0
  420. package/docs/configure/app/tools/bundler-chain.md +26 -0
  421. package/docs/configure/app/tools/css-extract.md +33 -0
  422. package/docs/configure/app/tools/css-loader.md +17 -0
  423. package/docs/configure/app/tools/dev-server.md +113 -0
  424. package/docs/configure/app/tools/html-plugin.md +41 -0
  425. package/docs/configure/app/tools/less.md +81 -0
  426. package/docs/configure/app/tools/lightningcss-loader.md +35 -0
  427. package/docs/configure/app/tools/minify-css.md +53 -0
  428. package/docs/configure/app/tools/postcss.md +34 -0
  429. package/docs/configure/app/tools/rspack.md +10 -0
  430. package/docs/configure/app/tools/sass.md +78 -0
  431. package/docs/configure/app/tools/style-loader.md +10 -0
  432. package/docs/configure/app/tools/swc.md +65 -0
  433. package/docs/configure/app/tools/ts-checker.md +116 -0
  434. package/docs/configure/app/usage.md +276 -0
  435. package/docs/guides/advanced-features/bff/cross-project.md +109 -0
  436. package/docs/guides/advanced-features/bff/data-platform.md +116 -0
  437. package/docs/guides/advanced-features/bff/extend-server.md +120 -0
  438. package/docs/guides/advanced-features/bff/frameworks.md +243 -0
  439. package/docs/guides/advanced-features/bff/function.md +318 -0
  440. package/docs/guides/advanced-features/bff/operators.md +554 -0
  441. package/docs/guides/advanced-features/bff/sdk.md +116 -0
  442. package/docs/guides/advanced-features/bff/upload.md +101 -0
  443. package/docs/guides/advanced-features/bff.md +18 -0
  444. package/docs/guides/advanced-features/build-performance.md +130 -0
  445. package/docs/guides/advanced-features/compatibility.md +120 -0
  446. package/docs/guides/advanced-features/international/advanced.md +128 -0
  447. package/docs/guides/advanced-features/international/api.md +267 -0
  448. package/docs/guides/advanced-features/international/best-practices.md +286 -0
  449. package/docs/guides/advanced-features/international/configuration.md +228 -0
  450. package/docs/guides/advanced-features/international/locale-detection.md +126 -0
  451. package/docs/guides/advanced-features/international/quick-start.md +128 -0
  452. package/docs/guides/advanced-features/international/resource-loading.md +154 -0
  453. package/docs/guides/advanced-features/international/routing.md +173 -0
  454. package/docs/guides/advanced-features/international.md +27 -0
  455. package/docs/guides/advanced-features/low-level.md +46 -0
  456. package/docs/guides/advanced-features/page-performance/code-split.md +77 -0
  457. package/docs/guides/advanced-features/page-performance/inline-assets.md +159 -0
  458. package/docs/guides/advanced-features/page-performance/optimize-bundle.md +97 -0
  459. package/docs/guides/advanced-features/page-performance/react-compiler.md +51 -0
  460. package/docs/guides/advanced-features/server-monitor/logger.md +41 -0
  461. package/docs/guides/advanced-features/server-monitor/metrics.md +58 -0
  462. package/docs/guides/advanced-features/server-monitor/monitors.md +242 -0
  463. package/docs/guides/advanced-features/source-build.md +164 -0
  464. package/docs/guides/advanced-features/web-server.md +288 -0
  465. package/docs/guides/basic-features/alias.md +102 -0
  466. package/docs/guides/basic-features/css/css-in-js.md +72 -0
  467. package/docs/guides/basic-features/css/css-modules.md +212 -0
  468. package/docs/guides/basic-features/css/css.md +27 -0
  469. package/docs/guides/basic-features/css/tailwindcss.md +27 -0
  470. package/docs/guides/basic-features/data/data-cache.md +510 -0
  471. package/docs/guides/basic-features/data/data-fetch.md +415 -0
  472. package/docs/guides/basic-features/data/data-write.md +227 -0
  473. package/docs/guides/basic-features/debug/mock.md +109 -0
  474. package/docs/guides/basic-features/debug/proxy.md +21 -0
  475. package/docs/guides/basic-features/debug/rsdoctor.md +47 -0
  476. package/docs/guides/basic-features/debug/using-storybook.md +112 -0
  477. package/docs/guides/basic-features/deploy.md +458 -0
  478. package/docs/guides/basic-features/env-vars.md +177 -0
  479. package/docs/guides/basic-features/html.md +255 -0
  480. package/docs/guides/basic-features/output-files.md +141 -0
  481. package/docs/guides/basic-features/render/before-render.md +108 -0
  482. package/docs/guides/basic-features/render/overview.md +47 -0
  483. package/docs/guides/basic-features/render/rsc.md +525 -0
  484. package/docs/guides/basic-features/render/ssg.md +228 -0
  485. package/docs/guides/basic-features/render/ssr-cache.md +201 -0
  486. package/docs/guides/basic-features/render/ssr.md +321 -0
  487. package/docs/guides/basic-features/render/streaming-ssr.md +264 -0
  488. package/docs/guides/basic-features/routes/config-routes.md +426 -0
  489. package/docs/guides/basic-features/routes/routes.md +524 -0
  490. package/docs/guides/basic-features/static-assets/json-files.md +120 -0
  491. package/docs/guides/basic-features/static-assets/svg-assets.md +168 -0
  492. package/docs/guides/basic-features/static-assets/wasm-assets.md +62 -0
  493. package/docs/guides/basic-features/static-assets.md +160 -0
  494. package/docs/guides/basic-features/testing/playwright.md +120 -0
  495. package/docs/guides/basic-features/testing/rstest.md +251 -0
  496. package/docs/guides/concept/builder.md +37 -0
  497. package/docs/guides/concept/entries.md +319 -0
  498. package/docs/guides/concept/server.md +35 -0
  499. package/docs/guides/get-started/ai-coding-agents.md +58 -0
  500. package/docs/guides/get-started/glossary.md +63 -0
  501. package/docs/guides/get-started/introduction.md +40 -0
  502. package/docs/guides/get-started/quick-start.md +269 -0
  503. package/docs/guides/get-started/tech-stack.md +91 -0
  504. package/docs/guides/get-started/ultramodern.md +428 -0
  505. package/docs/guides/get-started/upgrade.md +123 -0
  506. package/docs/guides/topic-detail/module-federation/application.md +116 -0
  507. package/docs/guides/topic-detail/module-federation/deploy.md +104 -0
  508. package/docs/guides/topic-detail/module-federation/i18n.md +670 -0
  509. package/docs/guides/topic-detail/module-federation/introduce.md +35 -0
  510. package/docs/guides/topic-detail/module-federation/ssr.md +182 -0
  511. package/docs/guides/topic-detail/module-federation/usage.md +219 -0
  512. package/docs/guides/troubleshooting/builder.md +110 -0
  513. package/docs/guides/troubleshooting/cli.md +35 -0
  514. package/docs/guides/troubleshooting/dependencies.md +119 -0
  515. package/docs/guides/troubleshooting/hmr.md +144 -0
  516. package/docs/guides/upgrade/config.md +954 -0
  517. package/docs/guides/upgrade/entry.md +463 -0
  518. package/docs/guides/upgrade/other.md +183 -0
  519. package/docs/guides/upgrade/overview.md +33 -0
  520. package/docs/guides/upgrade/tailwindcss.md +91 -0
  521. package/docs/guides/upgrade/web-server.md +109 -0
  522. package/docs/index.md +33 -0
  523. package/docs/llms.txt +290 -0
  524. package/docs/plugin/cli-plugins/api.md +573 -0
  525. package/docs/plugin/cli-plugins/life-cycle.md +2 -0
  526. package/docs/plugin/introduction.md +152 -0
  527. package/docs/plugin/official/cli-plugins/plugin-bff.md +5 -0
  528. package/docs/plugin/official/cli-plugins/plugin-ssg.md +5 -0
  529. package/docs/plugin/official/cli-plugins/plugin-styled-components.md +5 -0
  530. package/docs/plugin/official/cli-plugins.md +4 -0
  531. package/docs/plugin/plugin-system.md +238 -0
  532. package/docs/plugin/runtime-plugins/api.md +194 -0
  533. package/docs/plugin/runtime-plugins/life-cycle.md +2 -0
  534. package/docs/plugin/server-plugins/api.md +209 -0
  535. package/docs/plugin/server-plugins/life-cycle.md +13 -0
  536. package/docs/tutorials/examples/csr-auth.md +9 -0
  537. package/docs/tutorials/foundations/introduction.md +16 -0
  538. package/lib/types.d.ts +2 -3
  539. package/package.json +88 -32
  540. package/rslib.config.mts +11 -12
  541. package/dist/cjs/commands/runtime.js +0 -196
  542. package/dist/cjs/plugins/deploy/platforms/cloudflare.js +0 -540
  543. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.mjs +0 -576
  544. package/dist/cjs/ultramodern/designSystem.js +0 -123
  545. package/dist/esm/baseline.mjs +0 -4
  546. package/dist/esm/commands/runtime.mjs +0 -146
  547. package/dist/esm/plugins/deploy/platforms/cloudflare.mjs +0 -492
  548. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.mjs +0 -576
  549. package/dist/esm/ultramodern/designSystem.mjs +0 -73
  550. package/dist/esm-node/baseline.mjs +0 -5
  551. package/dist/esm-node/commands/runtime.mjs +0 -147
  552. package/dist/esm-node/plugins/deploy/platforms/cloudflare.mjs +0 -493
  553. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.mjs +0 -576
  554. package/dist/esm-node/ultramodern/designSystem.mjs +0 -74
  555. package/dist/types/baseline.d.ts +0 -16
  556. package/dist/types/commands/runtime.d.ts +0 -12
  557. package/dist/types/ultramodern/designSystem.d.ts +0 -54
  558. /package/dist/types/plugins/deploy/platforms/templates/{cloudflare-entry.d.mts → cloudflare-entry.006-fetch-handler.d.mts} +0 -0
@@ -2,57 +2,78 @@ import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
4
  import { createProdServer } from '@modern-js/prod-server';
5
+
5
6
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
7
+
6
8
  p_genPluginImportsCode;
7
- if (!process.env.NODE_ENV) process.env.NODE_ENV = 'production';
9
+
10
+ if (!process.env.NODE_ENV) {
11
+ process.env.NODE_ENV = 'production';
12
+ }
13
+
8
14
  let requestHandler = null;
9
15
  let handlerCreationPromise = null;
16
+
10
17
  async function loadRoutes(routeFilepath) {
11
- try {
12
- await fs.access(routeFilepath);
13
- const content = await fs.readFile(routeFilepath, 'utf-8');
14
- const routeSpec = JSON.parse(content);
15
- return routeSpec.routes || [];
16
- } catch (error) {
17
- console.warn('route.json not found or invalid, continuing with empty routes.');
18
- return [];
19
- }
18
+ try {
19
+ await fs.access(routeFilepath);
20
+ const content = await fs.readFile(routeFilepath, 'utf-8');
21
+ const routeSpec = JSON.parse(content);
22
+ return routeSpec.routes || [];
23
+ } catch (error) {
24
+ console.warn(
25
+ 'route.json not found or invalid, continuing with empty routes.',
26
+ );
27
+ return [];
28
+ }
20
29
  }
30
+
21
31
  async function initServer() {
22
- const routeFilepath = path.join(__dirname, p_ROUTE_SPEC_FILE);
23
- const routes = await loadRoutes(routeFilepath);
24
- const dynamicProdOptions = p_dynamicProdOptions;
25
- const prodServerOptions = {
26
- pwd: __dirname,
27
- routes,
28
- disableCustomHook: true,
29
- appContext: {
30
- sharedDirectory: p_sharedDirectory,
31
- apiDirectory: p_apiDirectory,
32
- lambdaDirectory: p_lambdaDirectory
33
- },
34
- plugins: p_plugins,
35
- serverConfigPath: p_serverDirectory,
36
- ...dynamicProdOptions
37
- };
38
- const app = await createProdServer(prodServerOptions);
39
- return app.getRequestListener();
32
+ const routeFilepath = path.join(__dirname, p_ROUTE_SPEC_FILE);
33
+ const routes = await loadRoutes(routeFilepath);
34
+
35
+ const dynamicProdOptions = p_dynamicProdOptions;
36
+
37
+ const prodServerOptions = {
38
+ pwd: __dirname,
39
+ routes,
40
+ disableCustomHook: true,
41
+ appContext: {
42
+ sharedDirectory: p_sharedDirectory,
43
+ apiDirectory: p_apiDirectory,
44
+ lambdaDirectory: p_lambdaDirectory,
45
+ },
46
+ plugins: p_plugins,
47
+ serverConfigPath: p_serverDirectory,
48
+ ...dynamicProdOptions,
49
+ };
50
+ const app = await createProdServer(prodServerOptions);
51
+
52
+ return app.getRequestListener();
40
53
  }
54
+
41
55
  async function createHandler() {
42
- if (!handlerCreationPromise) handlerCreationPromise = (async ()=>{
43
- try {
44
- requestHandler = await initServer();
45
- } catch (error) {
46
- console.error('Error creating server:', error);
47
- process.exit(1);
48
- }
56
+ if (!handlerCreationPromise) {
57
+ handlerCreationPromise = (async () => {
58
+ try {
59
+ requestHandler = await initServer();
60
+ } catch (error) {
61
+ console.error('Error creating server:', error);
62
+ process.exit(1);
63
+ }
49
64
  })();
50
- await handlerCreationPromise;
51
- return requestHandler;
65
+ }
66
+ await handlerCreationPromise;
67
+ return requestHandler;
52
68
  }
69
+
53
70
  createHandler();
54
- const handler = async (req, res)=>{
55
- if (!requestHandler) await createHandler();
56
- return requestHandler(req, res);
71
+
72
+ const handler = async (req, res) => {
73
+ if (!requestHandler) {
74
+ await createHandler();
75
+ }
76
+ return requestHandler(req, res);
57
77
  };
78
+
58
79
  export default handler;
@@ -0,0 +1,175 @@
1
+ import "node:module";
2
+ import promises from "node:fs/promises";
3
+ import node_path from "node:path";
4
+ const dependencyKeys = [
5
+ 'dependencies',
6
+ 'optionalDependencies'
7
+ ];
8
+ const exactVersionPattern = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/u;
9
+ async function readPackageJson(filePath) {
10
+ return JSON.parse(await promises.readFile(filePath, 'utf8'));
11
+ }
12
+ function parseNpmAlias(aliasName, specifier) {
13
+ if (!specifier.startsWith('npm:')) return;
14
+ const target = specifier.slice(4);
15
+ const versionSeparator = target.lastIndexOf('@');
16
+ if (versionSeparator <= 0 || versionSeparator === target.length - 1) throw new Error(`Invalid npm alias specifier for ${aliasName}: ${specifier}`);
17
+ return {
18
+ aliasName,
19
+ targetName: target.slice(0, versionSeparator),
20
+ targetVersion: target.slice(versionSeparator + 1)
21
+ };
22
+ }
23
+ function aliasesFromPackageJson(packageJson) {
24
+ const aliases = [];
25
+ for (const dependencyKey of dependencyKeys)for (const [aliasName, specifier] of Object.entries(packageJson[dependencyKey] ?? {})){
26
+ const alias = parseNpmAlias(aliasName, specifier);
27
+ if (alias) aliases.push(alias);
28
+ }
29
+ return aliases;
30
+ }
31
+ async function collectPackageRecords(nodeModulesDirectory) {
32
+ const records = [];
33
+ const visitedNodeModules = new Set();
34
+ const visitPackage = async (directory)=>{
35
+ const packageJsonPath = node_path.join(directory, 'package.json');
36
+ try {
37
+ const packageJson = await readPackageJson(packageJsonPath);
38
+ if (packageJson.name && packageJson.version) records.push({
39
+ directory,
40
+ packageJson
41
+ });
42
+ } catch (error) {
43
+ if ('ENOENT' !== error.code) throw error;
44
+ }
45
+ await visitNodeModules(node_path.join(directory, 'node_modules'));
46
+ };
47
+ const visitScope = async (scopeDirectory)=>{
48
+ const entries = await promises.readdir(scopeDirectory, {
49
+ withFileTypes: true
50
+ });
51
+ for (const entry of entries)if (entry.isDirectory()) await visitPackage(node_path.join(scopeDirectory, entry.name));
52
+ };
53
+ const visitNdepeStore = async (storeDirectory)=>{
54
+ const entries = await promises.readdir(storeDirectory, {
55
+ withFileTypes: true
56
+ });
57
+ for (const entry of entries)if (entry.isDirectory()) {
58
+ const entryPath = node_path.join(storeDirectory, entry.name);
59
+ if (entry.name.startsWith('@')) await visitScope(entryPath);
60
+ else await visitNodeModules(node_path.join(entryPath, 'node_modules'));
61
+ }
62
+ };
63
+ const visitNodeModules = async (directory)=>{
64
+ const resolvedDirectory = node_path.resolve(directory);
65
+ if (visitedNodeModules.has(resolvedDirectory)) return;
66
+ visitedNodeModules.add(resolvedDirectory);
67
+ let entries;
68
+ try {
69
+ entries = await promises.readdir(directory, {
70
+ withFileTypes: true
71
+ });
72
+ } catch (error) {
73
+ if ('ENOENT' === error.code) return;
74
+ throw error;
75
+ }
76
+ for (const entry of entries){
77
+ if (!entry.isDirectory()) continue;
78
+ const entryPath = node_path.join(directory, entry.name);
79
+ if ('.ndepe' === entry.name) await visitNdepeStore(entryPath);
80
+ else if (entry.name.startsWith('@')) await visitScope(entryPath);
81
+ else await visitPackage(entryPath);
82
+ }
83
+ };
84
+ await visitNodeModules(nodeModulesDirectory);
85
+ return records;
86
+ }
87
+ async function resolveAliasTarget(ownerDirectory, alias, outputDirectory) {
88
+ let directory = ownerDirectory;
89
+ const outputRoot = node_path.resolve(outputDirectory);
90
+ const resolvedOutputRoot = await promises.realpath(outputRoot);
91
+ while(directory === outputRoot || directory.startsWith(`${outputRoot}${node_path.sep}`)){
92
+ const candidate = node_path.join(directory, 'node_modules', alias.targetName);
93
+ try {
94
+ const resolvedCandidate = await promises.realpath(candidate);
95
+ if (resolvedCandidate !== resolvedOutputRoot && !resolvedCandidate.startsWith(`${resolvedOutputRoot}${node_path.sep}`)) throw new Error(`Cannot preserve npm alias ${alias.aliasName}: emitted target ${candidate} resolves outside deployment output to ${resolvedCandidate}`);
96
+ const packageJson = await readPackageJson(node_path.join(candidate, 'package.json'));
97
+ if (packageJson.name !== alias.targetName || !packageJson.version) throw new Error(`npm alias ${alias.aliasName} resolved ${candidate} to unexpected package ${String(packageJson.name)}`);
98
+ if (exactVersionPattern.test(alias.targetVersion) && packageJson.version !== alias.targetVersion) return;
99
+ return {
100
+ directory: candidate,
101
+ packageJson
102
+ };
103
+ } catch (error) {
104
+ if ('ENOENT' !== error.code) throw error;
105
+ }
106
+ if (directory === outputRoot) break;
107
+ directory = node_path.dirname(directory);
108
+ }
109
+ }
110
+ async function ensureAliasLink(ownerDirectory, alias, target) {
111
+ const aliasPath = node_path.join(ownerDirectory, 'node_modules', alias.aliasName);
112
+ await promises.mkdir(node_path.dirname(aliasPath), {
113
+ recursive: true
114
+ });
115
+ try {
116
+ const [existing, expected] = await Promise.all([
117
+ promises.realpath(aliasPath),
118
+ promises.realpath(target.directory)
119
+ ]);
120
+ if (existing === expected) return;
121
+ throw new Error(`Cannot preserve npm alias ${alias.aliasName}: ${aliasPath} already resolves to ${existing}, expected ${expected}`);
122
+ } catch (error) {
123
+ if ('ENOENT' !== error.code) throw error;
124
+ }
125
+ const linkTarget = node_path.relative(node_path.dirname(aliasPath), target.directory);
126
+ await promises.symlink(linkTarget, aliasPath, 'dir');
127
+ }
128
+ function aliasSpecifier(alias) {
129
+ return `npm:${alias.targetName}@${alias.targetVersion}`;
130
+ }
131
+ async function readPackageIdentity(entryPath) {
132
+ let directory = node_path.dirname(entryPath);
133
+ const root = node_path.parse(directory).root;
134
+ while(directory !== root){
135
+ try {
136
+ const packageJson = await readPackageJson(node_path.join(directory, 'package.json'));
137
+ if (packageJson.name && packageJson.version) return {
138
+ name: packageJson.name,
139
+ version: packageJson.version
140
+ };
141
+ } catch (error) {
142
+ if ('ENOENT' !== error.code) throw error;
143
+ }
144
+ directory = node_path.dirname(directory);
145
+ }
146
+ throw new Error(`Cannot find owning package for deployment entry ${entryPath}`);
147
+ }
148
+ async function preserveNpmAliases({ appDirectory, outputDirectory, implicitAliases = [] }) {
149
+ const records = await collectPackageRecords(node_path.join(outputDirectory, 'node_modules'));
150
+ const appPackageJson = await readPackageJson(node_path.join(appDirectory, 'package.json'));
151
+ const rootAliases = [
152
+ ...aliasesFromPackageJson(appPackageJson),
153
+ ...implicitAliases
154
+ ].filter((alias)=>alias.aliasName !== alias.targetName);
155
+ const emittedRootAliases = [];
156
+ for (const alias of rootAliases){
157
+ const target = await resolveAliasTarget(outputDirectory, alias, outputDirectory);
158
+ if (!target) {
159
+ if (implicitAliases.includes(alias)) throw new Error(`Cannot preserve implicit npm alias ${alias.aliasName}: emitted target ${alias.targetName}@${alias.targetVersion} is missing`);
160
+ continue;
161
+ }
162
+ await ensureAliasLink(outputDirectory, alias, target);
163
+ emittedRootAliases.push(alias);
164
+ }
165
+ for (const record of records)for (const alias of aliasesFromPackageJson(record.packageJson).filter((candidate)=>candidate.aliasName !== candidate.targetName)){
166
+ const target = await resolveAliasTarget(record.directory, alias, outputDirectory);
167
+ if (target) await ensureAliasLink(record.directory, alias, target);
168
+ }
169
+ const outputPackageJsonPath = node_path.join(outputDirectory, 'package.json');
170
+ const outputPackageJson = await readPackageJson(outputPackageJsonPath);
171
+ outputPackageJson.dependencies ??= {};
172
+ for (const alias of emittedRootAliases)outputPackageJson.dependencies[alias.aliasName] = aliasSpecifier(alias);
173
+ await promises.writeFile(outputPackageJsonPath, `${JSON.stringify(outputPackageJson, null, 2)}\n`);
174
+ }
175
+ export { preserveNpmAliases, readPackageIdentity };
@@ -26,7 +26,7 @@ const initialize = ()=>({
26
26
  api.modifyResolvedConfig(async (resolved)=>{
27
27
  let appContext = api.getAppContext();
28
28
  const userConfig = api.getConfig();
29
- const port = await getServerPort(resolved);
29
+ const port = await getServerPort(resolved, appContext.command);
30
30
  appContext = {
31
31
  ...appContext,
32
32
  port,
@@ -61,9 +61,10 @@ function stabilizeConfig(resolve, config, keys) {
61
61
  resolve[key] = config[key] || {};
62
62
  });
63
63
  }
64
- async function getServerPort(config) {
64
+ async function getServerPort(config, contextCommand) {
65
65
  const prodPort = Number(process.env.PORT) || config.server.port || 8080;
66
- if (isDev() && isDevCommand()) return getPort(Number(process.env.PORT) || prodPort);
66
+ const isProgrammaticDev = 'dev' === contextCommand || 'start' === contextCommand;
67
+ if (isDev() && (isDevCommand() || isProgrammaticDev)) return getPort(Number(process.env.PORT) || prodPort);
67
68
  return prodPort;
68
69
  }
69
70
  export default initialize;
@@ -18,7 +18,7 @@ const serverBuild = ()=>({
18
18
  name: '@modern-js/server-build',
19
19
  setup (api) {
20
20
  api.onAfterBuild(async ()=>{
21
- const { appDirectory, distDirectory, metaName } = api.getAppContext();
21
+ const { appDirectory, distDirectory, metaName, moduleType } = api.getAppContext();
22
22
  if (!checkHasCache(appDirectory) && !checkHasConfig(appDirectory, metaName)) return;
23
23
  const modernConfig = api.getNormalizedConfig();
24
24
  const distDir = path.resolve(distDirectory);
@@ -38,7 +38,8 @@ const serverBuild = ()=>({
38
38
  }, {
39
39
  sourceDirs,
40
40
  distDir,
41
- tsconfigPath
41
+ tsconfigPath,
42
+ moduleType
42
43
  });
43
44
  });
44
45
  }
@@ -0,0 +1,53 @@
1
+ import "node:module";
2
+ import node_path from "node:path";
3
+ import { emitFrameworkMicroVerticalReleaseEnvelope, emitNodeStagedReleaseEnvelope, verifyBuildOutputReleaseEnvelope, verifyNodeReleaseEnvelopeStaging } from "../ultramodern-release-envelope/framework-output.mjs";
4
+ import { resolveDeployTarget } from "./deploy/index.mjs";
5
+ const resolveActiveDeployTarget = (api)=>{
6
+ const { metaName } = api.getAppContext();
7
+ const config = api.getNormalizedConfig();
8
+ if ('modern-js' !== metaName && !config.deploy?.target && !process.env.MODERNJS_DEPLOY) return;
9
+ return resolveDeployTarget(config);
10
+ };
11
+ const ultramodernReleaseEnvelope = ()=>({
12
+ name: '@modern-js/ultramodern-release-envelope',
13
+ pre: [
14
+ '@modern-js/backend-federation-build',
15
+ '@modern-js/plugin-bff'
16
+ ],
17
+ setup (api) {
18
+ const emitBuildEnvelope = async (target)=>{
19
+ const { apiOnly, distDirectory } = api.getAppContext();
20
+ await emitFrameworkMicroVerticalReleaseEnvelope({
21
+ apiOnly,
22
+ distDirectory,
23
+ target
24
+ });
25
+ };
26
+ api.onAfterBuild(async ()=>{
27
+ const configuredTarget = resolveDeployTarget(api.getNormalizedConfig());
28
+ if ('node' !== configuredTarget && 'cloudflare' !== configuredTarget) return;
29
+ await emitBuildEnvelope(configuredTarget);
30
+ });
31
+ api.onBeforeDeploy(async ()=>{
32
+ const configuredTarget = resolveActiveDeployTarget(api);
33
+ if ('node' !== configuredTarget) return;
34
+ await emitBuildEnvelope(configuredTarget);
35
+ const { distDirectory } = api.getAppContext();
36
+ await verifyBuildOutputReleaseEnvelope(distDirectory, configuredTarget);
37
+ });
38
+ api.onAfterDeploy(async ()=>{
39
+ const configuredTarget = resolveActiveDeployTarget(api);
40
+ if ('node' !== configuredTarget) return;
41
+ const { appDirectory, distDirectory } = api.getAppContext();
42
+ const outputDirectory = node_path.join(appDirectory, '.output');
43
+ const releaseEnvelope = await emitNodeStagedReleaseEnvelope({
44
+ distDirectory,
45
+ outputDirectory
46
+ });
47
+ if (releaseEnvelope) await verifyNodeReleaseEnvelopeStaging({
48
+ outputDirectory
49
+ });
50
+ });
51
+ }
52
+ });
53
+ export default ultramodernReleaseEnvelope;
@@ -2,6 +2,8 @@ import "node:module";
2
2
  import node_fs from "node:fs";
3
3
  import node_path from "node:path";
4
4
  import { mergeConfig } from "@modern-js/plugin/cli";
5
+ import { rspack } from "@rsbuild/core";
6
+ import { resolveUltramodernReleaseIdentity } from "./ultramodern-release-identity.mjs";
5
7
  const DEFAULT_OTLP_ENDPOINT = 'http://127.0.0.1:4318/v1/logs';
6
8
  const DEFAULT_VICTORIA_METRICS_ENDPOINT = 'http://127.0.0.1:8428/api/v1/import/prometheus';
7
9
  const resolveReactRouterPackageDir = (appDirectory)=>{
@@ -34,8 +36,16 @@ const setReactRouterBridgeSafeAliases = (chain, { isProd })=>{
34
36
  chain.resolve.alias.set('react-router/dist/development/index.js', developmentEntry);
35
37
  };
36
38
  const createPresetUltramodernConfig = (options = {})=>{
37
- const { appId = 'app', enableBffRequestId = true, enableTelemetry = true, enableTelemetryExporters, otlpEndpoint = process.env.MODERN_TELEMETRY_OTLP_ENDPOINT, victoriaMetricsEndpoint = process.env.MODERN_TELEMETRY_VICTORIA_ENDPOINT, telemetryFailLoudStartup = true, enableModuleFederationSSR = true } = options;
39
+ const { appId = 'app', deliveryUnit, enableBffRequestId = true, enableTelemetry = true, enableTelemetryExporters, otlpEndpoint = process.env.MODERN_TELEMETRY_OTLP_ENDPOINT, victoriaMetricsEndpoint = process.env.MODERN_TELEMETRY_VICTORIA_ENDPOINT, telemetryFailLoudStartup = true, enableModuleFederationSSR = true } = options;
38
40
  const server = {};
41
+ const releaseIdentity = deliveryUnit ? resolveUltramodernReleaseIdentity({
42
+ generationBuildMarker: deliveryUnit.buildMarker,
43
+ unitId: deliveryUnit.unitId
44
+ }) : void 0;
45
+ const bundledReleaseIdentity = releaseIdentity ? {
46
+ ...releaseIdentity,
47
+ releaseVersion: deliveryUnit.version
48
+ } : void 0;
39
49
  if (enableTelemetry) {
40
50
  server.telemetry = {
41
51
  enabled: true,
@@ -63,8 +73,29 @@ const createPresetUltramodernConfig = (options = {})=>{
63
73
  precompress: true
64
74
  },
65
75
  server,
76
+ ...deliveryUnit ? {
77
+ source: {
78
+ globalVars: {
79
+ ULTRAMODERN_BUILD_MARKER: releaseIdentity?.buildMarker,
80
+ ULTRAMODERN_RELEASE_VERSION: deliveryUnit.version,
81
+ ULTRAMODERN_SOURCE_REVISION: releaseIdentity?.sourceRevision
82
+ }
83
+ }
84
+ } : {},
66
85
  tools: {
67
- bundlerChain: setReactRouterBridgeSafeAliases
86
+ bundlerChain: setReactRouterBridgeSafeAliases,
87
+ ...bundledReleaseIdentity ? {
88
+ rspack: (config)=>{
89
+ config.plugins ??= [];
90
+ config.plugins.push(new rspack.BannerPlugin({
91
+ banner: `void ${JSON.stringify(bundledReleaseIdentity.buildMarker)};void ${JSON.stringify(bundledReleaseIdentity.sourceRevision)};void ${JSON.stringify(bundledReleaseIdentity.releaseVersion)};`,
92
+ raw: true,
93
+ stage: rspack.Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE,
94
+ test: /\.(?:c|m)?js$/u
95
+ }));
96
+ return config;
97
+ }
98
+ } : {}
68
99
  }
69
100
  };
70
101
  if (enableBffRequestId) presetConfig.bff = {
@@ -0,0 +1,22 @@
1
+ import "node:module";
2
+ import { createHash } from "node:crypto";
3
+ const serializeCanonicalValue = (value)=>{
4
+ if (null === value || 'object' != typeof value) {
5
+ if ('number' == typeof value && !Number.isFinite(value)) throw new Error('Canonical release-envelope values must be finite.');
6
+ return JSON.stringify(value);
7
+ }
8
+ if (Array.isArray(value)) return `[${value.map(serializeCanonicalValue).join(',')}]`;
9
+ return `{${Object.keys(value).sort().map((key)=>`${JSON.stringify(key)}:${serializeCanonicalValue(value[key])}`).join(',')}}`;
10
+ };
11
+ const releaseEnvelopePayload = (envelope)=>({
12
+ schemaVersion: envelope.schemaVersion,
13
+ kind: envelope.kind,
14
+ target: envelope.target,
15
+ identity: envelope.identity,
16
+ artifacts: envelope.artifacts,
17
+ surfaces: envelope.surfaces
18
+ });
19
+ const canonicalSerializeMicroVerticalReleaseEnvelopePayload = (payload)=>serializeCanonicalValue(payload);
20
+ const canonicalSerializeMicroVerticalReleaseEnvelope = (envelope)=>serializeCanonicalValue(envelope);
21
+ const digestMicroVerticalReleaseEnvelopePayload = (payload)=>createHash('sha256').update(canonicalSerializeMicroVerticalReleaseEnvelopePayload(payload)).digest('hex');
22
+ export { canonicalSerializeMicroVerticalReleaseEnvelope, canonicalSerializeMicroVerticalReleaseEnvelopePayload, digestMicroVerticalReleaseEnvelopePayload, releaseEnvelopePayload };