@bleedingdev/modern-js-app-tools 3.2.0-ultramodern.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -0
  3. package/bin/modern.js +36 -0
  4. package/dist/cjs/baseline.js +83 -0
  5. package/dist/cjs/builder/builder-rspack/index.js +40 -0
  6. package/dist/cjs/builder/generator/adapterCopy.js +79 -0
  7. package/dist/cjs/builder/generator/createBuilderProviderConfig.js +100 -0
  8. package/dist/cjs/builder/generator/createCopyPattern.js +67 -0
  9. package/dist/cjs/builder/generator/getBuilderEnvironments.js +90 -0
  10. package/dist/cjs/builder/generator/index.js +80 -0
  11. package/dist/cjs/builder/index.js +50 -0
  12. package/dist/cjs/builder/shared/builderPlugins/adapterBasic.js +133 -0
  13. package/dist/cjs/builder/shared/builderPlugins/adapterHtml.js +89 -0
  14. package/dist/cjs/builder/shared/builderPlugins/adapterPrecompress.js +112 -0
  15. package/dist/cjs/builder/shared/builderPlugins/adapterSSR.js +151 -0
  16. package/dist/cjs/builder/shared/builderPlugins/builderHooks.js +51 -0
  17. package/dist/cjs/builder/shared/builderPlugins/index.js +86 -0
  18. package/dist/cjs/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +71 -0
  19. package/dist/cjs/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +56 -0
  20. package/dist/cjs/builder/shared/bundlerPlugins/RouterPlugin.js +191 -0
  21. package/dist/cjs/builder/shared/bundlerPlugins/index.js +72 -0
  22. package/dist/cjs/builder/shared/createCopyInfo.js +59 -0
  23. package/dist/cjs/builder/shared/index.js +72 -0
  24. package/dist/cjs/builder/shared/loaders/serverModuleLoader.js +39 -0
  25. package/dist/cjs/builder/shared/types.js +18 -0
  26. package/dist/cjs/commands/build.js +107 -0
  27. package/dist/cjs/commands/deploy.js +44 -0
  28. package/dist/cjs/commands/dev.js +121 -0
  29. package/dist/cjs/commands/index.js +99 -0
  30. package/dist/cjs/commands/info.js +110 -0
  31. package/dist/cjs/commands/inspect.js +49 -0
  32. package/dist/cjs/commands/runtime.js +159 -0
  33. package/dist/cjs/commands/serve.js +92 -0
  34. package/dist/cjs/compat/hooks.js +104 -0
  35. package/dist/cjs/compat/index.js +62 -0
  36. package/dist/cjs/compat/utils.js +135 -0
  37. package/dist/cjs/config/default.js +125 -0
  38. package/dist/cjs/config/index.js +65 -0
  39. package/dist/cjs/config/initialize/index.js +41 -0
  40. package/dist/cjs/config/initialize/inits.js +101 -0
  41. package/dist/cjs/constants.js +40 -0
  42. package/dist/cjs/defineConfig.js +36 -0
  43. package/dist/cjs/esm/register-esm.js +48 -0
  44. package/dist/cjs/esm/register-esm.mjs +10 -0
  45. package/dist/cjs/esm/ts-paths-loader.js +73 -0
  46. package/dist/cjs/esm/ts-paths-loader.mjs +35 -0
  47. package/dist/cjs/exports/server.js +18 -0
  48. package/dist/cjs/index.js +358 -0
  49. package/dist/cjs/locale/en.js +79 -0
  50. package/dist/cjs/locale/index.js +46 -0
  51. package/dist/cjs/locale/zh.js +79 -0
  52. package/dist/cjs/plugins/analyze/constants.js +48 -0
  53. package/dist/cjs/plugins/analyze/getBundleEntry.js +97 -0
  54. package/dist/cjs/plugins/analyze/getFileSystemEntry.js +117 -0
  55. package/dist/cjs/plugins/analyze/getHtmlTemplate.js +144 -0
  56. package/dist/cjs/plugins/analyze/getServerRoutes.js +177 -0
  57. package/dist/cjs/plugins/analyze/index.js +237 -0
  58. package/dist/cjs/plugins/analyze/isDefaultExportFunction.js +86 -0
  59. package/dist/cjs/plugins/analyze/templates.js +56 -0
  60. package/dist/cjs/plugins/analyze/utils.js +126 -0
  61. package/dist/cjs/plugins/deploy/index.js +77 -0
  62. package/dist/cjs/plugins/deploy/platforms/gh-pages.js +87 -0
  63. package/dist/cjs/plugins/deploy/platforms/netlify.js +140 -0
  64. package/dist/cjs/plugins/deploy/platforms/node.js +100 -0
  65. package/dist/cjs/plugins/deploy/platforms/platform.js +18 -0
  66. package/dist/cjs/plugins/deploy/platforms/templates/netlify-entry.cjs +57 -0
  67. package/dist/cjs/plugins/deploy/platforms/templates/netlify-entry.mjs +59 -0
  68. package/dist/cjs/plugins/deploy/platforms/templates/node-entry.cjs +44 -0
  69. package/dist/cjs/plugins/deploy/platforms/templates/node-entry.mjs +46 -0
  70. package/dist/cjs/plugins/deploy/platforms/templates/vercel-entry.cjs +57 -0
  71. package/dist/cjs/plugins/deploy/platforms/templates/vercel-entry.mjs +58 -0
  72. package/dist/cjs/plugins/deploy/platforms/vercel.js +159 -0
  73. package/dist/cjs/plugins/deploy/types.js +18 -0
  74. package/dist/cjs/plugins/deploy/utils/generator.js +104 -0
  75. package/dist/cjs/plugins/deploy/utils/index.js +123 -0
  76. package/dist/cjs/plugins/initialize/index.js +93 -0
  77. package/dist/cjs/plugins/serverBuild.js +90 -0
  78. package/dist/cjs/plugins/serverRuntime.js +49 -0
  79. package/dist/cjs/presetUltramodern.js +41 -0
  80. package/dist/cjs/rsbuild.js +90 -0
  81. package/dist/cjs/run/index.js +98 -0
  82. package/dist/cjs/types/config/deploy.js +18 -0
  83. package/dist/cjs/types/config/dev.js +18 -0
  84. package/dist/cjs/types/config/experiments.js +18 -0
  85. package/dist/cjs/types/config/html.js +18 -0
  86. package/dist/cjs/types/config/index.js +58 -0
  87. package/dist/cjs/types/config/output.js +18 -0
  88. package/dist/cjs/types/config/performance.js +18 -0
  89. package/dist/cjs/types/config/resolve.js +18 -0
  90. package/dist/cjs/types/config/security.js +18 -0
  91. package/dist/cjs/types/config/source.js +18 -0
  92. package/dist/cjs/types/config/testing.js +18 -0
  93. package/dist/cjs/types/config/tools.js +18 -0
  94. package/dist/cjs/types/index.js +58 -0
  95. package/dist/cjs/types/plugin.js +18 -0
  96. package/dist/cjs/types/utils.js +18 -0
  97. package/dist/cjs/ultramodern/designSystem.js +119 -0
  98. package/dist/cjs/utils/config.js +45 -0
  99. package/dist/cjs/utils/createServer.js +52 -0
  100. package/dist/cjs/utils/env.js +46 -0
  101. package/dist/cjs/utils/generateWatchFiles.js +54 -0
  102. package/dist/cjs/utils/getConfigFile.js +49 -0
  103. package/dist/cjs/utils/getSelectedEntries.js +60 -0
  104. package/dist/cjs/utils/initAppContext.js +71 -0
  105. package/dist/cjs/utils/loadPlugins.js +85 -0
  106. package/dist/cjs/utils/printInstructions.js +43 -0
  107. package/dist/cjs/utils/register.js +128 -0
  108. package/dist/cjs/utils/restart.js +52 -0
  109. package/dist/cjs/utils/routes.js +65 -0
  110. package/dist/cjs/utils/types.js +18 -0
  111. package/dist/esm/baseline.mjs +46 -0
  112. package/dist/esm/builder/builder-rspack/index.mjs +6 -0
  113. package/dist/esm/builder/generator/adapterCopy.mjs +35 -0
  114. package/dist/esm/builder/generator/createBuilderProviderConfig.mjs +66 -0
  115. package/dist/esm/builder/generator/createCopyPattern.mjs +30 -0
  116. package/dist/esm/builder/generator/getBuilderEnvironments.mjs +56 -0
  117. package/dist/esm/builder/generator/index.mjs +46 -0
  118. package/dist/esm/builder/index.mjs +7 -0
  119. package/dist/esm/builder/shared/builderPlugins/adapterBasic.mjs +89 -0
  120. package/dist/esm/builder/shared/builderPlugins/adapterHtml.mjs +55 -0
  121. package/dist/esm/builder/shared/builderPlugins/adapterPrecompress.mjs +68 -0
  122. package/dist/esm/builder/shared/builderPlugins/adapterSSR.mjs +117 -0
  123. package/dist/esm/builder/shared/builderPlugins/builderHooks.mjs +17 -0
  124. package/dist/esm/builder/shared/builderPlugins/index.mjs +5 -0
  125. package/dist/esm/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.mjs +37 -0
  126. package/dist/esm/builder/shared/bundlerPlugins/HtmlBottomTemplate.mjs +22 -0
  127. package/dist/esm/builder/shared/bundlerPlugins/RouterPlugin.mjs +157 -0
  128. package/dist/esm/builder/shared/bundlerPlugins/index.mjs +3 -0
  129. package/dist/esm/builder/shared/createCopyInfo.mjs +15 -0
  130. package/dist/esm/builder/shared/index.mjs +3 -0
  131. package/dist/esm/builder/shared/loaders/serverModuleLoader.mjs +5 -0
  132. package/dist/esm/builder/shared/types.mjs +0 -0
  133. package/dist/esm/commands/build.mjs +63 -0
  134. package/dist/esm/commands/deploy.mjs +10 -0
  135. package/dist/esm/commands/dev.mjs +77 -0
  136. package/dist/esm/commands/index.mjs +47 -0
  137. package/dist/esm/commands/info.mjs +76 -0
  138. package/dist/esm/commands/inspect.mjs +15 -0
  139. package/dist/esm/commands/runtime.mjs +116 -0
  140. package/dist/esm/commands/serve.mjs +48 -0
  141. package/dist/esm/compat/hooks.mjs +67 -0
  142. package/dist/esm/compat/index.mjs +28 -0
  143. package/dist/esm/compat/utils.mjs +95 -0
  144. package/dist/esm/config/default.mjs +91 -0
  145. package/dist/esm/config/index.mjs +2 -0
  146. package/dist/esm/config/initialize/index.mjs +7 -0
  147. package/dist/esm/config/initialize/inits.mjs +54 -0
  148. package/dist/esm/constants.mjs +3 -0
  149. package/dist/esm/defineConfig.mjs +2 -0
  150. package/dist/esm/esm/register-esm.mjs +11 -0
  151. package/dist/esm/esm/ts-paths-loader.mjs +36 -0
  152. package/dist/esm/exports/server.mjs +0 -0
  153. package/dist/esm/index.mjs +131 -0
  154. package/dist/esm/locale/en.mjs +45 -0
  155. package/dist/esm/locale/index.mjs +9 -0
  156. package/dist/esm/locale/zh.mjs +45 -0
  157. package/dist/esm/plugins/analyze/constants.mjs +8 -0
  158. package/dist/esm/plugins/analyze/getBundleEntry.mjs +53 -0
  159. package/dist/esm/plugins/analyze/getFileSystemEntry.mjs +66 -0
  160. package/dist/esm/plugins/analyze/getHtmlTemplate.mjs +97 -0
  161. package/dist/esm/plugins/analyze/getServerRoutes.mjs +130 -0
  162. package/dist/esm/plugins/analyze/index.mjs +203 -0
  163. package/dist/esm/plugins/analyze/isDefaultExportFunction.mjs +41 -0
  164. package/dist/esm/plugins/analyze/templates.mjs +22 -0
  165. package/dist/esm/plugins/analyze/utils.mjs +63 -0
  166. package/dist/esm/plugins/deploy/index.mjs +43 -0
  167. package/dist/esm/plugins/deploy/platforms/gh-pages.mjs +43 -0
  168. package/dist/esm/plugins/deploy/platforms/netlify.mjs +96 -0
  169. package/dist/esm/plugins/deploy/platforms/node.mjs +56 -0
  170. package/dist/esm/plugins/deploy/platforms/platform.mjs +0 -0
  171. package/dist/esm/plugins/deploy/platforms/templates/netlify-entry.cjs +57 -0
  172. package/dist/esm/plugins/deploy/platforms/templates/netlify-entry.mjs +59 -0
  173. package/dist/esm/plugins/deploy/platforms/templates/node-entry.cjs +44 -0
  174. package/dist/esm/plugins/deploy/platforms/templates/node-entry.mjs +46 -0
  175. package/dist/esm/plugins/deploy/platforms/templates/vercel-entry.cjs +57 -0
  176. package/dist/esm/plugins/deploy/platforms/templates/vercel-entry.mjs +58 -0
  177. package/dist/esm/plugins/deploy/platforms/vercel.mjs +115 -0
  178. package/dist/esm/plugins/deploy/types.mjs +0 -0
  179. package/dist/esm/plugins/deploy/utils/generator.mjs +48 -0
  180. package/dist/esm/plugins/deploy/utils/index.mjs +67 -0
  181. package/dist/esm/plugins/initialize/index.mjs +59 -0
  182. package/dist/esm/plugins/serverBuild.mjs +45 -0
  183. package/dist/esm/plugins/serverRuntime.mjs +15 -0
  184. package/dist/esm/presetUltramodern.mjs +4 -0
  185. package/dist/esm/rsbuild.mjs +47 -0
  186. package/dist/esm/rslib-runtime.mjs +18 -0
  187. package/dist/esm/run/index.mjs +61 -0
  188. package/dist/esm/types/config/deploy.mjs +0 -0
  189. package/dist/esm/types/config/dev.mjs +0 -0
  190. package/dist/esm/types/config/experiments.mjs +0 -0
  191. package/dist/esm/types/config/html.mjs +0 -0
  192. package/dist/esm/types/config/index.mjs +1 -0
  193. package/dist/esm/types/config/output.mjs +0 -0
  194. package/dist/esm/types/config/performance.mjs +0 -0
  195. package/dist/esm/types/config/resolve.mjs +0 -0
  196. package/dist/esm/types/config/security.mjs +0 -0
  197. package/dist/esm/types/config/source.mjs +0 -0
  198. package/dist/esm/types/config/testing.mjs +0 -0
  199. package/dist/esm/types/config/tools.mjs +0 -0
  200. package/dist/esm/types/index.mjs +1 -0
  201. package/dist/esm/types/plugin.mjs +0 -0
  202. package/dist/esm/types/utils.mjs +0 -0
  203. package/dist/esm/ultramodern/designSystem.mjs +73 -0
  204. package/dist/esm/utils/config.mjs +11 -0
  205. package/dist/esm/utils/createServer.mjs +12 -0
  206. package/dist/esm/utils/env.mjs +12 -0
  207. package/dist/esm/utils/generateWatchFiles.mjs +10 -0
  208. package/dist/esm/utils/getConfigFile.mjs +5 -0
  209. package/dist/esm/utils/getSelectedEntries.mjs +26 -0
  210. package/dist/esm/utils/initAppContext.mjs +27 -0
  211. package/dist/esm/utils/loadPlugins.mjs +45 -0
  212. package/dist/esm/utils/printInstructions.mjs +9 -0
  213. package/dist/esm/utils/register.mjs +81 -0
  214. package/dist/esm/utils/restart.mjs +18 -0
  215. package/dist/esm/utils/routes.mjs +15 -0
  216. package/dist/esm/utils/types.mjs +0 -0
  217. package/dist/esm-node/baseline.mjs +47 -0
  218. package/dist/esm-node/builder/builder-rspack/index.mjs +7 -0
  219. package/dist/esm-node/builder/generator/adapterCopy.mjs +36 -0
  220. package/dist/esm-node/builder/generator/createBuilderProviderConfig.mjs +67 -0
  221. package/dist/esm-node/builder/generator/createCopyPattern.mjs +31 -0
  222. package/dist/esm-node/builder/generator/getBuilderEnvironments.mjs +57 -0
  223. package/dist/esm-node/builder/generator/index.mjs +47 -0
  224. package/dist/esm-node/builder/index.mjs +8 -0
  225. package/dist/esm-node/builder/shared/builderPlugins/adapterBasic.mjs +93 -0
  226. package/dist/esm-node/builder/shared/builderPlugins/adapterHtml.mjs +56 -0
  227. package/dist/esm-node/builder/shared/builderPlugins/adapterPrecompress.mjs +69 -0
  228. package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.mjs +119 -0
  229. package/dist/esm-node/builder/shared/builderPlugins/builderHooks.mjs +18 -0
  230. package/dist/esm-node/builder/shared/builderPlugins/index.mjs +6 -0
  231. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.mjs +38 -0
  232. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlBottomTemplate.mjs +23 -0
  233. package/dist/esm-node/builder/shared/bundlerPlugins/RouterPlugin.mjs +158 -0
  234. package/dist/esm-node/builder/shared/bundlerPlugins/index.mjs +4 -0
  235. package/dist/esm-node/builder/shared/createCopyInfo.mjs +16 -0
  236. package/dist/esm-node/builder/shared/index.mjs +4 -0
  237. package/dist/esm-node/builder/shared/loaders/serverModuleLoader.mjs +6 -0
  238. package/dist/esm-node/builder/shared/types.mjs +1 -0
  239. package/dist/esm-node/commands/build.mjs +64 -0
  240. package/dist/esm-node/commands/deploy.mjs +11 -0
  241. package/dist/esm-node/commands/dev.mjs +78 -0
  242. package/dist/esm-node/commands/index.mjs +48 -0
  243. package/dist/esm-node/commands/info.mjs +77 -0
  244. package/dist/esm-node/commands/inspect.mjs +16 -0
  245. package/dist/esm-node/commands/runtime.mjs +117 -0
  246. package/dist/esm-node/commands/serve.mjs +49 -0
  247. package/dist/esm-node/compat/hooks.mjs +68 -0
  248. package/dist/esm-node/compat/index.mjs +29 -0
  249. package/dist/esm-node/compat/utils.mjs +96 -0
  250. package/dist/esm-node/config/default.mjs +92 -0
  251. package/dist/esm-node/config/index.mjs +3 -0
  252. package/dist/esm-node/config/initialize/index.mjs +8 -0
  253. package/dist/esm-node/config/initialize/inits.mjs +55 -0
  254. package/dist/esm-node/constants.mjs +4 -0
  255. package/dist/esm-node/defineConfig.mjs +3 -0
  256. package/dist/esm-node/esm/register-esm.mjs +12 -0
  257. package/dist/esm-node/esm/ts-paths-loader.mjs +37 -0
  258. package/dist/esm-node/exports/server.mjs +1 -0
  259. package/dist/esm-node/index.mjs +133 -0
  260. package/dist/esm-node/locale/en.mjs +46 -0
  261. package/dist/esm-node/locale/index.mjs +10 -0
  262. package/dist/esm-node/locale/zh.mjs +46 -0
  263. package/dist/esm-node/plugins/analyze/constants.mjs +9 -0
  264. package/dist/esm-node/plugins/analyze/getBundleEntry.mjs +54 -0
  265. package/dist/esm-node/plugins/analyze/getFileSystemEntry.mjs +67 -0
  266. package/dist/esm-node/plugins/analyze/getHtmlTemplate.mjs +98 -0
  267. package/dist/esm-node/plugins/analyze/getServerRoutes.mjs +131 -0
  268. package/dist/esm-node/plugins/analyze/index.mjs +204 -0
  269. package/dist/esm-node/plugins/analyze/isDefaultExportFunction.mjs +42 -0
  270. package/dist/esm-node/plugins/analyze/templates.mjs +23 -0
  271. package/dist/esm-node/plugins/analyze/utils.mjs +64 -0
  272. package/dist/esm-node/plugins/deploy/index.mjs +44 -0
  273. package/dist/esm-node/plugins/deploy/platforms/gh-pages.mjs +44 -0
  274. package/dist/esm-node/plugins/deploy/platforms/netlify.mjs +98 -0
  275. package/dist/esm-node/plugins/deploy/platforms/node.mjs +58 -0
  276. package/dist/esm-node/plugins/deploy/platforms/platform.mjs +1 -0
  277. package/dist/esm-node/plugins/deploy/platforms/templates/netlify-entry.cjs +57 -0
  278. package/dist/esm-node/plugins/deploy/platforms/templates/netlify-entry.mjs +59 -0
  279. package/dist/esm-node/plugins/deploy/platforms/templates/node-entry.cjs +44 -0
  280. package/dist/esm-node/plugins/deploy/platforms/templates/node-entry.mjs +46 -0
  281. package/dist/esm-node/plugins/deploy/platforms/templates/vercel-entry.cjs +57 -0
  282. package/dist/esm-node/plugins/deploy/platforms/templates/vercel-entry.mjs +58 -0
  283. package/dist/esm-node/plugins/deploy/platforms/vercel.mjs +117 -0
  284. package/dist/esm-node/plugins/deploy/types.mjs +1 -0
  285. package/dist/esm-node/plugins/deploy/utils/generator.mjs +49 -0
  286. package/dist/esm-node/plugins/deploy/utils/index.mjs +71 -0
  287. package/dist/esm-node/plugins/initialize/index.mjs +60 -0
  288. package/dist/esm-node/plugins/serverBuild.mjs +46 -0
  289. package/dist/esm-node/plugins/serverRuntime.mjs +16 -0
  290. package/dist/esm-node/presetUltramodern.mjs +5 -0
  291. package/dist/esm-node/rsbuild.mjs +48 -0
  292. package/dist/esm-node/rslib-runtime.mjs +19 -0
  293. package/dist/esm-node/run/index.mjs +62 -0
  294. package/dist/esm-node/types/config/deploy.mjs +1 -0
  295. package/dist/esm-node/types/config/dev.mjs +1 -0
  296. package/dist/esm-node/types/config/experiments.mjs +1 -0
  297. package/dist/esm-node/types/config/html.mjs +1 -0
  298. package/dist/esm-node/types/config/index.mjs +2 -0
  299. package/dist/esm-node/types/config/output.mjs +1 -0
  300. package/dist/esm-node/types/config/performance.mjs +1 -0
  301. package/dist/esm-node/types/config/resolve.mjs +1 -0
  302. package/dist/esm-node/types/config/security.mjs +1 -0
  303. package/dist/esm-node/types/config/source.mjs +1 -0
  304. package/dist/esm-node/types/config/testing.mjs +1 -0
  305. package/dist/esm-node/types/config/tools.mjs +1 -0
  306. package/dist/esm-node/types/index.mjs +2 -0
  307. package/dist/esm-node/types/plugin.mjs +1 -0
  308. package/dist/esm-node/types/utils.mjs +1 -0
  309. package/dist/esm-node/ultramodern/designSystem.mjs +74 -0
  310. package/dist/esm-node/utils/config.mjs +12 -0
  311. package/dist/esm-node/utils/createServer.mjs +13 -0
  312. package/dist/esm-node/utils/env.mjs +13 -0
  313. package/dist/esm-node/utils/generateWatchFiles.mjs +11 -0
  314. package/dist/esm-node/utils/getConfigFile.mjs +6 -0
  315. package/dist/esm-node/utils/getSelectedEntries.mjs +27 -0
  316. package/dist/esm-node/utils/initAppContext.mjs +28 -0
  317. package/dist/esm-node/utils/loadPlugins.mjs +46 -0
  318. package/dist/esm-node/utils/printInstructions.mjs +10 -0
  319. package/dist/esm-node/utils/register.mjs +83 -0
  320. package/dist/esm-node/utils/restart.mjs +19 -0
  321. package/dist/esm-node/utils/routes.mjs +16 -0
  322. package/dist/esm-node/utils/types.mjs +1 -0
  323. package/dist/types/baseline.d.ts +46 -0
  324. package/dist/types/builder/builder-rspack/index.d.ts +2 -0
  325. package/dist/types/builder/generator/adapterCopy.d.ts +3 -0
  326. package/dist/types/builder/generator/createBuilderProviderConfig.d.ts +3 -0
  327. package/dist/types/builder/generator/createCopyPattern.d.ts +16 -0
  328. package/dist/types/builder/generator/getBuilderEnvironments.d.ts +6 -0
  329. package/dist/types/builder/generator/index.d.ts +8 -0
  330. package/dist/types/builder/index.d.ts +3 -0
  331. package/dist/types/builder/shared/builderPlugins/adapterBasic.d.ts +3 -0
  332. package/dist/types/builder/shared/builderPlugins/adapterHtml.d.ts +3 -0
  333. package/dist/types/builder/shared/builderPlugins/adapterPrecompress.d.ts +3 -0
  334. package/dist/types/builder/shared/builderPlugins/adapterSSR.d.ts +3 -0
  335. package/dist/types/builder/shared/builderPlugins/builderHooks.d.ts +3 -0
  336. package/dist/types/builder/shared/builderPlugins/index.d.ts +5 -0
  337. package/dist/types/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.d.ts +7 -0
  338. package/dist/types/builder/shared/bundlerPlugins/HtmlBottomTemplate.d.ts +9 -0
  339. package/dist/types/builder/shared/bundlerPlugins/RouterPlugin.d.ts +32 -0
  340. package/dist/types/builder/shared/bundlerPlugins/index.d.ts +3 -0
  341. package/dist/types/builder/shared/createCopyInfo.d.ts +8 -0
  342. package/dist/types/builder/shared/index.d.ts +3 -0
  343. package/dist/types/builder/shared/loaders/serverModuleLoader.d.ts +3 -0
  344. package/dist/types/builder/shared/types.d.ts +6 -0
  345. package/dist/types/commands/build.d.ts +4 -0
  346. package/dist/types/commands/deploy.d.ts +3 -0
  347. package/dist/types/commands/dev.d.ts +9 -0
  348. package/dist/types/commands/index.d.ts +10 -0
  349. package/dist/types/commands/info.d.ts +18 -0
  350. package/dist/types/commands/inspect.d.ts +4 -0
  351. package/dist/types/commands/runtime.d.ts +11 -0
  352. package/dist/types/commands/serve.d.ts +8 -0
  353. package/dist/types/compat/hooks.d.ts +7 -0
  354. package/dist/types/compat/index.d.ts +2 -0
  355. package/dist/types/compat/utils.d.ts +13 -0
  356. package/dist/types/config/default.d.ts +3 -0
  357. package/dist/types/config/index.d.ts +2 -0
  358. package/dist/types/config/initialize/index.d.ts +3 -0
  359. package/dist/types/config/initialize/inits.d.ts +4 -0
  360. package/dist/types/constants.d.ts +2 -0
  361. package/dist/types/defineConfig.d.ts +11 -0
  362. package/dist/types/esm/register-esm.d.mts +11 -0
  363. package/dist/types/esm/ts-node-loader.d.mts +6 -0
  364. package/dist/types/esm/ts-paths-loader.d.mts +6 -0
  365. package/dist/types/exports/server.d.ts +1 -0
  366. package/dist/types/index.d.ts +17 -0
  367. package/dist/types/locale/en.d.ts +44 -0
  368. package/dist/types/locale/index.d.ts +90 -0
  369. package/dist/types/locale/zh.d.ts +44 -0
  370. package/dist/types/plugins/analyze/constants.d.ts +3 -0
  371. package/dist/types/plugins/analyze/getBundleEntry.d.ts +4 -0
  372. package/dist/types/plugins/analyze/getFileSystemEntry.d.ts +7 -0
  373. package/dist/types/plugins/analyze/getHtmlTemplate.d.ts +27 -0
  374. package/dist/types/plugins/analyze/getServerRoutes.d.ts +8 -0
  375. package/dist/types/plugins/analyze/index.d.ts +3 -0
  376. package/dist/types/plugins/analyze/isDefaultExportFunction.d.ts +1 -0
  377. package/dist/types/plugins/analyze/templates.d.ts +5 -0
  378. package/dist/types/plugins/analyze/utils.d.ts +10 -0
  379. package/dist/types/plugins/deploy/index.d.ts +3 -0
  380. package/dist/types/plugins/deploy/platforms/gh-pages.d.ts +2 -0
  381. package/dist/types/plugins/deploy/platforms/netlify.d.ts +2 -0
  382. package/dist/types/plugins/deploy/platforms/node.d.ts +2 -0
  383. package/dist/types/plugins/deploy/platforms/platform.d.ts +17 -0
  384. package/dist/types/plugins/deploy/platforms/templates/netlify-entry.d.cts +2 -0
  385. package/dist/types/plugins/deploy/platforms/templates/netlify-entry.d.mts +2 -0
  386. package/dist/types/plugins/deploy/platforms/templates/node-entry.d.cts +1 -0
  387. package/dist/types/plugins/deploy/platforms/templates/node-entry.d.mts +1 -0
  388. package/dist/types/plugins/deploy/platforms/templates/vercel-entry.d.cts +2 -0
  389. package/dist/types/plugins/deploy/platforms/templates/vercel-entry.d.mts +2 -0
  390. package/dist/types/plugins/deploy/platforms/vercel.d.ts +2 -0
  391. package/dist/types/plugins/deploy/types.d.ts +3 -0
  392. package/dist/types/plugins/deploy/utils/generator.d.ts +24 -0
  393. package/dist/types/plugins/deploy/utils/index.d.ts +16 -0
  394. package/dist/types/plugins/initialize/index.d.ts +3 -0
  395. package/dist/types/plugins/serverBuild.d.ts +3 -0
  396. package/dist/types/plugins/serverRuntime.d.ts +3 -0
  397. package/dist/types/presetUltramodern.d.ts +6 -0
  398. package/dist/types/rsbuild.d.ts +12 -0
  399. package/dist/types/run/index.d.ts +20 -0
  400. package/dist/types/types/config/deploy.d.ts +38 -0
  401. package/dist/types/types/config/dev.d.ts +55 -0
  402. package/dist/types/types/config/experiments.d.ts +3 -0
  403. package/dist/types/types/config/html.d.ts +3 -0
  404. package/dist/types/types/config/index.d.ts +48 -0
  405. package/dist/types/types/config/output.d.ts +61 -0
  406. package/dist/types/types/config/performance.d.ts +3 -0
  407. package/dist/types/types/config/resolve.d.ts +2 -0
  408. package/dist/types/types/config/security.d.ts +2 -0
  409. package/dist/types/types/config/source.d.ts +61 -0
  410. package/dist/types/types/config/testing.d.ts +8 -0
  411. package/dist/types/types/config/tools.d.ts +21 -0
  412. package/dist/types/types/index.d.ts +10 -0
  413. package/dist/types/types/plugin.d.ts +114 -0
  414. package/dist/types/types/utils.d.ts +1 -0
  415. package/dist/types/ultramodern/designSystem.d.ts +54 -0
  416. package/dist/types/utils/config.d.ts +2 -0
  417. package/dist/types/utils/createServer.d.ts +5 -0
  418. package/dist/types/utils/env.d.ts +2 -0
  419. package/dist/types/utils/generateWatchFiles.d.ts +2 -0
  420. package/dist/types/utils/getConfigFile.d.ts +1 -0
  421. package/dist/types/utils/getSelectedEntries.d.ts +5 -0
  422. package/dist/types/utils/initAppContext.d.ts +31 -0
  423. package/dist/types/utils/loadPlugins.d.ts +13 -0
  424. package/dist/types/utils/printInstructions.d.ts +3 -0
  425. package/dist/types/utils/register.d.ts +19 -0
  426. package/dist/types/utils/restart.d.ts +2 -0
  427. package/dist/types/utils/routes.d.ts +4 -0
  428. package/dist/types/utils/types.d.ts +49 -0
  429. package/lib/types.d.ts +252 -0
  430. package/package.json +138 -0
  431. package/rslib.config.mts +39 -0
  432. package/rstest.config.mts +20 -0
