@modern-js/app-tools 2.0.0-beta.2 → 2.0.0-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/CHANGELOG.md +251 -0
  2. package/bin/modern.js +10 -1
  3. package/dist/js/modern/analyze/constants.js +38 -16
  4. package/dist/js/modern/analyze/generateCode.js +271 -211
  5. package/dist/js/modern/analyze/getBundleEntry.js +31 -32
  6. package/dist/js/modern/analyze/getClientRoutes/getRoutes.js +93 -49
  7. package/dist/js/modern/analyze/getClientRoutes/getRoutesLegacy.js +89 -47
  8. package/dist/js/modern/analyze/getClientRoutes/index.js +6 -2
  9. package/dist/js/modern/analyze/getClientRoutes/utils.js +23 -10
  10. package/dist/js/modern/analyze/getFileSystemEntry.js +43 -22
  11. package/dist/js/modern/analyze/getHtmlTemplate.js +89 -49
  12. package/dist/js/modern/analyze/getServerRoutes.js +122 -126
  13. package/dist/js/modern/analyze/index.js +193 -159
  14. package/dist/js/modern/analyze/isDefaultExportFunction.js +30 -16
  15. package/dist/js/modern/analyze/makeLegalIdentifier.js +10 -11
  16. package/dist/js/modern/analyze/nestedRoutes.js +110 -53
  17. package/dist/js/modern/analyze/templates.js +190 -77
  18. package/dist/js/modern/analyze/utils.js +98 -51
  19. package/dist/js/modern/builder/builderPlugins/compatModern.js +124 -107
  20. package/dist/js/modern/builder/index.js +123 -86
  21. package/dist/js/modern/builder/loaders/routerLoader.js +17 -0
  22. package/dist/js/modern/builder/loaders/serverModuleLoader.js +7 -0
  23. package/dist/js/modern/builder/share.js +22 -20
  24. package/dist/js/modern/builder/webpackPlugins/htmlAsyncChunkPlugin.js +23 -22
  25. package/dist/js/modern/builder/webpackPlugins/htmlBottomTemplate.js +31 -27
  26. package/dist/js/modern/builder/webpackPlugins/routerPlugin.js +98 -84
  27. package/dist/js/modern/commands/build.js +67 -42
  28. package/dist/js/modern/commands/deploy.js +27 -4
  29. package/dist/js/modern/commands/dev.js +93 -47
  30. package/dist/js/modern/commands/index.js +1 -1
  31. package/dist/js/modern/commands/inspect.js +30 -5
  32. package/dist/js/modern/commands/start.js +37 -16
  33. package/dist/js/modern/config/default.js +103 -114
  34. package/dist/js/modern/config/index.js +8 -2
  35. package/dist/js/modern/config/initial/createHtmlConfig.js +5 -2
  36. package/dist/js/modern/config/initial/createOutputConfig.js +11 -9
  37. package/dist/js/modern/config/initial/createSourceConfig.js +5 -2
  38. package/dist/js/modern/config/initial/createToolsConfig.js +7 -6
  39. package/dist/js/modern/config/initial/index.js +9 -4
  40. package/dist/js/modern/config/initial/inits.js +109 -73
  41. package/dist/js/modern/config/initial/transformNormalizedConfig.js +6 -3
  42. package/dist/js/modern/defineConfig.js +26 -11
  43. package/dist/js/modern/exports/server.js +4 -1
  44. package/dist/js/modern/hooks.js +10 -3
  45. package/dist/js/modern/index.js +140 -89
  46. package/dist/js/modern/initialize/index.js +98 -51
  47. package/dist/js/modern/locale/en.js +20 -21
  48. package/dist/js/modern/locale/index.js +6 -6
  49. package/dist/js/modern/locale/zh.js +21 -22
  50. package/dist/js/modern/schema/Schema.js +6 -5
  51. package/dist/js/modern/schema/index.js +51 -100
  52. package/dist/js/modern/schema/legacy.js +96 -231
  53. package/dist/js/modern/types/config/index.js +0 -1
  54. package/dist/js/modern/types/index.js +0 -1
  55. package/dist/js/modern/types/legacyConfig/output.js +0 -1
  56. package/dist/js/modern/utils/commands.js +5 -2
  57. package/dist/js/modern/utils/config.js +102 -41
  58. package/dist/js/modern/utils/createFileWatcher.js +84 -51
  59. package/dist/js/modern/utils/createServer.js +63 -17
  60. package/dist/js/modern/utils/getSpecifiedEntries.js +46 -19
  61. package/dist/js/modern/utils/language.js +6 -3
  62. package/dist/js/modern/utils/printInstructions.js +27 -8
  63. package/dist/js/modern/utils/restart.js +43 -16
  64. package/dist/js/modern/utils/routes.js +29 -12
  65. package/dist/js/node/analyze/constants.js +54 -35
  66. package/dist/js/node/analyze/generateCode.js +290 -228
  67. package/dist/js/node/analyze/getBundleEntry.js +55 -44
  68. package/dist/js/node/analyze/getClientRoutes/getRoutes.js +132 -76
  69. package/dist/js/node/analyze/getClientRoutes/getRoutesLegacy.js +128 -74
  70. package/dist/js/node/analyze/getClientRoutes/index.js +23 -17
  71. package/dist/js/node/analyze/getClientRoutes/utils.js +44 -21
  72. package/dist/js/node/analyze/getFileSystemEntry.js +70 -39
  73. package/dist/js/node/analyze/getHtmlTemplate.js +116 -61
  74. package/dist/js/node/analyze/getServerRoutes.js +143 -137
  75. package/dist/js/node/analyze/index.js +240 -174
  76. package/dist/js/node/analyze/isDefaultExportFunction.js +55 -26
  77. package/dist/js/node/analyze/makeLegalIdentifier.js +27 -15
  78. package/dist/js/node/analyze/nestedRoutes.js +140 -67
  79. package/dist/js/node/analyze/templates.js +211 -84
  80. package/dist/js/node/analyze/utils.js +123 -62
  81. package/dist/js/node/builder/builderPlugins/compatModern.js +152 -120
  82. package/dist/js/node/builder/index.js +151 -95
  83. package/dist/js/node/builder/loaders/routerLoader.js +36 -0
  84. package/dist/js/node/builder/loaders/serverModuleLoader.js +26 -0
  85. package/dist/js/node/builder/share.js +45 -25
  86. package/dist/js/node/builder/webpackPlugins/htmlAsyncChunkPlugin.js +39 -26
  87. package/dist/js/node/builder/webpackPlugins/htmlBottomTemplate.js +47 -31
  88. package/dist/js/node/builder/webpackPlugins/routerPlugin.js +116 -90
  89. package/dist/js/node/commands/build.js +89 -52
  90. package/dist/js/node/commands/deploy.js +45 -10
  91. package/dist/js/node/commands/dev.js +115 -61
  92. package/dist/js/node/commands/index.js +19 -38
  93. package/dist/js/node/commands/inspect.js +48 -11
  94. package/dist/js/node/commands/start.js +65 -27
  95. package/dist/js/node/config/default.js +119 -118
  96. package/dist/js/node/config/index.js +25 -29
  97. package/dist/js/node/config/initial/createHtmlConfig.js +22 -6
  98. package/dist/js/node/config/initial/createOutputConfig.js +28 -13
  99. package/dist/js/node/config/initial/createSourceConfig.js +22 -6
  100. package/dist/js/node/config/initial/createToolsConfig.js +24 -10
  101. package/dist/js/node/config/initial/index.js +28 -17
  102. package/dist/js/node/config/initial/inits.js +126 -81
  103. package/dist/js/node/config/initial/transformNormalizedConfig.js +31 -15
  104. package/dist/js/node/defineConfig.js +43 -17
  105. package/dist/js/node/exports/server.js +21 -10
  106. package/dist/js/node/hooks.js +44 -29
  107. package/dist/js/node/index.js +190 -130
  108. package/dist/js/node/initialize/index.js +116 -61
  109. package/dist/js/node/locale/en.js +36 -25
  110. package/dist/js/node/locale/index.js +27 -15
  111. package/dist/js/node/locale/zh.js +37 -26
  112. package/dist/js/node/schema/Schema.js +23 -10
  113. package/dist/js/node/schema/index.js +77 -114
  114. package/dist/js/node/schema/legacy.js +117 -240
  115. package/dist/js/node/types/config/index.js +17 -16
  116. package/dist/js/node/types/index.js +19 -38
  117. package/dist/js/node/types/legacyConfig/output.js +0 -5
  118. package/dist/js/node/utils/commands.js +21 -6
  119. package/dist/js/node/utils/config.js +120 -51
  120. package/dist/js/node/utils/createFileWatcher.js +104 -60
  121. package/dist/js/node/utils/createServer.js +86 -25
  122. package/dist/js/node/utils/getSpecifiedEntries.js +64 -25
  123. package/dist/js/node/utils/language.js +24 -8
  124. package/dist/js/node/utils/printInstructions.js +47 -16
  125. package/dist/js/node/utils/restart.js +61 -21
  126. package/dist/js/node/utils/routes.js +53 -18
  127. package/dist/js/treeshaking/analyze/constants.js +28 -16
  128. package/dist/js/treeshaking/analyze/generateCode.js +604 -355
  129. package/dist/js/treeshaking/analyze/getBundleEntry.js +52 -63
  130. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutes.js +214 -168
  131. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutesLegacy.js +215 -169
  132. package/dist/js/treeshaking/analyze/getClientRoutes/index.js +3 -2
  133. package/dist/js/treeshaking/analyze/getClientRoutes/utils.js +19 -20
  134. package/dist/js/treeshaking/analyze/getFileSystemEntry.js +89 -86
  135. package/dist/js/treeshaking/analyze/getHtmlTemplate.js +298 -125
  136. package/dist/js/treeshaking/analyze/getServerRoutes.js +210 -146
  137. package/dist/js/treeshaking/analyze/index.js +558 -303
  138. package/dist/js/treeshaking/analyze/isDefaultExportFunction.js +45 -26
  139. package/dist/js/treeshaking/analyze/makeLegalIdentifier.js +13 -16
  140. package/dist/js/treeshaking/analyze/nestedRoutes.js +414 -160
  141. package/dist/js/treeshaking/analyze/templates.js +432 -161
  142. package/dist/js/treeshaking/analyze/utils.js +361 -80
  143. package/dist/js/treeshaking/builder/builderPlugins/compatModern.js +281 -195
  144. package/dist/js/treeshaking/builder/index.js +371 -165
  145. package/dist/js/treeshaking/builder/loaders/routerLoader.js +13 -0
  146. package/dist/js/treeshaking/builder/loaders/serverModuleLoader.js +5 -0
  147. package/dist/js/treeshaking/builder/share.js +41 -44
  148. package/dist/js/treeshaking/builder/webpackPlugins/htmlAsyncChunkPlugin.js +108 -44
  149. package/dist/js/treeshaking/builder/webpackPlugins/htmlBottomTemplate.js +70 -39
  150. package/dist/js/treeshaking/builder/webpackPlugins/routerPlugin.js +332 -112
  151. package/dist/js/treeshaking/commands/build.js +286 -88
  152. package/dist/js/treeshaking/commands/deploy.js +153 -25
  153. package/dist/js/treeshaking/commands/dev.js +318 -132
  154. package/dist/js/treeshaking/commands/index.js +1 -1
  155. package/dist/js/treeshaking/commands/inspect.js +147 -32
  156. package/dist/js/treeshaking/commands/start.js +190 -68
  157. package/dist/js/treeshaking/config/default.js +210 -199
  158. package/dist/js/treeshaking/config/index.js +3 -2
  159. package/dist/js/treeshaking/config/initial/createHtmlConfig.js +19 -31
  160. package/dist/js/treeshaking/config/initial/createOutputConfig.js +43 -67
  161. package/dist/js/treeshaking/config/initial/createSourceConfig.js +37 -40
  162. package/dist/js/treeshaking/config/initial/createToolsConfig.js +23 -38
  163. package/dist/js/treeshaking/config/initial/index.js +10 -9
  164. package/dist/js/treeshaking/config/initial/inits.js +205 -106
  165. package/dist/js/treeshaking/config/initial/transformNormalizedConfig.js +27 -34
  166. package/dist/js/treeshaking/defineConfig.js +60 -13
  167. package/dist/js/treeshaking/exports/server.js +2 -1
  168. package/dist/js/treeshaking/hooks.js +26 -25
  169. package/dist/js/treeshaking/index.js +465 -257
  170. package/dist/js/treeshaking/initialize/index.js +290 -112
  171. package/dist/js/treeshaking/locale/en.js +34 -33
  172. package/dist/js/treeshaking/locale/index.js +5 -5
  173. package/dist/js/treeshaking/locale/zh.js +34 -33
  174. package/dist/js/treeshaking/schema/Schema.js +267 -69
  175. package/dist/js/treeshaking/schema/index.js +165 -121
  176. package/dist/js/treeshaking/schema/legacy.js +323 -256
  177. package/dist/js/treeshaking/types/config/deploy.js +1 -0
  178. package/dist/js/treeshaking/types/config/dev.js +1 -0
  179. package/dist/js/treeshaking/types/config/experiments.js +1 -0
  180. package/dist/js/treeshaking/types/config/html.js +1 -0
  181. package/dist/js/treeshaking/types/config/index.js +0 -1
  182. package/dist/js/treeshaking/types/config/output.js +1 -0
  183. package/dist/js/treeshaking/types/config/performance.js +1 -0
  184. package/dist/js/treeshaking/types/config/security.js +1 -0
  185. package/dist/js/treeshaking/types/config/source.js +1 -0
  186. package/dist/js/treeshaking/types/config/tools.js +1 -0
  187. package/dist/js/treeshaking/types/hooks.js +1 -0
  188. package/dist/js/treeshaking/types/index.js +0 -1
  189. package/dist/js/treeshaking/types/legacyConfig/deploy.js +1 -0
  190. package/dist/js/treeshaking/types/legacyConfig/dev.js +1 -0
  191. package/dist/js/treeshaking/types/legacyConfig/index.js +1 -0
  192. package/dist/js/treeshaking/types/legacyConfig/output.js +1 -1
  193. package/dist/js/treeshaking/types/legacyConfig/source.js +1 -0
  194. package/dist/js/treeshaking/types/legacyConfig/tools.js +1 -0
  195. package/dist/js/treeshaking/utils/commands.js +6 -5
  196. package/dist/js/treeshaking/utils/config.js +295 -117
  197. package/dist/js/treeshaking/utils/createFileWatcher.js +278 -118
  198. package/dist/js/treeshaking/utils/createServer.js +252 -67
  199. package/dist/js/treeshaking/utils/getSpecifiedEntries.js +182 -55
  200. package/dist/js/treeshaking/utils/language.js +6 -5
  201. package/dist/js/treeshaking/utils/printInstructions.js +151 -29
  202. package/dist/js/treeshaking/utils/restart.js +184 -42
  203. package/dist/js/treeshaking/utils/routes.js +151 -27
  204. package/dist/js/treeshaking/utils/types.js +1 -0
  205. package/dist/types/analyze/constants.d.ts +2 -0
  206. package/dist/types/analyze/index.d.ts +2 -0
  207. package/dist/types/analyze/templates.d.ts +8 -7
  208. package/dist/types/analyze/utils.d.ts +9 -1
  209. package/dist/types/builder/builderPlugins/compatModern.d.ts +2 -1
  210. package/dist/types/builder/index.d.ts +2 -2
  211. package/dist/types/builder/loaders/routerLoader.d.ts +3 -0
  212. package/dist/types/builder/loaders/serverModuleLoader.d.ts +3 -0
  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 +2 -0
  216. package/dist/types/initialize/index.d.ts +2 -0
  217. package/dist/types/types/config/index.d.ts +1 -0
  218. package/dist/types/types/config/output.d.ts +0 -1
  219. package/dist/types/types/config/source.d.ts +1 -0
  220. package/dist/types/types/config/tools.d.ts +10 -1
  221. package/dist/types/types/hooks.d.ts +2 -1
  222. package/dist/types/types/legacyConfig/dev.d.ts +1 -0
  223. package/dist/types/types/legacyConfig/output.d.ts +1 -1
  224. package/dist/types/types/legacyConfig/source.d.ts +1 -0
  225. package/dist/types/types/legacyConfig/tools.d.ts +1 -0
  226. package/dist/types/utils/config.d.ts +1 -0
  227. package/dist/types/utils/createFileWatcher.d.ts +2 -1
  228. package/dist/types/utils/createServer.d.ts +1 -0
  229. package/dist/types/utils/restart.d.ts +1 -1
  230. package/lib/types.d.ts +1 -1
  231. package/package.json +27 -23
