@modern-js/app-tools 2.3.1-alpha.2 → 2.5.0-alpha.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 (430) hide show
  1. package/CHANGELOG.md +115 -0
  2. package/README.md +14 -18
  3. package/dist/cjs/analyze/constants.js +100 -0
  4. package/dist/cjs/analyze/generateCode.js +251 -0
  5. package/dist/cjs/analyze/getBundleEntry.js +101 -0
  6. package/dist/cjs/analyze/getClientRoutes/getRoutes.js +225 -0
  7. package/dist/cjs/analyze/getClientRoutes/getRoutesLegacy.js +221 -0
  8. package/dist/cjs/analyze/getClientRoutes/index.js +30 -0
  9. package/dist/cjs/analyze/getClientRoutes/utils.js +58 -0
  10. package/dist/cjs/analyze/getFileSystemEntry.js +131 -0
  11. package/dist/cjs/analyze/getHtmlTemplate.js +124 -0
  12. package/dist/cjs/analyze/getServerRoutes.js +174 -0
  13. package/dist/cjs/analyze/index.js +294 -0
  14. package/dist/cjs/analyze/isDefaultExportFunction.js +71 -0
  15. package/dist/cjs/analyze/makeLegalIdentifier.js +36 -0
  16. package/dist/cjs/analyze/nestedRoutes.js +179 -0
  17. package/dist/cjs/analyze/templates.js +330 -0
  18. package/dist/cjs/analyze/utils.js +152 -0
  19. package/dist/cjs/builder/builder-rspack/index.js +31 -0
  20. package/dist/cjs/builder/builder-webpack/builderPlugins/compatModern.js +64 -0
  21. package/dist/cjs/builder/builder-webpack/index.js +78 -0
  22. package/dist/cjs/builder/builder-webpack/webpackPlugins/RouterPlugin.js +120 -0
  23. package/dist/cjs/builder/builder-webpack/webpackPlugins/index.js +17 -0
  24. package/dist/cjs/builder/generator/createBuilderOptions.js +47 -0
  25. package/dist/cjs/builder/generator/createBuilderProviderConfig.js +49 -0
  26. package/dist/cjs/builder/generator/getBuilderTargets.js +39 -0
  27. package/dist/cjs/builder/generator/index.js +58 -0
  28. package/dist/cjs/builder/index.js +46 -0
  29. package/dist/cjs/builder/shared/builderPlugins/adapterModern.js +230 -0
  30. package/dist/{js/node/builder/webpackPlugins/htmlAsyncChunkPlugin.js → cjs/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js} +17 -20
  31. package/dist/{js/node/builder/webpackPlugins/htmlBottomTemplate.js → cjs/builder/shared/bundlerPlugins/HtmlBottomTemplate.js} +21 -24
  32. package/dist/{js/node/builder/share.js → cjs/builder/shared/createCopyPattern.js} +3 -3
  33. package/dist/cjs/builder/shared/index.js +19 -0
  34. package/dist/{js/node/builder → cjs/builder/shared}/loaders/serverModuleLoader.js +0 -0
  35. package/dist/cjs/builder/shared/types.js +15 -0
  36. package/dist/cjs/commands/build.js +75 -0
  37. package/dist/cjs/commands/deploy.js +31 -0
  38. package/dist/cjs/commands/dev.js +91 -0
  39. package/dist/cjs/commands/index.js +19 -0
  40. package/dist/cjs/commands/inspect.js +41 -0
  41. package/dist/cjs/commands/serve.js +63 -0
  42. package/dist/cjs/config/default.js +186 -0
  43. package/dist/cjs/config/index.js +19 -0
  44. package/dist/{js/node/config/initial → cjs/config/initialize}/index.js +10 -16
  45. package/dist/cjs/config/initialize/inits.js +161 -0
  46. package/dist/{js/node/config/initial → cjs/config/legacy}/createHtmlConfig.js +0 -0
  47. package/dist/{js/node/config/initial → cjs/config/legacy}/createOutputConfig.js +0 -0
  48. package/dist/{js/node/config/initial → cjs/config/legacy}/createSourceConfig.js +0 -0
  49. package/dist/{js/node/config/initial → cjs/config/legacy}/createToolsConfig.js +0 -0
  50. package/dist/{js/node/config/initial/transformNormalizedConfig.js → cjs/config/legacy/index.js} +8 -3
  51. package/dist/cjs/defineConfig.js +33 -0
  52. package/dist/cjs/exports/server.js +27 -0
  53. package/dist/cjs/hooks.js +54 -0
  54. package/dist/cjs/index.js +198 -0
  55. package/dist/cjs/initialize/index.js +102 -0
  56. package/dist/cjs/locale/en.js +59 -0
  57. package/dist/cjs/locale/index.js +33 -0
  58. package/dist/cjs/locale/zh.js +59 -0
  59. package/dist/cjs/schema/Schema.js +63 -0
  60. package/dist/cjs/schema/index.js +118 -0
  61. package/dist/cjs/schema/legacy.js +169 -0
  62. package/dist/cjs/types/config/deploy.js +15 -0
  63. package/dist/cjs/types/config/dev.js +15 -0
  64. package/dist/cjs/types/config/experiments.js +15 -0
  65. package/dist/cjs/types/config/html.js +15 -0
  66. package/dist/cjs/types/config/index.js +17 -0
  67. package/dist/cjs/types/config/output.js +15 -0
  68. package/dist/cjs/types/config/performance.js +15 -0
  69. package/dist/cjs/types/config/security.js +15 -0
  70. package/dist/cjs/types/config/source.js +15 -0
  71. package/dist/cjs/types/config/tools.js +15 -0
  72. package/dist/cjs/types/hooks.js +15 -0
  73. package/dist/cjs/types/index.js +19 -0
  74. package/dist/cjs/types/legacyConfig/deploy.js +15 -0
  75. package/dist/cjs/types/legacyConfig/dev.js +15 -0
  76. package/dist/cjs/types/legacyConfig/index.js +15 -0
  77. package/dist/cjs/types/legacyConfig/output.js +15 -0
  78. package/dist/cjs/types/legacyConfig/source.js +15 -0
  79. package/dist/cjs/types/legacyConfig/tools.js +15 -0
  80. package/dist/cjs/types/utils.js +15 -0
  81. package/dist/cjs/utils/config.js +115 -0
  82. package/dist/cjs/utils/createServer.js +70 -0
  83. package/dist/cjs/utils/env.js +38 -0
  84. package/dist/cjs/utils/generateWatchFiles.js +63 -0
  85. package/dist/cjs/utils/getSelectedEntries.js +61 -0
  86. package/dist/cjs/utils/getServerInternalPlugins.js +41 -0
  87. package/dist/cjs/utils/language.js +31 -0
  88. package/dist/cjs/utils/printInstructions.js +34 -0
  89. package/dist/cjs/utils/restart.js +45 -0
  90. package/dist/cjs/utils/routes.js +39 -0
  91. package/dist/cjs/utils/types.js +15 -0
  92. package/dist/esm/analyze/constants.js +42 -0
  93. package/dist/esm/analyze/generateCode.js +486 -0
  94. package/dist/esm/analyze/getBundleEntry.js +64 -0
  95. package/dist/esm/analyze/getClientRoutes/getRoutes.js +233 -0
  96. package/dist/esm/analyze/getClientRoutes/getRoutesLegacy.js +231 -0
  97. package/dist/esm/analyze/getClientRoutes/index.js +3 -0
  98. package/dist/esm/analyze/getClientRoutes/utils.js +23 -0
  99. package/dist/esm/analyze/getFileSystemEntry.js +107 -0
  100. package/dist/esm/analyze/getHtmlTemplate.js +302 -0
  101. package/dist/esm/analyze/getServerRoutes.js +224 -0
  102. package/dist/esm/analyze/index.js +703 -0
  103. package/dist/esm/analyze/isDefaultExportFunction.js +47 -0
  104. package/dist/esm/analyze/makeLegalIdentifier.js +13 -0
  105. package/dist/esm/analyze/nestedRoutes.js +409 -0
  106. package/dist/esm/analyze/templates.js +466 -0
  107. package/dist/esm/analyze/utils.js +374 -0
  108. package/dist/esm/builder/builder-rspack/index.js +6 -0
  109. package/dist/esm/builder/builder-webpack/builderPlugins/compatModern.js +64 -0
  110. package/dist/esm/builder/builder-webpack/index.js +301 -0
  111. package/dist/esm/builder/builder-webpack/webpackPlugins/RouterPlugin.js +346 -0
  112. package/dist/esm/builder/builder-webpack/webpackPlugins/index.js +1 -0
  113. package/dist/esm/builder/generator/createBuilderOptions.js +41 -0
  114. package/dist/esm/builder/generator/createBuilderProviderConfig.js +70 -0
  115. package/dist/esm/builder/generator/getBuilderTargets.js +16 -0
  116. package/dist/esm/builder/generator/index.js +199 -0
  117. package/dist/esm/builder/index.js +175 -0
  118. package/dist/esm/builder/shared/builderPlugins/adapterModern.js +300 -0
  119. package/dist/{js/treeshaking/builder/webpackPlugins/htmlAsyncChunkPlugin.js → esm/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js} +0 -0
  120. package/dist/esm/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +72 -0
  121. package/dist/{js/treeshaking/builder/share.js → esm/builder/shared/createCopyPattern.js} +0 -0
  122. package/dist/esm/builder/shared/index.js +3 -0
  123. package/dist/{js/treeshaking/builder → esm/builder/shared}/loaders/serverModuleLoader.js +0 -0
  124. package/dist/esm/builder/shared/types.js +1 -0
  125. package/dist/esm/commands/build.js +291 -0
  126. package/dist/esm/commands/deploy.js +154 -0
  127. package/dist/esm/commands/dev.js +301 -0
  128. package/dist/esm/commands/index.js +3 -0
  129. package/dist/esm/commands/inspect.js +149 -0
  130. package/dist/esm/commands/serve.js +199 -0
  131. package/dist/esm/config/default.js +210 -0
  132. package/dist/esm/config/index.js +3 -0
  133. package/dist/esm/config/initialize/index.js +10 -0
  134. package/dist/esm/config/initialize/inits.js +211 -0
  135. package/dist/esm/config/legacy/createHtmlConfig.js +19 -0
  136. package/dist/esm/config/legacy/createOutputConfig.js +41 -0
  137. package/dist/esm/config/legacy/createSourceConfig.js +42 -0
  138. package/dist/esm/config/legacy/createToolsConfig.js +23 -0
  139. package/dist/{js/treeshaking/config/initial/transformNormalizedConfig.js → esm/config/legacy/index.js} +4 -1
  140. package/dist/esm/defineConfig.js +61 -0
  141. package/dist/esm/exports/server.js +2 -0
  142. package/dist/esm/hooks.js +29 -0
  143. package/dist/esm/index.js +713 -0
  144. package/dist/esm/initialize/index.js +284 -0
  145. package/dist/esm/locale/en.js +38 -0
  146. package/dist/esm/locale/index.js +9 -0
  147. package/dist/esm/locale/zh.js +38 -0
  148. package/dist/esm/schema/Schema.js +273 -0
  149. package/dist/esm/schema/index.js +181 -0
  150. package/dist/esm/schema/legacy.js +337 -0
  151. package/dist/esm/types/config/deploy.js +1 -0
  152. package/dist/esm/types/config/dev.js +1 -0
  153. package/dist/esm/types/config/experiments.js +1 -0
  154. package/dist/esm/types/config/html.js +1 -0
  155. package/dist/esm/types/config/index.js +1 -0
  156. package/dist/esm/types/config/output.js +1 -0
  157. package/dist/esm/types/config/performance.js +1 -0
  158. package/dist/esm/types/config/security.js +1 -0
  159. package/dist/esm/types/config/source.js +1 -0
  160. package/dist/esm/types/config/tools.js +1 -0
  161. package/dist/esm/types/hooks.js +1 -0
  162. package/dist/esm/types/index.js +3 -0
  163. package/dist/esm/types/legacyConfig/deploy.js +1 -0
  164. package/dist/esm/types/legacyConfig/dev.js +1 -0
  165. package/dist/esm/types/legacyConfig/index.js +1 -0
  166. package/dist/esm/types/legacyConfig/output.js +1 -0
  167. package/dist/esm/types/legacyConfig/source.js +1 -0
  168. package/dist/esm/types/legacyConfig/tools.js +1 -0
  169. package/dist/esm/types/utils.js +1 -0
  170. package/dist/esm/utils/config.js +302 -0
  171. package/dist/esm/utils/createServer.js +258 -0
  172. package/dist/esm/utils/env.js +13 -0
  173. package/dist/esm/utils/generateWatchFiles.js +214 -0
  174. package/dist/esm/utils/getSelectedEntries.js +186 -0
  175. package/dist/esm/utils/getServerInternalPlugins.js +210 -0
  176. package/dist/esm/utils/language.js +6 -0
  177. package/dist/esm/utils/printInstructions.js +152 -0
  178. package/dist/esm/utils/restart.js +187 -0
  179. package/dist/esm/utils/routes.js +153 -0
  180. package/dist/esm/utils/types.js +1 -0
  181. package/dist/esm-node/analyze/constants.js +56 -0
  182. package/dist/esm-node/analyze/generateCode.js +227 -0
  183. package/dist/esm-node/analyze/getBundleEntry.js +77 -0
  184. package/dist/esm-node/analyze/getClientRoutes/getRoutes.js +201 -0
  185. package/dist/esm-node/analyze/getClientRoutes/getRoutesLegacy.js +197 -0
  186. package/dist/esm-node/analyze/getClientRoutes/index.js +6 -0
  187. package/dist/esm-node/analyze/getClientRoutes/utils.js +31 -0
  188. package/dist/esm-node/analyze/getFileSystemEntry.js +109 -0
  189. package/dist/esm-node/analyze/getHtmlTemplate.js +95 -0
  190. package/dist/esm-node/analyze/getServerRoutes.js +154 -0
  191. package/dist/esm-node/analyze/index.js +285 -0
  192. package/dist/esm-node/analyze/isDefaultExportFunction.js +42 -0
  193. package/dist/esm-node/analyze/makeLegalIdentifier.js +13 -0
  194. package/dist/esm-node/analyze/nestedRoutes.js +150 -0
  195. package/dist/esm-node/analyze/templates.js +297 -0
  196. package/dist/esm-node/analyze/utils.js +121 -0
  197. package/dist/esm-node/builder/builder-rspack/index.js +8 -0
  198. package/dist/esm-node/builder/builder-webpack/builderPlugins/compatModern.js +41 -0
  199. package/dist/esm-node/builder/builder-webpack/index.js +51 -0
  200. package/dist/esm-node/builder/builder-webpack/webpackPlugins/RouterPlugin.js +96 -0
  201. package/dist/esm-node/builder/builder-webpack/webpackPlugins/index.js +1 -0
  202. package/dist/esm-node/builder/generator/createBuilderOptions.js +24 -0
  203. package/dist/esm-node/builder/generator/createBuilderProviderConfig.js +26 -0
  204. package/dist/esm-node/builder/generator/getBuilderTargets.js +21 -0
  205. package/dist/esm-node/builder/generator/index.js +29 -0
  206. package/dist/esm-node/builder/index.js +17 -0
  207. package/dist/esm-node/builder/shared/builderPlugins/adapterModern.js +202 -0
  208. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +27 -0
  209. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +34 -0
  210. package/dist/{js/modern/builder/share.js → esm-node/builder/shared/createCopyPattern.js} +0 -0
  211. package/dist/esm-node/builder/shared/index.js +3 -0
  212. package/dist/{js/modern/builder → esm-node/builder/shared}/loaders/serverModuleLoader.js +0 -0
  213. package/dist/esm-node/builder/shared/types.js +0 -0
  214. package/dist/esm-node/commands/build.js +52 -0
  215. package/dist/esm-node/commands/deploy.js +8 -0
  216. package/dist/esm-node/commands/dev.js +72 -0
  217. package/dist/esm-node/commands/index.js +3 -0
  218. package/dist/esm-node/commands/inspect.js +18 -0
  219. package/dist/esm-node/commands/serve.js +34 -0
  220. package/dist/esm-node/config/default.js +162 -0
  221. package/dist/esm-node/config/index.js +3 -0
  222. package/dist/esm-node/config/initialize/index.js +12 -0
  223. package/dist/esm-node/config/initialize/inits.js +136 -0
  224. package/dist/{js/modern/config/initial → esm-node/config/legacy}/createHtmlConfig.js +0 -0
  225. package/dist/{js/modern/config/initial → esm-node/config/legacy}/createOutputConfig.js +0 -0
  226. package/dist/{js/modern/config/initial → esm-node/config/legacy}/createSourceConfig.js +0 -0
  227. package/dist/{js/modern/config/initial → esm-node/config/legacy}/createToolsConfig.js +0 -0
  228. package/dist/{js/modern/config/initial/transformNormalizedConfig.js → esm-node/config/legacy/index.js} +4 -0
  229. package/dist/esm-node/defineConfig.js +9 -0
  230. package/dist/esm-node/exports/server.js +4 -0
  231. package/dist/esm-node/hooks.js +35 -0
  232. package/dist/esm-node/index.js +172 -0
  233. package/dist/esm-node/initialize/index.js +91 -0
  234. package/dist/esm-node/locale/en.js +36 -0
  235. package/dist/esm-node/locale/index.js +9 -0
  236. package/dist/esm-node/locale/zh.js +36 -0
  237. package/dist/esm-node/schema/Schema.js +40 -0
  238. package/dist/esm-node/schema/index.js +88 -0
  239. package/dist/esm-node/schema/legacy.js +148 -0
  240. package/dist/esm-node/types/config/deploy.js +0 -0
  241. package/dist/esm-node/types/config/dev.js +0 -0
  242. package/dist/esm-node/types/config/experiments.js +0 -0
  243. package/dist/esm-node/types/config/html.js +0 -0
  244. package/dist/esm-node/types/config/index.js +1 -0
  245. package/dist/esm-node/types/config/output.js +0 -0
  246. package/dist/esm-node/types/config/performance.js +0 -0
  247. package/dist/esm-node/types/config/security.js +0 -0
  248. package/dist/esm-node/types/config/source.js +0 -0
  249. package/dist/esm-node/types/config/tools.js +0 -0
  250. package/dist/esm-node/types/hooks.js +0 -0
  251. package/dist/esm-node/types/index.js +3 -0
  252. package/dist/esm-node/types/legacyConfig/deploy.js +0 -0
  253. package/dist/esm-node/types/legacyConfig/dev.js +0 -0
  254. package/dist/esm-node/types/legacyConfig/index.js +0 -0
  255. package/dist/esm-node/types/legacyConfig/output.js +0 -0
  256. package/dist/esm-node/types/legacyConfig/source.js +0 -0
  257. package/dist/esm-node/types/legacyConfig/tools.js +0 -0
  258. package/dist/esm-node/types/utils.js +0 -0
  259. package/dist/esm-node/utils/config.js +88 -0
  260. package/dist/esm-node/utils/createServer.js +37 -0
  261. package/dist/esm-node/utils/env.js +15 -0
  262. package/dist/esm-node/utils/generateWatchFiles.js +33 -0
  263. package/dist/esm-node/utils/getSelectedEntries.js +38 -0
  264. package/dist/esm-node/utils/getServerInternalPlugins.js +18 -0
  265. package/dist/esm-node/utils/language.js +8 -0
  266. package/dist/esm-node/utils/printInstructions.js +11 -0
  267. package/dist/esm-node/utils/restart.js +22 -0
  268. package/dist/esm-node/utils/routes.js +10 -0
  269. package/dist/esm-node/utils/types.js +0 -0
  270. package/dist/js/modern/analyze/index.js +45 -48
  271. package/dist/js/modern/analyze/nestedRoutes.js +1 -10
  272. package/dist/js/modern/builder/builder-rspack/index.js +8 -0
  273. package/dist/js/modern/builder/builder-webpack/builderPlugins/compatModern.js +41 -0
  274. package/dist/js/modern/builder/builder-webpack/index.js +93 -0
  275. package/dist/js/modern/builder/{webpackPlugins/routerPlugin.js → builder-webpack/webpackPlugins/RouterPlugin.js} +1 -1
  276. package/dist/js/modern/builder/builder-webpack/webpackPlugins/index.js +1 -0
  277. package/dist/js/modern/builder/generator/createBuilderOptions.js +24 -0
  278. package/dist/js/modern/builder/generator/createBuilderProviderConfig.js +39 -0
  279. package/dist/js/modern/builder/generator/getBuilderTargets.js +12 -0
  280. package/dist/js/modern/builder/generator/index.js +53 -0
  281. package/dist/js/modern/builder/index.js +13 -133
  282. package/dist/js/modern/builder/{builderPlugins/compatModern.js → shared/builderPlugins/adapterModern.js} +81 -111
  283. package/dist/js/modern/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +27 -0
  284. package/dist/js/modern/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +34 -0
  285. package/dist/js/modern/builder/shared/createCopyPattern.js +46 -0
  286. package/dist/js/modern/builder/shared/index.js +3 -0
  287. package/dist/js/modern/builder/shared/loaders/serverModuleLoader.js +7 -0
  288. package/dist/js/modern/builder/shared/types.js +0 -0
  289. package/dist/js/modern/config/default.js +2 -2
  290. package/dist/js/modern/config/index.js +3 -8
  291. package/dist/js/modern/config/initialize/index.js +12 -0
  292. package/dist/js/modern/config/{initial → initialize}/inits.js +4 -2
  293. package/dist/js/modern/config/legacy/createHtmlConfig.js +35 -0
  294. package/dist/js/modern/config/legacy/createOutputConfig.js +68 -0
  295. package/dist/js/modern/config/legacy/createSourceConfig.js +39 -0
  296. package/dist/js/modern/config/legacy/createToolsConfig.js +42 -0
  297. package/dist/js/modern/config/legacy/index.js +51 -0
  298. package/dist/js/modern/index.js +18 -8
  299. package/dist/js/modern/initialize/index.js +36 -28
  300. package/dist/js/modern/locale/zh.js +1 -1
  301. package/dist/js/modern/types/utils.js +0 -0
  302. package/dist/js/node/analyze/index.js +46 -49
  303. package/dist/js/node/analyze/nestedRoutes.js +1 -10
  304. package/dist/js/node/builder/builder-rspack/index.js +31 -0
  305. package/dist/js/node/builder/builder-webpack/builderPlugins/compatModern.js +64 -0
  306. package/dist/js/node/builder/builder-webpack/index.js +118 -0
  307. package/dist/js/node/builder/{webpackPlugins/routerPlugin.js → builder-webpack/webpackPlugins/RouterPlugin.js} +7 -5
  308. package/dist/js/node/builder/builder-webpack/webpackPlugins/index.js +17 -0
  309. package/dist/js/node/builder/generator/createBuilderOptions.js +47 -0
  310. package/dist/js/node/builder/generator/createBuilderProviderConfig.js +60 -0
  311. package/dist/js/node/builder/generator/getBuilderTargets.js +35 -0
  312. package/dist/js/node/builder/generator/index.js +82 -0
  313. package/dist/js/node/builder/index.js +14 -123
  314. package/dist/js/node/builder/{builderPlugins/compatModern.js → shared/builderPlugins/adapterModern.js} +86 -115
  315. package/dist/js/node/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +50 -0
  316. package/dist/js/node/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +57 -0
  317. package/dist/js/node/builder/shared/createCopyPattern.js +75 -0
  318. package/dist/js/node/builder/shared/index.js +19 -0
  319. package/dist/js/node/builder/shared/loaders/serverModuleLoader.js +28 -0
  320. package/dist/js/node/builder/shared/types.js +15 -0
  321. package/dist/js/node/config/default.js +2 -2
  322. package/dist/js/node/config/index.js +4 -19
  323. package/dist/js/node/config/initialize/index.js +35 -0
  324. package/dist/js/node/config/{initial → initialize}/inits.js +4 -2
  325. package/dist/js/node/config/legacy/createHtmlConfig.js +58 -0
  326. package/dist/js/node/config/legacy/createOutputConfig.js +91 -0
  327. package/dist/js/node/config/legacy/createSourceConfig.js +62 -0
  328. package/dist/js/node/config/legacy/createToolsConfig.js +65 -0
  329. package/dist/js/node/config/legacy/index.js +75 -0
  330. package/dist/js/node/index.js +18 -8
  331. package/dist/js/node/initialize/index.js +35 -28
  332. package/dist/js/node/locale/zh.js +1 -1
  333. package/dist/js/node/types/utils.js +15 -0
  334. package/dist/js/treeshaking/analyze/index.js +135 -130
  335. package/dist/js/treeshaking/analyze/nestedRoutes.js +1 -10
  336. package/dist/js/treeshaking/builder/builder-rspack/index.js +6 -0
  337. package/dist/js/treeshaking/builder/builder-webpack/builderPlugins/compatModern.js +64 -0
  338. package/dist/js/treeshaking/builder/builder-webpack/index.js +301 -0
  339. package/dist/js/treeshaking/builder/{webpackPlugins/routerPlugin.js → builder-webpack/webpackPlugins/RouterPlugin.js} +1 -1
  340. package/dist/js/treeshaking/builder/builder-webpack/webpackPlugins/index.js +1 -0
  341. package/dist/js/treeshaking/builder/generator/createBuilderOptions.js +41 -0
  342. package/dist/js/treeshaking/builder/generator/createBuilderProviderConfig.js +70 -0
  343. package/dist/js/treeshaking/builder/generator/getBuilderTargets.js +12 -0
  344. package/dist/js/treeshaking/builder/generator/index.js +199 -0
  345. package/dist/js/treeshaking/builder/index.js +29 -228
  346. package/dist/js/treeshaking/builder/{builderPlugins/compatModern.js → shared/builderPlugins/adapterModern.js} +103 -156
  347. package/dist/js/treeshaking/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +110 -0
  348. package/dist/js/treeshaking/builder/{webpackPlugins/htmlBottomTemplate.js → shared/bundlerPlugins/HtmlBottomTemplate.js} +0 -0
  349. package/dist/js/treeshaking/builder/shared/createCopyPattern.js +40 -0
  350. package/dist/js/treeshaking/builder/shared/index.js +3 -0
  351. package/dist/js/treeshaking/builder/shared/loaders/serverModuleLoader.js +5 -0
  352. package/dist/js/treeshaking/builder/shared/types.js +1 -0
  353. package/dist/js/treeshaking/config/default.js +2 -2
  354. package/dist/js/treeshaking/config/index.js +3 -3
  355. package/dist/js/treeshaking/config/initialize/index.js +10 -0
  356. package/dist/js/treeshaking/config/{initial → initialize}/inits.js +4 -2
  357. package/dist/js/treeshaking/config/{initial → legacy}/createHtmlConfig.js +0 -0
  358. package/dist/js/treeshaking/config/{initial → legacy}/createOutputConfig.js +0 -0
  359. package/dist/js/treeshaking/config/{initial → legacy}/createSourceConfig.js +0 -0
  360. package/dist/js/treeshaking/config/{initial → legacy}/createToolsConfig.js +0 -0
  361. package/dist/js/treeshaking/config/legacy/index.js +38 -0
  362. package/dist/js/treeshaking/index.js +19 -12
  363. package/dist/js/treeshaking/initialize/index.js +34 -26
  364. package/dist/js/treeshaking/locale/zh.js +1 -1
  365. package/dist/js/treeshaking/types/utils.js +1 -0
  366. package/dist/types/analyze/generateCode.d.ts +1 -1
  367. package/dist/types/analyze/getBundleEntry.d.ts +1 -1
  368. package/dist/types/analyze/getFileSystemEntry.d.ts +1 -1
  369. package/dist/types/analyze/getHtmlTemplate.d.ts +2 -2
  370. package/dist/types/analyze/getServerRoutes.d.ts +1 -1
  371. package/dist/types/analyze/index.d.ts +5 -1
  372. package/dist/types/analyze/templates.d.ts +3 -1
  373. package/dist/types/builder/builder-rspack/index.d.ts +2 -0
  374. package/dist/types/builder/{builderPlugins → builder-webpack/builderPlugins}/compatModern.d.ts +2 -2
  375. package/dist/types/builder/builder-webpack/index.d.ts +4 -0
  376. package/dist/types/builder/{webpackPlugins/routerPlugin.d.ts → builder-webpack/webpackPlugins/RouterPlugin.d.ts} +1 -1
  377. package/dist/types/builder/builder-webpack/webpackPlugins/index.d.ts +1 -0
  378. package/dist/types/builder/generator/createBuilderOptions.d.ts +3 -0
  379. package/dist/types/builder/generator/createBuilderProviderConfig.d.ts +2 -0
  380. package/dist/types/builder/generator/getBuilderTargets.d.ts +3 -0
  381. package/dist/types/builder/generator/index.d.ts +17 -0
  382. package/dist/types/builder/index.d.ts +1 -18
  383. package/dist/types/builder/shared/builderPlugins/adapterModern.d.ts +13 -0
  384. package/dist/types/builder/{webpackPlugins/htmlAsyncChunkPlugin.d.ts → shared/bundlerPlugins/HtmlAsyncChunkPlugin.d.ts} +2 -1
  385. package/dist/types/builder/{webpackPlugins/htmlBottomTemplate.d.ts → shared/bundlerPlugins/HtmlBottomTemplate.d.ts} +2 -1
  386. package/dist/types/builder/{share.d.ts → shared/createCopyPattern.d.ts} +1 -1
  387. package/dist/types/builder/shared/index.d.ts +3 -0
  388. package/dist/types/builder/shared/loaders/serverModuleLoader.d.ts +4 -0
  389. package/dist/types/builder/shared/types.d.ts +16 -0
  390. package/dist/types/commands/build.d.ts +1 -1
  391. package/dist/types/commands/deploy.d.ts +1 -1
  392. package/dist/types/commands/dev.d.ts +1 -1
  393. package/dist/types/commands/inspect.d.ts +1 -1
  394. package/dist/types/commands/serve.d.ts +1 -1
  395. package/dist/types/config/default.d.ts +1 -1
  396. package/dist/types/config/index.d.ts +3 -2
  397. package/dist/types/config/initialize/index.d.ts +2 -0
  398. package/dist/types/config/{initial → initialize}/inits.d.ts +3 -3
  399. package/dist/types/config/{initial → legacy}/createHtmlConfig.d.ts +1 -1
  400. package/dist/types/config/{initial → legacy}/createOutputConfig.d.ts +1 -1
  401. package/dist/types/config/{initial → legacy}/createSourceConfig.d.ts +1 -1
  402. package/dist/types/config/{initial → legacy}/createToolsConfig.d.ts +1 -1
  403. package/dist/types/config/legacy/index.d.ts +3 -0
  404. package/dist/types/defineConfig.d.ts +2 -2
  405. package/dist/types/index.d.ts +7 -3
  406. package/dist/types/initialize/index.d.ts +6 -2
  407. package/dist/types/types/config/deploy.d.ts +1 -2
  408. package/dist/types/types/config/dev.d.ts +2 -3
  409. package/dist/types/types/config/experiments.d.ts +1 -2
  410. package/dist/types/types/config/html.d.ts +5 -3
  411. package/dist/types/types/config/index.d.ts +41 -48
  412. package/dist/types/types/config/output.d.ts +8 -3
  413. package/dist/types/types/config/performance.d.ts +6 -3
  414. package/dist/types/types/config/security.d.ts +3 -3
  415. package/dist/types/types/config/source.d.ts +7 -3
  416. package/dist/types/types/config/tools.d.ts +10 -4
  417. package/dist/types/types/hooks.d.ts +6 -4
  418. package/dist/types/types/index.d.ts +19 -7
  419. package/dist/types/types/utils.d.ts +7 -0
  420. package/dist/types/utils/config.d.ts +1 -1
  421. package/dist/types/utils/getServerInternalPlugins.d.ts +1 -1
  422. package/dist/types/utils/printInstructions.d.ts +1 -1
  423. package/package.json +40 -32
  424. package/dist/js/modern/builder/webpackPlugins/htmlAsyncChunkPlugin.js +0 -30
  425. package/dist/js/modern/builder/webpackPlugins/htmlBottomTemplate.js +0 -37
  426. package/dist/js/modern/config/initial/index.js +0 -16
  427. package/dist/js/treeshaking/config/initial/index.js +0 -12
  428. package/dist/types/builder/loaders/serverModuleLoader.d.ts +0 -3
  429. package/dist/types/config/initial/index.d.ts +0 -4
  430. package/dist/types/config/initial/transformNormalizedConfig.d.ts +0 -2
