@modern-js/app-tools 2.0.0-beta.3 → 2.0.0-beta.4

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 (230) hide show
  1. package/CHANGELOG.md +305 -0
  2. package/bin/modern.js +1 -0
  3. package/dist/js/modern/analyze/Builder.js +39 -0
  4. package/dist/js/modern/analyze/constants.js +38 -18
  5. package/dist/js/modern/analyze/generateCode.js +262 -221
  6. package/dist/js/modern/analyze/getBundleEntry.js +34 -32
  7. package/dist/js/modern/analyze/getClientRoutes/getRoutes.js +93 -49
  8. package/dist/js/modern/analyze/getClientRoutes/getRoutesLegacy.js +89 -47
  9. package/dist/js/modern/analyze/getClientRoutes/index.js +6 -2
  10. package/dist/js/modern/analyze/getClientRoutes/utils.js +23 -10
  11. package/dist/js/modern/analyze/getFileSystemEntry.js +43 -22
  12. package/dist/js/modern/analyze/getHtmlTemplate.js +89 -49
  13. package/dist/js/modern/analyze/getServerRoutes.js +122 -126
  14. package/dist/js/modern/analyze/index.js +201 -160
  15. package/dist/js/modern/analyze/isDefaultExportFunction.js +30 -16
  16. package/dist/js/modern/analyze/makeLegalIdentifier.js +10 -11
  17. package/dist/js/modern/analyze/nestedRoutes.js +106 -60
  18. package/dist/js/modern/analyze/templates.js +163 -81
  19. package/dist/js/modern/analyze/utils.js +87 -66
  20. package/dist/js/modern/builder/builderPlugins/compatModern.js +122 -109
  21. package/dist/js/modern/builder/index.js +123 -86
  22. package/dist/js/modern/builder/loaders/routerLoader.js +9 -12
  23. package/dist/js/modern/builder/loaders/serverModuleLoader.js +4 -1
  24. package/dist/js/modern/builder/share.js +23 -21
  25. package/dist/js/modern/builder/webpackPlugins/htmlAsyncChunkPlugin.js +23 -22
  26. package/dist/js/modern/builder/webpackPlugins/htmlBottomTemplate.js +31 -27
  27. package/dist/js/modern/builder/webpackPlugins/routerPlugin.js +100 -84
  28. package/dist/js/modern/commands/build.js +67 -42
  29. package/dist/js/modern/commands/deploy.js +27 -4
  30. package/dist/js/modern/commands/dev.js +77 -27
  31. package/dist/js/modern/commands/index.js +1 -1
  32. package/dist/js/modern/commands/inspect.js +30 -5
  33. package/dist/js/modern/commands/start.js +37 -15
  34. package/dist/js/modern/config/default.js +103 -113
  35. package/dist/js/modern/config/index.js +8 -2
  36. package/dist/js/modern/config/initial/createHtmlConfig.js +5 -2
  37. package/dist/js/modern/config/initial/createOutputConfig.js +9 -10
  38. package/dist/js/modern/config/initial/createSourceConfig.js +5 -2
  39. package/dist/js/modern/config/initial/createToolsConfig.js +7 -6
  40. package/dist/js/modern/config/initial/index.js +9 -4
  41. package/dist/js/modern/config/initial/inits.js +109 -73
  42. package/dist/js/modern/config/initial/transformNormalizedConfig.js +6 -3
  43. package/dist/js/modern/defineConfig.js +26 -11
  44. package/dist/js/modern/exports/server.js +4 -1
  45. package/dist/js/modern/hooks.js +15 -4
  46. package/dist/js/modern/index.js +178 -90
  47. package/dist/js/modern/initialize/index.js +98 -51
  48. package/dist/js/modern/locale/en.js +20 -21
  49. package/dist/js/modern/locale/index.js +6 -6
  50. package/dist/js/modern/locale/zh.js +21 -22
  51. package/dist/js/modern/schema/Schema.js +6 -5
  52. package/dist/js/modern/schema/index.js +51 -100
  53. package/dist/js/modern/schema/legacy.js +96 -231
  54. package/dist/js/modern/types/config/index.js +0 -1
  55. package/dist/js/modern/types/index.js +0 -1
  56. package/dist/js/modern/types/legacyConfig/output.js +0 -1
  57. package/dist/js/modern/utils/commands.js +5 -2
  58. package/dist/js/modern/utils/config.js +102 -41
  59. package/dist/js/modern/utils/createFileWatcher.js +84 -51
  60. package/dist/js/modern/utils/createServer.js +63 -17
  61. package/dist/js/modern/utils/getSpecifiedEntries.js +46 -19
  62. package/dist/js/modern/utils/language.js +6 -3
  63. package/dist/js/modern/utils/printInstructions.js +27 -8
  64. package/dist/js/modern/utils/restart.js +43 -16
  65. package/dist/js/modern/utils/routes.js +29 -12
  66. package/dist/js/node/analyze/Builder.js +58 -0
  67. package/dist/js/node/analyze/constants.js +54 -39
  68. package/dist/js/node/analyze/generateCode.js +282 -239
  69. package/dist/js/node/analyze/getBundleEntry.js +58 -44
  70. package/dist/js/node/analyze/getClientRoutes/getRoutes.js +132 -76
  71. package/dist/js/node/analyze/getClientRoutes/getRoutesLegacy.js +128 -74
  72. package/dist/js/node/analyze/getClientRoutes/index.js +23 -17
  73. package/dist/js/node/analyze/getClientRoutes/utils.js +44 -21
  74. package/dist/js/node/analyze/getFileSystemEntry.js +70 -39
  75. package/dist/js/node/analyze/getHtmlTemplate.js +116 -61
  76. package/dist/js/node/analyze/getServerRoutes.js +143 -137
  77. package/dist/js/node/analyze/index.js +247 -174
  78. package/dist/js/node/analyze/isDefaultExportFunction.js +55 -26
  79. package/dist/js/node/analyze/makeLegalIdentifier.js +27 -15
  80. package/dist/js/node/analyze/nestedRoutes.js +137 -75
  81. package/dist/js/node/analyze/templates.js +185 -90
  82. package/dist/js/node/analyze/utils.js +114 -81
  83. package/dist/js/node/builder/builderPlugins/compatModern.js +150 -122
  84. package/dist/js/node/builder/index.js +151 -95
  85. package/dist/js/node/builder/loaders/routerLoader.js +27 -18
  86. package/dist/js/node/builder/loaders/serverModuleLoader.js +22 -7
  87. package/dist/js/node/builder/share.js +46 -26
  88. package/dist/js/node/builder/webpackPlugins/htmlAsyncChunkPlugin.js +39 -26
  89. package/dist/js/node/builder/webpackPlugins/htmlBottomTemplate.js +47 -31
  90. package/dist/js/node/builder/webpackPlugins/routerPlugin.js +118 -90
  91. package/dist/js/node/commands/build.js +89 -52
  92. package/dist/js/node/commands/deploy.js +45 -10
  93. package/dist/js/node/commands/dev.js +99 -41
  94. package/dist/js/node/commands/index.js +19 -38
  95. package/dist/js/node/commands/inspect.js +48 -11
  96. package/dist/js/node/commands/start.js +65 -26
  97. package/dist/js/node/config/default.js +119 -117
  98. package/dist/js/node/config/index.js +25 -29
  99. package/dist/js/node/config/initial/createHtmlConfig.js +22 -6
  100. package/dist/js/node/config/initial/createOutputConfig.js +26 -14
  101. package/dist/js/node/config/initial/createSourceConfig.js +22 -6
  102. package/dist/js/node/config/initial/createToolsConfig.js +24 -10
  103. package/dist/js/node/config/initial/index.js +28 -17
  104. package/dist/js/node/config/initial/inits.js +126 -81
  105. package/dist/js/node/config/initial/transformNormalizedConfig.js +31 -15
  106. package/dist/js/node/defineConfig.js +43 -17
  107. package/dist/js/node/exports/server.js +21 -10
  108. package/dist/js/node/hooks.js +48 -29
  109. package/dist/js/node/index.js +225 -128
  110. package/dist/js/node/initialize/index.js +116 -61
  111. package/dist/js/node/locale/en.js +36 -25
  112. package/dist/js/node/locale/index.js +27 -15
  113. package/dist/js/node/locale/zh.js +37 -26
  114. package/dist/js/node/schema/Schema.js +23 -10
  115. package/dist/js/node/schema/index.js +77 -114
  116. package/dist/js/node/schema/legacy.js +117 -240
  117. package/dist/js/node/types/config/index.js +17 -16
  118. package/dist/js/node/types/index.js +19 -38
  119. package/dist/js/node/types/legacyConfig/output.js +0 -5
  120. package/dist/js/node/utils/commands.js +21 -6
  121. package/dist/js/node/utils/config.js +120 -51
  122. package/dist/js/node/utils/createFileWatcher.js +104 -61
  123. package/dist/js/node/utils/createServer.js +86 -25
  124. package/dist/js/node/utils/getSpecifiedEntries.js +64 -25
  125. package/dist/js/node/utils/language.js +24 -8
  126. package/dist/js/node/utils/printInstructions.js +47 -16
  127. package/dist/js/node/utils/restart.js +61 -21
  128. package/dist/js/node/utils/routes.js +53 -18
  129. package/dist/js/treeshaking/analyze/Builder.js +199 -0
  130. package/dist/js/treeshaking/analyze/constants.js +28 -18
  131. package/dist/js/treeshaking/analyze/generateCode.js +600 -406
  132. package/dist/js/treeshaking/analyze/getBundleEntry.js +55 -63
  133. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutes.js +214 -168
  134. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutesLegacy.js +215 -169
  135. package/dist/js/treeshaking/analyze/getClientRoutes/index.js +3 -2
  136. package/dist/js/treeshaking/analyze/getClientRoutes/utils.js +19 -20
  137. package/dist/js/treeshaking/analyze/getFileSystemEntry.js +89 -86
  138. package/dist/js/treeshaking/analyze/getHtmlTemplate.js +298 -125
  139. package/dist/js/treeshaking/analyze/getServerRoutes.js +210 -147
  140. package/dist/js/treeshaking/analyze/index.js +571 -304
  141. package/dist/js/treeshaking/analyze/isDefaultExportFunction.js +45 -26
  142. package/dist/js/treeshaking/analyze/makeLegalIdentifier.js +13 -16
  143. package/dist/js/treeshaking/analyze/nestedRoutes.js +411 -200
  144. package/dist/js/treeshaking/analyze/templates.js +433 -236
  145. package/dist/js/treeshaking/analyze/utils.js +358 -153
  146. package/dist/js/treeshaking/builder/builderPlugins/compatModern.js +282 -200
  147. package/dist/js/treeshaking/builder/index.js +371 -165
  148. package/dist/js/treeshaking/builder/loaders/routerLoader.js +11 -12
  149. package/dist/js/treeshaking/builder/loaders/serverModuleLoader.js +3 -2
  150. package/dist/js/treeshaking/builder/share.js +38 -44
  151. package/dist/js/treeshaking/builder/webpackPlugins/htmlAsyncChunkPlugin.js +108 -44
  152. package/dist/js/treeshaking/builder/webpackPlugins/htmlBottomTemplate.js +70 -39
  153. package/dist/js/treeshaking/builder/webpackPlugins/routerPlugin.js +334 -112
  154. package/dist/js/treeshaking/commands/build.js +286 -88
  155. package/dist/js/treeshaking/commands/deploy.js +153 -25
  156. package/dist/js/treeshaking/commands/dev.js +318 -131
  157. package/dist/js/treeshaking/commands/index.js +1 -1
  158. package/dist/js/treeshaking/commands/inspect.js +147 -32
  159. package/dist/js/treeshaking/commands/start.js +190 -67
  160. package/dist/js/treeshaking/config/default.js +210 -198
  161. package/dist/js/treeshaking/config/index.js +3 -2
  162. package/dist/js/treeshaking/config/initial/createHtmlConfig.js +19 -31
  163. package/dist/js/treeshaking/config/initial/createOutputConfig.js +43 -70
  164. package/dist/js/treeshaking/config/initial/createSourceConfig.js +37 -40
  165. package/dist/js/treeshaking/config/initial/createToolsConfig.js +23 -38
  166. package/dist/js/treeshaking/config/initial/index.js +10 -9
  167. package/dist/js/treeshaking/config/initial/inits.js +205 -106
  168. package/dist/js/treeshaking/config/initial/transformNormalizedConfig.js +27 -34
  169. package/dist/js/treeshaking/defineConfig.js +60 -13
  170. package/dist/js/treeshaking/exports/server.js +2 -1
  171. package/dist/js/treeshaking/hooks.js +30 -25
  172. package/dist/js/treeshaking/index.js +681 -256
  173. package/dist/js/treeshaking/initialize/index.js +290 -112
  174. package/dist/js/treeshaking/locale/en.js +34 -33
  175. package/dist/js/treeshaking/locale/index.js +5 -5
  176. package/dist/js/treeshaking/locale/zh.js +34 -33
  177. package/dist/js/treeshaking/schema/Schema.js +267 -69
  178. package/dist/js/treeshaking/schema/index.js +165 -121
  179. package/dist/js/treeshaking/schema/legacy.js +323 -256
  180. package/dist/js/treeshaking/types/config/deploy.js +1 -0
  181. package/dist/js/treeshaking/types/config/dev.js +1 -0
  182. package/dist/js/treeshaking/types/config/experiments.js +1 -0
  183. package/dist/js/treeshaking/types/config/html.js +1 -0
  184. package/dist/js/treeshaking/types/config/index.js +0 -1
  185. package/dist/js/treeshaking/types/config/output.js +1 -0
  186. package/dist/js/treeshaking/types/config/performance.js +1 -0
  187. package/dist/js/treeshaking/types/config/security.js +1 -0
  188. package/dist/js/treeshaking/types/config/source.js +1 -0
  189. package/dist/js/treeshaking/types/config/tools.js +1 -0
  190. package/dist/js/treeshaking/types/hooks.js +1 -0
  191. package/dist/js/treeshaking/types/index.js +0 -1
  192. package/dist/js/treeshaking/types/legacyConfig/deploy.js +1 -0
  193. package/dist/js/treeshaking/types/legacyConfig/dev.js +1 -0
  194. package/dist/js/treeshaking/types/legacyConfig/index.js +1 -0
  195. package/dist/js/treeshaking/types/legacyConfig/output.js +1 -1
  196. package/dist/js/treeshaking/types/legacyConfig/source.js +1 -0
  197. package/dist/js/treeshaking/types/legacyConfig/tools.js +1 -0
  198. package/dist/js/treeshaking/utils/commands.js +6 -5
  199. package/dist/js/treeshaking/utils/config.js +295 -117
  200. package/dist/js/treeshaking/utils/createFileWatcher.js +278 -118
  201. package/dist/js/treeshaking/utils/createServer.js +252 -67
  202. package/dist/js/treeshaking/utils/getSpecifiedEntries.js +182 -55
  203. package/dist/js/treeshaking/utils/language.js +6 -5
  204. package/dist/js/treeshaking/utils/printInstructions.js +151 -29
  205. package/dist/js/treeshaking/utils/restart.js +184 -42
  206. package/dist/js/treeshaking/utils/routes.js +151 -27
  207. package/dist/js/treeshaking/utils/types.js +1 -0
  208. package/dist/types/analyze/Builder.d.ts +8 -0
  209. package/dist/types/analyze/index.d.ts +2 -0
  210. package/dist/types/analyze/templates.d.ts +3 -1
  211. package/dist/types/builder/builderPlugins/compatModern.d.ts +2 -1
  212. package/dist/types/builder/index.d.ts +3 -3
  213. package/dist/types/builder/webpackPlugins/routerPlugin.d.ts +1 -7
  214. package/dist/types/defineConfig.d.ts +1 -0
  215. package/dist/types/index.d.ts +6 -1
  216. package/dist/types/initialize/index.d.ts +2 -0
  217. package/dist/types/types/config/dev.d.ts +2 -2
  218. package/dist/types/types/config/index.d.ts +1 -0
  219. package/dist/types/types/config/output.d.ts +0 -1
  220. package/dist/types/types/config/source.d.ts +1 -0
  221. package/dist/types/types/config/tools.d.ts +2 -0
  222. package/dist/types/types/hooks.d.ts +5 -0
  223. package/dist/types/types/legacyConfig/dev.d.ts +1 -0
  224. package/dist/types/types/legacyConfig/output.d.ts +1 -1
  225. package/dist/types/types/legacyConfig/source.d.ts +1 -0
  226. package/dist/types/types/legacyConfig/tools.d.ts +1 -0
  227. package/dist/types/utils/config.d.ts +1 -0
  228. package/dist/types/utils/createServer.d.ts +1 -0
  229. package/dist/types/utils/restart.d.ts +1 -1
  230. package/package.json +23 -22
