@modern-js/app-tools 2.35.0 → 2.35.2-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 (513) hide show
  1. package/dist/cjs/analyze/constants.js +69 -75
  2. package/dist/cjs/analyze/generateCode.js +77 -61
  3. package/dist/cjs/analyze/getBundleEntry.js +53 -27
  4. package/dist/cjs/analyze/getClientRoutes/getRoutes.js +63 -37
  5. package/dist/cjs/analyze/getClientRoutes/getRoutesLegacy.js +63 -37
  6. package/dist/cjs/analyze/getClientRoutes/index.js +27 -17
  7. package/dist/cjs/analyze/getClientRoutes/utils.js +47 -30
  8. package/dist/cjs/analyze/getFileSystemEntry.js +58 -33
  9. package/dist/cjs/analyze/getHtmlTemplate.js +45 -20
  10. package/dist/cjs/analyze/getServerRoutes.js +59 -34
  11. package/dist/cjs/analyze/index.js +77 -55
  12. package/dist/cjs/analyze/isDefaultExportFunction.js +42 -17
  13. package/dist/cjs/analyze/makeLegalIdentifier.js +24 -7
  14. package/dist/cjs/analyze/nestedRoutes.js +117 -65
  15. package/dist/cjs/analyze/templates.js +139 -57
  16. package/dist/cjs/analyze/utils.js +101 -67
  17. package/dist/cjs/builder/builder-rspack/adapterCopy.js +46 -20
  18. package/dist/cjs/builder/builder-rspack/index.js +29 -12
  19. package/dist/cjs/builder/builder-webpack/adapterModern.js +28 -11
  20. package/dist/cjs/builder/builder-webpack/createCopyPattern.js +30 -20
  21. package/dist/cjs/builder/builder-webpack/index.js +40 -14
  22. package/dist/cjs/builder/generator/createBuilderOptions.js +24 -7
  23. package/dist/cjs/builder/generator/createBuilderProviderConfig.js +27 -11
  24. package/dist/cjs/builder/generator/getBuilderTargets.js +27 -10
  25. package/dist/cjs/builder/generator/index.js +44 -18
  26. package/dist/cjs/builder/index.js +39 -13
  27. package/dist/cjs/builder/shared/builderPlugins/adapterBasic.js +34 -7
  28. package/dist/cjs/builder/shared/builderPlugins/adapterHtml.js +39 -38
  29. package/dist/cjs/builder/shared/builderPlugins/adapterSSR.js +58 -34
  30. package/dist/cjs/builder/shared/builderPlugins/index.js +24 -6
  31. package/dist/cjs/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +27 -10
  32. package/dist/cjs/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +29 -12
  33. package/dist/cjs/builder/shared/bundlerPlugins/RouterPlugin.js +43 -26
  34. package/dist/cjs/builder/shared/bundlerPlugins/index.js +24 -6
  35. package/dist/cjs/builder/shared/createCopyInfo.js +38 -12
  36. package/dist/cjs/builder/shared/index.js +24 -6
  37. package/dist/cjs/builder/shared/loaders/serverModuleLoader.js +21 -8
  38. package/dist/cjs/builder/shared/types.js +15 -3
  39. package/dist/cjs/commands/build.js +34 -18
  40. package/dist/cjs/commands/deploy.js +24 -7
  41. package/dist/cjs/commands/dev.js +40 -23
  42. package/dist/cjs/commands/index.js +24 -6
  43. package/dist/cjs/commands/inspect.js +26 -10
  44. package/dist/cjs/commands/serve.js +49 -23
  45. package/dist/cjs/config/default.js +33 -23
  46. package/dist/cjs/config/index.js +24 -6
  47. package/dist/cjs/config/initialize/index.js +27 -10
  48. package/dist/cjs/config/initialize/inits.js +44 -25
  49. package/dist/cjs/config/legacy/createHtmlConfig.js +24 -7
  50. package/dist/cjs/config/legacy/createOutputConfig.js +24 -7
  51. package/dist/cjs/config/legacy/createSourceConfig.js +24 -7
  52. package/dist/cjs/config/legacy/createToolsConfig.js +24 -7
  53. package/dist/cjs/config/legacy/index.js +34 -23
  54. package/dist/cjs/defineConfig.js +25 -15
  55. package/dist/cjs/exports/server.js +25 -8
  56. package/dist/cjs/hooks.js +50 -33
  57. package/dist/cjs/index.js +196 -184
  58. package/dist/cjs/initialize/index.js +30 -17
  59. package/dist/cjs/locale/en.js +24 -7
  60. package/dist/cjs/locale/index.js +31 -21
  61. package/dist/cjs/locale/zh.js +24 -7
  62. package/dist/cjs/schema/Schema.js +28 -11
  63. package/dist/cjs/schema/index.js +40 -21
  64. package/dist/cjs/schema/legacy.js +30 -17
  65. package/dist/cjs/types/config/deploy.js +15 -3
  66. package/dist/cjs/types/config/dev.js +15 -3
  67. package/dist/cjs/types/config/experiments.js +15 -3
  68. package/dist/cjs/types/config/html.js +15 -3
  69. package/dist/cjs/types/config/index.js +20 -4
  70. package/dist/cjs/types/config/output.js +15 -3
  71. package/dist/cjs/types/config/performance.js +15 -3
  72. package/dist/cjs/types/config/security.js +15 -3
  73. package/dist/cjs/types/config/source.js +15 -3
  74. package/dist/cjs/types/config/testing.js +15 -3
  75. package/dist/cjs/types/config/tools.js +15 -3
  76. package/dist/cjs/types/hooks.js +15 -3
  77. package/dist/cjs/types/index.js +24 -6
  78. package/dist/cjs/types/legacyConfig/deploy.js +15 -3
  79. package/dist/cjs/types/legacyConfig/dev.js +15 -3
  80. package/dist/cjs/types/legacyConfig/index.js +15 -3
  81. package/dist/cjs/types/legacyConfig/output.js +15 -3
  82. package/dist/cjs/types/legacyConfig/source.js +15 -3
  83. package/dist/cjs/types/legacyConfig/testing.js +15 -3
  84. package/dist/cjs/types/legacyConfig/tools.js +15 -3
  85. package/dist/cjs/types/utils.js +15 -3
  86. package/dist/cjs/utils/config.js +50 -33
  87. package/dist/cjs/utils/createServer.js +43 -26
  88. package/dist/cjs/utils/env.js +26 -9
  89. package/dist/cjs/utils/generateWatchFiles.js +41 -22
  90. package/dist/cjs/utils/getSelectedEntries.js +30 -13
  91. package/dist/cjs/utils/getServerInternalPlugins.js +24 -7
  92. package/dist/cjs/utils/printInstructions.js +27 -10
  93. package/dist/cjs/utils/restart.js +30 -13
  94. package/dist/cjs/utils/routes.js +37 -11
  95. package/dist/cjs/utils/types.js +15 -3
  96. package/dist/esm/analyze/constants.js +49 -22
  97. package/dist/esm/analyze/generateCode.js +42 -37
  98. package/dist/esm/analyze/getBundleEntry.js +4 -1
  99. package/dist/esm/analyze/getClientRoutes/getRoutes.js +12 -9
  100. package/dist/esm/analyze/getClientRoutes/getRoutesLegacy.js +12 -9
  101. package/dist/esm/analyze/getClientRoutes/index.js +6 -2
  102. package/dist/esm/analyze/getClientRoutes/utils.js +9 -4
  103. package/dist/esm/analyze/getFileSystemEntry.js +11 -9
  104. package/dist/esm/analyze/getHtmlTemplate.js +7 -4
  105. package/dist/esm/analyze/getServerRoutes.js +12 -10
  106. package/dist/esm/analyze/index.js +27 -24
  107. package/dist/esm/analyze/isDefaultExportFunction.js +4 -1
  108. package/dist/esm/analyze/makeLegalIdentifier.js +4 -1
  109. package/dist/esm/analyze/nestedRoutes.js +99 -30
  110. package/dist/esm/analyze/templates.js +125 -34
  111. package/dist/esm/analyze/utils.js +103 -18
  112. package/dist/esm/builder/builder-rspack/adapterCopy.js +4 -1
  113. package/dist/esm/builder/builder-rspack/index.js +4 -1
  114. package/dist/esm/builder/builder-webpack/adapterModern.js +4 -1
  115. package/dist/esm/builder/builder-webpack/createCopyPattern.js +8 -4
  116. package/dist/esm/builder/builder-webpack/index.js +4 -1
  117. package/dist/esm/builder/generator/createBuilderOptions.js +5 -2
  118. package/dist/esm/builder/generator/createBuilderProviderConfig.js +5 -3
  119. package/dist/esm/builder/generator/getBuilderTargets.js +4 -1
  120. package/dist/esm/builder/generator/index.js +5 -2
  121. package/dist/esm/builder/index.js +5 -2
  122. package/dist/esm/builder/shared/builderPlugins/adapterBasic.js +4 -1
  123. package/dist/esm/builder/shared/builderPlugins/adapterHtml.js +23 -51
  124. package/dist/esm/builder/shared/builderPlugins/adapterSSR.js +22 -21
  125. package/dist/esm/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +4 -1
  126. package/dist/esm/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +4 -1
  127. package/dist/esm/builder/shared/bundlerPlugins/RouterPlugin.js +9 -6
  128. package/dist/esm/builder/shared/createCopyInfo.js +7 -4
  129. package/dist/esm/builder/shared/loaders/serverModuleLoader.js +4 -1
  130. package/dist/esm/builder/shared/types.js +0 -1
  131. package/dist/esm/commands/build.js +9 -6
  132. package/dist/esm/commands/deploy.js +4 -1
  133. package/dist/esm/commands/dev.js +12 -9
  134. package/dist/esm/commands/inspect.js +6 -3
  135. package/dist/esm/commands/serve.js +11 -8
  136. package/dist/esm/config/default.js +12 -8
  137. package/dist/esm/config/initialize/index.js +4 -1
  138. package/dist/esm/config/initialize/inits.js +6 -2
  139. package/dist/esm/config/legacy/createHtmlConfig.js +17 -14
  140. package/dist/esm/config/legacy/createOutputConfig.js +19 -16
  141. package/dist/esm/config/legacy/createSourceConfig.js +14 -11
  142. package/dist/esm/config/legacy/createToolsConfig.js +18 -15
  143. package/dist/esm/config/legacy/index.js +21 -16
  144. package/dist/esm/defineConfig.js +6 -2
  145. package/dist/esm/exports/server.js +4 -1
  146. package/dist/esm/hooks.js +4 -1
  147. package/dist/esm/index.js +21 -14
  148. package/dist/esm/initialize/index.js +9 -6
  149. package/dist/esm/locale/en.js +4 -1
  150. package/dist/esm/locale/index.js +4 -1
  151. package/dist/esm/locale/zh.js +4 -1
  152. package/dist/esm/schema/Schema.js +6 -3
  153. package/dist/esm/schema/index.js +5 -2
  154. package/dist/esm/schema/legacy.js +4 -1
  155. package/dist/esm/types/config/deploy.js +0 -1
  156. package/dist/esm/types/config/dev.js +0 -1
  157. package/dist/esm/types/config/experiments.js +0 -1
  158. package/dist/esm/types/config/html.js +0 -1
  159. package/dist/esm/types/config/output.js +0 -1
  160. package/dist/esm/types/config/performance.js +0 -1
  161. package/dist/esm/types/config/security.js +0 -1
  162. package/dist/esm/types/config/source.js +0 -1
  163. package/dist/esm/types/config/testing.js +0 -1
  164. package/dist/esm/types/config/tools.js +0 -1
  165. package/dist/esm/types/hooks.js +0 -1
  166. package/dist/esm/types/legacyConfig/deploy.js +0 -1
  167. package/dist/esm/types/legacyConfig/dev.js +0 -1
  168. package/dist/esm/types/legacyConfig/index.js +0 -1
  169. package/dist/esm/types/legacyConfig/output.js +0 -1
  170. package/dist/esm/types/legacyConfig/source.js +0 -1
  171. package/dist/esm/types/legacyConfig/testing.js +0 -1
  172. package/dist/esm/types/legacyConfig/tools.js +0 -1
  173. package/dist/esm/types/utils.js +0 -1
  174. package/dist/esm/utils/config.js +14 -8
  175. package/dist/esm/utils/createServer.js +12 -5
  176. package/dist/esm/utils/env.js +4 -1
  177. package/dist/esm/utils/generateWatchFiles.js +6 -2
  178. package/dist/esm/utils/getSelectedEntries.js +4 -1
  179. package/dist/esm/utils/getServerInternalPlugins.js +5 -2
  180. package/dist/esm/utils/printInstructions.js +5 -2
  181. package/dist/esm/utils/restart.js +4 -1
  182. package/dist/esm/utils/routes.js +3 -1
  183. package/dist/esm/utils/types.js +0 -1
  184. package/dist/esm-node/analyze/constants.js +49 -22
  185. package/dist/esm-node/analyze/generateCode.js +11 -7
  186. package/dist/esm-node/analyze/getBundleEntry.js +4 -1
  187. package/dist/esm-node/analyze/getClientRoutes/getRoutes.js +4 -1
  188. package/dist/esm-node/analyze/getClientRoutes/getRoutesLegacy.js +4 -1
  189. package/dist/esm-node/analyze/getClientRoutes/index.js +6 -2
  190. package/dist/esm-node/analyze/getClientRoutes/utils.js +9 -4
  191. package/dist/esm-node/analyze/getFileSystemEntry.js +5 -3
  192. package/dist/esm-node/analyze/getHtmlTemplate.js +4 -1
  193. package/dist/esm-node/analyze/getServerRoutes.js +8 -6
  194. package/dist/esm-node/analyze/index.js +4 -1
  195. package/dist/esm-node/analyze/isDefaultExportFunction.js +4 -1
  196. package/dist/esm-node/analyze/makeLegalIdentifier.js +4 -1
  197. package/dist/esm-node/analyze/nestedRoutes.js +49 -10
  198. package/dist/esm-node/analyze/templates.js +97 -22
  199. package/dist/esm-node/analyze/utils.js +48 -16
  200. package/dist/esm-node/builder/builder-rspack/adapterCopy.js +4 -1
  201. package/dist/esm-node/builder/builder-rspack/index.js +4 -1
  202. package/dist/esm-node/builder/builder-webpack/adapterModern.js +4 -1
  203. package/dist/esm-node/builder/builder-webpack/createCopyPattern.js +6 -2
  204. package/dist/esm-node/builder/builder-webpack/index.js +4 -1
  205. package/dist/esm-node/builder/generator/createBuilderOptions.js +4 -1
  206. package/dist/esm-node/builder/generator/createBuilderProviderConfig.js +5 -3
  207. package/dist/esm-node/builder/generator/getBuilderTargets.js +4 -1
  208. package/dist/esm-node/builder/generator/index.js +4 -1
  209. package/dist/esm-node/builder/index.js +5 -2
  210. package/dist/esm-node/builder/shared/builderPlugins/adapterBasic.js +4 -1
  211. package/dist/esm-node/builder/shared/builderPlugins/adapterHtml.js +8 -20
  212. package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.js +16 -15
  213. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +4 -1
  214. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +4 -1
  215. package/dist/esm-node/builder/shared/bundlerPlugins/RouterPlugin.js +6 -3
  216. package/dist/esm-node/builder/shared/createCopyInfo.js +4 -1
  217. package/dist/esm-node/builder/shared/loaders/serverModuleLoader.js +4 -1
  218. package/dist/esm-node/builder/shared/types.js +0 -1
  219. package/dist/esm-node/commands/build.js +6 -4
  220. package/dist/esm-node/commands/deploy.js +4 -1
  221. package/dist/esm-node/commands/dev.js +4 -1
  222. package/dist/esm-node/commands/inspect.js +5 -3
  223. package/dist/esm-node/commands/serve.js +8 -5
  224. package/dist/esm-node/config/default.js +6 -2
  225. package/dist/esm-node/config/initialize/index.js +4 -1
  226. package/dist/esm-node/config/initialize/inits.js +6 -2
  227. package/dist/esm-node/config/legacy/createHtmlConfig.js +4 -1
  228. package/dist/esm-node/config/legacy/createOutputConfig.js +4 -1
  229. package/dist/esm-node/config/legacy/createSourceConfig.js +4 -1
  230. package/dist/esm-node/config/legacy/createToolsConfig.js +4 -1
  231. package/dist/esm-node/config/legacy/index.js +7 -2
  232. package/dist/esm-node/defineConfig.js +6 -2
  233. package/dist/esm-node/exports/server.js +4 -1
  234. package/dist/esm-node/hooks.js +4 -1
  235. package/dist/esm-node/index.js +140 -135
  236. package/dist/esm-node/initialize/index.js +4 -1
  237. package/dist/esm-node/locale/en.js +4 -1
  238. package/dist/esm-node/locale/index.js +4 -1
  239. package/dist/esm-node/locale/zh.js +4 -1
  240. package/dist/esm-node/schema/Schema.js +4 -1
  241. package/dist/esm-node/schema/index.js +5 -2
  242. package/dist/esm-node/schema/legacy.js +4 -1
  243. package/dist/esm-node/types/config/deploy.js +0 -1
  244. package/dist/esm-node/types/config/dev.js +0 -1
  245. package/dist/esm-node/types/config/experiments.js +0 -1
  246. package/dist/esm-node/types/config/html.js +0 -1
  247. package/dist/esm-node/types/config/output.js +0 -1
  248. package/dist/esm-node/types/config/performance.js +0 -1
  249. package/dist/esm-node/types/config/security.js +0 -1
  250. package/dist/esm-node/types/config/source.js +0 -1
  251. package/dist/esm-node/types/config/testing.js +0 -1
  252. package/dist/esm-node/types/config/tools.js +0 -1
  253. package/dist/esm-node/types/hooks.js +0 -1
  254. package/dist/esm-node/types/legacyConfig/deploy.js +0 -1
  255. package/dist/esm-node/types/legacyConfig/dev.js +0 -1
  256. package/dist/esm-node/types/legacyConfig/index.js +0 -1
  257. package/dist/esm-node/types/legacyConfig/output.js +0 -1
  258. package/dist/esm-node/types/legacyConfig/source.js +0 -1
  259. package/dist/esm-node/types/legacyConfig/testing.js +0 -1
  260. package/dist/esm-node/types/legacyConfig/tools.js +0 -1
  261. package/dist/esm-node/types/utils.js +0 -1
  262. package/dist/esm-node/utils/config.js +12 -6
  263. package/dist/esm-node/utils/createServer.js +12 -5
  264. package/dist/esm-node/utils/env.js +4 -1
  265. package/dist/esm-node/utils/generateWatchFiles.js +6 -2
  266. package/dist/esm-node/utils/getSelectedEntries.js +4 -1
  267. package/dist/esm-node/utils/getServerInternalPlugins.js +4 -1
  268. package/dist/esm-node/utils/printInstructions.js +5 -2
  269. package/dist/esm-node/utils/restart.js +4 -1
  270. package/dist/esm-node/utils/routes.js +3 -1
  271. package/dist/esm-node/utils/types.js +0 -1
  272. package/dist/js/modern/analyze/constants.js +54 -0
  273. package/dist/js/modern/analyze/generateCode.js +247 -0
  274. package/dist/js/modern/analyze/getBundleEntry.js +71 -0
  275. package/dist/js/modern/analyze/getClientRoutes/getRoutes.js +220 -0
  276. package/dist/js/modern/analyze/getClientRoutes/getRoutesLegacy.js +216 -0
  277. package/dist/js/modern/analyze/getClientRoutes/index.js +6 -0
  278. package/dist/js/modern/analyze/getClientRoutes/utils.js +31 -0
  279. package/dist/js/modern/analyze/getFileSystemEntry.js +109 -0
  280. package/dist/js/modern/analyze/getHtmlTemplate.js +115 -0
  281. package/dist/js/modern/analyze/getServerRoutes.js +175 -0
  282. package/dist/js/modern/analyze/index.js +332 -0
  283. package/dist/js/modern/analyze/isDefaultExportFunction.js +42 -0
  284. package/dist/js/modern/analyze/makeLegalIdentifier.js +13 -0
  285. package/dist/js/modern/analyze/nestedRoutes.js +157 -0
  286. package/dist/js/modern/analyze/templates.js +334 -0
  287. package/dist/js/modern/analyze/utils.js +141 -0
  288. package/dist/js/modern/builder/builderPlugins/compatModern.js +233 -0
  289. package/dist/js/modern/builder/index.js +159 -0
  290. package/dist/js/modern/builder/loaders/routerLoader.js +17 -0
  291. package/dist/js/modern/builder/loaders/serverModuleLoader.js +7 -0
  292. package/dist/js/modern/builder/share.js +46 -0
  293. package/dist/js/modern/builder/webpackPlugins/htmlAsyncChunkPlugin.js +30 -0
  294. package/dist/js/modern/builder/webpackPlugins/htmlBottomTemplate.js +37 -0
  295. package/dist/js/modern/builder/webpackPlugins/routerPlugin.js +113 -0
  296. package/dist/js/modern/commands/build.js +91 -0
  297. package/dist/js/modern/commands/deploy.js +28 -0
  298. package/dist/js/modern/commands/dev.js +109 -0
  299. package/dist/js/modern/commands/index.js +3 -0
  300. package/dist/js/modern/commands/inspect.js +38 -0
  301. package/dist/js/modern/commands/serve.js +54 -0
  302. package/dist/js/modern/config/default.js +175 -0
  303. package/dist/js/modern/config/index.js +8 -0
  304. package/dist/js/modern/config/initial/createHtmlConfig.js +35 -0
  305. package/dist/js/modern/config/initial/createOutputConfig.js +68 -0
  306. package/dist/js/modern/config/initial/createSourceConfig.js +39 -0
  307. package/dist/js/modern/config/initial/createToolsConfig.js +42 -0
  308. package/dist/js/modern/config/initial/index.js +16 -0
  309. package/dist/js/modern/config/initial/inits.js +152 -0
  310. package/dist/js/modern/config/initial/transformNormalizedConfig.js +47 -0
  311. package/dist/js/modern/defineConfig.js +27 -0
  312. package/dist/js/modern/exports/server.js +4 -0
  313. package/dist/js/modern/hooks.js +35 -0
  314. package/dist/js/modern/index.js +211 -0
  315. package/dist/js/modern/initialize/index.js +124 -0
  316. package/dist/js/modern/locale/en.js +36 -0
  317. package/dist/js/modern/locale/index.js +9 -0
  318. package/dist/js/modern/locale/zh.js +36 -0
  319. package/dist/js/modern/schema/Schema.js +40 -0
  320. package/dist/js/modern/schema/index.js +88 -0
  321. package/dist/js/modern/schema/legacy.js +148 -0
  322. package/dist/js/modern/types/config/deploy.js +0 -0
  323. package/dist/js/modern/types/config/dev.js +0 -0
  324. package/dist/js/modern/types/config/experiments.js +0 -0
  325. package/dist/js/modern/types/config/html.js +0 -0
  326. package/dist/js/modern/types/config/index.js +1 -0
  327. package/dist/js/modern/types/config/output.js +0 -0
  328. package/dist/js/modern/types/config/performance.js +0 -0
  329. package/dist/js/modern/types/config/security.js +0 -0
  330. package/dist/js/modern/types/config/source.js +0 -0
  331. package/dist/js/modern/types/config/tools.js +0 -0
  332. package/dist/js/modern/types/hooks.js +0 -0
  333. package/dist/js/modern/types/index.js +3 -0
  334. package/dist/js/modern/types/legacyConfig/deploy.js +0 -0
  335. package/dist/js/modern/types/legacyConfig/dev.js +0 -0
  336. package/dist/js/modern/types/legacyConfig/index.js +0 -0
  337. package/dist/js/modern/types/legacyConfig/output.js +0 -0
  338. package/dist/js/modern/types/legacyConfig/source.js +0 -0
  339. package/dist/js/modern/types/legacyConfig/tools.js +0 -0
  340. package/dist/js/modern/utils/config.js +128 -0
  341. package/dist/js/modern/utils/createServer.js +75 -0
  342. package/dist/js/modern/utils/env.js +15 -0
  343. package/dist/js/modern/utils/generateWatchFiles.js +55 -0
  344. package/dist/js/modern/utils/getSelectedEntries.js +58 -0
  345. package/dist/js/modern/utils/getServerInternalPlugins.js +58 -0
  346. package/dist/js/modern/utils/language.js +8 -0
  347. package/dist/js/modern/utils/printInstructions.js +31 -0
  348. package/dist/js/modern/utils/restart.js +44 -0
  349. package/dist/js/modern/utils/routes.js +30 -0
  350. package/dist/js/modern/utils/types.js +0 -0
  351. package/dist/js/node/analyze/constants.js +98 -0
  352. package/dist/js/node/analyze/generateCode.js +271 -0
  353. package/dist/js/node/analyze/getBundleEntry.js +95 -0
  354. package/dist/js/node/analyze/getClientRoutes/getRoutes.js +242 -0
  355. package/dist/js/node/analyze/getClientRoutes/getRoutesLegacy.js +238 -0
  356. package/dist/js/node/analyze/getClientRoutes/index.js +30 -0
  357. package/dist/js/node/analyze/getClientRoutes/utils.js +58 -0
  358. package/dist/js/node/analyze/getFileSystemEntry.js +131 -0
  359. package/dist/js/node/analyze/getHtmlTemplate.js +144 -0
  360. package/dist/js/node/analyze/getServerRoutes.js +194 -0
  361. package/dist/js/node/analyze/index.js +339 -0
  362. package/dist/js/node/analyze/isDefaultExportFunction.js +71 -0
  363. package/dist/js/node/analyze/makeLegalIdentifier.js +36 -0
  364. package/dist/js/node/analyze/nestedRoutes.js +184 -0
  365. package/dist/js/node/analyze/templates.js +365 -0
  366. package/dist/js/node/analyze/utils.js +172 -0
  367. package/dist/js/node/builder/builderPlugins/compatModern.js +258 -0
  368. package/dist/js/node/builder/index.js +177 -0
  369. package/dist/js/node/builder/loaders/routerLoader.js +38 -0
  370. package/dist/js/node/builder/loaders/serverModuleLoader.js +28 -0
  371. package/dist/js/node/builder/share.js +75 -0
  372. package/dist/js/node/builder/webpackPlugins/htmlAsyncChunkPlugin.js +53 -0
  373. package/dist/js/node/builder/webpackPlugins/htmlBottomTemplate.js +60 -0
  374. package/dist/js/node/builder/webpackPlugins/routerPlugin.js +135 -0
  375. package/dist/js/node/commands/build.js +112 -0
  376. package/dist/js/node/commands/deploy.js +51 -0
  377. package/dist/js/node/commands/dev.js +126 -0
  378. package/dist/js/node/commands/index.js +19 -0
  379. package/dist/js/node/commands/inspect.js +61 -0
  380. package/dist/js/node/commands/serve.js +83 -0
  381. package/dist/js/node/config/default.js +197 -0
  382. package/dist/js/node/config/index.js +34 -0
  383. package/dist/js/node/config/initial/createHtmlConfig.js +58 -0
  384. package/dist/js/node/config/initial/createOutputConfig.js +91 -0
  385. package/dist/js/node/config/initial/createSourceConfig.js +62 -0
  386. package/dist/js/node/config/initial/createToolsConfig.js +65 -0
  387. package/dist/js/node/config/initial/index.js +41 -0
  388. package/dist/js/node/config/initial/inits.js +175 -0
  389. package/dist/js/node/config/initial/transformNormalizedConfig.js +70 -0
  390. package/dist/js/node/defineConfig.js +49 -0
  391. package/dist/js/node/exports/server.js +27 -0
  392. package/dist/js/node/hooks.js +54 -0
  393. package/dist/js/node/index.js +235 -0
  394. package/dist/js/node/initialize/index.js +134 -0
  395. package/dist/js/node/locale/en.js +59 -0
  396. package/dist/js/node/locale/index.js +33 -0
  397. package/dist/js/node/locale/zh.js +59 -0
  398. package/dist/js/node/schema/Schema.js +63 -0
  399. package/dist/js/node/schema/index.js +118 -0
  400. package/dist/js/node/schema/legacy.js +169 -0
  401. package/dist/js/node/types/config/deploy.js +15 -0
  402. package/dist/js/node/types/config/dev.js +15 -0
  403. package/dist/js/node/types/config/experiments.js +15 -0
  404. package/dist/js/node/types/config/html.js +15 -0
  405. package/dist/js/node/types/config/index.js +17 -0
  406. package/dist/js/node/types/config/output.js +15 -0
  407. package/dist/js/node/types/config/performance.js +15 -0
  408. package/dist/js/node/types/config/security.js +15 -0
  409. package/dist/js/node/types/config/source.js +15 -0
  410. package/dist/js/node/types/config/tools.js +15 -0
  411. package/dist/js/node/types/hooks.js +15 -0
  412. package/dist/js/node/types/index.js +19 -0
  413. package/dist/js/node/types/legacyConfig/deploy.js +15 -0
  414. package/dist/js/node/types/legacyConfig/dev.js +15 -0
  415. package/dist/js/node/types/legacyConfig/index.js +15 -0
  416. package/dist/js/node/types/legacyConfig/output.js +15 -0
  417. package/dist/js/node/types/legacyConfig/source.js +15 -0
  418. package/dist/js/node/types/legacyConfig/tools.js +15 -0
  419. package/dist/js/node/utils/config.js +153 -0
  420. package/dist/js/node/utils/createServer.js +106 -0
  421. package/dist/js/node/utils/env.js +38 -0
  422. package/dist/js/node/utils/generateWatchFiles.js +85 -0
  423. package/dist/js/node/utils/getSelectedEntries.js +81 -0
  424. package/dist/js/node/utils/getServerInternalPlugins.js +79 -0
  425. package/dist/js/node/utils/language.js +31 -0
  426. package/dist/js/node/utils/printInstructions.js +54 -0
  427. package/dist/js/node/utils/restart.js +67 -0
  428. package/dist/js/node/utils/routes.js +59 -0
  429. package/dist/js/node/utils/types.js +15 -0
  430. package/dist/js/treeshaking/analyze/constants.js +40 -0
  431. package/dist/js/treeshaking/analyze/generateCode.js +485 -0
  432. package/dist/js/treeshaking/analyze/getBundleEntry.js +62 -0
  433. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutes.js +233 -0
  434. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutesLegacy.js +231 -0
  435. package/dist/js/treeshaking/analyze/getClientRoutes/index.js +3 -0
  436. package/dist/js/treeshaking/analyze/getClientRoutes/utils.js +23 -0
  437. package/dist/js/treeshaking/analyze/getFileSystemEntry.js +107 -0
  438. package/dist/js/treeshaking/analyze/getHtmlTemplate.js +302 -0
  439. package/dist/js/treeshaking/analyze/getServerRoutes.js +222 -0
  440. package/dist/js/treeshaking/analyze/index.js +697 -0
  441. package/dist/js/treeshaking/analyze/isDefaultExportFunction.js +47 -0
  442. package/dist/js/treeshaking/analyze/makeLegalIdentifier.js +13 -0
  443. package/dist/js/treeshaking/analyze/nestedRoutes.js +384 -0
  444. package/dist/js/treeshaking/analyze/templates.js +468 -0
  445. package/dist/js/treeshaking/analyze/utils.js +374 -0
  446. package/dist/js/treeshaking/builder/builderPlugins/compatModern.js +304 -0
  447. package/dist/js/treeshaking/builder/index.js +374 -0
  448. package/dist/js/treeshaking/builder/loaders/routerLoader.js +13 -0
  449. package/dist/js/treeshaking/builder/loaders/serverModuleLoader.js +5 -0
  450. package/dist/js/treeshaking/builder/share.js +40 -0
  451. package/dist/js/treeshaking/builder/webpackPlugins/htmlAsyncChunkPlugin.js +110 -0
  452. package/dist/js/treeshaking/builder/webpackPlugins/htmlBottomTemplate.js +72 -0
  453. package/dist/js/treeshaking/builder/webpackPlugins/routerPlugin.js +343 -0
  454. package/dist/js/treeshaking/commands/build.js +291 -0
  455. package/dist/js/treeshaking/commands/deploy.js +154 -0
  456. package/dist/js/treeshaking/commands/dev.js +301 -0
  457. package/dist/js/treeshaking/commands/index.js +3 -0
  458. package/dist/js/treeshaking/commands/inspect.js +149 -0
  459. package/dist/js/treeshaking/commands/serve.js +199 -0
  460. package/dist/js/treeshaking/config/default.js +210 -0
  461. package/dist/js/treeshaking/config/index.js +3 -0
  462. package/dist/js/treeshaking/config/initial/createHtmlConfig.js +19 -0
  463. package/dist/js/treeshaking/config/initial/createOutputConfig.js +41 -0
  464. package/dist/js/treeshaking/config/initial/createSourceConfig.js +42 -0
  465. package/dist/js/treeshaking/config/initial/createToolsConfig.js +23 -0
  466. package/dist/js/treeshaking/config/initial/index.js +12 -0
  467. package/dist/js/treeshaking/config/initial/inits.js +209 -0
  468. package/dist/js/treeshaking/config/initial/transformNormalizedConfig.js +35 -0
  469. package/dist/js/treeshaking/defineConfig.js +61 -0
  470. package/dist/js/treeshaking/exports/server.js +2 -0
  471. package/dist/js/treeshaking/hooks.js +29 -0
  472. package/dist/js/treeshaking/index.js +706 -0
  473. package/dist/js/treeshaking/initialize/index.js +276 -0
  474. package/dist/js/treeshaking/locale/en.js +38 -0
  475. package/dist/js/treeshaking/locale/index.js +9 -0
  476. package/dist/js/treeshaking/locale/zh.js +38 -0
  477. package/dist/js/treeshaking/schema/Schema.js +273 -0
  478. package/dist/js/treeshaking/schema/index.js +181 -0
  479. package/dist/js/treeshaking/schema/legacy.js +337 -0
  480. package/dist/js/treeshaking/types/config/deploy.js +1 -0
  481. package/dist/js/treeshaking/types/config/dev.js +1 -0
  482. package/dist/js/treeshaking/types/config/experiments.js +1 -0
  483. package/dist/js/treeshaking/types/config/html.js +1 -0
  484. package/dist/js/treeshaking/types/config/index.js +1 -0
  485. package/dist/js/treeshaking/types/config/output.js +1 -0
  486. package/dist/js/treeshaking/types/config/performance.js +1 -0
  487. package/dist/js/treeshaking/types/config/security.js +1 -0
  488. package/dist/js/treeshaking/types/config/source.js +1 -0
  489. package/dist/js/treeshaking/types/config/tools.js +1 -0
  490. package/dist/js/treeshaking/types/hooks.js +1 -0
  491. package/dist/js/treeshaking/types/index.js +3 -0
  492. package/dist/js/treeshaking/types/legacyConfig/deploy.js +1 -0
  493. package/dist/js/treeshaking/types/legacyConfig/dev.js +1 -0
  494. package/dist/js/treeshaking/types/legacyConfig/index.js +1 -0
  495. package/dist/js/treeshaking/types/legacyConfig/output.js +1 -0
  496. package/dist/js/treeshaking/types/legacyConfig/source.js +1 -0
  497. package/dist/js/treeshaking/types/legacyConfig/tools.js +1 -0
  498. package/dist/js/treeshaking/utils/config.js +302 -0
  499. package/dist/js/treeshaking/utils/createServer.js +258 -0
  500. package/dist/js/treeshaking/utils/env.js +13 -0
  501. package/dist/js/treeshaking/utils/generateWatchFiles.js +214 -0
  502. package/dist/js/treeshaking/utils/getSelectedEntries.js +186 -0
  503. package/dist/js/treeshaking/utils/getServerInternalPlugins.js +210 -0
  504. package/dist/js/treeshaking/utils/language.js +6 -0
  505. package/dist/js/treeshaking/utils/printInstructions.js +152 -0
  506. package/dist/js/treeshaking/utils/restart.js +187 -0
  507. package/dist/js/treeshaking/utils/routes.js +153 -0
  508. package/dist/js/treeshaking/utils/types.js +1 -0
  509. package/dist/types/analyze/constants.d.ts +2 -0
  510. package/dist/types/analyze/utils.d.ts +2 -1
  511. package/dist/types/builder/shared/bundlerPlugins/RouterPlugin.d.ts +1 -0
  512. package/dist/types/types/config/index.d.ts +3 -2
  513. package/package.json +24 -25