@@ -1,18 +1 @@
1
- import { BuilderInstance, BuilderTarget, CreateBuilderOptions } from '@modern-js/builder';
2
- import { BuilderConfig, BuilderWebpackProvider } from '@modern-js/builder-webpack-provider';
3
- import type { IAppContext } from '@modern-js/core';
4
- import type { AppNormalizedConfig } from '../types';
5
- import { PluginCompatModernOptions } from './builderPlugins/compatModern';
6
- export type BuilderOptions = {
7
- target?: BuilderTarget | BuilderTarget[];
8
- normalizedConfig: AppNormalizedConfig;
9
- appContext: IAppContext;
10
- compatPluginConfig?: PluginCompatModernOptions;
11
- };
12
- export declare function createBuilderForModern({
13
- normalizedConfig,
14
- appContext,
15
- compatPluginConfig
16
- }: BuilderOptions): Promise<BuilderInstance<BuilderWebpackProvider>>;
17
- export declare function createBuilderProviderConfig(normalizedConfig: AppNormalizedConfig, appContext: IAppContext): BuilderConfig;
18
- export declare function createBuilderOptions(target: BuilderTarget | BuilderTarget[], appContext: IAppContext): CreateBuilderOptions;
1
+ export declare function createBuilderGenerator(bundler: 'webpack' | 'rspack'): Promise<typeof import("./builder-rspack").createRspackBuilderForModern | typeof import("./builder-webpack").createWebpackBuilderForModern>;
@@ -0,0 +1,13 @@
1
+ import { BuilderPlugin, DefaultBuilderPluginAPI } from '@modern-js/builder-shared';
2
+ import { BuilderConfig as RspackBuilderConfig, NormalizedConfig as RspackNormalizedConfig } from '@modern-js/builder-rspack-provider';
3
+ import { BuilderConfig as WebpackBuilderConfig, NormalizedConfig as WebpackNormalizedConfig } from '@modern-js/builder-webpack-provider';
4
+ import type { BuilderOptions } from '../types';
5
+ import type { Bundler } from '../../../types';
6
+ type BuilderConfig = RspackBuilderConfig | WebpackBuilderConfig;
7
+ type NormalizedConfig = RspackNormalizedConfig | WebpackNormalizedConfig;
8
+ type BuilderPluginAPI = DefaultBuilderPluginAPI<BuilderConfig, NormalizedConfig>;
9
+ export declare const builderPluginAdapterModern: <B extends Bundler>(options: BuilderOptions<B>) => BuilderPlugin<BuilderPluginAPI>;
10
+ /** register builder hooks callback */
11
+
12
+ export declare function applyCallbacks<B extends Bundler>(api: BuilderPluginAPI, options: BuilderOptions<B>): void;
13
+ export {};
@@ -1,8 +1,9 @@
1
1
  import type { webpack } from '@modern-js/builder-webpack-provider';