@@ -1,10 +1,30 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import { isReact18, normalizeToPosixPath, fs as fse } from '@modern-js/utils';
4
- import { transform } from 'esbuild';
5
- import { parse } from 'es-module-lexer';
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+ import fs from "fs";
22
+ import path from "path";
23
+ import { isReact18, normalizeToPosixPath, fs as fse } from "@modern-js/utils";
24
+ import { transform } from "esbuild";
25
+ import { parse } from "es-module-lexer";
6
26
  import { FILE_SYSTEM_ROUTES_FILE_NAME, LOADER_EXPORT_NAME } from "./constants";
7
- export const walkDirectory = dir => fs.readdirSync(dir).reduce((previous, filename) => {
27
+ const walkDirectory = (dir) => fs.readdirSync(dir).reduce((previous, filename) => {
8
28
  const filePath = path.join(dir, filename);
9
29
  if (fs.statSync(filePath).isDirectory()) {
10
30
  return [...previous, ...walkDirectory(filePath)];
@@ -12,101 +32,102 @@ export const walkDirectory = dir => fs.readdirSync(dir).reduce((previous, filena
12
32
  return [...previous, filePath];
13
33
  }
14
34
  }, []);
15
- export const getDefaultImports = ({
35
+ const getDefaultImports = ({
16
36
  entrypoint,
17
37
  srcDirectory,
18
38
  internalSrcAlias,
19
39
  internalDirAlias,
20
40
  internalDirectory
21
41
  }) => {
22
- const {
23
- entryName,
24
- fileSystemRoutes,
25
- customBootstrap,
26
- entry
27
- } = entrypoint;
28
- const imports = [{
29
- specifiers: [{
30
- local: 'React'
31
- }],
32
- value: 'react'
33
- }, {
34
- specifiers: [{
35
- local: 'ReactDOM'
36
- }],
37
- value: isReact18(path.join(internalDirectory, '../../')) ? 'react-dom/client' : 'react-dom'
38
- }, {
39
- specifiers: [{
40
- imported: 'createApp'
41
- }, {
42
- imported: 'bootstrap'
43
- }],
44
- value: '@modern-js/runtime'
45
- }, customBootstrap && {
46
- specifiers: [{
47
- local: 'customBootstrap'
48
- }],
49
- value: normalizeToPosixPath(customBootstrap.replace(srcDirectory, internalSrcAlias))
50
- }].filter(Boolean);
42
+ const { entryName, fileSystemRoutes, customBootstrap, entry } = entrypoint;
43
+ const imports = [
44
+ {
45
+ specifiers: [{ local: "React" }],
46
+ value: "react"
47
+ },
48
+ {
49
+ specifiers: [{ local: "ReactDOM" }],
50
+ value: isReact18(path.join(internalDirectory, "../../")) ? "react-dom/client" : "react-dom"
51
+ },
52
+ {
53
+ specifiers: [{ imported: "createApp" }, { imported: "bootstrap" }],
54
+ value: "@modern-js/runtime"
55
+ },
56
+ customBootstrap && {
57
+ specifiers: [{ local: "customBootstrap" }],
58
+ value: normalizeToPosixPath(
59
+ customBootstrap.replace(srcDirectory, internalSrcAlias)
60
+ )
61
+ }
62
+ ].filter(Boolean);
51
63
  if (fileSystemRoutes) {
52
64
  const route = {
53
- specifiers: [{
54
- imported: 'routes'
55
- }],
56
- value: normalizeToPosixPath(`${internalDirAlias}/${entryName}/${FILE_SYSTEM_ROUTES_FILE_NAME.replace('.js', '')}`)
65
+ specifiers: [{ imported: "routes" }],
66
+ value: normalizeToPosixPath(
67
+ `${internalDirAlias}/${entryName}/${FILE_SYSTEM_ROUTES_FILE_NAME.replace(
68
+ ".js",
69
+ ""
70
+ )}`
71
+ )
57
72
  };
58
73
  if (fileSystemRoutes.globalApp) {
59
74
  imports.push({
60
- specifiers: [{
61
- local: 'App'
62
- }],
63
- value: normalizeToPosixPath(fileSystemRoutes.globalApp.replace(srcDirectory, internalSrcAlias))
75
+ specifiers: [{ local: "App" }],
76
+ value: normalizeToPosixPath(
77
+ fileSystemRoutes.globalApp.replace(srcDirectory, internalSrcAlias)
78
+ )
64
79
  });
65
80
  } else {
66
- route.initialize = 'const App = false;';
81
+ route.initialize = "const App = false;";
67
82
  }
68
83
  imports.push(route);
69
84
  } else {
70
85
  imports.push({
71
- specifiers: [{
72
- local: 'App'
73
- }],
74
- value: normalizeToPosixPath(entry.replace(srcDirectory, internalSrcAlias))
86
+ specifiers: [{ local: "App" }],
87
+ value: normalizeToPosixPath(
88
+ entry.replace(srcDirectory, internalSrcAlias)
89
+ )
75
90
  });
76
91
  }
77
92
  return imports;
78
93
  };
79
- export const isRouteComponentFile = filePath => {
94
+ const isRouteComponentFile = (filePath) => {
80
95
  if (/\.(d|test|spec|e2e)\.(js|jsx|ts|tsx)$/.test(filePath)) {
81
96
  return false;
82
97
  }
83
- if (['.js', '.jsx', '.ts', '.tsx'].includes(path.extname(filePath))) {
98
+ if ([".js", ".jsx", ".ts", ".tsx"].includes(path.extname(filePath))) {
84
99
  return true;
85
100
  }
86
101
  return false;
87
102
  };
88
- export const replaceWithAlias = (base, filePath, alias) => normalizeToPosixPath(path.join(alias, path.relative(base, filePath)));
89
- export const parseModule = async ({
103
+ const replaceWithAlias = (base, filePath, alias) => normalizeToPosixPath(path.join(alias, path.relative(base, filePath)));
104
+ const parseModule = (_0) => __async(void 0, [_0], function* ({
90
105
  source,
91
106
  filename
92
- }) => {
107
+ }) {
93
108
  let content = source;
94
- if (filename.endsWith('.tsx') || filename.endsWith('.jsx')) {
95
- const result = await transform(content, {
109
+ if (filename.endsWith(".tsx") || filename.endsWith(".jsx")) {
110
+ const result = yield transform(content, {
96
111
  loader: path.extname(filename).slice(1),
97
- format: 'esm'
112
+ format: "esm"
98
113
  });
99
114
  content = result.code;
100
115
  }
101
-
102
- // eslint-disable-next-line @typescript-eslint/await-thenable
103
- return await parse(content);
104
- };
105
- export const hasLoader = async filename => {
106
- const source = await fse.readFile(filename);
107
- const [, moduleExports] = await parseModule({
116
+ return yield parse(content);
117
+ });
118
+ const hasLoader = (filename) => __async(void 0, null, function* () {
119
+ const source = yield fse.readFile(filename);
120
+ const [, moduleExports] = yield parseModule({
108
121
  source: source.toString(),
109
122
  filename
110
123
  });
111
- return moduleExports.some(e => e.n === LOADER_EXPORT_NAME);
112
- };
124
+ return moduleExports.some((e) => e.n === LOADER_EXPORT_NAME);
125
+ });
126
+ export {
127
+ getDefaultImports,
128
+ hasLoader,
129
+ isRouteComponentFile,
130
+ parseModule,
131
+ replaceWithAlias,
132
+ walkDirectory
133
+ };
@@ -1,49 +1,58 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
- import { join } from 'path';
5
- import { mergeBuilderConfig } from '@modern-js/builder-shared';
6
- import { template as lodashTemplate } from '@modern-js/utils/lodash';
7
- import HtmlWebpackPlugin from '@modern-js/builder-webpack-provider/html-webpack-plugin';
8
- import { getEntryOptions } from '@modern-js/utils';
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import { join } from "path";
21
+ import {
22
+ mergeBuilderConfig
23
+ } from "@modern-js/builder-shared";
24
+ import { template as lodashTemplate } from "@modern-js/utils/lodash";
25
+ import HtmlWebpackPlugin from "@modern-js/builder-webpack-provider/html-webpack-plugin";
26
+ import { getEntryOptions } from "@modern-js/utils";
9
27
  import { BottomTemplatePlugin } from "../webpackPlugins/htmlBottomTemplate";
10
28
  import { HtmlAsyncChunkPlugin } from "../webpackPlugins/htmlAsyncChunkPlugin";
11
29
  import { createCopyPattern } from "../share";
12
30
  import RouterPlugin from "../webpackPlugins/routerPlugin";
13
- /**
14
- * Provides default configuration consistent with `@modern-js/webpack`
15
- */
16
- export const PluginCompatModern = (appContext, modernConfig, options) => ({
17
- name: 'builder-plugin-compat-modern',
31
+ const PluginCompatModern = (appContext, modernConfig, options) => ({
32
+ name: "builder-plugin-compat-modern",
18
33
  setup(api) {
19
- api.modifyBuilderConfig(config => {
34
+ api.modifyBuilderConfig((config) => {
20
35
  if (isStreamingSSR(modernConfig)) {
21
36
  return mergeBuilderConfig(config, {
22
37
  html: {
23
- inject: 'body'
38
+ inject: "body"
24
39
  }
25
40
  });
26
41
  }
27
42
  return config;
28
43
  });
29
- api.modifyWebpackChain((chain, {
30
- target,
31
- CHAIN_ID,
32
- isProd
33
- }) => {
44
+ api.modifyWebpackChain((chain, { target, CHAIN_ID, isProd }) => {
45
+ var _a, _b;
34
46
  const builderNormalizedConfig = api.getNormalizedConfig();
35
- // set webpack config name
36
- if (target === 'node') {
37
- chain.name('server');
38
- } else if (target === 'modern-web') {
39
- chain.name('modern');
47
+ if (target === "node") {
48
+ chain.name("server");
49
+ } else if (target === "modern-web") {
50
+ chain.name("modern");
40
51
  } else {
41
- chain.name('client');
52
+ chain.name("client");
42
53
  }
43
- chain.resolve.modules.add('node_modules').add(join(api.context.rootPath, 'node_modules'));
44
-
45
- // apply node compat
46
- if (target === 'node') {
54
+ chain.resolve.modules.add("node_modules").add(join(api.context.rootPath, "node_modules"));
55
+ if (target === "node") {
47
56
  applyNodeCompat(chain, modernConfig, isProd);
48
57
  }
49
58
  if (isHtmlEnabled(builderNormalizedConfig, target)) {
@@ -60,32 +69,38 @@ export const PluginCompatModern = (appContext, modernConfig, options) => ({
60
69
  modernConfig
61
70
  });
62
71
  }
63
-
64
- // apply copy plugin
65
72
  if (chain.plugins.has(CHAIN_ID.PLUGIN.COPY)) {
66
- const defaultCopyPattern = createCopyPattern(appContext, modernConfig, 'public', chain);
67
- chain.plugin(CHAIN_ID.PLUGIN.COPY).tap(args => {
68
- var _args$;
69
- return [{
70
- patterns: [...(((_args$ = args[0]) === null || _args$ === void 0 ? void 0 : _args$.patterns) || []), defaultCopyPattern]
71
- }];
73
+ const defaultCopyPattern = createCopyPattern(
74
+ appContext,
75
+ modernConfig,
76
+ "public",
77
+ chain
78
+ );
79
+ chain.plugin(CHAIN_ID.PLUGIN.COPY).tap((args) => {
80
+ var _a2;
81
+ return [
82
+ {
83
+ patterns: [...((_a2 = args[0]) == null ? void 0 : _a2.patterns) || [], defaultCopyPattern]
84
+ }
85
+ ];
72
86
  });
73
87
  }
74
- const {
75
- entrypoints
76
- } = appContext;
77
- const existNestedRoutes = entrypoints.some(entrypoint => entrypoint.nestedRoutesEntry);
78
- chain.plugin('route-plugin').use(RouterPlugin, [{
79
- existNestedRoutes
80
- }]);
81
- if (target !== 'node') {
88
+ const { entrypoints } = appContext;
89
+ const existNestedRoutes = entrypoints.some(
90
+ (entrypoint) => entrypoint.nestedRoutesEntry
91
+ );
92
+ const routerManifest = Boolean((_b = (_a = modernConfig == null ? void 0 : modernConfig.runtime) == null ? void 0 : _a.router) == null ? void 0 : _b.manifest);
93
+ if (existNestedRoutes || routerManifest) {
94
+ chain.plugin("route-plugin").use(RouterPlugin);
95
+ }
96
+ if (target !== "node") {
82
97
  const bareServerModuleReg = /\.(server|node)\.[tj]sx?$/;
83
98
  chain.module.rule(CHAIN_ID.RULE.JS).exclude.add(bareServerModuleReg);
84
- chain.module.rule('bare-server-module').test(bareServerModuleReg).use('server-module-loader').loader(require.resolve("../loaders/serverModuleLoader"));
99
+ chain.module.rule("bare-server-module").test(bareServerModuleReg).use("server-module-loader").loader(require.resolve("../loaders/serverModuleLoader"));
85
100
  }
86
- function isHtmlEnabled(config, target) {
87
- var _config$tools;
88
- return ((_config$tools = config.tools) === null || _config$tools === void 0 ? void 0 : _config$tools.htmlPlugin) !== false && target !== 'node' && target !== 'web-worker';
101
+ function isHtmlEnabled(config, target2) {
102
+ var _a2;
103
+ return ((_a2 = config.tools) == null ? void 0 : _a2.htmlPlugin) !== false && target2 !== "node" && target2 !== "web-worker";
89
104
  }
90
105
  });
91
106
  if (options) {
@@ -93,10 +108,6 @@ export const PluginCompatModern = (appContext, modernConfig, options) => ({
93
108
  }
94
109
  }
95
110
  });
96
-
97
- /**
98
- * register builder hooks callback
99
- */
100
111
  function applyCallbacks(api, options) {
101
112
  options.onAfterBuild && api.onAfterBuild(options.onAfterBuild);
102
113
  options.onAfterCreateCompiler && api.onAfterCreateCompiler(options.onAfterCreateCompiler);
@@ -107,60 +118,52 @@ function applyCallbacks(api, options) {
107
118
  options.onDevCompileDone && api.onDevCompileDone(options.onDevCompileDone);
108
119
  options.onExit && api.onExit(options.onExit);
109
120
  }
110
-
111
- /**
112
- * compat some config, if target is `node`
113
- */
114
121
  function applyNodeCompat(chain, modernConfig, isProd) {
115
- // apply node resolve extensions
116
- for (const ext of ['.node.js', '.node.jsx', '.node.ts', '.node.tsx', '.server.js', '.server.ts', '.server.ts', '.server.tsx']) {
122
+ for (const ext of [
123
+ ".node.js",
124
+ ".node.jsx",
125
+ ".node.ts",
126
+ ".node.tsx",
127
+ ".server.js",
128
+ ".server.ts",
129
+ ".server.ts",
130
+ ".server.tsx"
131
+ ]) {
117
132
  chain.resolve.extensions.prepend(ext);
118
133
  }
119
-
120
- // apply filterEntriesBySSRConfig
121
- filterEntriesBySSRConfig(isProd, chain, modernConfig.server, modernConfig.output);
122
- function filterEntriesBySSRConfig(isProd, chain, serverConfig, outputConfig) {
123
- var _outputConfig$ssg;
124
- const entries = chain.entryPoints.entries();
125
- // if prod and ssg config is true or function
126
- if (isProd && ((outputConfig === null || outputConfig === void 0 ? void 0 : outputConfig.ssg) === true || typeof (outputConfig === null || outputConfig === void 0 ? void 0 : (_outputConfig$ssg = outputConfig.ssg) === null || _outputConfig$ssg === void 0 ? void 0 : _outputConfig$ssg[0]) === 'function')) {
134
+ filterEntriesBySSRConfig(
135
+ isProd,
136
+ chain,
137
+ modernConfig.server,
138
+ modernConfig.output
139
+ );
140
+ function filterEntriesBySSRConfig(isProd2, chain2, serverConfig, outputConfig) {
141
+ var _a;
142
+ const entries = chain2.entryPoints.entries();
143
+ if (isProd2 && ((outputConfig == null ? void 0 : outputConfig.ssg) === true || typeof ((_a = outputConfig == null ? void 0 : outputConfig.ssg) == null ? void 0 : _a[0]) === "function")) {
127
144
  return;
128
145
  }
129
-
130
- // if single entry has ssg config
131
- // `ssg: {}` is not allowed if multi entry
132
146
  const entryNames = Object.keys(entries);
133
- if (isProd && entryNames.length === 1 && outputConfig !== null && outputConfig !== void 0 && outputConfig.ssg) {
147
+ if (isProd2 && entryNames.length === 1 && (outputConfig == null ? void 0 : outputConfig.ssg)) {
134
148
  return;
135
149
  }
136
-
137
- // collect all ssg entries
138
150
  const ssgEntries = [];
139
- if (isProd && outputConfig !== null && outputConfig !== void 0 && outputConfig.ssg) {
140
- const {
141
- ssg
142
- } = outputConfig;
143
- entryNames.forEach(name => {
151
+ if (isProd2 && (outputConfig == null ? void 0 : outputConfig.ssg)) {
152
+ const { ssg } = outputConfig;
153
+ entryNames.forEach((name) => {
144
154
  if (ssg[name]) {
145
155
  ssgEntries.push(name);
146
156
  }
147
157
  });
148
158
  }
149
- const {
150
- ssr,
151
- ssrByEntries
152
- } = serverConfig || {};
153
- entryNames.forEach(name => {
154
- if (!ssgEntries.includes(name) && (ssr && (ssrByEntries === null || ssrByEntries === void 0 ? void 0 : ssrByEntries[name]) === false || !ssr && !(ssrByEntries !== null && ssrByEntries !== void 0 && ssrByEntries[name]))) {
155
- chain.entryPoints.delete(name);
159
+ const { ssr, ssrByEntries } = serverConfig || {};
160
+ entryNames.forEach((name) => {
161
+ if (!ssgEntries.includes(name) && (ssr && (ssrByEntries == null ? void 0 : ssrByEntries[name]) === false || !ssr && !(ssrByEntries == null ? void 0 : ssrByEntries[name]))) {
162
+ chain2.entryPoints.delete(name);
156
163
  }
157
164
  });
158
165
  }
159
166
  }
160
-
161
- /**
162
- * inject bottom template
163
- */
164
167
  function applyBottomHtmlWebpackPlugin({
165
168
  api,
166
169
  chain,
@@ -168,33 +171,40 @@ function applyBottomHtmlWebpackPlugin({
168
171
  appContext,
169
172
  CHAIN_ID
170
173
  }) {
171
- // inject bottomTemplate into html-webpack-plugin
172
174
  for (const entryName of Object.keys(api.context.entry)) {
173
- // FIXME: the only need necessary
174
- const baseTemplateParams = _objectSpread({
175
+ const baseTemplateParams = __spreadValues({
175
176
  entryName,
176
- title: getEntryOptions(entryName, modernConfig.html.title, modernConfig.html.titleByEntries, appContext.packageName),
177
+ title: getEntryOptions(
178
+ entryName,
179
+ modernConfig.html.title,
180
+ modernConfig.html.titleByEntries,
181
+ appContext.packageName
182
+ ),
177
183
  mountId: modernConfig.html.mountId
178
- }, getEntryOptions(entryName, modernConfig.html.templateParameters, modernConfig.html.templateParametersByEntries, appContext.packageName));
179
- chain.plugin(`${CHAIN_ID.PLUGIN.HTML}-${entryName}`).tap(args => [_objectSpread(_objectSpread({}, args[0] || {}), {}, {
180
- __internal__: true,
181
- bottomTemplate: appContext.htmlTemplates[`__${entryName}-bottom__`] && lodashTemplate(appContext.htmlTemplates[`__${entryName}-bottom__`])(baseTemplateParams)
182
- })]);
184
+ }, getEntryOptions(
185
+ entryName,
186
+ modernConfig.html.templateParameters,
187
+ modernConfig.html.templateParametersByEntries,
188
+ appContext.packageName
189
+ ));
190
+ chain.plugin(`${CHAIN_ID.PLUGIN.HTML}-${entryName}`).tap((args) => [
191
+ __spreadProps(__spreadValues({}, args[0] || {}), {
192
+ __internal__: true,
193
+ bottomTemplate: appContext.htmlTemplates[`__${entryName}-bottom__`] && lodashTemplate(appContext.htmlTemplates[`__${entryName}-bottom__`])(
194
+ baseTemplateParams
195
+ )
196
+ })
197
+ ]);
183
198
  }
184
199
  chain.plugin(CHAIN_ID.PLUGIN.BOTTOM_TEMPLATE).use(BottomTemplatePlugin, [HtmlWebpackPlugin]);
185
200
  }
186
- const isStreamingSSR = userConfig => {
187
- const isStreaming = ssr => ssr && typeof ssr === 'object' && ssr.mode === 'stream';
188
- const {
189
- server
190
- } = userConfig;
201
+ const isStreamingSSR = (userConfig) => {
202
+ const isStreaming = (ssr) => ssr && typeof ssr === "object" && ssr.mode === "stream";
203
+ const { server } = userConfig;
191
204
  if (isStreaming(server.ssr)) {
192
205
  return true;
193
206
  }
194
-
195
- // Since we cannot apply different plugins for different entries,
196
- // we regard the whole app as streaming ssr only if one entry meets the requirement.
197
- if (server !== null && server !== void 0 && server.ssrByEntries && typeof server.ssrByEntries === 'object') {
207
+ if ((server == null ? void 0 : server.ssrByEntries) && typeof server.ssrByEntries === "object") {
198
208
  for (const name of Object.keys(server.ssrByEntries)) {
199
209
  if (isStreaming(server.ssrByEntries[name])) {
200
210
  return true;
@@ -211,4 +221,7 @@ function applyAsyncChunkHtmlPlugin({
211
221
  if (isStreamingSSR(modernConfig)) {
212
222
  chain.plugin(CHAIN_ID.PLUGIN.HTML_ASYNC_CHUNK).use(HtmlAsyncChunkPlugin, [HtmlWebpackPlugin]);
213
223
  }
214
- }
224
+ }
225
+ export {
226
+ PluginCompatModern
227
+ };