@modern-js/app-tools 2.58.1 → 2.58.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. package/dist/cjs/builder/builder-webpack/createCopyPattern.js +0 -1
  2. package/dist/cjs/builder/builder-webpack/index.js +1 -1
  3. package/dist/cjs/builder/generator/index.js +2 -2
  4. package/dist/cjs/builder/index.js +2 -2
  5. package/dist/cjs/builder/shared/bundlerPlugins/RouterPlugin.js +1 -4
  6. package/dist/cjs/commands/build.js +19 -0
  7. package/dist/cjs/commands/dev.js +9 -0
  8. package/dist/cjs/commands/index.js +8 -8
  9. package/dist/cjs/config/initialize/inits.js +4 -4
  10. package/dist/cjs/esm/esbuild-loader.mjs +20 -0
  11. package/dist/cjs/esm/register-esm.mjs +67 -0
  12. package/dist/cjs/esm/ts-node-loader.mjs +21 -0
  13. package/dist/cjs/esm/utils.mjs +43 -0
  14. package/dist/cjs/index.js +1 -1
  15. package/dist/cjs/plugins/analyze/index.js +3 -3
  16. package/dist/cjs/plugins/deploy/dependencies/index.js +1 -0
  17. package/dist/cjs/plugins/deploy/dependencies/utils.js +11 -0
  18. package/dist/cjs/plugins/deploy/platforms/netlify-entry.js +3 -0
  19. package/dist/cjs/plugins/deploy/platforms/netlify-entry.mjs +1 -0
  20. package/dist/cjs/plugins/deploy/platforms/{netlifyEntry.js → netlify-handler.js} +6 -4
  21. package/dist/cjs/plugins/deploy/platforms/netlify.js +14 -5
  22. package/dist/cjs/plugins/deploy/platforms/node.js +13 -4
  23. package/dist/cjs/plugins/deploy/platforms/vercel-entry.js +3 -0
  24. package/dist/cjs/plugins/deploy/platforms/vercel-entry.mjs +3 -0
  25. package/dist/cjs/plugins/deploy/platforms/{vercelEntry.js → vercel-handler.js} +4 -1
  26. package/dist/cjs/plugins/deploy/platforms/vercel.js +14 -5
  27. package/dist/cjs/utils/config.js +1 -1
  28. package/dist/cjs/utils/loadPlugins.js +1 -1
  29. package/dist/cjs/utils/register.js +50 -23
  30. package/dist/types/builder/builder-rspack/adapterCopy.d.ts +2 -2
  31. package/dist/types/builder/builder-rspack/index.d.ts +1 -1
  32. package/dist/types/builder/builder-webpack/adapterModern.d.ts +2 -2
  33. package/dist/types/builder/builder-webpack/index.d.ts +1 -1
  34. package/dist/types/builder/generator/index.d.ts +2 -2
  35. package/dist/types/builder/index.d.ts +1 -1
  36. package/dist/types/builder/shared/builderPlugins/adapterHtml.d.ts +1 -1
  37. package/dist/types/builder/shared/builderPlugins/adapterSSR.d.ts +1 -1
  38. package/dist/types/builder/shared/createCopyInfo.d.ts +1 -1
  39. package/dist/types/commands/build.d.ts +1 -1
  40. package/dist/types/commands/dev.d.ts +3 -3
  41. package/dist/types/commands/index.d.ts +3 -3
  42. package/dist/types/config/default.d.ts +1 -1
  43. package/dist/types/config/initialize/inits.d.ts +1 -1
  44. package/dist/types/config/legacy/createHtmlConfig.d.ts +1 -1
  45. package/dist/types/config/legacy/createOutputConfig.d.ts +1 -1
  46. package/dist/types/config/legacy/createSourceConfig.d.ts +1 -1
  47. package/dist/types/config/legacy/createToolsConfig.d.ts +1 -1
  48. package/dist/types/esm/esbuild-loader.d.mts +6 -0
  49. package/dist/types/esm/register-esm.d.mts +5 -0
  50. package/dist/types/esm/ts-node-loader.d.mts +6 -0
  51. package/dist/types/esm/utils.d.mts +6 -0
  52. package/dist/types/exports/server.d.ts +1 -1
  53. package/dist/types/hooks.d.ts +1 -1
  54. package/dist/types/index.d.ts +2 -2
  55. package/dist/types/plugins/analyze/getBundleEntry.d.ts +1 -1
  56. package/dist/types/plugins/analyze/getFileSystemEntry.d.ts +1 -1
  57. package/dist/types/plugins/analyze/index.d.ts +1 -1
  58. package/dist/types/plugins/deploy/dependencies/utils.d.ts +1 -1
  59. package/dist/types/plugins/deploy/index.d.ts +2 -2
  60. package/dist/types/plugins/deploy/platforms/netlify-entry.d.cts +1 -0
  61. package/dist/types/plugins/deploy/platforms/netlify-entry.d.mts +1 -0
  62. package/dist/types/plugins/deploy/platforms/netlify-handler.d.cts +1 -0
  63. package/dist/types/plugins/deploy/platforms/netlify.d.ts +1 -1
  64. package/dist/types/plugins/deploy/platforms/node.d.ts +1 -1
  65. package/dist/types/plugins/deploy/platforms/platform.d.ts +2 -2
  66. package/dist/types/plugins/deploy/platforms/vercel-entry.d.mts +2 -0
  67. package/dist/types/plugins/deploy/platforms/vercel-entry.d.ts +2 -0
  68. package/dist/types/plugins/deploy/platforms/vercel-handler.d.cts +1 -0
  69. package/dist/types/plugins/deploy/platforms/vercel.d.ts +1 -1
  70. package/dist/types/plugins/deploy/utils.d.ts +1 -1
  71. package/dist/types/plugins/serverBuild.d.ts +1 -1
  72. package/dist/types/types/hooks.d.ts +1 -1
  73. package/dist/types/types/index.d.ts +1 -1
  74. package/dist/types/utils/createServer.d.ts +1 -1
  75. package/dist/types/utils/generateWatchFiles.d.ts +1 -1
  76. package/dist/types/utils/getSelectedEntries.d.ts +1 -1
  77. package/dist/types/utils/loadPlugins.d.ts +3 -3
  78. package/dist/types/utils/register.d.ts +2 -2
  79. package/dist/types/utils/restart.d.ts +2 -2
  80. package/lib/types.d.ts +15 -0
  81. package/package.json +20 -20
  82. package/dist/esm/builder/builder-rspack/adapterCopy.js +0 -166
  83. package/dist/esm/builder/builder-rspack/index.js +0 -34
  84. package/dist/esm/builder/builder-webpack/adapterModern.js +0 -29
  85. package/dist/esm/builder/builder-webpack/createCopyPattern.js +0 -44
  86. package/dist/esm/builder/builder-webpack/index.js +0 -52
  87. package/dist/esm/builder/generator/createBuilderProviderConfig.js +0 -37
  88. package/dist/esm/builder/generator/getBuilderEnvironments.js +0 -81
  89. package/dist/esm/builder/generator/index.js +0 -94
  90. package/dist/esm/builder/index.js +0 -45
  91. package/dist/esm/builder/shared/builderPlugins/adapterBasic.js +0 -85
  92. package/dist/esm/builder/shared/builderPlugins/adapterHtml.js +0 -126
  93. package/dist/esm/builder/shared/builderPlugins/adapterSSR.js +0 -270
  94. package/dist/esm/builder/shared/builderPlugins/adapterWorker.js +0 -43
  95. package/dist/esm/builder/shared/builderPlugins/index.js +0 -4
  96. package/dist/esm/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +0 -51
  97. package/dist/esm/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +0 -37
  98. package/dist/esm/builder/shared/bundlerPlugins/RouterPlugin.js +0 -317
  99. package/dist/esm/builder/shared/bundlerPlugins/index.js +0 -3
  100. package/dist/esm/builder/shared/createCopyInfo.js +0 -14
  101. package/dist/esm/builder/shared/index.js +0 -3
  102. package/dist/esm/builder/shared/loaders/serverModuleLoader.js +0 -7
  103. package/dist/esm/builder/shared/types.js +0 -0
  104. package/dist/esm/commands/build.js +0 -117
  105. package/dist/esm/commands/deploy.js +0 -48
  106. package/dist/esm/commands/dev.js +0 -169
  107. package/dist/esm/commands/index.js +0 -411
  108. package/dist/esm/commands/inspect.js +0 -28
  109. package/dist/esm/commands/serve.js +0 -93
  110. package/dist/esm/config/default.js +0 -190
  111. package/dist/esm/config/index.js +0 -3
  112. package/dist/esm/config/initialize/index.js +0 -9
  113. package/dist/esm/config/initialize/inits.js +0 -85
  114. package/dist/esm/config/legacy/createHtmlConfig.js +0 -21
  115. package/dist/esm/config/legacy/createOutputConfig.js +0 -45
  116. package/dist/esm/config/legacy/createSourceConfig.js +0 -46
  117. package/dist/esm/config/legacy/createToolsConfig.js +0 -28
  118. package/dist/esm/config/legacy/index.js +0 -43
  119. package/dist/esm/defineConfig.js +0 -16
  120. package/dist/esm/exports/server.js +0 -4
  121. package/dist/esm/hooks.js +0 -34
  122. package/dist/esm/index.js +0 -239
  123. package/dist/esm/locale/en.js +0 -43
  124. package/dist/esm/locale/index.js +0 -12
  125. package/dist/esm/locale/zh.js +0 -43
  126. package/dist/esm/plugins/analyze/constants.js +0 -14
  127. package/dist/esm/plugins/analyze/getBundleEntry.js +0 -102
  128. package/dist/esm/plugins/analyze/getFileSystemEntry.js +0 -238
  129. package/dist/esm/plugins/analyze/getHtmlTemplate.js +0 -178
  130. package/dist/esm/plugins/analyze/getServerRoutes.js +0 -132
  131. package/dist/esm/plugins/analyze/index.js +0 -380
  132. package/dist/esm/plugins/analyze/isDefaultExportFunction.js +0 -49
  133. package/dist/esm/plugins/analyze/templates.js +0 -6
  134. package/dist/esm/plugins/analyze/utils.js +0 -101
  135. package/dist/esm/plugins/deploy/dependencies/index.js +0 -614
  136. package/dist/esm/plugins/deploy/dependencies/utils.js +0 -394
  137. package/dist/esm/plugins/deploy/exports.js +0 -4
  138. package/dist/esm/plugins/deploy/index.js +0 -135
  139. package/dist/esm/plugins/deploy/platforms/netlify.js +0 -299
  140. package/dist/esm/plugins/deploy/platforms/netlifyEntry.js +0 -203
  141. package/dist/esm/plugins/deploy/platforms/node.js +0 -133
  142. package/dist/esm/plugins/deploy/platforms/nodeEntry.js +0 -108
  143. package/dist/esm/plugins/deploy/platforms/platform.js +0 -0
  144. package/dist/esm/plugins/deploy/platforms/vercel.js +0 -233
  145. package/dist/esm/plugins/deploy/platforms/vercelEntry.js +0 -203
  146. package/dist/esm/plugins/deploy/utils.js +0 -47
  147. package/dist/esm/plugins/initialize/index.js +0 -119
  148. package/dist/esm/plugins/serverBuild.js +0 -87
  149. package/dist/esm/types/config/deploy.js +0 -0
  150. package/dist/esm/types/config/dev.js +0 -0
  151. package/dist/esm/types/config/experiments.js +0 -0
  152. package/dist/esm/types/config/html.js +0 -0
  153. package/dist/esm/types/config/index.js +0 -1
  154. package/dist/esm/types/config/output.js +0 -0
  155. package/dist/esm/types/config/performance.js +0 -0
  156. package/dist/esm/types/config/security.js +0 -0
  157. package/dist/esm/types/config/source.js +0 -0
  158. package/dist/esm/types/config/testing.js +0 -0
  159. package/dist/esm/types/config/tools.js +0 -0
  160. package/dist/esm/types/hooks.js +0 -0
  161. package/dist/esm/types/index.js +0 -3
  162. package/dist/esm/types/legacyConfig/deploy.js +0 -0
  163. package/dist/esm/types/legacyConfig/dev.js +0 -0
  164. package/dist/esm/types/legacyConfig/index.js +0 -0
  165. package/dist/esm/types/legacyConfig/output.js +0 -0
  166. package/dist/esm/types/legacyConfig/source.js +0 -0
  167. package/dist/esm/types/legacyConfig/testing.js +0 -0
  168. package/dist/esm/types/legacyConfig/tools.js +0 -0
  169. package/dist/esm/types/utils.js +0 -0
  170. package/dist/esm/utils/config.js +0 -122
  171. package/dist/esm/utils/createServer.js +0 -58
  172. package/dist/esm/utils/env.js +0 -16
  173. package/dist/esm/utils/generateWatchFiles.js +0 -71
  174. package/dist/esm/utils/getSelectedEntries.js +0 -67
  175. package/dist/esm/utils/loadPlugins.js +0 -69
  176. package/dist/esm/utils/printInstructions.js +0 -32
  177. package/dist/esm/utils/register.js +0 -129
  178. package/dist/esm/utils/restart.js +0 -67
  179. package/dist/esm/utils/routes.js +0 -42
  180. package/dist/esm/utils/types.js +0 -0
  181. package/dist/esm-node/builder/builder-rspack/adapterCopy.js +0 -67
  182. package/dist/esm-node/builder/builder-rspack/index.js +0 -12
  183. package/dist/esm-node/builder/builder-webpack/adapterModern.js +0 -26
  184. package/dist/esm-node/builder/builder-webpack/createCopyPattern.js +0 -42
  185. package/dist/esm-node/builder/builder-webpack/index.js +0 -20
  186. package/dist/esm-node/builder/generator/createBuilderProviderConfig.js +0 -44
  187. package/dist/esm-node/builder/generator/getBuilderEnvironments.js +0 -60
  188. package/dist/esm-node/builder/generator/index.js +0 -37
  189. package/dist/esm-node/builder/index.js +0 -11
  190. package/dist/esm-node/builder/shared/builderPlugins/adapterBasic.js +0 -48
  191. package/dist/esm-node/builder/shared/builderPlugins/adapterHtml.js +0 -60
  192. package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.js +0 -156
  193. package/dist/esm-node/builder/shared/builderPlugins/adapterWorker.js +0 -27
  194. package/dist/esm-node/builder/shared/builderPlugins/index.js +0 -4
  195. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +0 -30
  196. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +0 -31
  197. package/dist/esm-node/builder/shared/bundlerPlugins/RouterPlugin.js +0 -231
  198. package/dist/esm-node/builder/shared/bundlerPlugins/index.js +0 -3
  199. package/dist/esm-node/builder/shared/createCopyInfo.js +0 -14
  200. package/dist/esm-node/builder/shared/index.js +0 -3
  201. package/dist/esm-node/builder/shared/loaders/serverModuleLoader.js +0 -7
  202. package/dist/esm-node/builder/shared/types.js +0 -0
  203. package/dist/esm-node/commands/build.js +0 -55
  204. package/dist/esm-node/commands/deploy.js +0 -12
  205. package/dist/esm-node/commands/dev.js +0 -95
  206. package/dist/esm-node/commands/index.js +0 -92
  207. package/dist/esm-node/commands/inspect.js +0 -15
  208. package/dist/esm-node/commands/serve.js +0 -51
  209. package/dist/esm-node/config/default.js +0 -197
  210. package/dist/esm-node/config/index.js +0 -3
  211. package/dist/esm-node/config/initialize/index.js +0 -9
  212. package/dist/esm-node/config/initialize/inits.js +0 -79
  213. package/dist/esm-node/config/legacy/createHtmlConfig.js +0 -21
  214. package/dist/esm-node/config/legacy/createOutputConfig.js +0 -45
  215. package/dist/esm-node/config/legacy/createSourceConfig.js +0 -29
  216. package/dist/esm-node/config/legacy/createToolsConfig.js +0 -28
  217. package/dist/esm-node/config/legacy/index.js +0 -43
  218. package/dist/esm-node/defineConfig.js +0 -13
  219. package/dist/esm-node/exports/server.js +0 -4
  220. package/dist/esm-node/hooks.js +0 -34
  221. package/dist/esm-node/index.js +0 -124
  222. package/dist/esm-node/locale/en.js +0 -43
  223. package/dist/esm-node/locale/index.js +0 -12
  224. package/dist/esm-node/locale/zh.js +0 -43
  225. package/dist/esm-node/plugins/analyze/constants.js +0 -14
  226. package/dist/esm-node/plugins/analyze/getBundleEntry.js +0 -61
  227. package/dist/esm-node/plugins/analyze/getFileSystemEntry.js +0 -100
  228. package/dist/esm-node/plugins/analyze/getHtmlTemplate.js +0 -74
  229. package/dist/esm-node/plugins/analyze/getServerRoutes.js +0 -132
  230. package/dist/esm-node/plugins/analyze/index.js +0 -166
  231. package/dist/esm-node/plugins/analyze/isDefaultExportFunction.js +0 -47
  232. package/dist/esm-node/plugins/analyze/templates.js +0 -24
  233. package/dist/esm-node/plugins/analyze/utils.js +0 -68
  234. package/dist/esm-node/plugins/deploy/dependencies/index.js +0 -201
  235. package/dist/esm-node/plugins/deploy/dependencies/utils.js +0 -126
  236. package/dist/esm-node/plugins/deploy/exports.js +0 -4
  237. package/dist/esm-node/plugins/deploy/index.js +0 -44
  238. package/dist/esm-node/plugins/deploy/platforms/netlify.js +0 -108
  239. package/dist/esm-node/plugins/deploy/platforms/netlifyEntry.js +0 -69
  240. package/dist/esm-node/plugins/deploy/platforms/node.js +0 -63
  241. package/dist/esm-node/plugins/deploy/platforms/nodeEntry.js +0 -44
  242. package/dist/esm-node/plugins/deploy/platforms/platform.js +0 -0
  243. package/dist/esm-node/plugins/deploy/platforms/vercel.js +0 -120
  244. package/dist/esm-node/plugins/deploy/platforms/vercelEntry.js +0 -69
  245. package/dist/esm-node/plugins/deploy/utils.js +0 -44
  246. package/dist/esm-node/plugins/initialize/index.js +0 -84
  247. package/dist/esm-node/plugins/serverBuild.js +0 -58
  248. package/dist/esm-node/types/config/deploy.js +0 -0
  249. package/dist/esm-node/types/config/dev.js +0 -0
  250. package/dist/esm-node/types/config/experiments.js +0 -0
  251. package/dist/esm-node/types/config/html.js +0 -0
  252. package/dist/esm-node/types/config/index.js +0 -1
  253. package/dist/esm-node/types/config/output.js +0 -0
  254. package/dist/esm-node/types/config/performance.js +0 -0
  255. package/dist/esm-node/types/config/security.js +0 -0
  256. package/dist/esm-node/types/config/source.js +0 -0
  257. package/dist/esm-node/types/config/testing.js +0 -0
  258. package/dist/esm-node/types/config/tools.js +0 -0
  259. package/dist/esm-node/types/hooks.js +0 -0
  260. package/dist/esm-node/types/index.js +0 -3
  261. package/dist/esm-node/types/legacyConfig/deploy.js +0 -0
  262. package/dist/esm-node/types/legacyConfig/dev.js +0 -0
  263. package/dist/esm-node/types/legacyConfig/index.js +0 -0
  264. package/dist/esm-node/types/legacyConfig/output.js +0 -0
  265. package/dist/esm-node/types/legacyConfig/source.js +0 -0
  266. package/dist/esm-node/types/legacyConfig/testing.js +0 -0
  267. package/dist/esm-node/types/legacyConfig/tools.js +0 -0
  268. package/dist/esm-node/types/utils.js +0 -0
  269. package/dist/esm-node/utils/config.js +0 -49
  270. package/dist/esm-node/utils/createServer.js +0 -26
  271. package/dist/esm-node/utils/env.js +0 -16
  272. package/dist/esm-node/utils/generateWatchFiles.js +0 -30
  273. package/dist/esm-node/utils/getSelectedEntries.js +0 -34
  274. package/dist/esm-node/utils/loadPlugins.js +0 -22
  275. package/dist/esm-node/utils/printInstructions.js +0 -11
  276. package/dist/esm-node/utils/register.js +0 -69
  277. package/dist/esm-node/utils/restart.js +0 -22
  278. package/dist/esm-node/utils/routes.js +0 -21
  279. package/dist/esm-node/utils/types.js +0 -0
  280. package/dist/types/plugins/deploy/platforms/netlifyEntry.d.ts +0 -2
  281. package/dist/types/plugins/deploy/platforms/vercelEntry.d.ts +0 -2
  282. /package/dist/cjs/plugins/deploy/platforms/{nodeEntry.js → node-entry.js} +0 -0
  283. /package/dist/types/plugins/deploy/platforms/{nodeEntry.d.ts → node-entry.d.ts} +0 -0
