@modern-js/app-tools 2.0.0-beta.2 → 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 (236) hide show
  1. package/CHANGELOG.md +556 -0
  2. package/bin/modern.js +11 -1
  3. package/dist/js/modern/analyze/Builder.js +39 -0
  4. package/dist/js/modern/analyze/constants.js +38 -16
  5. package/dist/js/modern/analyze/generateCode.js +272 -211
  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 +110 -53
  18. package/dist/js/modern/analyze/templates.js +191 -77
  19. package/dist/js/modern/analyze/utils.js +98 -51
  20. package/dist/js/modern/builder/builderPlugins/compatModern.js +125 -107
  21. package/dist/js/modern/builder/index.js +124 -89
  22. package/dist/js/modern/builder/loaders/routerLoader.js +17 -0
  23. package/dist/js/modern/builder/loaders/serverModuleLoader.js +7 -0
  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 +93 -47
  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 -16
  34. package/dist/js/modern/config/default.js +103 -114
  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 +11 -9
  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 -35
  68. package/dist/js/node/analyze/generateCode.js +291 -228
  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 +140 -67
  81. package/dist/js/node/analyze/templates.js +212 -84
  82. package/dist/js/node/analyze/utils.js +123 -62
  83. package/dist/js/node/builder/builderPlugins/compatModern.js +153 -120
  84. package/dist/js/node/builder/index.js +152 -98
  85. package/dist/js/node/builder/loaders/routerLoader.js +36 -0
  86. package/dist/js/node/builder/loaders/serverModuleLoader.js +26 -0
  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 +115 -61
  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 -27
  97. package/dist/js/node/config/default.js +119 -118
  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 +28 -13
  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 -60
  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 -16
  131. package/dist/js/treeshaking/analyze/generateCode.js +605 -355
  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 -146
  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 +414 -160
  144. package/dist/js/treeshaking/analyze/templates.js +432 -161
  145. package/dist/js/treeshaking/analyze/utils.js +361 -80
  146. package/dist/js/treeshaking/builder/builderPlugins/compatModern.js +282 -195
  147. package/dist/js/treeshaking/builder/index.js +371 -167
  148. package/dist/js/treeshaking/builder/loaders/routerLoader.js +13 -0
  149. package/dist/js/treeshaking/builder/loaders/serverModuleLoader.js +5 -0
  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 -132
  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 -68
  160. package/dist/js/treeshaking/config/default.js +210 -199
  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 -67
  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/constants.d.ts +2 -0
  210. package/dist/types/analyze/index.d.ts +2 -0
  211. package/dist/types/analyze/templates.d.ts +10 -7
  212. package/dist/types/analyze/utils.d.ts +9 -1
  213. package/dist/types/builder/builderPlugins/compatModern.d.ts +2 -1
  214. package/dist/types/builder/index.d.ts +3 -3
  215. package/dist/types/builder/loaders/routerLoader.d.ts +3 -0
  216. package/dist/types/builder/loaders/serverModuleLoader.d.ts +3 -0
  217. package/dist/types/builder/webpackPlugins/routerPlugin.d.ts +1 -7
  218. package/dist/types/defineConfig.d.ts +1 -0
  219. package/dist/types/index.d.ts +6 -1
  220. package/dist/types/initialize/index.d.ts +2 -0
  221. package/dist/types/types/config/dev.d.ts +2 -2
  222. package/dist/types/types/config/index.d.ts +1 -0
  223. package/dist/types/types/config/output.d.ts +0 -1
  224. package/dist/types/types/config/source.d.ts +1 -0
  225. package/dist/types/types/config/tools.d.ts +10 -1
  226. package/dist/types/types/hooks.d.ts +7 -1
  227. package/dist/types/types/legacyConfig/dev.d.ts +1 -0
  228. package/dist/types/types/legacyConfig/output.d.ts +1 -1
  229. package/dist/types/types/legacyConfig/source.d.ts +1 -0
  230. package/dist/types/types/legacyConfig/tools.d.ts +1 -0
  231. package/dist/types/utils/config.d.ts +1 -0
  232. package/dist/types/utils/createFileWatcher.d.ts +2 -1
  233. package/dist/types/utils/createServer.d.ts +1 -0
  234. package/dist/types/utils/restart.d.ts +1 -1
  235. package/lib/types.d.ts +1 -1
  236. package/package.json +26 -22