@@ -1,213 +1,299 @@
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 builderNormalizedConfig = api.getNormalizedConfig();
108
+ if (target === "node") {
109
+ chain.name("server");
110
+ } else if (target === "modern-web") {
111
+ chain.name("modern");
112
+ } else {
113
+ chain.name("client");
114
+ }
115
+ chain.resolve.modules.add("node_modules").add(join(api.context.rootPath, "node_modules"));
116
+ if (target === "node") {
117
+ applyNodeCompat(chain, modernConfig, isProd);
118
+ }
119
+ if (isHtmlEnabled(builderNormalizedConfig, target)) {
120
+ applyBottomHtmlWebpackPlugin({
121
+ api: api,
122
+ chain: chain,
123
+ CHAIN_ID: CHAIN_ID,
124
+ appContext: appContext,
125
+ modernConfig: modernConfig
126
+ });
127
+ applyAsyncChunkHtmlPlugin({
128
+ chain: chain,
129
+ CHAIN_ID: CHAIN_ID,
130
+ modernConfig: modernConfig
131
+ });
132
+ }
133
+ if (chain.plugins.has(CHAIN_ID.PLUGIN.COPY)) {
134
+ var defaultCopyPattern = createCopyPattern(appContext, modernConfig, "public", chain);
135
+ chain.plugin(CHAIN_ID.PLUGIN.COPY).tap(function(args) {
136
+ var ref;
137
+ return [
138
+ {
139
+ patterns: _toConsumableArray(((ref = args[0]) === null || ref === void 0 ? void 0 : ref.patterns) || []).concat([
140
+ defaultCopyPattern
141
+ ])
142
+ }
143
+ ];
144
+ });
145
+ }
146
+ var entrypoints = appContext.entrypoints;
147
+ var existNestedRoutes = entrypoints.some(function(entrypoint) {
148
+ return entrypoint.nestedRoutesEntry;
149
+ });
150
+ var routerManifest = Boolean(modernConfig.runtime.router.minifest);
151
+ if (existNestedRoutes || routerManifest) {
152
+ chain.plugin("route-plugin").use(RouterPlugin);
153
+ }
154
+ if (target !== "node") {
155
+ var bareServerModuleReg = /\.(server|node)\.[tj]sx?$/;
156
+ chain.module.rule(CHAIN_ID.RULE.JS).exclude.add(bareServerModuleReg);
157
+ chain.module.rule("bare-server-module").test(bareServerModuleReg).use("server-module-loader").loader(require.resolve("../loaders/serverModuleLoader"));
158
+ }
159
+ });
160
+ if (options) {
161
+ applyCallbacks(api, options);
25
162
  }
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
163
  }
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);
164
+ };
165
+ };
166
+ function applyCallbacks(api, options) {
167
+ options.onAfterBuild && api.onAfterBuild(options.onAfterBuild);
168
+ options.onAfterCreateCompiler && api.onAfterCreateCompiler(options.onAfterCreateCompiler);
169
+ options.onAfterStartDevServer && api.onAfterStartDevServer(options.onAfterStartDevServer);
170
+ options.onBeforeBuild && api.onBeforeBuild(options.onBeforeBuild);
171
+ options.onBeforeCreateCompiler && api.onBeforeCreateCompiler(options.onBeforeCreateCompiler);
172
+ options.onBeforeStartDevServer && api.onBeforeStartDevServer(options.onBeforeStartDevServer);
173
+ options.onDevCompileDone && api.onDevCompileDone(options.onDevCompileDone);
174
+ options.onExit && api.onExit(options.onExit);
175
+ }
176
+ function applyNodeCompat(chain, modernConfig, isProd) {
177
+ var filterEntriesBySSRConfig = function filterEntriesBySSRConfig(isProd2, chain2, serverConfig, outputConfig) {
178
+ var ref;
179
+ var entries = chain2.entryPoints.entries();
180
+ 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")) {
181
+ return;
48
182
  }
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
- });
183
+ var entryNames = Object.keys(entries);
184
+ if (isProd2 && entryNames.length === 1 && (outputConfig === null || outputConfig === void 0 ? void 0 : outputConfig.ssg)) {
185
+ return;
62
186
  }
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
- });
187
+ var ssgEntries = [];
188
+ if (isProd2 && (outputConfig === null || outputConfig === void 0 ? void 0 : outputConfig.ssg)) {
189
+ var ssg = outputConfig.ssg;
190
+ entryNames.forEach(function(name) {
191
+ if (ssg[name]) {
192
+ ssgEntries.push(name);
193
+ }
194
+ });
73
195
  }