@@ -1,132 +0,0 @@
1
- import path from "path";
2
- import fs from "fs";
3
- import { urlJoin, isPlainObject, removeLeadingSlash, getEntryOptions, SERVER_BUNDLE_DIRECTORY, removeTailSlash, SERVER_WORKER_BUNDLE_DIRECTORY } from "@modern-js/utils";
4
- import { isMainEntry } from "../../utils/routes";
5
- import { walkDirectory } from "./utils";
6
- const applyBaseUrl = (baseUrl, routes) => {
7
- if (baseUrl) {
8
- if (Array.isArray(baseUrl)) {
9
- return baseUrl.reduce((previous, current) => [
10
- ...previous,
11
- ...applyBaseUrl(current, routes)
12
- ], []);
13
- } else {
14
- return routes.map((route) => {
15
- const urlPath = urlJoin(baseUrl, route.urlPath);
16
- return {
17
- ...route,
18
- urlPath: urlPath === "/" ? urlPath : removeTailSlash(urlPath)
19
- };
20
- });
21
- }
22
- }
23
- return routes;
24
- };
25
- const applyRouteOptions = (original, routeOptions) => {
26
- const { route, disableSpa } = routeOptions;
27
- original.isSPA = !disableSpa;
28
- !original.isSPA && (original.entryPath = path.dirname(original.entryPath));
29
- let routes;
30
- if (route) {
31
- if (Array.isArray(route)) {
32
- routes = route.map((url) => {
33
- if (isPlainObject(url)) {
34
- const { path: urlPath, ...other } = url;
35
- return {
36
- ...original,
37
- ...other,
38
- urlPath
39
- };
40
- } else {
41
- return {
42
- ...original,
43
- urlPath: url
44
- };
45
- }
46
- });
47
- } else if (isPlainObject(route)) {
48
- const { path: urlPath, ...other } = route;
49
- routes = [
50
- {
51
- ...original,
52
- ...other,
53
- urlPath
54
- }
55
- ];
56
- } else {
57
- routes = [
58
- {
59
- ...original,
60
- urlPath: route
61
- }
62
- ];
63
- }
64
- } else {
65
- routes = [
66
- original
67
- ];
68
- }
69
- return routes;
70
- };
71
- const collectHtmlRoutes = (entrypoints, appContext, config) => {
72
- var _deploy_worker;
73
- const { source: { mainEntryName }, html: { disableHtmlFolder }, output: { distPath: { html: htmlPath } = {} }, server: { baseUrl, routes, ssr, ssrByEntries }, deploy } = config;
74
- const { packageName } = appContext;
75
- const workerSSR = deploy === null || deploy === void 0 ? void 0 : (_deploy_worker = deploy.worker) === null || _deploy_worker === void 0 ? void 0 : _deploy_worker.ssr;
76
- let htmlRoutes = entrypoints.reduce((previous, { entryName }) => {
77
- const isMain = isMainEntry(entryName, mainEntryName);
78
- const entryOptions = getEntryOptions(entryName, isMain, ssr, ssrByEntries, packageName);
79
- const isSSR = Boolean(entryOptions);
80
- const isWorker = Boolean(workerSSR);
81
- const isStream = typeof entryOptions === "object" && (entryOptions.mode === "stream" || Boolean(entryOptions.preload));
82
- const { resHeaders } = (routes === null || routes === void 0 ? void 0 : routes[entryName]) || {};
83
- let route = {
84
- urlPath: `/${isMain ? "" : entryName}`,
85
- entryName,
86
- entryPath: removeLeadingSlash(path.posix.normalize(`${htmlPath}/${entryName}${disableHtmlFolder ? ".html" : "/index.html"}`)),
87
- isSPA: true,
88
- isStream,
89
- isSSR,
90
- responseHeaders: resHeaders,
91
- worker: isWorker ? `${SERVER_WORKER_BUNDLE_DIRECTORY}/${entryName}.js` : void 0,
92
- bundle: isSSR ? `${SERVER_BUNDLE_DIRECTORY}/${entryName}.js` : void 0
93
- };
94
- if (routes === null || routes === void 0 ? void 0 : routes.hasOwnProperty(entryName)) {
95
- const routeOptions = isPlainObject(routes[entryName]) ? routes[entryName] : {
96
- route: routes[entryName]
97
- };
98
- route = applyRouteOptions(route, routeOptions);
99
- }
100
- return Array.isArray(route) ? [
101
- ...previous,
102
- ...route
103
- ] : [
104
- ...previous,
105
- route
106
- ];
107
- }, []);
108
- htmlRoutes = applyBaseUrl(baseUrl, htmlRoutes);
109
- return htmlRoutes;
110
- };
111
- const collectStaticRoutes = (appContext, config) => {
112
- const { appDirectory } = appContext;
113
- const { source: { configDir }, server: { publicRoutes = {} } } = config;
114
- const publicFolder = path.resolve(appDirectory, configDir || "", "public");
115
- return fs.existsSync(publicFolder) ? walkDirectory(publicFolder).map((filePath) => {
116
- const urlPath = `${urlJoin(toPosix(filePath).slice(toPosix(publicFolder).length))}`;
117
- return {
118
- urlPath: publicRoutes[removeLeadingSlash(urlPath)] || urlPath,
119
- isSPA: true,
120
- isSSR: false,
121
- entryPath: toPosix(path.relative(path.resolve(appDirectory, configDir || ""), filePath))
122
- };
123
- }) : [];
124
- };
125
- const getServerRoutes = (entrypoints, { appContext, config }) => [
126
- ...collectHtmlRoutes(entrypoints, appContext, config),
127
- ...collectStaticRoutes(appContext, config)
128
- ];
129
- const toPosix = (pathStr) => pathStr.split(path.sep).join(path.posix.sep);
130
- export {
131
- getServerRoutes
132
- };
@@ -1,166 +0,0 @@
1
- import * as path from "path";
2
- import { createDebugger, fs, isApiOnly, minimist, isDevCommand, getArgv } from "@modern-js/utils";
3
- import { printInstructions } from "../../utils/printInstructions";
4
- import { generateRoutes } from "../../utils/routes";
5
- import { emitResolvedConfig } from "../../utils/config";
6
- import { getSelectedEntries } from "../../utils/getSelectedEntries";
7
- import { initialNormalizedConfig } from "../../config";
8
- import { createBuilderGenerator } from "../../builder";
9
- import { checkIsBuildCommands } from "./utils";
10
- const debug = createDebugger("plugin-analyze");
11
- var analyze_default = ({ bundler }) => ({
12
- name: "@modern-js/plugin-analyze",
13
- post: [
14
- "@modern-js/runtime"
15
- ],
16
- setup: (api) => {
17
- let pagesDir = [];
18
- let nestedRouteEntries = [];
19
- return {
20
- async prepare() {
21
- var _resolvedConfig_source;
22
- let appContext = api.useAppContext();
23
- const resolvedConfig = api.useResolvedConfigContext();
24
- const hookRunners = api.useHookRunners();
25
- try {
26
- if (checkIsBuildCommands()) {
27
- fs.emptydirSync(appContext.internalDirectory);
28
- }
29
- } catch {
30
- }
31
- const apiOnly = await isApiOnly(appContext.appDirectory, (_resolvedConfig_source = resolvedConfig.source) === null || _resolvedConfig_source === void 0 ? void 0 : _resolvedConfig_source.entriesDir, appContext.apiDirectory);
32
- await hookRunners.addRuntimeExports();
33
- if (apiOnly) {
34
- const { routes: routes2 } = await hookRunners.modifyServerRoutes({
35
- routes: []
36
- });
37
- debug(`server routes: %o`, routes2);
38
- appContext = {
39
- ...api.useAppContext(),
40
- apiOnly,
41
- serverRoutes: routes2
42
- };
43
- api.setAppContext(appContext);
44
- return;
45
- }
46
- const [{ getBundleEntry }, { getServerRoutes }, { getHtmlTemplate }] = await Promise.all([
47
- import("./getBundleEntry"),
48
- import("./getServerRoutes"),
49
- import("./getHtmlTemplate")
50
- ]);
51
- const { entrypoints } = await hookRunners.modifyEntrypoints({
52
- entrypoints: await getBundleEntry(hookRunners, appContext, resolvedConfig)
53
- });
54
- debug(`entrypoints: %o`, entrypoints);
55
- const initialRoutes = getServerRoutes(entrypoints, {
56
- appContext,
57
- config: resolvedConfig
58
- });
59
- const { routes } = await hookRunners.modifyServerRoutes({
60
- routes: initialRoutes
61
- });
62
- debug(`server routes: %o`, routes);
63
- appContext = {
64
- ...api.useAppContext(),
65
- entrypoints,
66
- serverRoutes: routes
67
- };
68
- api.setAppContext(appContext);
69
- nestedRouteEntries = entrypoints.map((point) => point.nestedRoutesEntry).filter(Boolean);
70
- pagesDir = entrypoints.map((point) => point.entry).filter((entry) => entry && !path.extname(entry)).concat(nestedRouteEntries);
71
- const htmlTemplates = await getHtmlTemplate(entrypoints, api, {
72
- appContext,
73
- config: resolvedConfig
74
- });
75
- debug(`html templates: %o`, htmlTemplates);
76
- await hookRunners.addDefineTypes();
77
- debug(`add Define Types`);
78
- let checkedEntries = entrypoints.map((point) => point.entryName);
79
- if (isDevCommand()) {
80
- const { entry } = minimist(getArgv());
81
- checkedEntries = await getSelectedEntries(typeof entry === "string" ? entry.split(",") : entry, entrypoints);
82
- }
83
- appContext = {
84
- ...api.useAppContext(),
85
- entrypoints,
86
- checkedEntries,
87
- apiOnly,
88
- serverRoutes: routes,
89
- htmlTemplates
90
- };
91
- api.setAppContext(appContext);
92
- if (checkIsBuildCommands()) {
93
- await hookRunners.generateEntryCode({
94
- entrypoints
95
- });
96
- const normalizedConfig = api.useResolvedConfigContext();
97
- const createBuilderForModern = await createBuilderGenerator(bundler);
98
- const builder = await createBuilderForModern({
99
- normalizedConfig,
100
- appContext
101
- });
102
- builder.onBeforeBuild(async ({ bundlerConfigs, isFirstCompile }) => {
103
- if (!isFirstCompile) {
104
- return;
105
- }
106
- const hookRunners2 = api.useHookRunners();
107
- await generateRoutes(appContext);
108
- await hookRunners2.beforeBuild({
109
- bundlerConfigs
110
- });
111
- });
112
- builder.onAfterBuild(async ({ stats }) => {
113
- const hookRunners2 = api.useHookRunners();
114
- await hookRunners2.afterBuild({
115
- stats
116
- });
117
- await emitResolvedConfig(appContext.appDirectory, normalizedConfig);
118
- });
119
- builder.onDevCompileDone(async ({ isFirstCompile }) => {
120
- const hookRunners2 = api.useHookRunners();
121
- hookRunners2.afterDev({
122
- isFirstCompile
123
- });
124
- if (isFirstCompile) {
125
- printInstructions(hookRunners2, appContext, normalizedConfig);
126
- }
127
- });
128
- builder.onBeforeCreateCompiler(async ({ bundlerConfigs }) => {
129
- const hookRunners2 = api.useHookRunners();
130
- await hookRunners2.beforeCreateCompiler({
131
- bundlerConfigs
132
- });
133
- });
134
- builder.onAfterCreateCompiler(async ({ compiler }) => {
135
- const hookRunners2 = api.useHookRunners();
136
- await hookRunners2.afterCreateCompiler({
137
- compiler
138
- });
139
- });
140
- builder.addPlugins(resolvedConfig.builderPlugins);
141
- appContext = {
142
- ...api.useAppContext(),
143
- builder
144
- };
145
- api.setAppContext(appContext);
146
- }
147
- },
148
- watchFiles() {
149
- return {
150
- files: pagesDir,
151
- isPrivate: true
152
- };
153
- },
154
- resolvedConfig({ resolved }) {
155
- const appContext = api.useAppContext();
156
- const config = initialNormalizedConfig(resolved, appContext, bundler);
157
- return {
158
- resolved: config
159
- };
160
- }
161
- };
162
- }
163
- });
164
- export {
165
- analyze_default as default
166
- };
@@ -1,47 +0,0 @@
1
- import fs from "fs";
2
- import { parse } from "@babel/parser";
3
- import traverse from "@babel/traverse";
4
- import * as t from "@babel/types";
5
- const isFunction = (node) => t.isFunctionDeclaration(node) || t.isFunctionExpression(node) || t.isArrowFunctionExpression(node);
6
- const isDefaultExportFunction = (file) => {
7
- if (!file || !fs.existsSync(file)) {
8
- return false;
9
- }
10
- const ast = parse(fs.readFileSync(file, "utf8"), {
11
- sourceType: "unambiguous",
12
- plugins: [
13
- "jsx",
14
- "typescript",
15
- "classProperties",
16
- "dynamicImport",
17
- "exportDefaultFrom",
18
- "exportNamespaceFrom",
19
- "decorators-legacy",
20
- "functionBind",
21
- "classPrivateMethods",
22
- [
23
- "pipelineOperator",
24
- {
25
- proposal: "minimal"
26
- }
27
- ],
28
- "optionalChaining",
29
- "optionalCatchBinding",
30
- "objectRestSpread",
31
- "numericSeparator"
32
- ]
33
- });
34
- let isExportFunction = false;
35
- traverse(ast, {
36
- ExportDefaultDeclaration: (path) => {
37
- const { declaration } = path.node;
38
- if (isFunction(declaration)) {
39
- isExportFunction = true;
40
- }
41
- }
42
- });
43
- return isExportFunction;
44
- };
45
- export {
46
- isDefaultExportFunction
47
- };
@@ -1,24 +0,0 @@
1
- const html = (partials) => `
2
- <!DOCTYPE html>
3
- <html>
4
- <head>
5
-
6
- ${partials.top.join("\n")}
7
-
8
- ${partials.head.join("\n")}
9
-
10
- </head>
11
-
12
- <body>
13
- <div id="<%= mountId %>"><!--<?- html ?>--></div>
14
- ${partials.body.join("\n")}
15
- <!--<?- chunksMap.js ?>-->
16
- <!--<?- SSRDataScript ?>-->
17
- <!--<?- bottomTemplate ?>-->
18
- </body>
19
-
20
- </html>
21
- `;
22
- export {
23
- html
24
- };
@@ -1,68 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- import { normalizeToPosixPath, getCommand, JS_EXTENSIONS } from "@modern-js/utils";
4
- import { transform } from "esbuild";
5
- import { parse } from "es-module-lexer";
6
- const walkDirectory = (dir) => fs.readdirSync(dir).reduce((previous, filename) => {
7
- const filePath = path.join(dir, filename);
8
- if (fs.statSync(filePath).isDirectory()) {
9
- return [
10
- ...previous,
11
- ...walkDirectory(filePath)
12
- ];
13
- } else {
14
- return [
15
- ...previous,
16
- filePath
17
- ];
18
- }
19
- }, []);
20
- const replaceWithAlias = (base, filePath, alias) => {
21
- if (filePath.includes(base)) {
22
- return normalizeToPosixPath(path.join(alias, path.relative(base, filePath)));
23
- } else {
24
- return filePath;
25
- }
26
- };
27
- const parseModule = async ({ source, filename }) => {
28
- let content = source;
29
- if (JS_EXTENSIONS.some((ext) => filename.endsWith(ext))) {
30
- const result = await transform(content, {
31
- loader: path.extname(filename).slice(1),
32
- format: "esm"
33
- });
34
- content = result.code;
35
- }
36
- return await parse(content);
37
- };
38
- const getServerCombinedModueFile = (internalDirectory, entryName) => {
39
- return path.join(internalDirectory, entryName, "server-loader-combined.js");
40
- };
41
- const checkIsBuildCommands = () => {
42
- const buildCommands = [
43
- "dev",
44
- "start",
45
- "build",
46
- "inspect",
47
- "deploy",
48
- "dev-worker"
49
- ];
50
- const command = getCommand();
51
- return buildCommands.includes(command);
52
- };
53
- const isSubDirOrEqual = (parent, child) => {
54
- if (parent === child) {
55
- return true;
56
- }
57
- const relative = path.relative(parent, child);
58
- const isSubdir = relative && !relative.startsWith("..") && !path.isAbsolute(relative);
59
- return Boolean(isSubdir);
60
- };
61
- export {
62
- checkIsBuildCommands,
63
- getServerCombinedModueFile,
64
- isSubDirOrEqual,
65
- parseModule,
66
- replaceWithAlias,
67
- walkDirectory
68
- };
@@ -1,201 +0,0 @@
1
- import path from "node:path";
2
- import { fs as fse, pkgUp, semver } from "@modern-js/utils";
3
- import { readPackageJSON } from "pkg-types";
4
- import { parseNodeModulePath } from "mlly";
5
- import { linkPackage, writePackage, isFile, findEntryFiles, traceFiles as defaultTraceFiles, findPackageParents, resolveTracedPath, readDirRecursive, isSubPath } from "./utils";
6
- import { nodeFileTrace } from "@vercel/nft";
7
- const handleDependencies = async ({ appDir, serverRootDir, includeEntries, traceFiles = defaultTraceFiles, entryFilter, modifyPackageJson, copyWholePackage, traceOptions }) => {
8
- const base = "/";
9
- const entryFiles = await findEntryFiles(serverRootDir, entryFilter);
10
- const fileTrace = await traceFiles({
11
- entryFiles: entryFiles.concat(includeEntries),
12
- serverRootDir,
13
- base,
14
- traceOptions
15
- });
16
- const currentProjectModules = path.join(appDir, "node_modules");
17
- const dependencySearchRoot = path.resolve(appDir, "../../../../../../");
18
- const tracedFiles = Object.fromEntries(await Promise.all([
19
- ...fileTrace.reasons.entries()
20
- ].map(async ([_path, reasons]) => {
21
- if (reasons.ignored) {
22
- return;
23
- }
24
- const filePath = await resolveTracedPath(base, _path);
25
- if (isSubPath(serverRootDir, filePath) || isSubPath(appDir, filePath) && !isSubPath(currentProjectModules, filePath)) {
26
- return;
27
- }
28
- if (!await isFile(filePath)) {
29
- return;
30
- }
31
- let baseDir;
32
- let pkgName;
33
- let subpath;
34
- let pkgPath;
35
- if (filePath.includes("node_modules")) {
36
- const parsed = parseNodeModulePath(filePath);
37
- baseDir = parsed.dir;
38
- pkgName = parsed.name;
39
- subpath = parsed.subpath;
40
- pkgPath = path.join(baseDir, pkgName);
41
- } else {
42
- const MODERN_UTILS_PATH = "packages/toolkit/utils";
43
- const MODERN_UTILS_PATH_REGEX = new RegExp(`(.*${MODERN_UTILS_PATH})`);
44
- const match = filePath.match(MODERN_UTILS_PATH_REGEX);
45
- const packageJsonPath = match ? path.join(match[0], "package.json") : await pkgUp({
46
- cwd: path.dirname(filePath)
47
- });
48
- if (packageJsonPath && isSubPath(dependencySearchRoot, packageJsonPath)) {
49
- const packageJson = await fse.readJSON(packageJsonPath);
50
- pkgPath = baseDir = path.dirname(packageJsonPath);
51
- subpath = path.relative(baseDir, filePath);
52
- pkgName = packageJson.name;
53
- }
54
- }
55
- if (!baseDir) {
56
- return;
57
- }
58
- const parents = await Promise.all([
59
- ...reasons.parents
60
- ].map((p) => resolveTracedPath(base, p)));
61
- const tracedFile = {
62
- path: filePath,
63
- parents,
64
- isDirectDep: parents.some((parent) => {
65
- return isSubPath(appDir, parent) && !isSubPath(currentProjectModules, parent);
66
- }),
67
- subpath,
68
- pkgName,
69
- pkgPath
70
- };
71
- return [
72
- filePath,
73
- tracedFile
74
- ];
75
- })).then((r) => r.filter(Boolean)));
76
- const tracedPackages = {};
77
- for (const tracedFile of Object.values(tracedFiles)) {
78
- const { pkgName } = tracedFile;
79
- let tracedPackage = tracedPackages[pkgName];
80
- let pkgJSON = await readPackageJSON(tracedFile.pkgPath, {
81
- cache: true
82
- }).catch(() => {
83
- });
84
- if (!pkgJSON) {
85
- pkgJSON = {
86
- name: pkgName,
87
- version: "0.0.0"
88
- };
89
- }
90
- if (!tracedPackage) {
91
- tracedPackage = {
92
- name: pkgName,
93
- versions: {}
94
- };
95
- tracedPackages[pkgName] = tracedPackage;
96
- }
97
- let tracedPackageVersion = tracedPackage.versions[pkgJSON.version];
98
- if (!tracedPackageVersion) {
99
- tracedPackageVersion = {
100
- path: tracedFile.pkgPath,
101
- files: [],
102
- isDirectDep: false,
103
- pkgJSON
104
- };
105
- if (tracedFile.isDirectDep) {
106
- tracedPackageVersion.isDirectDep = tracedFile.isDirectDep;
107
- }
108
- tracedPackage.versions[pkgJSON.version] = tracedPackageVersion;
109
- }
110
- tracedFile.pkgName = pkgName;
111
- tracedFile.pkgVersion = pkgJSON.version;
112
- const shouldCopyWholePackage = copyWholePackage === null || copyWholePackage === void 0 ? void 0 : copyWholePackage(pkgName);
113
- if (tracedFile.path.startsWith(tracedFile.pkgPath) && // Merged package files are based on the version, not on paths, to handle some boundary cases
114
- tracedPackageVersion.pkgJSON.version === tracedFile.pkgVersion) {
115
- if (shouldCopyWholePackage) {
116
- const allFiles = await readDirRecursive(tracedFile.pkgPath);
117
- tracedPackageVersion.files.push(...allFiles);
118
- } else {
119
- tracedPackageVersion.files.push(tracedFile.path);
120
- }
121
- }
122
- }
123
- const multiVersionPkgs = {};
124
- const singleVersionPackages = [];
125
- for (const tracedPackage of Object.values(tracedPackages)) {
126
- const versions = Object.keys(tracedPackage.versions);
127
- if (versions.length === 1) {
128
- singleVersionPackages.push(tracedPackage.name);
129
- continue;
130
- }
131
- multiVersionPkgs[tracedPackage.name] = {};
132
- for (const version of versions) {
133
- multiVersionPkgs[tracedPackage.name][version] = findPackageParents(tracedPackage, version, tracedFiles);
134
- }
135
- }
136
- await Promise.all(singleVersionPackages.map((pkgName) => {
137
- const pkg = tracedPackages[pkgName];
138
- const version = Object.keys(pkg.versions)[0];
139
- return writePackage({
140
- pkg,
141
- version,
142
- projectDir: serverRootDir
143
- });
144
- }));
145
- const projectPkgJson = await readPackageJSON(serverRootDir).catch(() => ({}));
146
- for (const [pkgName, pkgVersions] of Object.entries(multiVersionPkgs)) {
147
- const versionEntires = Object.entries(pkgVersions).sort(([v1, p1], [v2, p2]) => {
148
- var _tracedPackages_pkgName_versions_v1, _tracedPackages_pkgName_versions, _tracedPackages_pkgName, _tracedPackages_pkgName_versions_v2, _tracedPackages_pkgName_versions1, _tracedPackages_pkgName1;
149
- const shouldHoist1 = (_tracedPackages_pkgName = tracedPackages[pkgName]) === null || _tracedPackages_pkgName === void 0 ? void 0 : (_tracedPackages_pkgName_versions = _tracedPackages_pkgName.versions) === null || _tracedPackages_pkgName_versions === void 0 ? void 0 : (_tracedPackages_pkgName_versions_v1 = _tracedPackages_pkgName_versions[v1]) === null || _tracedPackages_pkgName_versions_v1 === void 0 ? void 0 : _tracedPackages_pkgName_versions_v1.isDirectDep;
150
- const shouldHoist2 = (_tracedPackages_pkgName1 = tracedPackages[pkgName]) === null || _tracedPackages_pkgName1 === void 0 ? void 0 : (_tracedPackages_pkgName_versions1 = _tracedPackages_pkgName1.versions) === null || _tracedPackages_pkgName_versions1 === void 0 ? void 0 : (_tracedPackages_pkgName_versions_v2 = _tracedPackages_pkgName_versions1[v2]) === null || _tracedPackages_pkgName_versions_v2 === void 0 ? void 0 : _tracedPackages_pkgName_versions_v2.isDirectDep;
151
- if (shouldHoist1 && !shouldHoist2) {
152
- return -1;
153
- }
154
- if (!shouldHoist1 && shouldHoist2) {
155
- return 1;
156
- }
157
- if (p1.length === 0) {
158
- return -1;
159
- }
160
- if (p2.length === 0) {
161
- return 1;
162
- }
163
- return semver.lt(v1, v2, {
164
- loose: true
165
- }) ? 1 : -1;
166
- });
167
- for (const [version, parentPkgs] of versionEntires) {
168
- const pkg = tracedPackages[pkgName];
169
- const pkgDestPath = `.modernjs/${pkgName}@${version}/node_modules/${pkgName}`;
170
- await writePackage({
171
- pkg,
172
- version,
173
- projectDir: serverRootDir,
174
- _pkgPath: pkgDestPath
175
- });
176
- await linkPackage(pkgDestPath, `${pkgName}`, serverRootDir);
177
- for (const parentPkg of parentPkgs) {
178
- const parentPkgName = parentPkg.replace(/@[^@]+$/, "");
179
- await (multiVersionPkgs[parentPkgName] ? linkPackage(pkgDestPath, `.modernjs/${parentPkg}/node_modules/${pkgName}`, serverRootDir) : linkPackage(pkgDestPath, `${parentPkgName}/node_modules/${pkgName}`, serverRootDir));
180
- }
181
- }
182
- }
183
- const outputPkgPath = path.join(serverRootDir, "package.json");
184
- const newPkgJson = {
185
- name: `${projectPkgJson.name || "modernjs-project"}-prod`,
186
- version: projectPkgJson.version || "0.0.0",
187
- private: true,
188
- dependencies: Object.fromEntries([
189
- ...Object.values(tracedPackages).map((pkg) => [
190
- pkg.name,
191
- Object.keys(pkg.versions)[0]
192
- ])
193
- ].sort(([a], [b]) => a.localeCompare(b)))
194
- };
195
- const finalPkgJson = (modifyPackageJson === null || modifyPackageJson === void 0 ? void 0 : modifyPackageJson(newPkgJson)) || newPkgJson;
196
- await fse.writeJSON(outputPkgPath, finalPkgJson);
197
- };
198
- export {
199
- handleDependencies,
200
- nodeFileTrace
201
- };