@@ -1,213 +1,300 @@
1
- import _typeof from "@babel/runtime/helpers/esm/typeof";
2
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
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
+ function _arrayLikeToArray(arr, len) {
2
+ if (len == null || len > arr.length) len = arr.length;
3
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
+ return arr2;
5
+ }
6
+ function _arrayWithoutHoles(arr) {
7
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
8
+ }
9
+ function _defineProperty(obj, key, value) {
10
+ if (key in obj) {
11
+ Object.defineProperty(obj, key, {
12
+ value: value,
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true
16
+ });
17
+ } else {
18
+ obj[key] = value;
19
+ }
20
+ return obj;
21
+ }
22
+ function _iterableToArray(iter) {
23
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
24
+ }
25
+ function _nonIterableSpread() {
26
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
27
+ }
28
+ function _objectSpread(target) {
29
+ for(var i = 1; i < arguments.length; i++){
30
+ var source = arguments[i] != null ? arguments[i] : {};
31
+ var ownKeys = Object.keys(source);
32
+ if (typeof Object.getOwnPropertySymbols === "function") {
33
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
34
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
35
+ }));
36
+ }
37
+ ownKeys.forEach(function(key) {
38
+ _defineProperty(target, key, source[key]);
39
+ });
40
+ }
41
+ return target;
42
+ }
43
+ function ownKeys(object, enumerableOnly) {
44
+ var keys = Object.keys(object);
45
+ if (Object.getOwnPropertySymbols) {
46
+ var symbols = Object.getOwnPropertySymbols(object);
47
+ if (enumerableOnly) {
48
+ symbols = symbols.filter(function(sym) {
49
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
50
+ });
51
+ }
52
+ keys.push.apply(keys, symbols);
53
+ }
54
+ return keys;
55
+ }
56
+ function _objectSpreadProps(target, source) {
57
+ source = source != null ? source : {};
58
+ if (Object.getOwnPropertyDescriptors) {
59
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
60
+ } else {
61
+ ownKeys(Object(source)).forEach(function(key) {
62
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
63
+ });
64
+ }
65
+ return target;
66
+ }
67
+ function _toConsumableArray(arr) {
68
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
69
+ }
70
+ function _unsupportedIterableToArray(o, minLen) {
71
+ if (!o) return;
72
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
73
+ var n = Object.prototype.toString.call(o).slice(8, -1);
74
+ if (n === "Object" && o.constructor) n = o.constructor.name;
75
+ if (n === "Map" || n === "Set") return Array.from(n);
76
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
77
+ }
78
+ import { join } from "path";
79
+ import { mergeBuilderConfig } from "@modern-js/builder-shared";
80
+ import { template as lodashTemplate } from "@modern-js/utils/lodash";
81
+ import HtmlWebpackPlugin from "@modern-js/builder-webpack-provider/html-webpack-plugin";
82
+ import { getEntryOptions } from "@modern-js/utils";
9
83
  import { BottomTemplatePlugin } from "../webpackPlugins/htmlBottomTemplate";
10
84
  import { HtmlAsyncChunkPlugin } from "../webpackPlugins/htmlAsyncChunkPlugin";
11
85
  import { createCopyPattern } from "../share";
12
86
  import RouterPlugin from "../webpackPlugins/routerPlugin";