74
- var entrypoints = appContext.entrypoints;
75
- var existNestedRoutes = entrypoints.some(function (entrypoint) {
76
- return entrypoint.nestedRoutesEntry;
196
+ var ref1 = serverConfig || {}, ssr = ref1.ssr, ssrByEntries = ref1.ssrByEntries;
197
+ entryNames.forEach(function(name) {
198
+ 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]))) {
199
+ chain2.entryPoints.delete(name);
200
+ }
77
201
  });
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
- }
202
+ };
203
+ for(var _i = 0, _iter = [
204
+ ".node.js",
205
+ ".node.jsx",
206
+ ".node.ts",
207
+ ".node.tsx",
208
+ ".server.js",
209
+ ".server.ts",
210
+ ".server.ts",
211
+ ".server.tsx"
212
+ ]; _i < _iter.length; _i++){
213
+ var ext = _iter[_i];
214
+ chain.resolve.extensions.prepend(ext);
89
215
  }
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);
216
+ filterEntriesBySSRConfig(isProd, chain, modernConfig.server, modernConfig.output);
105
217
  }
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);
218
+ function applyBottomHtmlWebpackPlugin(param) {
219
+ var api = param.api, chain = param.chain, modernConfig = param.modernConfig, appContext = param.appContext, CHAIN_ID = param.CHAIN_ID;
220
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
221
+ try {
222
+ var _loop = function() {
223
+ var entryName = _step.value;
224
+ var baseTemplateParams = _objectSpread({
225
+ entryName: entryName,
226
+ title: getEntryOptions(entryName, modernConfig.html.title, modernConfig.html.titleByEntries, appContext.packageName),
227
+ mountId: modernConfig.html.mountId
228
+ }, getEntryOptions(entryName, modernConfig.html.templateParameters, modernConfig.html.templateParametersByEntries, appContext.packageName));
229
+ chain.plugin("".concat(CHAIN_ID.PLUGIN.HTML, "-").concat(entryName)).tap(function(args) {
230
+ return [
231
+ _objectSpreadProps(_objectSpread({}, args[0] || {}), {
232
+ __internal__: true,
233
+ bottomTemplate: appContext.htmlTemplates["__".concat(entryName, "-bottom__")] && lodashTemplate(appContext.htmlTemplates["__".concat(entryName, "-bottom__")])(baseTemplateParams)
234
+ })
235
+ ];
236
+ });
237
+ };
238
+ for(var _iterator = Object.keys(api.context.entry)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
239
+ } catch (err) {
240
+ _didIteratorError = true;
241
+ _iteratorError = err;
242
+ } finally{
243
+ try {
244
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
245
+ _iterator.return();
246
+ }
247
+ } finally{
248
+ if (_didIteratorError) {
249
+ throw _iteratorError;
250
+ }
141
251
  }
142
- });
143
252
  }
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
- }
253
+ chain.plugin(CHAIN_ID.PLUGIN.BOTTOM_TEMPLATE).use(BottomTemplatePlugin, [
254
+ HtmlWebpackPlugin
255
+ ]);
153
256
  }
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])) {
257
+ var isStreamingSSR = function(userConfig) {
258
+ var isStreaming = function(ssr) {
259
+ return ssr && typeof ssr === "object" && ssr.mode === "stream";
260
+ };
261
+ var server = userConfig.server;
262
+ if (isStreaming(server.ssr)) {
200
263
  return true;
201
- }
202
264
  }
203
- }
204
- return false;
265
+ if ((server === null || server === void 0 ? void 0 : server.ssrByEntries) && typeof server.ssrByEntries === "object") {
266
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
267
+ try {
268
+ for(var _iterator = Object.keys(server.ssrByEntries)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
269
+ var name = _step.value;
270
+ if (isStreaming(server.ssrByEntries[name])) {
271
+ return true;
272
+ }
273
+ }
274
+ } catch (err) {
275
+ _didIteratorError = true;
276
+ _iteratorError = err;
277
+ } finally{
278
+ try {
279
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
280
+ _iterator.return();
281
+ }
282
+ } finally{
283
+ if (_didIteratorError) {
284
+ throw _iteratorError;
285
+ }
286
+ }
287
+ }
288
+ }
289
+ return false;
205
290
  };
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
- }
291
+ function applyAsyncChunkHtmlPlugin(param) {
292
+ var chain = param.chain, modernConfig = param.modernConfig, CHAIN_ID = param.CHAIN_ID;
293
+ if (isStreamingSSR(modernConfig)) {
294
+ chain.plugin(CHAIN_ID.PLUGIN.HTML_ASYNC_CHUNK).use(HtmlAsyncChunkPlugin, [
295
+ HtmlWebpackPlugin
296
+ ]);
297
+ }
298
+ }
299
+ export { PluginCompatModern };