@@ -0,0 +1,45 @@
1
+ import { compile } from "@modern-js/server-utils";
2
+ import { SERVER_DIR, SHARED_DIR, getMeta, resolveServerTsconfig } from "@modern-js/utils";
3
+ import fs from "fs";
4
+ import path from "path";
5
+ function checkHasCache(appDir) {
6
+ const tsFilepath = path.resolve(appDir, SERVER_DIR, 'cache.ts');
7
+ const jsfilepath = path.resolve(appDir, SERVER_DIR, 'cache.js');
8
+ return fs.existsSync(tsFilepath) || fs.existsSync(jsfilepath);
9
+ }
10
+ function checkHasConfig(appDir, metaName = 'modern-js') {
11
+ const meta = getMeta(metaName);
12
+ const tsFilepath = path.resolve(appDir, SERVER_DIR, `${meta}.server.ts`);
13
+ const jsfilepath = path.resolve(appDir, SERVER_DIR, `${meta}.server.js`);
14
+ return fs.existsSync(tsFilepath) || fs.existsSync(jsfilepath);
15
+ }
16
+ const serverBuild = ()=>({
17
+ name: '@modern-js/server-build',
18
+ setup (api) {
19
+ api.onAfterBuild(async ()=>{
20
+ const { appDirectory, distDirectory, metaName } = api.getAppContext();
21
+ if (!checkHasCache(appDirectory) && !checkHasConfig(appDirectory, metaName)) return;
22
+ const modernConfig = api.getNormalizedConfig();
23
+ const distDir = path.resolve(distDirectory);
24
+ const serverDir = path.resolve(appDirectory, SERVER_DIR);
25
+ const sharedDir = path.resolve(appDirectory, SHARED_DIR);
26
+ const tsconfigPath = resolveServerTsconfig(appDirectory, modernConfig?.server?.tsconfigPath);
27
+ const sourceDirs = [];
28
+ if (fs.existsSync(serverDir)) {
29
+ sourceDirs.push(serverDir);
30
+ if (fs.existsSync(sharedDir)) sourceDirs.push(sharedDir);
31
+ }
32
+ const { server } = modernConfig;
33
+ const { alias } = modernConfig.source;
34
+ if (sourceDirs.length > 0) await compile(appDirectory, {
35
+ server,
36
+ alias
37
+ }, {
38
+ sourceDirs,
39
+ distDir,
40
+ tsconfigPath
41
+ });
42
+ });
43
+ }
44
+ });
45
+ export default serverBuild;
@@ -0,0 +1,15 @@
1
+ const serverRuntime = ()=>({
2
+ name: '@modern-js/plugin-server-runtime',
3
+ setup (api) {
4
+ api.config(()=>({
5
+ output: {
6
+ externals: [
7
+ {
8
+ '@modern-js/server-runtime': '@modern-js/server-runtime'
9
+ }
10
+ ]
11
+ }
12
+ }));
13
+ }
14
+ });
15
+ export default serverRuntime;
@@ -0,0 +1,4 @@
1
+ import { createAppBaselineConfig, withAppBaseline } from "./baseline.mjs";
2
+ const createPresetUltramodernConfig = (options = {})=>createAppBaselineConfig(options);
3
+ const presetUltramodern = (config, options = {})=>withAppBaseline(config, options);
4
+ export { createPresetUltramodernConfig, presetUltramodern };
@@ -0,0 +1,47 @@
1
+ import { parseRspackConfig } from "@modern-js/builder";
2
+ import { builderPluginAdapterBasic, builderPluginAdapterHooks } from "./builder/shared/builderPlugins/index.mjs";
3
+ import { DEFAULT_CONFIG_FILE } from "./constants.mjs";
4
+ import { getConfigFile } from "./utils/getConfigFile.mjs";
5
+ import { __webpack_require__ } from "./rslib-runtime.mjs";
6
+ import * as __rspack_external__modern_js_plugin_cli_caa09fa2 from "@modern-js/plugin/cli";
7
+ __webpack_require__.add({
8
+ "@modern-js/plugin/cli?f956" (module) {
9
+ module.exports = __rspack_external__modern_js_plugin_cli_caa09fa2;
10
+ }
11
+ });
12
+ const MODERN_META_NAME = 'modern-js';
13
+ const { createConfigOptions: createConfigOptions } = __webpack_require__("@modern-js/plugin/cli?f956");
14
+ async function resolveModernRsbuildConfig(options) {
15
+ const { cwd = process.cwd(), metaName = MODERN_META_NAME } = options;
16
+ const configFile = options.configPath || getConfigFile(void 0, cwd);
17
+ if (!configFile) throw new Error(`Cannot find config file in ${cwd}. Please make sure you have a ${DEFAULT_CONFIG_FILE} file in your project.`);
18
+ const { config: modernConfig, getAppContext } = await createConfigOptions({
19
+ command: options.command,
20
+ cwd,
21
+ configFile,
22
+ metaName,
23
+ modifyModernConfig: options.modifyModernConfig
24
+ });
25
+ const nonStandardConfig = {
26
+ ...modernConfig,
27
+ plugins: modernConfig.builderPlugins
28
+ };
29
+ const appContext = getAppContext();
30
+ const { rsbuildConfig, rsbuildPlugins } = await parseRspackConfig(nonStandardConfig, {
31
+ cwd
32
+ });
33
+ const adapterParams = {
34
+ appContext,
35
+ normalizedConfig: modernConfig
36
+ };
37
+ rsbuildConfig.plugins = [
38
+ ...rsbuildPlugins,
39
+ ...rsbuildConfig.plugins || [],
40
+ builderPluginAdapterBasic(adapterParams),
41
+ builderPluginAdapterHooks(adapterParams)
42
+ ];
43
+ return {
44
+ rsbuildConfig
45
+ };
46
+ }
47
+ export { resolveModernRsbuildConfig };
@@ -0,0 +1,18 @@
1
+ var __webpack_modules__ = {};
2
+ var __webpack_module_cache__ = {};
3
+ function __webpack_require__(moduleId) {
4
+ var cachedModule = __webpack_module_cache__[moduleId];
5
+ if (void 0 !== cachedModule) return cachedModule.exports;
6
+ var module = __webpack_module_cache__[moduleId] = {
7
+ exports: {}
8
+ };
9
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
10
+ return module.exports;
11
+ }
12
+ __webpack_require__.m = __webpack_modules__;
13
+ (()=>{
14
+ __webpack_require__.add = function(modules) {
15
+ Object.assign(__webpack_require__.m, modules);
16
+ };
17
+ })();
18
+ export { __webpack_require__ };
@@ -0,0 +1,61 @@
1
+ import { initAppDir } from "@modern-js/plugin/cli";
2
+ import { run } from "@modern-js/plugin/run";
3
+ import { chalk, minimist } from "@modern-js/utils";
4
+ import { handleSetupResult } from "../compat/hooks.mjs";
5
+ import { getConfigFile } from "../utils/getConfigFile.mjs";
6
+ import { loadInternalPlugins } from "../utils/loadPlugins.mjs";
7
+ async function createRunOptions({ cwd, initialLog, metaName = 'modern-js', version, internalPlugins, configFile }) {
8
+ const nodeVersion = process.versions.node;
9
+ const versionArr = nodeVersion.split('.').map(Number);
10
+ if (versionArr[0] <= 16) console.warn(`
11
+ ${chalk.bgRed.white.bold(' ⚠️ CRITICAL NODE.JS VERSION ALERT ⚠️ ')}
12
+
13
+ ${chalk.red.bold('Node.js 16 End-of-Life Notice:')}
14
+ ${chalk.red('- Security updates and support have ended for Node.js 16')}
15
+
16
+ ${chalk.yellow('▸ Detected Runtime:')} ${chalk.yellow.bold(`Node.js v${nodeVersion}`)}
17
+ ${chalk.green('▸ Required Minimum:')} ${chalk.green.bold('Node.js LTS (v18.x or higher)')}
18
+ ${chalk.green('▸ Recommended:')} ${chalk.green.bold('Node.js LTS (v22.x or higher)')}
19
+
20
+ ${chalk.cyan('Immediate Action Required:')}
21
+ ${chalk.gray('├──')} ${chalk.yellow('Recommended Upgrade')}
22
+ ${chalk.bold('nvm install 22 --lts && nvm use 22')}
23
+ ${chalk.gray('├──')} ${chalk.yellow('Manual Installation')}
24
+ ${chalk.underline('https://nodejs.org/download/release/lts-hydrogen/')}
25
+ ${chalk.gray('└──')} ${chalk.yellow('Environment Verification')}
26
+ ${chalk.bold('node -v && npm -v')}
27
+
28
+ ${chalk.hex('#AAAAAA').italic('[Security Advisory] Node.js 16 is no longer supported. Upgrade immediately for security and compatibility.')}
29
+ `);
30
+ const command = process.argv[2];
31
+ const cliParams = minimist(process.argv.slice(2));
32
+ const SUPPORT_CONFIG_PARAM_COMMANDS = [
33
+ 'dev',
34
+ 'build',
35
+ 'deploy',
36
+ 'start',
37
+ 'serve',
38
+ 'inspect',
39
+ 'info',
40
+ 'upgrade'
41
+ ];
42
+ let customConfigFile;
43
+ if (SUPPORT_CONFIG_PARAM_COMMANDS.includes(command)) customConfigFile = cliParams.config || cliParams.c;
44
+ if ('new' === command) customConfigFile = cliParams['config-file'];
45
+ const appDirectory = await initAppDir(cwd);
46
+ const finalConfigFile = customConfigFile || getConfigFile(configFile);
47
+ const plugins = await loadInternalPlugins(appDirectory, internalPlugins);
48
+ return {
49
+ cwd,
50
+ initialLog: initialLog || `Modern.js Framework v${version}`,
51
+ configFile: finalConfigFile,
52
+ metaName,
53
+ internalPlugins: plugins,
54
+ handleSetupResult: handleSetupResult
55
+ };
56
+ }
57
+ async function run_run(options) {
58
+ const runOptions = await createRunOptions(options);
59
+ await run(runOptions);
60
+ }
61
+ export { createRunOptions, run_run as run };
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1 @@
1
+ export * from "./output.mjs";
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1 @@
1
+ export * from "./config/index.mjs";
File without changes
File without changes
@@ -0,0 +1,73 @@
1
+ const DESIGN_SYSTEM_MODES = [
2
+ 'off',
3
+ 'tokens',
4
+ 'components',
5
+ 'strict'
6
+ ];
7
+ const DESIGN_SYSTEM_OVERRIDE_LAYERS = [
8
+ 'brand',
9
+ 'vertical',
10
+ 'application'
11
+ ];
12
+ const VALID_MODES = new Set(DESIGN_SYSTEM_MODES);
13
+ const VALID_OVERRIDE_LAYERS = new Set(DESIGN_SYSTEM_OVERRIDE_LAYERS);
14
+ const createValidationResult = (issues)=>({
15
+ valid: 0 === issues.length,
16
+ issues
17
+ });
18
+ const addIssue = (issues, path, message)=>{
19
+ issues.push({
20
+ path,
21
+ message
22
+ });
23
+ };
24
+ const createDesignSystemTokenPackMap = (tokenPacks)=>new Map(tokenPacks.map((tokenPack)=>[
25
+ tokenPack.id,
26
+ tokenPack
27
+ ]));
28
+ const validateDesignSystemConsumerCompatibility = (vertical, tokenPack, path = 'vertical')=>{
29
+ const issues = [];
30
+ const consumers = vertical.consumers ?? [];
31
+ for (const [consumerIndex, consumer] of consumers.entries()){
32
+ const consumerPath = `${path}.consumers[${consumerIndex}]`;
33
+ if (consumer.unsupportedModes?.includes(vertical.mode)) addIssue(issues, `${consumerPath}.unsupportedModes`, `consumer "${consumer.id}" does not support "${vertical.mode}" mode`);
34
+ if (!tokenPack) continue;
35
+ const expectedVersion = consumer.tokenPackVersions?.[tokenPack.id];
36
+ if (expectedVersion && expectedVersion !== tokenPack.version) addIssue(issues, `${consumerPath}.tokenPackVersions.${tokenPack.id}`, `consumer "${consumer.id}" requires "${tokenPack.id}" version "${expectedVersion}" but received "${tokenPack.version}"`);
37
+ for (const tokenName of consumer.requiredTokens ?? [])if (!(tokenName in tokenPack.tokens)) addIssue(issues, `${consumerPath}.requiredTokens`, `consumer "${consumer.id}" requires missing token "${tokenName}" from "${tokenPack.id}"`);
38
+ }
39
+ return createValidationResult(issues);
40
+ };
41
+ const validateDesignSystemContract = (contract)=>{
42
+ const issues = [];
43
+ const tokenPackMap = createDesignSystemTokenPackMap(contract.tokenPacks);
44
+ for (const [tokenPackIndex, tokenPack] of contract.tokenPacks.entries()){
45
+ const tokenPackPath = `tokenPacks[${tokenPackIndex}]`;
46
+ if (tokenPackMap.get(tokenPack.id) !== tokenPack) addIssue(issues, `${tokenPackPath}.id`, `duplicate token pack id "${tokenPack.id}"`);
47
+ if (0 === Object.keys(tokenPack.tokens).length) addIssue(issues, `${tokenPackPath}.tokens`, `token pack "${tokenPack.id}" must define at least one token`);
48
+ }
49
+ for (const [verticalName, vertical] of Object.entries(contract.verticals)){
50
+ const verticalPath = `verticals.${verticalName}`;
51
+ const tokenPack = vertical.tokenPack ? tokenPackMap.get(vertical.tokenPack) : void 0;
52
+ if (!VALID_MODES.has(vertical.mode)) addIssue(issues, `${verticalPath}.mode`, `unsupported design system mode "${vertical.mode}"`);
53
+ if ('off' !== vertical.mode && !vertical.tokenPack) addIssue(issues, `${verticalPath}.tokenPack`, `vertical "${verticalName}" must select a token pack when mode is "${vertical.mode}"`);
54
+ if (vertical.tokenPack && !tokenPack) addIssue(issues, `${verticalPath}.tokenPack`, `unknown token pack "${vertical.tokenPack}"`);
55
+ for (const [overrideIndex, override] of (vertical.overrides ?? []).entries())if (!VALID_OVERRIDE_LAYERS.has(override.layer)) addIssue(issues, `${verticalPath}.overrides[${overrideIndex}].layer`, `override layer "${override.layer}" is not approved`);
56
+ if (vertical.pin) {
57
+ const pinnedTokenPack = tokenPackMap.get(vertical.pin.tokenPack);
58
+ const rollbackTokenPack = tokenPackMap.get(vertical.pin.rollback.tokenPack);
59
+ if (pinnedTokenPack) {
60
+ if (pinnedTokenPack.version !== vertical.pin.version) addIssue(issues, `${verticalPath}.pin.version`, `pinned version "${vertical.pin.version}" does not match token pack "${vertical.pin.tokenPack}" version "${pinnedTokenPack.version}"`);
61
+ } else addIssue(issues, `${verticalPath}.pin.tokenPack`, `unknown pinned token pack "${vertical.pin.tokenPack}"`);
62
+ if (vertical.tokenPack && vertical.pin.tokenPack !== vertical.tokenPack) addIssue(issues, `${verticalPath}.pin.tokenPack`, `pinned token pack "${vertical.pin.tokenPack}" must match selected token pack "${vertical.tokenPack}"`);
63
+ if (rollbackTokenPack) {
64
+ if (rollbackTokenPack.version !== vertical.pin.rollback.version) addIssue(issues, `${verticalPath}.pin.rollback.version`, `rollback version "${vertical.pin.rollback.version}" does not match token pack "${vertical.pin.rollback.tokenPack}" version "${rollbackTokenPack.version}"`);
65
+ } else addIssue(issues, `${verticalPath}.pin.rollback.tokenPack`, `unknown rollback token pack "${vertical.pin.rollback.tokenPack}"`);
66
+ if (!vertical.pin.rollback.reason) addIssue(issues, `${verticalPath}.pin.rollback.reason`, 'rollback metadata must include a reason');
67
+ }
68
+ const compatibility = validateDesignSystemConsumerCompatibility(vertical, tokenPack, verticalPath);
69
+ issues.push(...compatibility.issues);
70
+ }
71
+ return createValidationResult(issues);
72
+ };
73
+ export { DESIGN_SYSTEM_MODES, DESIGN_SYSTEM_OVERRIDE_LAYERS, createDesignSystemTokenPackMap, validateDesignSystemConsumerCompatibility, validateDesignSystemContract };
@@ -0,0 +1,11 @@
1
+ import { OUTPUT_CONFIG_FILE, ensureAbsolutePath, fs } from "@modern-js/utils";
2
+ import { stringify } from "flatted";
3
+ import * as __rspack_external_path from "path";
4
+ const emitResolvedConfig = async (appDirectory, resolvedConfig)=>{
5
+ const outputPath = ensureAbsolutePath(appDirectory, __rspack_external_path.join(resolvedConfig.output.distPath?.root || './dist', OUTPUT_CONFIG_FILE));
6
+ const output = stringify(resolvedConfig);
7
+ await fs.writeFile(outputPath, output, {
8
+ encoding: 'utf-8'
9
+ });
10
+ };
11
+ export { emitResolvedConfig };
@@ -0,0 +1,12 @@
1
+ let server = null;
2
+ const getServer = ()=>server;
3
+ const setServer = (newServer)=>{
4
+ server = newServer;
5
+ };
6
+ const closeServer = async ()=>{
7
+ if (server) {
8
+ server.close();
9
+ server = null;
10
+ }
11
+ };
12
+ export { closeServer, getServer, setServer };
@@ -0,0 +1,12 @@
1
+ import { cutNameByHyphen } from "@modern-js/utils/universal";
2
+ function getAutoInjectEnv(appContext) {
3
+ const { metaName } = appContext;
4
+ const prefix = `${cutNameByHyphen(metaName)}_`.toUpperCase();
5
+ const envReg = new RegExp(`^${prefix}`);
6
+ return Object.keys(process.env).reduce((prev, key)=>{
7
+ const value = process.env[key];
8
+ if (envReg.test(key) && void 0 !== value) prev[`process.env.${key}`] = value;
9
+ return prev;
10
+ }, {});
11
+ }
12
+ export { getAutoInjectEnv };
@@ -0,0 +1,10 @@
1
+ import path from "path";
2
+ async function generateWatchFiles(appContext, configDir) {
3
+ const { appDirectory, configFile } = appContext;
4
+ const configPath = path.join(appDirectory, configDir || '');
5
+ return [
6
+ `${configPath}/html`,
7
+ configFile || './config'
8
+ ];
9
+ }
10
+ export { generateWatchFiles };
@@ -0,0 +1,5 @@
1
+ import { CONFIG_FILE_EXTENSIONS, findExists } from "@modern-js/utils";
2
+ import path from "path";
3
+ import { DEFAULT_CONFIG_FILE } from "../constants.mjs";
4
+ const getConfigFile = (configFile, cwd = process.cwd())=>findExists(CONFIG_FILE_EXTENSIONS.map((extension)=>path.resolve(cwd, `${configFile || DEFAULT_CONFIG_FILE}${extension}`)));
5
+ export { getConfigFile };
@@ -0,0 +1,26 @@
1
+ import { chalk, inquirer } from "@modern-js/utils";
2
+ import { i18n, localeKeys } from "../locale/index.mjs";
3
+ const getSelectedEntries = async (entry, entrypoints)=>{
4
+ const entryNames = entrypoints.map((e)=>e.entryName);
5
+ if (!entry) return entryNames;
6
+ if ('boolean' == typeof entry) {
7
+ const { selected } = await inquirer.prompt([
8
+ {
9
+ type: 'checkbox',
10
+ name: 'selected',
11
+ choices: entryNames,
12
+ message: i18n.t(localeKeys.command.dev.selectEntry),
13
+ validate (answer) {
14
+ if (answer.length < 1) return i18n.t(localeKeys.command.dev.requireEntry);
15
+ return true;
16
+ }
17
+ }
18
+ ]);
19
+ return selected;
20
+ }
21
+ entry.forEach((name)=>{
22
+ if (!entryNames.includes(name)) throw new Error(`Can not found entry ${chalk.yellow(name)}, the entry should be one of ${chalk.yellow(entryNames.join(', '))}`);
23
+ });
24
+ return entry;
25
+ };
26
+ export { getSelectedEntries };
@@ -0,0 +1,27 @@
1
+ import { address, fs } from "@modern-js/utils";
2
+ import path from "path";
3
+ const initAppContext = ({ metaName, appDirectory, runtimeConfigFile, options, tempDir })=>{
4
+ const { apiDir = 'api', sharedDir = 'shared', bffRuntimeFramework = 'hono' } = options || {};
5
+ const pkgPath = path.resolve(appDirectory, './package.json');
6
+ const moduleType = fs.existsSync(pkgPath) ? fs.readJSONSync(pkgPath).type || 'commonjs' : 'commonjs';
7
+ return {
8
+ runtimeConfigFile,
9
+ ip: address.ip(),
10
+ port: 0,
11
+ moduleType,
12
+ apiDirectory: path.resolve(appDirectory, apiDir),
13
+ lambdaDirectory: path.resolve(appDirectory, apiDir, 'lambda'),
14
+ sharedDirectory: path.resolve(appDirectory, sharedDir),
15
+ serverPlugins: [],
16
+ internalDirectory: path.resolve(appDirectory, tempDir || `./node_modules/.${metaName}`),
17
+ htmlTemplates: {},
18
+ serverRoutes: [],
19
+ entrypoints: [],
20
+ checkedEntries: [],
21
+ apiOnly: false,
22
+ internalDirAlias: `@_${metaName.replace(/-/g, '_')}_internal`,
23
+ internalSrcAlias: `@_${metaName.replace(/-/g, '_')}_src`,
24
+ bffRuntimeFramework
25
+ };
26
+ };
27
+ export { initAppContext };
@@ -0,0 +1,45 @@
1
+ import { loadServerPlugins } from "@modern-js/server-core/node";
2
+ import { compatibleRequire, createDebugger, dynamicImport, getInternalPlugins, tryResolve } from "@modern-js/utils";
3
+ const debug = createDebugger('load-plugins');
4
+ async function getServerPlugins(api, metaName = 'modern-js') {
5
+ const hooks = api.getHooks();
6
+ const { plugins } = await hooks._internalServerPlugins.call({
7
+ plugins: []
8
+ });
9
+ const filtedPlugins = plugins.filter((plugin)=>plugin.name.includes(metaName));
10
+ api.updateAppContext({
11
+ serverPlugins: filtedPlugins
12
+ });
13
+ return filtedPlugins;
14
+ }
15
+ async function loadPlugins_loadServerPlugins(api, appDirectory, metaName) {
16
+ const plugins = await getServerPlugins(api, metaName);
17
+ const instances = await loadServerPlugins(plugins, appDirectory);
18
+ return instances;
19
+ }
20
+ const resolveCliPlugin = async (p, appDirectory)=>{
21
+ const pkg = 'string' == typeof p ? p : p[0];
22
+ const pluginOptions = 'string' == typeof p ? void 0 : p[1];
23
+ const path = tryResolve(pkg, appDirectory);
24
+ let module;
25
+ try {
26
+ module = await compatibleRequire(path);
27
+ } catch (e) {
28
+ ({ default: module } = await dynamicImport(path));
29
+ }
30
+ if ('function' == typeof module) {
31
+ const result = module(pluginOptions);
32
+ return result;
33
+ }
34
+ return module;
35
+ };
36
+ const loadInternalPlugins = async (appDirectory, internalPlugins)=>{
37
+ const plugins = getInternalPlugins(appDirectory, internalPlugins);
38
+ const loadedPlugins = await Promise.all(plugins.map((plugin)=>{
39
+ const loadedPlugin = resolveCliPlugin(plugin, appDirectory);
40
+ debug("resolve plugin %s: %s", plugin, loadedPlugin);
41
+ return loadedPlugin;
42
+ }));
43
+ return loadedPlugins;
44
+ };
45
+ export { getServerPlugins, loadInternalPlugins, loadPlugins_loadServerPlugins as loadServerPlugins };
@@ -0,0 +1,9 @@
1
+ import { logger, prettyInstructions } from "@modern-js/utils";
2
+ const printInstructions = async (hooks, appContext, config)=>{
3
+ const message = prettyInstructions(appContext, config);
4
+ const { instructions } = await hooks.onBeforePrintInstructions.call({
5
+ instructions: message
6
+ });
7
+ logger.log(instructions);
8
+ };
9
+ export { printInstructions };
@@ -0,0 +1,81 @@
1
+ import node_path from "node:path";
2
+ import { fs, getAliasConfig, mergeAlias, resolveServerTsconfig } from "@modern-js/utils";
3
+ const normalizePathValue = ({ key, value, absoluteBaseUrl })=>{
4
+ let normalizedValue = value;
5
+ if (key.startsWith('@') && normalizedValue.startsWith('@')) try {
6
+ normalizedValue = require.resolve(normalizedValue, {
7
+ paths: [
8
+ process.cwd(),
9
+ ...module.paths
10
+ ]
11
+ });
12
+ } catch {}
13
+ return node_path.isAbsolute(normalizedValue) ? node_path.relative(absoluteBaseUrl, normalizedValue) : normalizedValue;
14
+ };
15
+ const normalizePathValues = ({ key, value, absoluteBaseUrl })=>{
16
+ const values = Array.isArray(value) ? value : [
17
+ value
18
+ ];
19
+ return values.map((item)=>normalizePathValue({
20
+ key,
21
+ value: item,
22
+ absoluteBaseUrl
23
+ }));
24
+ };
25
+ const addResolvedAlias = (paths, key, values)=>{
26
+ if (!key || paths[key]) return;
27
+ paths[key] = values;
28
+ };
29
+ const createRuntimePaths = ({ alias, paths, absoluteBaseUrl })=>{
30
+ const mergedAlias = mergeAlias(alias);
31
+ const normalizedPaths = Object.keys(paths).reduce((result, key)=>{
32
+ addResolvedAlias(result, key.endsWith('$') ? key.slice(0, -1) : key, normalizePathValues({
33
+ key,
34
+ value: paths[key],
35
+ absoluteBaseUrl
36
+ }));
37
+ return result;
38
+ }, {});
39
+ Object.keys(mergedAlias).forEach((key)=>{
40
+ if (key.includes('*') || key.endsWith('$')) return;
41
+ addResolvedAlias(normalizedPaths, `${key}/*`, normalizePathValues({
42
+ key,
43
+ value: mergedAlias[key],
44
+ absoluteBaseUrl
45
+ }).map((value)=>`${value}/*`));
46
+ });
47
+ return normalizedPaths;
48
+ };
49
+ const resolveTsRuntimeRegisterMode = ()=>{
50
+ const hasNativeTypeScriptSupport = process.features?.typescript;
51
+ const nodeMajorVersion = Number(process.versions.node.split('.')[0]);
52
+ const supportsNativeTypeScript = void 0 === hasNativeTypeScriptSupport ? nodeMajorVersion >= 22 : false !== hasNativeTypeScriptSupport;
53
+ if (supportsNativeTypeScript) return 'node-loader';
54
+ return 'unsupported';
55
+ };
56
+ const setupTsRuntime = async (appDir, distDir, alias, options = {})=>{
57
+ const tsconfigPath = resolveServerTsconfig(appDir, options.tsconfigPath);
58
+ const isTsProject = await fs.pathExists(tsconfigPath);
59
+ if (!isTsProject) return;
60
+ const registerMode = resolveTsRuntimeRegisterMode();
61
+ const aliasConfig = getAliasConfig(alias, {
62
+ appDirectory: appDir,
63
+ tsconfigPath
64
+ });
65
+ const { paths = {}, absoluteBaseUrl = './' } = aliasConfig;
66
+ const runtimePaths = createRuntimePaths({
67
+ alias,
68
+ paths,
69
+ absoluteBaseUrl
70
+ });
71
+ if ('unsupported' === registerMode) return;
72
+ if ('node-loader' === registerMode) {
73
+ const { registerPathsLoader } = await import("../esm/register-esm.mjs");
74
+ await registerPathsLoader({
75
+ appDir,
76
+ baseUrl: absoluteBaseUrl || './',
77
+ paths: runtimePaths
78
+ });
79
+ }
80
+ };
81
+ export { resolveTsRuntimeRegisterMode, setupTsRuntime };
@@ -0,0 +1,18 @@
1
+ import { cli } from "@modern-js/plugin/cli";
2
+ import { chalk, clearConsole, getFullArgv, logger } from "@modern-js/utils";
3
+ import { program } from "@modern-js/utils/commander";
4
+ async function restart(hooks, filename) {
5
+ clearConsole();
6
+ logger.info(`Restart because ${chalk.yellow(filename)} is changed...\n`);
7
+ let hasGetError = false;
8
+ await hooks.onBeforeRestart.call();
9
+ try {
10
+ await cli.init(cli.getPrevInitOptions());
11
+ } catch (err) {
12
+ console.error(err);
13
+ hasGetError = true;
14
+ } finally{
15
+ if (!hasGetError) program.parse(getFullArgv());
16
+ }
17
+ }
18
+ export { restart };
@@ -0,0 +1,15 @@
1
+ import { MAIN_ENTRY_NAME, ROUTE_SPEC_FILE, fs } from "@modern-js/utils";
2
+ import path from "path";
3
+ const generateRoutes = async (appContext)=>{
4
+ const { serverRoutes, distDirectory } = appContext;
5
+ const output = JSON.stringify({
6
+ routes: serverRoutes
7
+ }, null, 2);
8
+ await fs.outputFile(path.join(distDirectory, ROUTE_SPEC_FILE), output);
9
+ };
10
+ const getPathWithoutExt = (filename)=>{
11
+ const extname = path.extname(filename);
12
+ return filename.slice(0, -extname.length);
13
+ };
14
+ const isMainEntry = (entryName, mainEntryName)=>entryName === (mainEntryName || MAIN_ENTRY_NAME);
15
+ export { generateRoutes, getPathWithoutExt, isMainEntry };
File without changes
@@ -0,0 +1,47 @@
1
+ import "node:module";
2
+ import { mergeConfig } from "@modern-js/plugin/cli";
3
+ const createAppBaselineConfig = (options = {})=>{
4
+ const { appId = 'app', enableBffRequestId = true, enableTelemetry = true, enableTelemetryExporters = true, otlpEndpoint = process.env.MODERN_TELEMETRY_OTLP_ENDPOINT || 'http://127.0.0.1:4318/v1/logs', victoriaMetricsEndpoint = process.env.MODERN_TELEMETRY_VICTORIA_ENDPOINT || 'http://127.0.0.1:8428/api/v1/import/prometheus', telemetryFailLoudStartup = true, enableModuleFederationSSR = true } = options;
5
+ const server = {};
6
+ if (enableTelemetry) {
7
+ server.telemetry = {
8
+ enabled: true,
9
+ failLoudStartup: telemetryFailLoudStartup
10
+ };
11
+ if (enableTelemetryExporters) server.telemetry.exporters = {
12
+ otlp: {
13
+ enabled: true,
14
+ endpoint: otlpEndpoint
15
+ },
16
+ victoriaMetrics: {
17
+ enabled: true,
18
+ endpoint: victoriaMetricsEndpoint
19
+ }
20
+ };
21
+ }
22
+ if (enableModuleFederationSSR) server.ssr = {
23
+ mode: 'stream',
24
+ moduleFederationAppSSR: true
25
+ };
26
+ const baselineConfig = {
27
+ output: {
28
+ precompress: true
29
+ },
30
+ performance: {
31
+ rsdoctor: {
32
+ enabled: 'production' === process.env.NODE_ENV,
33
+ disableClientServer: true
34
+ }
35
+ },
36
+ server
37
+ };
38
+ if (enableBffRequestId) baselineConfig.bff = {
39
+ requestId: appId
40
+ };
41
+ return baselineConfig;
42
+ };
43
+ const withAppBaseline = (config, options = {})=>mergeConfig([
44
+ createAppBaselineConfig(options),
45
+ config
46
+ ]);
47
+ export { createAppBaselineConfig, withAppBaseline };