13
- /**
14
- * Provides default configuration consistent with `@modern-js/webpack`
15
- */
16
- export var PluginCompatModern = function PluginCompatModern(appContext, modernConfig, options) {
17
- return {
18
- name: 'builder-plugin-compat-modern',
19
- setup: function setup(api) {
20
- api.modifyBuilderConfig(function (config) {
21
- if (isStreamingSSR(modernConfig)) {
22
- return mergeBuilderConfig(config, {
23
- html: {
24
- inject: 'body'
87
+ var PluginCompatModern = function(appContext, modernConfig, options) {
88
+ return {
89
+ name: "builder-plugin-compat-modern",
90
+ setup: function setup(api) {
91
+ api.modifyBuilderConfig(function(config) {
92
+ if (isStreamingSSR(modernConfig)) {
93
+ return mergeBuilderConfig(config, {
94
+ html: {
95
+ inject: "body"
96
+ }
97
+ });
98
+ }
99
+ return config;
100
+ });
101
+ api.modifyWebpackChain(function(chain, param) {
102
+ var target = param.target, CHAIN_ID = param.CHAIN_ID, isProd = param.isProd;
103
+ var isHtmlEnabled = function isHtmlEnabled(config, target2) {
104
+ var ref;
105
+ return ((ref = config.tools) === null || ref === void 0 ? void 0 : ref.htmlPlugin) !== false && target2 !== "node" && target2 !== "web-worker";
106
+ };
107
+ var ref, ref1;
108
+ var builderNormalizedConfig = api.getNormalizedConfig();
109
+ if (target === "node") {
110
+ chain.name("server");
111
+ } else if (target === "modern-web") {
112
+ chain.name("modern");
113
+ } else {
114
+ chain.name("client");
115
+ }
116
+ chain.resolve.modules.add("node_modules").add(join(api.context.rootPath, "node_modules"));
117
+ if (target === "node") {
118
+ applyNodeCompat(chain, modernConfig, isProd);
119
+ }
120
+ if (isHtmlEnabled(builderNormalizedConfig, target)) {
121
+ applyBottomHtmlWebpackPlugin({
122
+ api: api,
123
+ chain: chain,
124
+ CHAIN_ID: CHAIN_ID,
125
+ appContext: appContext,
126
+ modernConfig: modernConfig
127
+ });
128
+ applyAsyncChunkHtmlPlugin({
129
+ chain: chain,
130
+ CHAIN_ID: CHAIN_ID,
131
+ modernConfig: modernConfig
132
+ });
133
+ }
134
+ if (chain.plugins.has(CHAIN_ID.PLUGIN.COPY)) {
135
+ var defaultCopyPattern = createCopyPattern(appContext, modernConfig, "public", chain);
136
+ chain.plugin(CHAIN_ID.PLUGIN.COPY).tap(function(args) {
137
+ var ref;
138
+ return [
139
+ {
140
+ patterns: _toConsumableArray(((ref = args[0]) === null || ref === void 0 ? void 0 : ref.patterns) || []).concat([
141
+ defaultCopyPattern
142
+ ])
143
+ }
144
+ ];
145
+ });
146
+ }
147
+ var entrypoints = appContext.entrypoints;
148
+ var existNestedRoutes = entrypoints.some(function(entrypoint) {
149
+ return entrypoint.nestedRoutesEntry;
150
+ });
151
+ var routerManifest = Boolean(modernConfig === null || modernConfig === void 0 ? void 0 : (ref = modernConfig.runtime) === null || ref === void 0 ? void 0 : (ref1 = ref.router) === null || ref1 === void 0 ? void 0 : ref1.manifest);
152
+ if (existNestedRoutes || routerManifest) {
153
+ chain.plugin("route-plugin").use(RouterPlugin);
154
+ }
155
+ if (target !== "node") {
156
+ var bareServerModuleReg = /\.(server|node)\.[tj]sx?$/;
157
+ chain.module.rule(CHAIN_ID.RULE.JS).exclude.add(bareServerModuleReg);
158
+ chain.module.rule("bare-server-module").test(bareServerModuleReg).use("server-module-loader").loader(require.resolve("../loaders/serverModuleLoader"));
159
+ }
160
+ });
161
+ if (options) {
162
+ applyCallbacks(api, options);
25
163
  }
26
- });
27
- }
28
- return config;
29
- });
30
- api.modifyWebpackChain(function (chain, _ref) {
31
- var target = _ref.target,
32
- CHAIN_ID = _ref.CHAIN_ID,
33
- isProd = _ref.isProd;
34
- var 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');
40
- } else {
41
- chain.name('client');
42
164
  }
43
- chain.resolve.modules.add('node_modules').add(join(api.context.rootPath, 'node_modules'));
44
-
45
- // apply node compat
46
- if (target === 'node') {
47
- applyNodeCompat(chain, modernConfig, isProd);
165
+ };
166
+ };
167
+ function applyCallbacks(api, options) {
168
+ options.onAfterBuild && api.onAfterBuild(options.onAfterBuild);
169
+ options.onAfterCreateCompiler && api.onAfterCreateCompiler(options.onAfterCreateCompiler);
170
+ options.onAfterStartDevServer && api.onAfterStartDevServer(options.onAfterStartDevServer);
171
+ options.onBeforeBuild && api.onBeforeBuild(options.onBeforeBuild);
172
+ options.onBeforeCreateCompiler && api.onBeforeCreateCompiler(options.onBeforeCreateCompiler);
173
+ options.onBeforeStartDevServer && api.onBeforeStartDevServer(options.onBeforeStartDevServer);
174
+ options.onDevCompileDone && api.onDevCompileDone(options.onDevCompileDone);
175
+ options.onExit && api.onExit(options.onExit);
176
+ }
177
+ function applyNodeCompat(chain, modernConfig, isProd) {
178
+ var filterEntriesBySSRConfig = function filterEntriesBySSRConfig(isProd2, chain2, serverConfig, outputConfig) {
179
+ var ref;
180
+ var entries = chain2.entryPoints.entries();
181
+ if (isProd2 && ((outputConfig === null || outputConfig === void 0 ? void 0 : outputConfig.ssg) === true || typeof (outputConfig === null || outputConfig === void 0 ? void 0 : (ref = outputConfig.ssg) === null || ref === void 0 ? void 0 : ref[0]) === "function")) {
182
+ return;
48
183
  }
49
- if (isHtmlEnabled(builderNormalizedConfig, target)) {
50
- applyBottomHtmlWebpackPlugin({
51
- api: api,
52
- chain: chain,
53
- CHAIN_ID: CHAIN_ID,
54
- appContext: appContext,
55
- modernConfig: modernConfig
56
- });
57
- applyAsyncChunkHtmlPlugin({
58
- chain: chain,
59
- CHAIN_ID: CHAIN_ID,
60
- modernConfig: modernConfig
61
- });
184
+ var entryNames = Object.keys(entries);
185
+ if (isProd2 && entryNames.length === 1 && (outputConfig === null || outputConfig === void 0 ? void 0 : outputConfig.ssg)) {
186
+ return;
62
187
  }
63
-
64
- // apply copy plugin
65
- if (chain.plugins.has(CHAIN_ID.PLUGIN.COPY)) {
66
- var defaultCopyPattern = createCopyPattern(appContext, modernConfig, 'public', chain);
67
- chain.plugin(CHAIN_ID.PLUGIN.COPY).tap(function (args) {
68
- var _args$;
69
- return [{
70
- patterns: [].concat(_toConsumableArray(((_args$ = args[0]) === null || _args$ === void 0 ? void 0 : _args$.patterns) || []), [defaultCopyPattern])
71
- }];
72
- });
188
+ var ssgEntries = [];
189
+ if (isProd2 && (outputConfig === null || outputConfig === void 0 ? void 0 : outputConfig.ssg)) {
190
+ var ssg = outputConfig.ssg;
191
+ entryNames.forEach(function(name) {
192
+ if (ssg[name]) {
193
+ ssgEntries.push(name);
194
+ }
195
+ });
73
196
  }
74
- var entrypoints = appContext.entrypoints;
75
- var existNestedRoutes = entrypoints.some(function (entrypoint) {
76
- return entrypoint.nestedRoutesEntry;
197
+ var ref1 = serverConfig || {}, ssr = ref1.ssr, ssrByEntries = ref1.ssrByEntries;
198
+ entryNames.forEach(function(name) {
199
+ if (!ssgEntries.includes(name) && (ssr && (ssrByEntries === null || ssrByEntries === void 0 ? void 0 : ssrByEntries[name]) === false || !ssr && !(ssrByEntries === null || ssrByEntries === void 0 ? void 0 : ssrByEntries[name]))) {
200
+ chain2.entryPoints.delete(name);
201
+ }
77
202
  });
78
- chain.plugin('route-plugin').use(RouterPlugin, [{
79
- existNestedRoutes: existNestedRoutes
80
- }]);
81
- function isHtmlEnabled(config, target) {
82
- var _config$tools;
83
- return ((_config$tools = config.tools) === null || _config$tools === void 0 ? void 0 : _config$tools.htmlPlugin) !== false && target !== 'node' && target !== 'web-worker';
84
- }
85
- });
86
- if (options) {
87
- applyCallbacks(api, options);
88
- }
203
+ };
204
+ for(var _i = 0, _iter = [
205
+ ".node.js",
206
+ ".node.jsx",
207
+ ".node.ts",
208
+ ".node.tsx",
209
+ ".server.js",
210
+ ".server.ts",
211
+ ".server.ts",
212
+ ".server.tsx"
213
+ ]; _i < _iter.length; _i++){
214
+ var ext = _iter[_i];
215
+ chain.resolve.extensions.prepend(ext);
89
216
  }
90
- };
91
- };
92
-
93
- /**
94
- * register builder hooks callback
95
- */
96
- function applyCallbacks(api, options) {
97
- options.onAfterBuild && api.onAfterBuild(options.onAfterBuild);
98
- options.onAfterCreateCompiler && api.onAfterCreateCompiler(options.onAfterCreateCompiler);
99
- options.onAfterStartDevServer && api.onAfterStartDevServer(options.onAfterStartDevServer);
100
- options.onBeforeBuild && api.onBeforeBuild(options.onBeforeBuild);
101
- options.onBeforeCreateCompiler && api.onBeforeCreateCompiler(options.onBeforeCreateCompiler);
102
- options.onBeforeStartDevServer && api.onBeforeStartDevServer(options.onBeforeStartDevServer);
103
- options.onDevCompileDone && api.onDevCompileDone(options.onDevCompileDone);
104
- options.onExit && api.onExit(options.onExit);
217
+ filterEntriesBySSRConfig(isProd, chain, modernConfig.server, modernConfig.output);
105
218
  }
106
-
107
- /**
108
- * compat some config, if target is `node`
109
- */
110
- function applyNodeCompat(chain, modernConfig, isProd) {
111
- // apply node resolve extensions
112
- for (var _i = 0, _arr = ['.node.js', '.node.jsx', '.node.ts', '.node.tsx']; _i < _arr.length; _i++) {
113
- var ext = _arr[_i];
114
- chain.resolve.extensions.prepend(ext);
115
- }
116
-
117
- // apply filterEntriesBySSRConfig
118
- filterEntriesBySSRConfig(isProd, chain, modernConfig.server, modernConfig.output);
119
- function filterEntriesBySSRConfig(isProd, chain, serverConfig, outputConfig) {
120
- var _outputConfig$ssg;
121
- var entries = chain.entryPoints.entries();
122
- // if prod and ssg config is true or function
123
- 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')) {
124
- return;
125
- }
126
-
127
- // if single entry has ssg config
128
- // `ssg: {}` is not allowed if multi entry
129
- var entryNames = Object.keys(entries);
130
- if (isProd && entryNames.length === 1 && outputConfig !== null && outputConfig !== void 0 && outputConfig.ssg) {
131
- return;
132
- }
133
-
134
- // collect all ssg entries
135
- var ssgEntries = [];
136
- if (isProd && outputConfig !== null && outputConfig !== void 0 && outputConfig.ssg) {
137
- var ssg = outputConfig.ssg;
138
- entryNames.forEach(function (name) {
139
- if (ssg[name]) {
140
- ssgEntries.push(name);
219
+ function applyBottomHtmlWebpackPlugin(param) {
220
+ var api = param.api, chain = param.chain, modernConfig = param.modernConfig, appContext = param.appContext, CHAIN_ID = param.CHAIN_ID;
221
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
222
+ try {
223
+ var _loop = function() {
224
+ var entryName = _step.value;
225
+ var baseTemplateParams = _objectSpread({
226
+ entryName: entryName,
227
+ title: getEntryOptions(entryName, modernConfig.html.title, modernConfig.html.titleByEntries, appContext.packageName),
228
+ mountId: modernConfig.html.mountId
229
+ }, getEntryOptions(entryName, modernConfig.html.templateParameters, modernConfig.html.templateParametersByEntries, appContext.packageName));
230
+ chain.plugin("".concat(CHAIN_ID.PLUGIN.HTML, "-").concat(entryName)).tap(function(args) {
231
+ return [
232
+ _objectSpreadProps(_objectSpread({}, args[0] || {}), {
233
+ __internal__: true,
234
+ bottomTemplate: appContext.htmlTemplates["__".concat(entryName, "-bottom__")] && lodashTemplate(appContext.htmlTemplates["__".concat(entryName, "-bottom__")])(baseTemplateParams)
235
+ })
236
+ ];
237
+ });
238
+ };
239
+ for(var _iterator = Object.keys(api.context.entry)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
240
+ } catch (err) {
241
+ _didIteratorError = true;
242
+ _iteratorError = err;
243
+ } finally{
244
+ try {
245
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
246
+ _iterator.return();
247
+ }
248
+ } finally{
249
+ if (_didIteratorError) {
250
+ throw _iteratorError;
251
+ }
141
252
  }
142
- });
143
253
  }
144
- var _ref2 = serverConfig || {},
145
- ssr = _ref2.ssr,
146
- ssrByEntries = _ref2.ssrByEntries;
147
- entryNames.forEach(function (name) {
148
- if (!ssgEntries.includes(name) && (ssr && (ssrByEntries === null || ssrByEntries === void 0 ? void 0 : ssrByEntries[name]) === false || !ssr && !(ssrByEntries !== null && ssrByEntries !== void 0 && ssrByEntries[name]))) {
149
- chain.entryPoints["delete"](name);
150
- }
151
- });
152
- }
254
+ chain.plugin(CHAIN_ID.PLUGIN.BOTTOM_TEMPLATE).use(BottomTemplatePlugin, [
255
+ HtmlWebpackPlugin
256
+ ]);
153
257
  }
154
-
155
- /**
156
- * inject bottom template
157
- */
158
- function applyBottomHtmlWebpackPlugin(_ref3) {
159
- var api = _ref3.api,
160
- chain = _ref3.chain,
161
- modernConfig = _ref3.modernConfig,
162
- appContext = _ref3.appContext,
163
- CHAIN_ID = _ref3.CHAIN_ID;
164
- var _loop = function _loop() {
165
- var entryName = _Object$keys[_i2];
166
- // FIXME: the only need necessary
167
- var baseTemplateParams = _objectSpread({
168
- entryName: entryName,
169
- title: getEntryOptions(entryName, modernConfig.html.title, modernConfig.html.titleByEntries, appContext.packageName),
170
- mountId: modernConfig.html.mountId
171
- }, getEntryOptions(entryName, modernConfig.html.templateParameters, modernConfig.html.templateParametersByEntries, appContext.packageName));
172
- chain.plugin("".concat(CHAIN_ID.PLUGIN.HTML, "-").concat(entryName)).tap(function (args) {
173
- return [_objectSpread(_objectSpread({}, args[0] || {}), {}, {
174
- __internal__: true,
175
- bottomTemplate: appContext.htmlTemplates["__".concat(entryName, "-bottom__")] && lodashTemplate(appContext.htmlTemplates["__".concat(entryName, "-bottom__")])(baseTemplateParams)
176
- })];
177
- });
178
- };
179
- // inject bottomTemplate into html-webpack-plugin
180
- for (var _i2 = 0, _Object$keys = Object.keys(api.context.entry); _i2 < _Object$keys.length; _i2++) {
181
- _loop();
182
- }
183
- chain.plugin(CHAIN_ID.PLUGIN.BOTTOM_TEMPLATE).use(BottomTemplatePlugin, [HtmlWebpackPlugin]);
184
- }
185
- var isStreamingSSR = function isStreamingSSR(userConfig) {
186
- var isStreaming = function isStreaming(ssr) {
187
- return ssr && _typeof(ssr) === 'object' && ssr.mode === 'stream';
188
- };
189
- var server = userConfig.server;
190
- if (isStreaming(server.ssr)) {
191
- return true;
192
- }
193
-
194
- // Since we cannot apply different plugins for different entries,
195
- // we regard the whole app as streaming ssr only if one entry meets the requirement.
196
- if (server !== null && server !== void 0 && server.ssrByEntries && _typeof(server.ssrByEntries) === 'object') {
197
- for (var _i3 = 0, _Object$keys2 = Object.keys(server.ssrByEntries); _i3 < _Object$keys2.length; _i3++) {
198
- var name = _Object$keys2[_i3];
199
- if (isStreaming(server.ssrByEntries[name])) {
258
+ var isStreamingSSR = function(userConfig) {
259
+ var isStreaming = function(ssr) {
260
+ return ssr && typeof ssr === "object" && ssr.mode === "stream";
261
+ };
262
+ var server = userConfig.server;
263
+ if (isStreaming(server.ssr)) {
200
264
  return true;
201
- }
202
265
  }
203
- }
204
- return false;
266
+ if ((server === null || server === void 0 ? void 0 : server.ssrByEntries) && typeof server.ssrByEntries === "object") {
267
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
268
+ try {
269
+ for(var _iterator = Object.keys(server.ssrByEntries)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
270
+ var name = _step.value;
271
+ if (isStreaming(server.ssrByEntries[name])) {
272
+ return true;
273
+ }
274
+ }
275
+ } catch (err) {
276
+ _didIteratorError = true;
277
+ _iteratorError = err;
278
+ } finally{
279
+ try {
280
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
281
+ _iterator.return();
282
+ }
283
+ } finally{
284
+ if (_didIteratorError) {
285
+ throw _iteratorError;
286
+ }
287
+ }
288
+ }
289
+ }
290
+ return false;
205
291
  };
206
- function applyAsyncChunkHtmlPlugin(_ref4) {
207
- var chain = _ref4.chain,
208
- modernConfig = _ref4.modernConfig,
209
- CHAIN_ID = _ref4.CHAIN_ID;
210
- if (isStreamingSSR(modernConfig)) {
211
- chain.plugin(CHAIN_ID.PLUGIN.HTML_ASYNC_CHUNK).use(HtmlAsyncChunkPlugin, [HtmlWebpackPlugin]);
212
- }
213
- }
292
+ function applyAsyncChunkHtmlPlugin(param) {
293
+ var chain = param.chain, modernConfig = param.modernConfig, CHAIN_ID = param.CHAIN_ID;
294
+ if (isStreamingSSR(modernConfig)) {
295
+ chain.plugin(CHAIN_ID.PLUGIN.HTML_ASYNC_CHUNK).use(HtmlAsyncChunkPlugin, [
296
+ HtmlWebpackPlugin
297
+ ]);
298
+ }
299
+ }
300
+ export { PluginCompatModern };