2
+ import type { Rspack } from '@modern-js/builder-rspack-provider';
2
3
  import type HtmlWebpackPlugin from '@modern-js/builder-webpack-provider/html-webpack-plugin';
3
4
  export declare class HtmlAsyncChunkPlugin {
4
5
  name: string;
5
6
  htmlWebpackPlugin: typeof HtmlWebpackPlugin;
6
7
  constructor(htmlWebpackPlugin: typeof HtmlWebpackPlugin);
7
- apply(compiler: webpack.Compiler): void;
8
+ apply(compiler: webpack.Compiler | Rspack.Compiler): void;
8
9
  }
@@ -1,4 +1,5 @@
1
1
  import type { webpack } from '@modern-js/builder-webpack-provider';
2
+ import type { Rspack } from '@modern-js/builder-rspack-provider';
2
3
  import type HtmlWebpackPlugin from '@modern-js/builder-webpack-provider/html-webpack-plugin';
3
4
  export declare class BottomTemplatePlugin {
4
5
  htmlWebpackPlugin: typeof HtmlWebpackPlugin;
@@ -6,5 +7,5 @@ export declare class BottomTemplatePlugin {
6
7
  bodyRegExp: RegExp;
7
8
  name: string;
8
9
  constructor(htmlWebpackPlugin: typeof HtmlWebpackPlugin);
9
- apply(compiler: webpack.Compiler): void;
10
+ apply(compiler: Rspack.Compiler | webpack.Compiler): void;
10
11
  }
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import { WebpackChain } from '@modern-js/builder-webpack-provider';
3
- import { AppNormalizedConfig, IAppContext } from '../types';
3
+ import { AppNormalizedConfig, IAppContext } from '../../types';
4
4
  export declare function createCopyPattern(appContext: IAppContext, config: AppNormalizedConfig, patternsType: 'upload' | 'public', chain?: WebpackChain): {
5
5
  info: (file: {
6
6
  sourceFilename: string;
@@ -0,0 +1,3 @@
1
+ export * from './createCopyPattern';
2
+ export * from './types';
3
+ export * from './builderPlugins/adapterModern';
@@ -0,0 +1,4 @@
1
+ import type { webpack } from '@modern-js/builder-webpack-provider';
2
+ import type { Rspack } from '@modern-js/builder-rspack-provider';
3
+ declare function loader(this: webpack.LoaderContext<void> | Rspack.LoaderContext): string;
4
+ export default loader;
@@ -0,0 +1,16 @@
1
+ import type { BuilderPluginAPI as WebpackBuilderPluginAPI } from '@modern-js/builder-webpack-provider';
2
+ import type { BuilderPluginAPI as RspackBuilderPluginAPI } from '@modern-js/builder-rspack-provider';
3
+ import { BuilderInstance } from '@modern-js/builder-shared';
4
+ import { AppNormalizedConfig, Bundler, IAppContext } from '../../types';
5
+ type Parameter<T extends (arg: any) => void> = Parameters<T>[0];
6
+ type FnParameter<T extends {
7
+ [p: string]: (arg: any) => void;
8
+ }> = { [P in keyof T]: Parameter<T[P]> };
9
+ type BuilderPluginCallbacks<B extends Bundler> = FnParameter<Partial<Pick<B extends 'rspack' ? RspackBuilderPluginAPI : WebpackBuilderPluginAPI, 'onAfterBuild' | 'onAfterCreateCompiler' | 'onAfterStartDevServer' | 'onBeforeBuild' | 'onBeforeCreateCompiler' | 'onBeforeStartDevServer' | 'onDevCompileDone' | 'onExit'>>>;
10
+ export type BuilderOptions<B extends Bundler> = {
11
+ normalizedConfig: AppNormalizedConfig<B>;
12
+ appContext: IAppContext;
13
+ } & BuilderPluginCallbacks<B>;
14
+ export type ModifyBuilderConfig<B extends Bundler> = (config: AppNormalizedConfig<B>) => Promise<void> | void;
15
+ export type ModifyBuilderInstance = (builder: BuilderInstance) => Promise<void> | void;
16
+ export {};
@@ -1,4 +1,4 @@
1
1
  import { PluginAPI } from '@modern-js/core';
2
2
  import type { BuildOptions } from '../utils/types';
3
3
  import type { AppTools } from '../types';
4
- export declare const build: (api: PluginAPI<AppTools>, options?: BuildOptions) => Promise<void>;
4
+ export declare const build: (api: PluginAPI<AppTools<'shared'>>, options?: BuildOptions) => Promise<void>;
@@ -1,3 +1,3 @@
1
1
  import type { PluginAPI } from '@modern-js/core';
2
2
  import type { AppTools } from '../types';
3
- export declare const deploy: (api: PluginAPI<AppTools>, options: any) => Promise<void>;
3
+ export declare const deploy: (api: PluginAPI<AppTools<'shared'>>, options: any) => Promise<void>;
@@ -1,4 +1,4 @@
1
1
  import { PluginAPI } from '@modern-js/core';
2
2
  import { DevOptions } from '../utils/types';
3
3
  import type { AppTools } from '../types';
4
- export declare const dev: (api: PluginAPI<AppTools>, options: DevOptions) => Promise<void>;
4
+ export declare const dev: (api: PluginAPI<AppTools<'shared'>>, options: DevOptions) => Promise<void>;
@@ -1,7 +1,7 @@
1
1
  import type { PluginAPI } from '@modern-js/core';
2
2
  import type { InspectOptions } from '../utils/types';
3
3
  import type { AppTools } from '../types';
4
- export declare const inspect: (api: PluginAPI<AppTools>, options: InspectOptions) => Promise<{
4
+ export declare const inspect: (api: PluginAPI<AppTools<'shared'>>, options: InspectOptions) => Promise<{
5
5
  builderConfig: string;
6
6
  bundlerConfigs: string[];
7
7
  origin: {
@@ -1,3 +1,3 @@
1
1
  import type { PluginAPI } from '@modern-js/core';
2
2
  import type { AppTools } from '../types';
3
- export declare const start: (api: PluginAPI<AppTools>) => Promise<void>;
3
+ export declare const start: (api: PluginAPI<AppTools<'shared'>>) => Promise<void>;
@@ -1,3 +1,3 @@
1
1
  import { IAppContext, AppUserConfig, AppLegacyUserConfig } from '../types';
2
- export declare function createDefaultConfig(appContext: IAppContext): AppUserConfig;
2
+ export declare function createDefaultConfig(appContext: IAppContext, bundler: 'webpack' | 'rspack'): AppUserConfig<'webpack'> | AppUserConfig<'rspack'>;
3
3
  export declare function createLegacyDefaultConfig(appContext: IAppContext): AppLegacyUserConfig;
@@ -1,2 +1,3 @@
1
- export { createDefaultConfig, createLegacyDefaultConfig } from './default';
2
- export { initialNormalizedConfig, checkIsLegacyConfig } from './initial';
1
+ export * from './legacy';
2
+ export * from './initialize';
3
+ export * from './default';
@@ -0,0 +1,2 @@
1
+ import type { AppNormalizedConfig, IAppContext } from '../../types';
2
+ export declare function initialNormalizedConfig(config: AppNormalizedConfig<'shared'>, appContext: IAppContext, bundler: 'webpack' | 'rspack'): AppNormalizedConfig<'shared'>;
@@ -1,4 +1,4 @@
1
1
  import { AppNormalizedConfig, IAppContext } from '../../types';
2
- export declare function initHtmlConfig(config: AppNormalizedConfig, appContext: IAppContext): import("@modern-js/builder-shared").SharedHtmlConfig;
3
- export declare function initSourceConfig(config: AppNormalizedConfig, appContext: IAppContext): void;
4
- export declare function initToolsConfig(config: AppNormalizedConfig): void;
2
+ export declare function initHtmlConfig(config: AppNormalizedConfig<'shared'>, appContext: IAppContext): import("@modern-js/builder-shared").SharedHtmlConfig;
3
+ export declare function initSourceConfig(config: AppNormalizedConfig<'shared'>, appContext: IAppContext, bundler: 'webpack' | 'rspack'): void;
4
+ export declare function initToolsConfig(config: AppNormalizedConfig<'webpack'>): void;
@@ -1,2 +1,2 @@
1
1
  import { AppLegacyNormalizedConfig, AppNormalizedConfig } from '../../types';
2
- export declare function createHtmlConfig(config: Readonly<AppLegacyNormalizedConfig>): AppNormalizedConfig['html'];
2
+ export declare function createHtmlConfig(config: Readonly<AppLegacyNormalizedConfig>): AppNormalizedConfig<'webpack'>['html'];
@@ -1,2 +1,2 @@
1
1
  import { AppLegacyNormalizedConfig, AppNormalizedConfig } from '../../types';
2
- export declare function createOutputConfig(config: Readonly<AppLegacyNormalizedConfig>): AppNormalizedConfig['output'];
2
+ export declare function createOutputConfig(config: Readonly<AppLegacyNormalizedConfig>): AppNormalizedConfig<'webpack'>['output'];
@@ -1,2 +1,2 @@
1
1
  import { AppLegacyNormalizedConfig, AppNormalizedConfig } from '../../types';
2
- export declare function createSourceConfig(config: AppLegacyNormalizedConfig): AppNormalizedConfig['source'];
2
+ export declare function createSourceConfig(config: AppLegacyNormalizedConfig): AppNormalizedConfig<'webpack'>['source'];
@@ -1,2 +1,2 @@
1
1
  import { AppLegacyNormalizedConfig, AppNormalizedConfig } from '../../types';
2
- export declare function createToolsConfig(config: AppLegacyNormalizedConfig): AppNormalizedConfig['tools'];
2
+ export declare function createToolsConfig(config: AppLegacyNormalizedConfig): AppNormalizedConfig<'webpack'>['tools'];
@@ -0,0 +1,3 @@
1
+ import type { AppLegacyNormalizedConfig, AppLegacyUserConfig, AppNormalizedConfig, AppUserConfig } from '../../types';
2
+ export declare function transformNormalizedConfig(config: AppLegacyNormalizedConfig): AppNormalizedConfig<'webpack'>;
3
+ export declare function checkIsLegacyConfig(config: AppLegacyUserConfig | AppUserConfig): config is AppLegacyUserConfig;
@@ -1,6 +1,6 @@
1
1
  import type { UserConfigExport } from '@modern-js/core';
2
- import type { AppUserConfig, AppLegacyUserConfig } from './types';
3
- export declare const defineConfig: (config: UserConfigExport<AppUserConfig>) => UserConfigExport<AppUserConfig>;
2
+ import type { AppLegacyUserConfig, AppUserConfig } from './types';
3
+ export declare const defineConfig: <B extends "webpack" | "rspack" = "webpack">(config: UserConfigExport<AppUserConfig<B>>) => UserConfigExport<AppUserConfig<B>>;
4
4
  /**
5
5
  * @deprecated
6
6
  * Using defineConfig first.
@@ -4,9 +4,13 @@ import { AppTools } from './types';
4
4
  export * from './defineConfig';
5
5
  export * from './types';
6
6
  export type { RuntimeUserConfig } from './types/config';
7
- export declare const devCommand: (program: Command, api: PluginAPI<AppTools>) => Promise<void>;
8
- export declare const buildCommand: (program: Command, api: PluginAPI<AppTools>) => Promise<void>;
7
+ export declare const devCommand: (program: Command, api: PluginAPI<AppTools<'shared'>>) => Promise<void>;
8
+ export declare const buildCommand: (program: Command, api: PluginAPI<AppTools<'shared'>>) => Promise<void>;
9
+ interface AppToolsOptions {
10
+ /** Specify the use what kind of bundler to compiler, default: `webpack` */
11
+ bundler?: 'experimental-rspack' | 'webpack';
12
+ }
9
13
 
10
- declare const _default: () => CliPlugin<AppTools>;
14
+ declare const _default: (options?: AppToolsOptions) => CliPlugin<AppTools<'shared'>>;
11
15
 
12
16
  export default _default;
@@ -1,5 +1,9 @@
1
- import { CliPlugin, AppTools } from '../types';
1
+ import type { CliPlugin, AppTools } from '../types';
2
2
 
3
- declare const _default: () => CliPlugin<AppTools>;
3
+ declare const _default: ({
4
+ bundler
5
+ }: {
6
+ bundler: 'rspack' | 'webpack';
7
+ }) => CliPlugin<AppTools<'shared'>>;
4
8
 
5
9
  export default _default;
@@ -5,5 +5,4 @@ export interface MicroFrontend {
5
5
  }
6
6
  export interface DeployUserConfig {
7
7
  microFrontend?: boolean | MicroFrontend;
8
- }
9
- export type DeployNormalizedConfig = DeployUserConfig;
8
+ }
@@ -1,5 +1,5 @@
1
- import type { BuilderConfig } from '@modern-js/builder-webpack-provider';
2
- type BuilderDevConfig = Required<BuilderConfig>['dev'];
1
+ import type { SharedBuilderConfig } from '@modern-js/builder-shared';
2
+ type BuilderDevConfig = Required<SharedBuilderConfig>['dev'];
3
3
  export type DevProxyOptions = string | Record<string, string>;
4
4
  export interface DevUserConfig extends BuilderDevConfig {
5
5
  /**
@@ -9,5 +9,4 @@ export interface DevUserConfig extends BuilderDevConfig {
9
9
  */
10
10
  proxy?: string | Record<string, string>;
11
11
  }
12
- export type DevNormalizedConfig = DevUserConfig;
13
12
  export {};
@@ -1,4 +1,3 @@
1
1
  import type { BuilderConfig } from '@modern-js/builder-webpack-provider';
2
2
  export type BuilderExperimentsConfig = Required<BuilderConfig>['experiments'];
3
- export type ExperimentsUserConfig = BuilderExperimentsConfig;
4
- export type ExperimentsNormalizedConfig = ExperimentsUserConfig;
3
+ export type ExperimentsUserConfig = BuilderExperimentsConfig;
@@ -1,4 +1,6 @@
1
1
  import type { BuilderConfig } from '@modern-js/builder-webpack-provider';
2
- export type BuilderHtmlConfig = Required<BuilderConfig>['html'];
3
- export type HtmlUserConfig = BuilderHtmlConfig;
4
- export type HtmlNormalizedConfig = HtmlUserConfig;
2
+ import type { BuilderConfig as RsBuilderConfig } from '@modern-js/builder-rspack-provider';
3
+ import { UnwrapBuilderConfig } from '../utils';
4
+ export type { SharedHtmlConfig } from '@modern-js/builder-shared';
5
+ export type HtmlUserConfig = UnwrapBuilderConfig<BuilderConfig, 'html'>;
6
+ export type RsHtmlUserConfig = UnwrapBuilderConfig<RsBuilderConfig, 'html'>;
@@ -1,16 +1,14 @@
1
- import type { UserConfig } from '@modern-js/core';
2
- import type { ServerUserConfig, ServerNormalizedConfig, BffUserConfig, BffNormalizedConfig } from '@modern-js/server-core';
1
+ import type { ServerUserConfig, BffUserConfig } from '@modern-js/server-core';
3
2
  import type { BuilderPlugin } from '@modern-js/builder-webpack-provider';
4
- import type { AppToolsHooks } from '../hooks';
5
- import type { OutputNormalizedConfig, OutputUserConfig } from './output';
6
- import type { SourceNormalizedConfig, SourceUserConfig } from './source';
7
- import type { DevNormalizedConfig, DevUserConfig } from './dev';
8
- import type { ToolsNormalizedConfig, ToolsUserConfig } from './tools';
9
- import type { HtmlNormalizedConfig, HtmlUserConfig } from './html';
10
- import type { SecurityNormalizedConfig, SecurityUserConfig } from './security';
11
- import type { DeployNormalizedConfig, DeployUserConfig } from './deploy';
12
- import type { ExperimentsUserConfig, ExperimentsNormalizedConfig } from './experiments';
13
- import type { PerformanceNormalizedConfig, PerformanceUserConfig } from './performance';
3
+ import type { OutputUserConfig, RsOutputUserConfig, SharedOutputConfig } from './output';
4
+ import type { RsSourceUserConfig, SharedSourceConfig, SourceUserConfig } from './source';
5
+ import type { DevUserConfig } from './dev';
6
+ import type { RsToolsUserConfig, SharedToolsConfig, ToolsUserConfig } from './tools';
7
+ import type { HtmlUserConfig, RsHtmlUserConfig, SharedHtmlConfig } from './html';
8
+ import type { SecurityUserConfig } from './security';
9
+ import type { DeployUserConfig } from './deploy';
10
+ import type { ExperimentsUserConfig } from './experiments';
11
+ import type { PerformanceUserConfig, RsPerformanceConfig, SharedPerformanceConfig } from './performance';
14
12
  export * from './output';
15
13
  export interface RuntimeUserConfig {
16
14
  [name: string]: any;
@@ -18,22 +16,10 @@ export interface RuntimeUserConfig {
18
16
  export interface RuntimeByEntriesUserConfig {
19
17
  [name: string]: RuntimeUserConfig;
20
18
  }
21
- export type RuntimeNormalizedConfig = RuntimeUserConfig;
22
- export type RuntimeByEntriesNormalizedConfig = RuntimeByEntriesUserConfig;
23
- export interface AppToolsUserConfig {
24
- source?: SourceUserConfig;
25
- output?: OutputUserConfig;
19
+ export type SharedUserConfig = {
26
20
  server?: ServerUserConfig;
27
- dev?: DevUserConfig;
28
- deploy?: DeployUserConfig;
29
- html?: HtmlUserConfig;
30
- tools?: ToolsUserConfig;
31
- runtime?: RuntimeUserConfig;
32
- security?: SecurityUserConfig;
33
- runtimeByEntries?: RuntimeByEntriesUserConfig;
34
- performance?: PerformanceUserConfig;
35
- experiments?: ExperimentsUserConfig;
36
- builderPlugins?: BuilderPlugin[];
21
+ source?: SharedSourceConfig;
22
+ output?: SharedOutputConfig;
37
23
  /**
38
24
  * The configuration of `bff` is provided by `bff` plugin.
39
25
  * Please use `yarn new` or `pnpm new` to enable the corresponding capability.
@@ -41,26 +27,33 @@ export interface AppToolsUserConfig {
41
27
  */
42
28
 
43
29
  bff?: BffUserConfig;
30
+ dev?: DevUserConfig;
31
+ deploy?: DeployUserConfig;
32
+ runtime?: RuntimeUserConfig;
33
+ runtimeByEntries?: RuntimeByEntriesUserConfig;
34
+ html?: SharedHtmlConfig;
35
+ tools?: SharedToolsConfig;
36
+ builderPlugins?: BuilderPlugin[];
37
+ performance?: SharedPerformanceConfig;
38
+ };
39
+ export interface AppToolsUserConfig extends SharedUserConfig {
40
+ source?: SourceUserConfig;
41
+ output?: OutputUserConfig;
42
+ html?: HtmlUserConfig;
43
+ tools?: ToolsUserConfig;
44
+ security?: SecurityUserConfig;
45
+ performance?: PerformanceUserConfig;
46
+ experiments?: ExperimentsUserConfig;
47
+ }
48
+ export interface RsAppToolsUserConfig extends SharedUserConfig {
49
+ source?: RsSourceUserConfig;
50
+ output?: RsOutputUserConfig;
51
+ html?: RsHtmlUserConfig;
52
+ tools?: RsToolsUserConfig;
53
+ performance?: RsPerformanceConfig;
44
54
  }
45
- export type AppToolsNormalizedConfig = {
46
- source: SourceNormalizedConfig;
47
- bff: BffNormalizedConfig;
48
- dev: DevNormalizedConfig;
49
- deploy: DeployNormalizedConfig;
50
- html: HtmlNormalizedConfig;
51
- runtime: RuntimeNormalizedConfig;
52
- runtimeByEntries: RuntimeByEntriesNormalizedConfig;
53
- output: OutputNormalizedConfig;
54
- security: SecurityNormalizedConfig;
55
- server: ServerNormalizedConfig;
56
- tools: ToolsNormalizedConfig;
57
- performance: PerformanceNormalizedConfig;
58
- experiments: ExperimentsNormalizedConfig;
59
- builderPlugins: BuilderPlugin[];
55
+ interface SharedNormalizedConfig<RawConfig> {
60
56
  cliOptions?: Record<string, any>;
61
- _raw: UserConfig<{
62
- hooks: AppToolsHooks;
63
- userConfig: AppToolsUserConfig;
64
- normalizedConfig: AppToolsNormalizedConfig;
65
- }>;
66
- };
57
+ _raw: RawConfig;
58
+ }
59
+ export type AppToolsNormalizedConfig<Config = SharedUserConfig> = Required<Config> & SharedNormalizedConfig<Config>;
@@ -1,10 +1,15 @@
1
1
  import type { BuilderConfig } from '@modern-js/builder-webpack-provider';
2
- export type BuilderOutputConfig = Required<BuilderConfig>['output'];
3
- export interface OutputUserConfig extends BuilderOutputConfig {
2
+ import type { BuilderConfig as RsBuilderConfig } from '@modern-js/builder-rspack-provider';
3
+ import type { SharedOutputConfig as BuilderSharedOutputConfig } from '@modern-js/builder-shared';
4
+ import { UnwrapBuilderConfig } from '../utils';
5
+ export type BuilderOutputConfig = UnwrapBuilderConfig<BuilderConfig, 'output'>;
6
+ export type RsBuilderOutputConfig = UnwrapBuilderConfig<RsBuilderConfig, 'output'>;
7
+ export interface SharedOutputConfig extends BuilderSharedOutputConfig {
4
8
  ssg?: SSGConfig;
5
9
  disableNodePolyfill?: boolean;
6
10
  }
7
- export type OutputNormalizedConfig = OutputUserConfig;
11
+ export interface OutputUserConfig extends BuilderOutputConfig, SharedOutputConfig {}
12
+ export interface RsOutputUserConfig extends RsBuilderOutputConfig, SharedOutputConfig {}
8
13
  export type SSGRouteOptions = string | {
9
14
  url: string;
10
15
  output?: string;
@@ -1,4 +1,7 @@
1
1
  import type { BuilderConfig } from '@modern-js/builder-webpack-provider';
2
- export type BuilderPerformanceConfig = Required<BuilderConfig>['performance'];
3
- export type PerformanceUserConfig = BuilderPerformanceConfig;
4
- export type PerformanceNormalizedConfig = PerformanceUserConfig;
2
+ import type { BuilderConfig as RsBuilderConfig } from '@modern-js/builder-rspack-provider';
3
+ import { UnwrapBuilderConfig } from '../utils';
4
+ export type { SharedPerformanceConfig } from '@modern-js/builder-shared';
5
+ export type BuilderPerformanceConfig = UnwrapBuilderConfig<BuilderConfig, 'performance'>;
6
+ export type RsPerformanceConfig = UnwrapBuilderConfig<RsBuilderConfig, 'performance'>;
7
+ export type PerformanceUserConfig = BuilderPerformanceConfig;
@@ -1,4 +1,4 @@
1
1
  import type { BuilderConfig } from '@modern-js/builder-webpack-provider';
2
- export type BuilderSecurityConfig = Required<BuilderConfig>['security'];
3
- export type SecurityUserConfig = BuilderSecurityConfig;
4
- export type SecurityNormalizedConfig = SecurityUserConfig;
2
+ import { UnwrapBuilderConfig } from '../utils';
3
+ export type BuilderSecurityConfig = UnwrapBuilderConfig<BuilderConfig, 'security'>;
4
+ export type SecurityUserConfig = BuilderSecurityConfig;
@@ -1,12 +1,15 @@
1
1
  import type { BuilderConfig } from '@modern-js/builder-webpack-provider';
2
- export type BuilderSourceConfig = Required<BuilderConfig>['source'];
2
+ import type { BuilderConfig as RsBuilderConfig } from '@modern-js/builder-rspack-provider';
3
+ import type { SharedSourceConfig as BuilderSharedSourceConfig } from '@modern-js/builder-shared';
4
+ export type BuilderSourceConfig = NonNullable<BuilderConfig['source']>;
5
+ export type RsBuilderSourceConfig = NonNullable<RsBuilderConfig['source']>;
3
6
  export type Entry = string | {
4
7
  entry: string;
5
8
  disableMount?: boolean;
6
9
  customBootstrap?: string;
7
10
  };
8
11
  export type Entries = Record<string, Entry>;
9
- export interface SourceUserConfig extends BuilderSourceConfig {
12
+ export interface SharedSourceConfig extends BuilderSharedSourceConfig {
10
13
  entries?: Entries;
11
14
  enableAsyncEntry?: boolean;
12
15
  disableDefaultEntries?: boolean;
@@ -21,4 +24,5 @@ export interface SourceUserConfig extends BuilderSourceConfig {
21
24
 
22
25
  designSystem?: Record<string, any>;
23
26
  }
24
- export type SourceNormalizedConfig = SourceUserConfig;
27
+ export interface SourceUserConfig extends BuilderSourceConfig, SharedSourceConfig {}
28
+ export interface RsSourceUserConfig extends RsBuilderSourceConfig, SharedSourceConfig {}
@@ -2,7 +2,13 @@ import type { BuilderConfig } from '@modern-js/builder-webpack-provider';
2
2
  import type { JestConfig } from '@modern-js/core';
3
3
  import type { PluginSwcOptions } from '@modern-js/builder-plugin-swc';
4
4
  import type { PluginEsbuildOptions } from '@modern-js/builder-plugin-esbuild';
5
- export type BuilderToolsConfig = Required<BuilderConfig>['tools'];
5
+ import type { BuilderConfig as RsBuilderConfig } from '@modern-js/builder-rspack-provider';
6
+ import type { SharedToolsConfig as BuilderSharedToolsConfig } from '@modern-js/builder-shared';
7
+ import type { UnwrapBuilderConfig } from '../utils';
8
+ export type BuilderToolsConfig = UnwrapBuilderConfig<BuilderConfig, 'tools'> & {
9
+ esbuild?: PluginEsbuildOptions;
10
+ };
11
+ export type RsBuilderToolsConfig = UnwrapBuilderConfig<RsBuilderConfig, 'tools'>;
6
12
  /**
7
13
  * The configuration of `tools.tailwindcss` is provided by `tailwindcss` plugin.
8
14
  * Please use `yarn new` or `pnpm new` to enable the corresponding capability.
@@ -10,10 +16,9 @@ export type BuilderToolsConfig = Required<BuilderConfig>['tools'];
10
16
  */
11
17
 
12
18
  export type Tailwindcss = Record<string, any> | ((options: Record<string, any>) => Record<string, any> | void);
13
- export interface ToolsUserConfig extends BuilderToolsConfig {
19
+ export interface SharedToolsConfig extends BuilderSharedToolsConfig {
14
20
  tailwindcss?: Tailwindcss;
15
21
  jest?: JestConfig | ((jestConfig: JestConfig) => JestConfig);
16
- esbuild?: PluginEsbuildOptions;
17
22
  /**
18
23
  * The configuration of `swc` is provided by `swc` plugin.
19
24
  * @requires `swc` plugin
@@ -21,4 +26,5 @@ export interface ToolsUserConfig extends BuilderToolsConfig {
21
26
 
22
27
  swc?: PluginSwcOptions;
23
28
  }
24
- export type ToolsNormalizedConfig = ToolsUserConfig;
29
+ export interface ToolsUserConfig extends BuilderToolsConfig, SharedToolsConfig {}
30
+ export interface RsToolsUserConfig extends SharedToolsConfig, RsBuilderToolsConfig {}
@@ -3,6 +3,8 @@ import type { AsyncWaterfall, AsyncWorkflow, ParallelWorkflow } from '@modern-js
3
3
  import type { Entrypoint, HtmlPartials, NestedRoute, PageRoute, RouteLegacy, ServerRoute } from '@modern-js/types';
4
4
  import type { RegisterBuildPlatformResult, DevToolData } from '@modern-js/core';
5
5
  import type { Stats, MultiStats } from '@modern-js/builder-shared';
6
+ import type { Rspack } from '@modern-js/builder-rspack-provider';
7
+ import { Bundler } from './utils';
6
8
  export interface ImportSpecifier {
7
9
  local?: string;
8
10
  imported?: string;
@@ -17,7 +19,7 @@ export interface RuntimePlugin {
17
19
  options: string;
18
20
  args?: string;
19
21
  }
20
- export type AppToolsHooks = {
22
+ export type AppToolsHooks<B extends Bundler = 'webpack'> = {
21
23
  modifyEntryExport: AsyncWaterfall<{
22
24
  entrypoint: Entrypoint;
23
25
  exportStatement: string;
@@ -60,16 +62,16 @@ export type AppToolsHooks = {
60
62
  beforeDev: AsyncWorkflow<void, unknown>;
61
63
  afterDev: AsyncWorkflow<void, unknown>;
62
64
  beforeCreateCompiler: AsyncWorkflow<{
63
- bundlerConfigs: webpack.Configuration[];
65
+ bundlerConfigs?: B extends 'rspack' ? Rspack.Configuration[] : webpack.Configuration[];
64
66
  }, unknown>;
65
67
  afterCreateCompiler: AsyncWorkflow<{
66
- compiler?: webpack.Compiler | webpack.MultiCompiler;
68
+ compiler?: B extends 'rspack' ? Rspack.Compiler : webpack.Compiler | webpack.MultiCompiler;
67
69
  }, unknown>;
68
70
  beforePrintInstructions: AsyncWaterfall<{
69
71
  instructions: string;
70
72
  }>;
71
73
  beforeBuild: AsyncWorkflow<{
72
- bundlerConfigs?: webpack.Configuration[];
74
+ bundlerConfigs?: B extends 'rspack' ? Rspack.Configuration[] : webpack.Configuration[];
73
75
  }, unknown>;
74
76
  afterBuild: AsyncWorkflow<{
75
77
  stats?: Stats | MultiStats;
@@ -1,23 +1,35 @@
1
1
  import type { NormalizedConfig, UserConfig } from '@modern-js/core';
2
- import type { AppToolsUserConfig, AppToolsNormalizedConfig } from './config';
2
+ import type { AppToolsUserConfig, AppToolsNormalizedConfig, SharedUserConfig, RsAppToolsUserConfig } from './config';
3
3
  import type { AppToolsHooks } from './hooks';
4
4
  import type { AppToolsLegacyUserConfig, AppToolsLegacyNormalizedConfig } from './legacyConfig';
5
+ import { Bundler, FromConfig } from './utils';
5
6
  export * from './hooks';
6
7
  export * from './config';
7
8
  export * from './legacyConfig';
9
+ export type { webpack } from '@modern-js/builder-webpack-provider';
10
+ export type { Rspack } from '@modern-js/builder-rspack-provider';
11
+ export type { Bundler } from './utils';
8
12
  export type { ServerUserConfig, ServerNormalizedConfig, BffUserConfig, BffNormalizedConfig, SSR, SSRByEntries } from '@modern-js/server-core';
9
13
  export type { IAppContext, PluginAPI, CliPlugin, NormalizedConfig, UserConfig } from '@modern-js/core';
10
- export type AppTools = {
11
- hooks: AppToolsHooks;
12
- userConfig: AppToolsUserConfig;
13
- normalizedConfig: AppToolsNormalizedConfig;
14
+ export type AppTools<B extends Bundler = 'webpack'> = {
15
+ hooks: AppToolsHooks<B>;
16
+ userConfig: FromConfig<B, {
17
+ rspack: RsAppToolsUserConfig;
18
+ webpack: AppToolsUserConfig;
19
+ shared: SharedUserConfig;
20
+ }>;
21
+ normalizedConfig: FromConfig<B, {
22
+ rspack: AppToolsNormalizedConfig<RsAppToolsUserConfig>;
23
+ webpack: AppToolsNormalizedConfig<AppToolsUserConfig>;
24
+ shared: AppToolsNormalizedConfig<SharedUserConfig>;
25
+ }>;
14
26
  };
15
27
  export type LegacyAppTools = {
16
28
  hooks: AppToolsHooks;
17
29
  userConfig: AppToolsLegacyUserConfig;
18
30
  normalizedConfig: AppToolsLegacyNormalizedConfig;
19
31
  };
20
- export type AppNormalizedConfig = NormalizedConfig<AppTools>;
32
+ export type AppNormalizedConfig<B extends Bundler = 'webpack'> = NormalizedConfig<AppTools<B>>;
21
33
  export type AppLegacyNormalizedConfig = NormalizedConfig<LegacyAppTools>;
22
- export type AppUserConfig = UserConfig<AppTools>;
34
+ export type AppUserConfig<B extends Bundler = 'webpack'> = UserConfig<AppTools<B>>;
23
35
  export type AppLegacyUserConfig = UserConfig<LegacyAppTools>;
@@ -0,0 +1,7 @@
1
+ export type UnwrapBuilderConfig<Config, Key extends keyof Config> = Required<Config>[Key];
2
+ export type Bundler = 'rspack' | 'webpack' | 'shared';
3
+ export type FromConfig<B extends Bundler, Config extends {
4
+ rspack: Rspack;
5
+ webpack: Webpack;
6
+ shared: Shared;
7
+ }, Rspack = {}, Webpack = {}, Shared = {}> = B extends 'shared' ? Config['shared'] : B extends 'rspack' ? Config['rspack'] : Config['webpack'];
@@ -19,4 +19,4 @@ export declare const buildServerConfig: ({
19
19
  */
20
20
 
21
21
  export declare const safeReplacer: () => (key: string, value: unknown) => unknown;
22
- export declare const emitResolvedConfig: (appDirectory: string, resolvedConfig: AppNormalizedConfig) => Promise<void>;
22
+ export declare const emitResolvedConfig: (appDirectory: string, resolvedConfig: AppNormalizedConfig<'shared'>) => Promise<void>;
@@ -1,2 +1,2 @@
1
1
  import { AppTools, PluginAPI } from '../types';
2
- export declare function getServerInternalPlugins(api: PluginAPI<AppTools>): Promise<Record<string, string>>;
2
+ export declare function getServerInternalPlugins(api: PluginAPI<AppTools<'shared'>>): Promise<Record<string, string>>;
@@ -1,3 +1,3 @@
1
1
  import type { IAppContext, CliHooksRunner } from '@modern-js/core';
2
2
  import type { AppNormalizedConfig, AppTools } from '../types';
3
- export declare const printInstructions: (hookRunners: CliHooksRunner<AppTools>, appContext: IAppContext, config: AppNormalizedConfig) => Promise<void>;
3
+ export declare const printInstructions: (hookRunners: CliHooksRunner<AppTools<'shared'>>, appContext: IAppContext, config: AppNormalizedConfig<'shared'>) => Promise<void>;