@@ -1,7 +1,7 @@
1
1
  import * as path from "path";
2
2
  import { fs, normalizeToPosixPath } from "@modern-js/utils";
3
3
  import { JS_EXTENSIONS, NESTED_ROUTE } from "./constants";
4
- import { replaceWithAlias } from "./utils";
4
+ import { hasAction, replaceWithAlias } from "./utils";
5
5
  const conventionNames = Object.values(NESTED_ROUTE);
6
6
  const replaceDynamicPath = (routePath) => {
7
7
  return routePath.replace(/\[(.*?)\]/g, ":$1");
@@ -10,7 +10,7 @@ const getPathWithoutExt = (filename) => {
10
10
  const extname = path.extname(filename);
11
11
  return filename.slice(0, -extname.length);
12
12
  };
13
- export const getRouteId = (componentPath, routesDir, entryName, isMainEntry) => {
13
+ const getRouteId = (componentPath, routesDir, entryName, isMainEntry) => {
14
14
  const relativePath = normalizeToPosixPath(path.relative(routesDir, componentPath));
15
15
  const pathWithoutExt = getPathWithoutExt(relativePath);
16
16
  let id = ``;
@@ -36,7 +36,7 @@ const createRoute = (routeInfo, rootDir, filename, entryName, isMainEntry) => {
36
36
  type: "nested"
37
37
  };
38
38
  };
39
- export const optimizeRoute = (routeTree) => {
39
+ const optimizeRoute = (routeTree) => {
40
40
  if (!routeTree.children || routeTree.children.length === 0) {
41
41
  return [
42
42
  routeTree
@@ -69,8 +69,8 @@ export const optimizeRoute = (routeTree) => {
69
69
  ];
70
70
  }
71
71
  };
72
- export const walk = async (dirname, rootDir, alias, entryName, isMainEntry, oldVersion) => {
73
- var _routePath, _finalRoute_children;
72
+ const walk = async (dirname, rootDir, alias, entryName, isMainEntry, oldVersion) => {
73
+ var _finalRoute_children;
74
74
  if (!await fs.pathExists(dirname)) {
75
75
  return null;
76
76
  }
@@ -90,17 +90,22 @@ export const walk = async (dirname, rootDir, alias, entryName, isMainEntry, oldV
90
90
  }
91
91
  routePath = replaceDynamicPath(routePath);
92
92
  const route = {
93
- path: (_routePath = routePath) === null || _routePath === void 0 ? void 0 : _routePath.replace(/\$$/, "?"),
93
+ path: routePath === null || routePath === void 0 ? void 0 : routePath.replace(/\$$/, "?"),
94
94
  children: [],
95
95
  isRoot
96
96
  };
97
97
  let pageLoaderFile = "";
98
98
  let pageRoute = null;
99
+ let pageConfigFile = "";
100
+ let pageClientData = "";
101
+ let pageData = "";
102
+ let pageAction = "";
99
103
  let splatLoaderFile = "";
104
+ let splatRoute = null;
105
+ let splatConfigFile = "";
100
106
  let splatClientData = "";
101
107
  let splatData = "";
102
- let splatRoute = null;
103
- let pageConfigFile = "";
108
+ let splatAction = "";
104
109
  const items = await fs.readdir(dirname);
105
110
  for (const item of items) {
106
111
  const itemPath = path.join(dirname, item);
@@ -127,6 +132,9 @@ export const walk = async (dirname, rootDir, alias, entryName, isMainEntry, oldV
127
132
  }
128
133
  if (itemWithoutExt === NESTED_ROUTE.LAYOUT_DATA_FILE) {
129
134
  route.data = itemPath;
135
+ if (await hasAction(itemPath)) {
136
+ route.action = itemPath;
137
+ }
130
138
  }
131
139
  if (itemWithoutExt === NESTED_ROUTE.LAYOUT_CONFIG_FILE) {
132
140
  if (!route.config) {
@@ -140,10 +148,13 @@ export const walk = async (dirname, rootDir, alias, entryName, isMainEntry, oldV
140
148
  pageLoaderFile = itemPath;
141
149
  }
142
150
  if (itemWithoutExt === NESTED_ROUTE.PAGE_CLIENT_LOADER) {
143
- route.clientData = itemPath;
151
+ pageClientData = itemPath;
144
152
  }
145
153
  if (itemWithoutExt === NESTED_ROUTE.PAGE_DATA_FILE) {
146
- route.data = itemPath;
154
+ pageData = itemPath;
155
+ if (await hasAction(itemPath)) {
156
+ pageAction = itemPath;
157
+ }
147
158
  }
148
159
  if (itemWithoutExt === NESTED_ROUTE.PAGE_CONFIG_FILE) {
149
160
  pageConfigFile = itemPath;
@@ -159,6 +170,15 @@ export const walk = async (dirname, rootDir, alias, entryName, isMainEntry, oldV
159
170
  if (pageConfigFile) {
160
171
  pageRoute.config = pageConfigFile;
161
172
  }
173
+ if (pageData) {
174
+ pageRoute.data = pageData;
175
+ }
176
+ if (pageClientData) {
177
+ pageRoute.clientData = pageClientData;
178
+ }
179
+ if (pageAction) {
180
+ pageRoute.action = pageAction;
181
+ }
162
182
  (_route_children1 = route.children) === null || _route_children1 === void 0 ? void 0 : _route_children1.push(pageRoute);
163
183
  }
164
184
  if (itemWithoutExt === NESTED_ROUTE.SPLATE_LOADER_FILE) {
@@ -167,8 +187,16 @@ export const walk = async (dirname, rootDir, alias, entryName, isMainEntry, oldV
167
187
  if (itemWithoutExt === NESTED_ROUTE.SPLATE_CLIENT_DATA) {
168
188
  splatClientData = itemPath;
169
189
  }
190
+ if (itemWithoutExt === NESTED_ROUTE.SPLATE_CONFIG_FILE) {
191
+ if (!route.config) {
192
+ splatConfigFile = itemPath;
193
+ }
194
+ }
170
195
  if (itemWithoutExt === NESTED_ROUTE.SPLATE_DATA_FILE) {
171
196
  splatData = itemPath;
197
+ if (await hasAction(itemPath)) {
198
+ splatAction = itemPath;
199
+ }
172
200
  }
173
201
  if (itemWithoutExt === NESTED_ROUTE.SPLATE_FILE) {
174
202
  var _route_children2;
@@ -185,6 +213,12 @@ export const walk = async (dirname, rootDir, alias, entryName, isMainEntry, oldV
185
213
  if (splatData) {
186
214
  splatRoute.data = splatData;
187
215
  }
216
+ if (splatConfigFile) {
217
+ splatRoute.config = splatConfigFile;
218
+ }
219
+ if (splatAction) {
220
+ splatRoute.action = splatAction;
221
+ }
188
222
  (_route_children2 = route.children) === null || _route_children2 === void 0 ? void 0 : _route_children2.push(splatRoute);
189
223
  }
190
224
  if (itemWithoutExt === NESTED_ROUTE.LOADING_FILE) {
@@ -218,3 +252,8 @@ export const walk = async (dirname, rootDir, alias, entryName, isMainEntry, oldV
218
252
  }
219
253
  return finalRoute;
220
254
  };
255
+ export {
256
+ getRouteId,
257
+ optimizeRoute,
258
+ walk
259
+ };
@@ -2,7 +2,7 @@ import path from "path";
2
2
  import { fs, getEntryOptions, isSSGEntry, slash } from "@modern-js/utils";
3
3
  import { APP_CONFIG_NAME, TEMP_LOADERS_DIR } from "./constants";
4
4
  import { getServerLoadersFile } from "./utils";
5
- export const index = ({ mountId, imports, renderFunction: renderFunction2, exportStatement }) => `
5
+ const index = ({ mountId, imports, renderFunction: renderFunction2, exportStatement }) => `
6
6
  const IS_BROWSER = typeof window !== 'undefined' && window.name !== 'nodejs';
7
7
  const IS_REACT18 = process.env.IS_REACT18 === 'true';
8
8
  const MOUNT_ID = '${mountId}';
@@ -21,7 +21,7 @@ AppWrapper = render();
21
21
 
22
22
  ${exportStatement};
23
23
  `;
24
- export const renderFunction = ({ plugins, customBootstrap, fileSystemRoutes: fileSystemRoutes2 }) => {
24
+ const renderFunction = ({ plugins, customBootstrap, fileSystemRoutes: fileSystemRoutes2 }) => {
25
25
  const bootstrap = "bootstrap(AppWrapper, MOUNT_ID, root, ReactDOM)";
26
26
  return `
27
27
  const finalAppConfig = {
@@ -48,7 +48,7 @@ export const renderFunction = ({ plugins, customBootstrap, fileSystemRoutes: fil
48
48
  return AppWrapper
49
49
  `;
50
50
  };
51
- export const html = (partials) => `
51
+ const html = (partials) => `
52
52
  <!DOCTYPE html>
53
53
  <html>
54
54
  <head>
@@ -71,24 +71,42 @@ export const html = (partials) => `
71
71
 
72
72
  </html>
73
73
  `;
74
- export const routesForServer = ({ routes }) => {
74
+ const routesForServer = ({ routes }) => {
75
75
  const loaders = [];
76
+ const actions = [];
77
+ const loadersMap = {};
76
78
  const traverseRouteTree = (route) => {
77
79
  let children;
78
80
  if ("children" in route && route.children) {
79
- var _route_children, _route;
80
- children = (_route = route) === null || _route === void 0 ? void 0 : (_route_children = _route.children) === null || _route_children === void 0 ? void 0 : _route_children.map(traverseRouteTree);
81
+ var _route_children;
82
+ children = route === null || route === void 0 ? void 0 : (_route_children = route.children) === null || _route_children === void 0 ? void 0 : _route_children.map(traverseRouteTree);
81
83
  }
82
84
  let loader;
85
+ let action;
83
86
  if (route.type === "nested") {
84
- if (route.loader) {
87
+ if (route.loader || route.data) {
85
88
  loaders.push(route.loader);
86
- loader = `loader_${loaders.length - 1}`;
89
+ const loaderId = loaders.length - 1;
90
+ loader = `loader_${loaderId}`;
91
+ const inline = Boolean(route.data);
92
+ loadersMap[loader] = {
93
+ loaderId,
94
+ routeId: route.id,
95
+ filePath: route.data || route.loader,
96
+ clientData: Boolean(route.clientData),
97
+ route,
98
+ inline
99
+ };
100
+ if (route.action) {
101
+ actions.push(route.action);
102
+ action = `action_${loaders.length - 1}`;
103
+ }
87
104
  }
88
105
  }
89
106
  const finalRoute = {
90
107
  ...route,
91
108
  loader,
109
+ action,
92
110
  children
93
111
  };
94
112
  return finalRoute;
@@ -98,8 +116,14 @@ export const routesForServer = ({ routes }) => {
98
116
  `;
99
117
  for (const route of routes) {
100
118
  if ("type" in route) {
119
+ const keywords = [
120
+ "loader",
121
+ "action"
122
+ ];
123
+ const regs = keywords.map(createMatchReg);
101
124
  const newRoute = traverseRouteTree(route);
102
- routesCode += `${JSON.stringify(newRoute, null, 2).replace(/"(loader_[^"]+)"/g, "$1")},`;
125
+ const routeStr = JSON.stringify(newRoute, null, 2);
126
+ routesCode += regs.reduce((acc, reg) => acc.replace(reg, "$1$2"), routeStr).replace(/\\"/g, '"');
103
127
  } else {
104
128
  routesCode += `${JSON.stringify(route, null, 2)}`;
105
129
  }
@@ -107,10 +131,20 @@ export const routesForServer = ({ routes }) => {
107
131
  routesCode += `
108
132
  ];`;
109
133
  let importLoadersCode = "";
110
- if (loaders.length > 0) {
111
- importLoadersCode = loaders.map((loader, index2) => {
112
- return `import loader_${index2} from "${slash(loader)}"`;
113
- }).join("\n");
134
+ for (const [key, loaderInfo] of Object.entries(loadersMap)) {
135
+ if (loaderInfo.inline) {
136
+ const { route } = loaderInfo;
137
+ if (route.action) {
138
+ importLoadersCode += `import { loader as ${key}, action as action_${loaderInfo.loaderId} } from "${slash(loaderInfo.filePath)}";
139
+ `;
140
+ } else {
141
+ importLoadersCode += `import { loader as ${key} } from "${slash(loaderInfo.filePath)}";
142
+ `;
143
+ }
144
+ } else {
145
+ importLoadersCode += `import ${key} from "${slash(loaderInfo.filePath)}";
146
+ `;
147
+ }
114
148
  }
115
149
  return `
116
150
  ${importLoadersCode}
@@ -118,7 +152,7 @@ export const routesForServer = ({ routes }) => {
118
152
  `;
119
153
  };
120
154
  const createMatchReg = (keyword) => new RegExp(`("${keyword}":\\s)"([^,]+)"`, "g");
121
- export const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName, internalDirectory, splitRouteChunks = true }) => {
155
+ const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, entryName, internalDirectory, splitRouteChunks = true }) => {
122
156
  const components = [];
123
157
  const loadings = [];
124
158
  const errors = [];
@@ -132,25 +166,26 @@ export const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, ent
132
166
  import loadable, { lazy as loadableLazy } from "@modern-js/runtime/loadable"
133
167
  `;
134
168
  let rootLayoutCode = ``;
135
- const getDataLoaderPath = (loaderId, clientData) => {
169
+ const getDataLoaderPath = ({ loaderId, clientData, action, inline, routeId }) => {
136
170
  if (!ssrMode) {
137
171
  return "";
138
172
  }
139
173
  const clientDataStr = clientData ? `&clientData=${clientData}` : "";
140
174
  if (nestedRoutesEntry) {
141
- return `?mapFile=${slash(loadersMapFile)}&loaderId=${loaderId}${clientDataStr}`;
175
+ return `?loaderId=${loaderId}${clientDataStr}&action=${action}&inline=${inline}&routeId=${routeId}`;
142
176
  }
143
177
  return "";
144
178
  };
145
179
  const traverseRouteTree = (route) => {
146
180
  let children;
147
181
  if ("children" in route && route.children) {
148
- var _route_children, _route;
149
- children = (_route = route) === null || _route === void 0 ? void 0 : (_route_children = _route.children) === null || _route_children === void 0 ? void 0 : _route_children.map(traverseRouteTree);
182
+ var _route_children;
183
+ children = route === null || route === void 0 ? void 0 : (_route_children = route.children) === null || _route_children === void 0 ? void 0 : _route_children.map(traverseRouteTree);
150
184
  }
151
185
  let loading;
152
186
  let error;
153
187
  let loader;
188
+ let action;
154
189
  let config;
155
190
  let component = "";
156
191
  let lazyImport = null;
@@ -167,13 +202,19 @@ export const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, ent
167
202
  loaders.push(route.loader);
168
203
  const loaderId = loaders.length - 1;
169
204
  loader = `loader_${loaderId}`;
205
+ const inline = Boolean(route.data);
170
206
  loadersMap[loader] = {
207
+ loaderId,
171
208
  routeId: route.id,
172
209
  filePath: route.data || route.loader,
173
210
  clientData: Boolean(route.clientData),
174
- inline: Boolean(route.data)
211
+ route,
212
+ inline
175
213
  };
176
214
  loader = `loader_${loaderId}`;
215
+ if (route.action) {
216
+ action = `action_${loaderId}`;
217
+ }
177
218
  }
178
219
  if (typeof route.config === "string") {
179
220
  configs.push(route.config);
@@ -212,6 +253,7 @@ export const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, ent
212
253
  lazyImport,
213
254
  loading,
214
255
  loader,
256
+ action,
215
257
  config,
216
258
  error,
217
259
  children
@@ -232,6 +274,7 @@ export const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, ent
232
274
  "component",
233
275
  "lazyImport",
234
276
  "loader",
277
+ "action",
235
278
  "loading",
236
279
  "error",
237
280
  "config"
@@ -272,10 +315,34 @@ export const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, ent
272
315
  let importLoadersCode = "";
273
316
  for (const [key, loaderInfo] of Object.entries(loadersMap)) {
274
317
  if (loaderInfo.inline) {
275
- importLoadersCode += `import { loader as ${key} } from "${slash(loaderInfo.filePath)}${getDataLoaderPath(key, loaderInfo.clientData)}";
318
+ const { route } = loaderInfo;
319
+ if (route.action) {
320
+ importLoadersCode += `import { loader as ${key}, action as action_${loaderInfo.loaderId} } from "${slash(loaderInfo.filePath)}${getDataLoaderPath({
321
+ loaderId: key,
322
+ clientData: loaderInfo.clientData,
323
+ action: route.action,
324
+ inline: loaderInfo.inline,
325
+ routeId: loaderInfo.routeId
326
+ })}";
276
327
  `;
328
+ } else {
329
+ importLoadersCode += `import { loader as ${key} } from "${slash(loaderInfo.filePath)}${getDataLoaderPath({
330
+ loaderId: key,
331
+ clientData: loaderInfo.clientData,
332
+ action: false,
333
+ inline: loaderInfo.inline,
334
+ routeId: route.id
335
+ })}";
336
+ `;
337
+ }
277
338
  } else {
278
- importLoadersCode += `import ${key} from "${slash(loaderInfo.filePath)}${getDataLoaderPath(key, loaderInfo.clientData)}";
339
+ importLoadersCode += `import ${key} from "${slash(loaderInfo.filePath)}${getDataLoaderPath({
340
+ loaderId: key,
341
+ clientData: loaderInfo.clientData,
342
+ action: false,
343
+ inline: loaderInfo.inline,
344
+ routeId: loaderInfo.routeId
345
+ })}";
279
346
  `;
280
347
  }
281
348
  }
@@ -297,7 +364,7 @@ export const fileSystemRoutes = async ({ routes, ssrMode, nestedRoutesEntry, ent
297
364
  ${routeComponentsCode}
298
365
  `;
299
366
  };
300
- export function ssrLoaderCombinedModule(entrypoints, entrypoint, config, appContext) {
367
+ function ssrLoaderCombinedModule(entrypoints, entrypoint, config, appContext) {
301
368
  const { entryName, isMainEntry } = entrypoint;
302
369
  const { packageName, internalDirectory } = appContext;
303
370
  const ssr = getEntryOptions(entryName, isMainEntry, config.server.ssr, config.server.ssrByEntries, packageName);
@@ -310,3 +377,11 @@ export function ssrLoaderCombinedModule(entrypoints, entrypoint, config, appCont
310
377
  }
311
378
  return null;
312
379
  }
380
+ export {
381
+ fileSystemRoutes,
382
+ html,
383
+ index,
384
+ renderFunction,
385
+ routesForServer,
386
+ ssrLoaderCombinedModule
387
+ };
@@ -3,8 +3,8 @@ import path from "path";
3
3
  import { isReact18, normalizeToPosixPath, fs as fse, getCommand } from "@modern-js/utils";
4
4
  import { transform } from "esbuild";
5
5
  import { parse } from "es-module-lexer";
6
- import { FILE_SYSTEM_ROUTES_FILE_NAME, JS_EXTENSIONS, LOADER_EXPORT_NAME } from "./constants";
7
- export const walkDirectory = (dir) => fs.readdirSync(dir).reduce((previous, filename) => {
6
+ import { ACTION_EXPORT_NAME, FILE_SYSTEM_ROUTES_FILE_NAME, JS_EXTENSIONS, LOADER_EXPORT_NAME } from "./constants";
7
+ const walkDirectory = (dir) => fs.readdirSync(dir).reduce((previous, filename) => {
8
8
  const filePath = path.join(dir, filename);
9
9
  if (fs.statSync(filePath).isDirectory()) {
10
10
  return [
@@ -18,7 +18,7 @@ export const walkDirectory = (dir) => fs.readdirSync(dir).reduce((previous, file
18
18
  ];
19
19
  }
20
20
  }, []);
21
- export const getDefaultImports = ({ entrypoint, srcDirectory, internalSrcAlias, internalDirAlias, internalDirectory }) => {
21
+ const getDefaultImports = ({ entrypoint, srcDirectory, internalSrcAlias, internalDirAlias, internalDirectory }) => {
22
22
  const { entryName, fileSystemRoutes, customBootstrap, entry } = entrypoint;
23
23
  const imports = [
24
24
  {
@@ -91,7 +91,7 @@ export const getDefaultImports = ({ entrypoint, srcDirectory, internalSrcAlias,
91
91
  }
92
92
  return imports;
93
93
  };
94
- export const isPageComponentFile = (filePath) => {
94
+ const isPageComponentFile = (filePath) => {
95
95
  if (/\.(d|test|spec|e2e)\.(js|jsx|ts|tsx)$/.test(filePath)) {
96
96
  return false;
97
97
  }
@@ -105,14 +105,14 @@ export const isPageComponentFile = (filePath) => {
105
105
  }
106
106
  return false;
107
107
  };
108
- export const replaceWithAlias = (base, filePath, alias) => {
108
+ const replaceWithAlias = (base, filePath, alias) => {
109
109
  if (filePath.includes(base)) {
110
110
  return normalizeToPosixPath(path.join(alias, path.relative(base, filePath)));
111
111
  } else {
112
112
  return filePath;
113
113
  }
114
114
  };
115
- export const parseModule = async ({ source, filename }) => {
115
+ const parseModule = async ({ source, filename }) => {
116
116
  let content = source;
117
117
  if (JS_EXTENSIONS.some((ext) => filename.endsWith(ext))) {
118
118
  const result = await transform(content, {
@@ -123,21 +123,41 @@ export const parseModule = async ({ source, filename }) => {
123
123
  }
124
124
  return await parse(content);
125
125
  };
126
- export const hasLoader = async (filename) => {
127
- const source = await fse.readFile(filename);
128
- const [, moduleExports] = await parseModule({
129
- source: source.toString(),
130
- filename
131
- });
132
- return moduleExports.some((e) => e.n === LOADER_EXPORT_NAME);
126
+ const hasLoader = async (filename, source) => {
127
+ let content = source;
128
+ if (!source) {
129
+ content = (await fse.readFile(filename, "utf-8")).toString();
130
+ }
131
+ if (content) {
132
+ const [, moduleExports] = await parseModule({
133
+ source: content.toString(),
134
+ filename
135
+ });
136
+ return moduleExports.some((e) => e.n === LOADER_EXPORT_NAME);
137
+ }
138
+ return false;
139
+ };
140
+ const hasAction = async (filename, source) => {
141
+ let content = source;
142
+ if (!source) {
143
+ content = (await fse.readFile(filename, "utf-8")).toString();
144
+ }
145
+ if (content) {
146
+ const [, moduleExports] = await parseModule({
147
+ source: content.toString(),
148
+ filename
149
+ });
150
+ return moduleExports.some((e) => e.n === ACTION_EXPORT_NAME);
151
+ }
152
+ return false;
133
153
  };
134
- export const getServerLoadersFile = (internalDirectory, entryName) => {
154
+ const getServerLoadersFile = (internalDirectory, entryName) => {
135
155
  return path.join(internalDirectory, entryName, "route-server-loaders.js");
136
156
  };
137
- export const getServerCombinedModueFile = (internalDirectory, entryName) => {
157
+ const getServerCombinedModueFile = (internalDirectory, entryName) => {
138
158
  return path.join(internalDirectory, entryName, "server-loader-combined.js");
139
159
  };
140
- export const checkIsBuildCommands = () => {
160
+ const checkIsBuildCommands = () => {
141
161
  const buildCommands = [
142
162
  "dev",
143
163
  "start",
@@ -149,3 +169,15 @@ export const checkIsBuildCommands = () => {
149
169
  const command = getCommand();
150
170
  return buildCommands.includes(command);
151
171
  };
172
+ export {
173
+ checkIsBuildCommands,
174
+ getDefaultImports,
175
+ getServerCombinedModueFile,
176
+ getServerLoadersFile,
177
+ hasAction,
178
+ hasLoader,
179
+ isPageComponentFile,
180
+ parseModule,
181
+ replaceWithAlias,
182
+ walkDirectory
183
+ };
@@ -2,7 +2,7 @@ import path from "path";
2
2
  import fs from "@modern-js/utils/fs-extra";
3
3
  import { logger, removeTailSlash } from "@modern-js/utils";
4
4
  import { createCopyInfo } from "../shared";
5
- export const builderPluginAdpaterCopy = (options) => ({
5
+ const builderPluginAdpaterCopy = (options) => ({
6
6
  name: "builder-plugin-adapter-rspack-copy",
7
7
  setup(api) {
8
8
  let publicPath;
@@ -58,3 +58,6 @@ function createConfigBuiltinCopy(options) {
58
58
  }
59
59
  ];
60
60
  }
61
+ export {
62
+ builderPluginAdpaterCopy
63
+ };
@@ -1,10 +1,13 @@
1
1
  import { builderRspackProvider } from "@modern-js/builder-rspack-provider";
2
2
  import { generateBuilder } from "../generator";
3
3
  import { builderPluginAdpaterCopy } from "./adapterCopy";
4
- export async function createRspackBuilderForModern(options) {
4
+ async function createRspackBuilderForModern(options) {
5
5
  const builder = await generateBuilder(options, builderRspackProvider);
6
6
  builder.addPlugins([
7
7
  builderPluginAdpaterCopy(options)
8
8
  ]);
9
9
  return builder;
10
10
  }
11
+ export {
12
+ createRspackBuilderForModern
13
+ };
@@ -1,6 +1,6 @@
1
1
  import { join } from "path";
2
2
  import { createPublicPattern } from "./createCopyPattern";
3
- export const builderPluginAdapterModern = (options) => ({
3
+ const builderPluginAdapterModern = (options) => ({
4
4
  name: "builder-plugin-adapter-modern",
5
5
  setup(api) {
6
6
  const { normalizedConfig: modernConfig, appContext } = options;
@@ -23,3 +23,6 @@ export const builderPluginAdapterModern = (options) => ({
23
23
  });
24
24
  }
25
25
  });
26
+ export {
27
+ builderPluginAdapterModern
28
+ };
@@ -7,7 +7,7 @@ const info = (file) => ({
7
7
  // ref: https://github.com/webpack-contrib/copy-webpack-plugin#info
8
8
  minimized: minifiedJsRexExp.test(file.sourceFilename)
9
9
  });
10
- export function createPublicPattern(appContext, config, chain) {
10
+ function createPublicPattern(appContext, config, chain) {
11
11
  const { publicDir } = createCopyInfo(appContext, config);
12
12
  return {
13
13
  info,
@@ -24,7 +24,7 @@ export function createPublicPattern(appContext, config, chain) {
24
24
  }
25
25
  };
26
26
  }
27
- export function createUploadPattern(appContext, config) {
27
+ function createUploadPattern(appContext, config) {
28
28
  const { uploadDir } = createCopyInfo(appContext, config);
29
29
  return {
30
30
  info,
@@ -34,3 +34,7 @@ export function createUploadPattern(appContext, config) {
34
34
  noErrorOnMissing: true
35
35
  };
36
36
  }
37
+ export {
38
+ createPublicPattern,
39
+ createUploadPattern
40
+ };
@@ -1,7 +1,7 @@
1
1
  import { builderWebpackProvider } from "@modern-js/builder-webpack-provider";
2
2
  import { generateBuilder } from "../generator";
3
3
  import { builderPluginAdapterModern } from "./adapterModern";
4
- export async function createWebpackBuilderForModern(options) {
4
+ async function createWebpackBuilderForModern(options) {
5
5
  const builder = await generateBuilder(options, builderWebpackProvider);
6
6
  const { normalizedConfig } = options;
7
7
  if (normalizedConfig.tools.esbuild) {
@@ -16,3 +16,6 @@ export async function createWebpackBuilderForModern(options) {
16
16
  ]);
17
17
  return builder;
18
18
  }
19
+ export {
20
+ createWebpackBuilderForModern
21
+ };
@@ -1,4 +1,4 @@
1
- export function createBuilderOptions(target, appContext) {
1
+ function createBuilderOptions(target, appContext) {
2
2
  const entries = {};
3
3
  const { entrypoints = [], checkedEntries } = appContext;
4
4
  for (const { entryName, internalEntry, entry } of entrypoints) {
@@ -22,3 +22,6 @@ export function createBuilderOptions(target, appContext) {
22
22
  framework: appContext.metaName
23
23
  };
24
24
  }
25
+ export {
26
+ createBuilderOptions
27
+ };
@@ -1,9 +1,8 @@
1
1
  import { createUploadPattern } from "../builder-webpack/createCopyPattern";
2
2
  function modifyOutputConfig(config, appContext) {
3
- var _copy;
4
3
  const defaultCopyPattern = createUploadPattern(appContext, config);
5
4
  const { copy } = config.output;
6
- const copyOptions = Array.isArray(copy) ? copy : (_copy = copy) === null || _copy === void 0 ? void 0 : _copy.patterns;
5
+ const copyOptions = Array.isArray(copy) ? copy : copy === null || copy === void 0 ? void 0 : copy.patterns;
7
6
  const builderCopy = [
8
7
  ...copyOptions || [],
9
8
  defaultCopyPattern
@@ -13,7 +12,7 @@ function modifyOutputConfig(config, appContext) {
13
12
  copy: builderCopy
14
13
  };
15
14
  }
16
- export function createBuilderProviderConfig(resolveConfig, appContext) {
15
+ function createBuilderProviderConfig(resolveConfig, appContext) {
17
16
  const htmlConfig = {
18
17
  ...resolveConfig.html
19
18
  };
@@ -39,3 +38,6 @@ export function createBuilderProviderConfig(resolveConfig, appContext) {
39
38
  modifyOutputConfig(config, appContext);
40
39
  return config;
41
40
  }
41
+ export {
42
+ createBuilderProviderConfig
43
+ };
@@ -1,5 +1,5 @@
1
1
  import { isProd, isServiceWorker, isSSR, isUseSSRBundle } from "@modern-js/utils";
2
- export function getBuilderTargets(normalizedConfig) {
2
+ function getBuilderTargets(normalizedConfig) {
3
3
  const targets = [
4
4
  "web"
5
5
  ];
@@ -13,3 +13,6 @@ export function getBuilderTargets(normalizedConfig) {
13
13
  }
14
14
  return targets;
15
15
  }
16
+ export {
17
+ getBuilderTargets
18
+ };
@@ -2,7 +2,7 @@ import { createBuilder } from "@modern-js/builder";
2
2
  import { createBuilderProviderConfig } from "./createBuilderProviderConfig";
3
3
  import { getBuilderTargets } from "./getBuilderTargets";
4
4
  import { createBuilderOptions } from "./createBuilderOptions";
5
- export async function generateBuilder(options, generateProvider) {
5
+ async function generateBuilder(options, generateProvider) {
6
6
  const { normalizedConfig, appContext } = options;
7
7
  const builderConfig = createBuilderProviderConfig(normalizedConfig, appContext);
8
8
  const provider = generateProvider({
@@ -29,3 +29,6 @@ async function applyBuilderPlugins(builder, options) {
29
29
  ]);
30
30
  }
31
31
  }
32
+ export {
33
+ generateBuilder
34
+ };