@modern-js/app-tools 2.0.0-beta.3 → 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 (221) hide show
  1. package/dist/js/modern/analyze/constants.js +38 -18
  2. package/dist/js/modern/analyze/generateCode.js +261 -221
  3. package/dist/js/modern/analyze/getBundleEntry.js +31 -32
  4. package/dist/js/modern/analyze/getClientRoutes/getRoutes.js +93 -49
  5. package/dist/js/modern/analyze/getClientRoutes/getRoutesLegacy.js +89 -47
  6. package/dist/js/modern/analyze/getClientRoutes/index.js +6 -2
  7. package/dist/js/modern/analyze/getClientRoutes/utils.js +23 -10
  8. package/dist/js/modern/analyze/getFileSystemEntry.js +43 -22
  9. package/dist/js/modern/analyze/getHtmlTemplate.js +89 -49
  10. package/dist/js/modern/analyze/getServerRoutes.js +122 -126
  11. package/dist/js/modern/analyze/index.js +193 -159
  12. package/dist/js/modern/analyze/isDefaultExportFunction.js +30 -16
  13. package/dist/js/modern/analyze/makeLegalIdentifier.js +10 -11
  14. package/dist/js/modern/analyze/nestedRoutes.js +106 -60
  15. package/dist/js/modern/analyze/templates.js +161 -80
  16. package/dist/js/modern/analyze/utils.js +87 -66
  17. package/dist/js/modern/builder/builderPlugins/compatModern.js +121 -109
  18. package/dist/js/modern/builder/index.js +122 -83
  19. package/dist/js/modern/builder/loaders/routerLoader.js +9 -12
  20. package/dist/js/modern/builder/loaders/serverModuleLoader.js +4 -1
  21. package/dist/js/modern/builder/share.js +22 -20
  22. package/dist/js/modern/builder/webpackPlugins/htmlAsyncChunkPlugin.js +23 -22
  23. package/dist/js/modern/builder/webpackPlugins/htmlBottomTemplate.js +31 -27
  24. package/dist/js/modern/builder/webpackPlugins/routerPlugin.js +98 -84
  25. package/dist/js/modern/commands/build.js +67 -42
  26. package/dist/js/modern/commands/deploy.js +27 -4
  27. package/dist/js/modern/commands/dev.js +77 -27
  28. package/dist/js/modern/commands/index.js +1 -1
  29. package/dist/js/modern/commands/inspect.js +30 -5
  30. package/dist/js/modern/commands/start.js +37 -15
  31. package/dist/js/modern/config/default.js +103 -113
  32. package/dist/js/modern/config/index.js +8 -2
  33. package/dist/js/modern/config/initial/createHtmlConfig.js +5 -2
  34. package/dist/js/modern/config/initial/createOutputConfig.js +9 -10
  35. package/dist/js/modern/config/initial/createSourceConfig.js +5 -2
  36. package/dist/js/modern/config/initial/createToolsConfig.js +7 -6
  37. package/dist/js/modern/config/initial/index.js +9 -4
  38. package/dist/js/modern/config/initial/inits.js +109 -73
  39. package/dist/js/modern/config/initial/transformNormalizedConfig.js +6 -3
  40. package/dist/js/modern/defineConfig.js +26 -11
  41. package/dist/js/modern/exports/server.js +4 -1
  42. package/dist/js/modern/hooks.js +10 -3
  43. package/dist/js/modern/index.js +140 -89
  44. package/dist/js/modern/initialize/index.js +98 -51
  45. package/dist/js/modern/locale/en.js +20 -21
  46. package/dist/js/modern/locale/index.js +6 -6
  47. package/dist/js/modern/locale/zh.js +21 -22
  48. package/dist/js/modern/schema/Schema.js +6 -5
  49. package/dist/js/modern/schema/index.js +51 -100
  50. package/dist/js/modern/schema/legacy.js +96 -231
  51. package/dist/js/modern/types/config/index.js +0 -1
  52. package/dist/js/modern/types/index.js +0 -1
  53. package/dist/js/modern/types/legacyConfig/output.js +0 -1
  54. package/dist/js/modern/utils/commands.js +5 -2
  55. package/dist/js/modern/utils/config.js +102 -41
  56. package/dist/js/modern/utils/createFileWatcher.js +84 -51
  57. package/dist/js/modern/utils/createServer.js +63 -17
  58. package/dist/js/modern/utils/getSpecifiedEntries.js +46 -19
  59. package/dist/js/modern/utils/language.js +6 -3
  60. package/dist/js/modern/utils/printInstructions.js +27 -8
  61. package/dist/js/modern/utils/restart.js +43 -16
  62. package/dist/js/modern/utils/routes.js +29 -12
  63. package/dist/js/node/analyze/constants.js +54 -39
  64. package/dist/js/node/analyze/generateCode.js +281 -239
  65. package/dist/js/node/analyze/getBundleEntry.js +55 -44
  66. package/dist/js/node/analyze/getClientRoutes/getRoutes.js +132 -76
  67. package/dist/js/node/analyze/getClientRoutes/getRoutesLegacy.js +128 -74
  68. package/dist/js/node/analyze/getClientRoutes/index.js +23 -17
  69. package/dist/js/node/analyze/getClientRoutes/utils.js +44 -21
  70. package/dist/js/node/analyze/getFileSystemEntry.js +70 -39
  71. package/dist/js/node/analyze/getHtmlTemplate.js +116 -61
  72. package/dist/js/node/analyze/getServerRoutes.js +143 -137
  73. package/dist/js/node/analyze/index.js +240 -174
  74. package/dist/js/node/analyze/isDefaultExportFunction.js +55 -26
  75. package/dist/js/node/analyze/makeLegalIdentifier.js +27 -15
  76. package/dist/js/node/analyze/nestedRoutes.js +137 -75
  77. package/dist/js/node/analyze/templates.js +183 -89
  78. package/dist/js/node/analyze/utils.js +114 -81
  79. package/dist/js/node/builder/builderPlugins/compatModern.js +149 -122
  80. package/dist/js/node/builder/index.js +150 -92
  81. package/dist/js/node/builder/loaders/routerLoader.js +27 -18
  82. package/dist/js/node/builder/loaders/serverModuleLoader.js +22 -7
  83. package/dist/js/node/builder/share.js +45 -25
  84. package/dist/js/node/builder/webpackPlugins/htmlAsyncChunkPlugin.js +39 -26
  85. package/dist/js/node/builder/webpackPlugins/htmlBottomTemplate.js +47 -31
  86. package/dist/js/node/builder/webpackPlugins/routerPlugin.js +116 -90
  87. package/dist/js/node/commands/build.js +89 -52
  88. package/dist/js/node/commands/deploy.js +45 -10
  89. package/dist/js/node/commands/dev.js +99 -41
  90. package/dist/js/node/commands/index.js +19 -38
  91. package/dist/js/node/commands/inspect.js +48 -11
  92. package/dist/js/node/commands/start.js +65 -26
  93. package/dist/js/node/config/default.js +119 -117
  94. package/dist/js/node/config/index.js +25 -29
  95. package/dist/js/node/config/initial/createHtmlConfig.js +22 -6
  96. package/dist/js/node/config/initial/createOutputConfig.js +26 -14
  97. package/dist/js/node/config/initial/createSourceConfig.js +22 -6
  98. package/dist/js/node/config/initial/createToolsConfig.js +24 -10
  99. package/dist/js/node/config/initial/index.js +28 -17
  100. package/dist/js/node/config/initial/inits.js +126 -81
  101. package/dist/js/node/config/initial/transformNormalizedConfig.js +31 -15
  102. package/dist/js/node/defineConfig.js +43 -17
  103. package/dist/js/node/exports/server.js +21 -10
  104. package/dist/js/node/hooks.js +44 -29
  105. package/dist/js/node/index.js +190 -130
  106. package/dist/js/node/initialize/index.js +116 -61
  107. package/dist/js/node/locale/en.js +36 -25
  108. package/dist/js/node/locale/index.js +27 -15
  109. package/dist/js/node/locale/zh.js +37 -26
  110. package/dist/js/node/schema/Schema.js +23 -10
  111. package/dist/js/node/schema/index.js +77 -114
  112. package/dist/js/node/schema/legacy.js +117 -240
  113. package/dist/js/node/types/config/index.js +17 -16
  114. package/dist/js/node/types/index.js +19 -38
  115. package/dist/js/node/types/legacyConfig/output.js +0 -5
  116. package/dist/js/node/utils/commands.js +21 -6
  117. package/dist/js/node/utils/config.js +120 -51
  118. package/dist/js/node/utils/createFileWatcher.js +104 -61
  119. package/dist/js/node/utils/createServer.js +86 -25
  120. package/dist/js/node/utils/getSpecifiedEntries.js +64 -25
  121. package/dist/js/node/utils/language.js +24 -8
  122. package/dist/js/node/utils/printInstructions.js +47 -16
  123. package/dist/js/node/utils/restart.js +61 -21
  124. package/dist/js/node/utils/routes.js +53 -18
  125. package/dist/js/treeshaking/analyze/constants.js +28 -18
  126. package/dist/js/treeshaking/analyze/generateCode.js +599 -406
  127. package/dist/js/treeshaking/analyze/getBundleEntry.js +52 -63
  128. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutes.js +214 -168
  129. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutesLegacy.js +215 -169
  130. package/dist/js/treeshaking/analyze/getClientRoutes/index.js +3 -2
  131. package/dist/js/treeshaking/analyze/getClientRoutes/utils.js +19 -20
  132. package/dist/js/treeshaking/analyze/getFileSystemEntry.js +89 -86
  133. package/dist/js/treeshaking/analyze/getHtmlTemplate.js +298 -125
  134. package/dist/js/treeshaking/analyze/getServerRoutes.js +210 -147
  135. package/dist/js/treeshaking/analyze/index.js +558 -303
  136. package/dist/js/treeshaking/analyze/isDefaultExportFunction.js +45 -26
  137. package/dist/js/treeshaking/analyze/makeLegalIdentifier.js +13 -16
  138. package/dist/js/treeshaking/analyze/nestedRoutes.js +411 -200
  139. package/dist/js/treeshaking/analyze/templates.js +433 -236
  140. package/dist/js/treeshaking/analyze/utils.js +358 -153
  141. package/dist/js/treeshaking/builder/builderPlugins/compatModern.js +281 -200
  142. package/dist/js/treeshaking/builder/index.js +371 -163
  143. package/dist/js/treeshaking/builder/loaders/routerLoader.js +11 -12
  144. package/dist/js/treeshaking/builder/loaders/serverModuleLoader.js +3 -2
  145. package/dist/js/treeshaking/builder/share.js +41 -44
  146. package/dist/js/treeshaking/builder/webpackPlugins/htmlAsyncChunkPlugin.js +108 -44
  147. package/dist/js/treeshaking/builder/webpackPlugins/htmlBottomTemplate.js +70 -39
  148. package/dist/js/treeshaking/builder/webpackPlugins/routerPlugin.js +332 -112
  149. package/dist/js/treeshaking/commands/build.js +286 -88
  150. package/dist/js/treeshaking/commands/deploy.js +153 -25
  151. package/dist/js/treeshaking/commands/dev.js +318 -131
  152. package/dist/js/treeshaking/commands/index.js +1 -1
  153. package/dist/js/treeshaking/commands/inspect.js +147 -32
  154. package/dist/js/treeshaking/commands/start.js +190 -67
  155. package/dist/js/treeshaking/config/default.js +210 -198
  156. package/dist/js/treeshaking/config/index.js +3 -2
  157. package/dist/js/treeshaking/config/initial/createHtmlConfig.js +19 -31
  158. package/dist/js/treeshaking/config/initial/createOutputConfig.js +43 -70
  159. package/dist/js/treeshaking/config/initial/createSourceConfig.js +37 -40
  160. package/dist/js/treeshaking/config/initial/createToolsConfig.js +23 -38
  161. package/dist/js/treeshaking/config/initial/index.js +10 -9
  162. package/dist/js/treeshaking/config/initial/inits.js +205 -106
  163. package/dist/js/treeshaking/config/initial/transformNormalizedConfig.js +27 -34
  164. package/dist/js/treeshaking/defineConfig.js +60 -13
  165. package/dist/js/treeshaking/exports/server.js +2 -1
  166. package/dist/js/treeshaking/hooks.js +26 -25
  167. package/dist/js/treeshaking/index.js +465 -257
  168. package/dist/js/treeshaking/initialize/index.js +290 -112
  169. package/dist/js/treeshaking/locale/en.js +34 -33
  170. package/dist/js/treeshaking/locale/index.js +5 -5
  171. package/dist/js/treeshaking/locale/zh.js +34 -33
  172. package/dist/js/treeshaking/schema/Schema.js +267 -69
  173. package/dist/js/treeshaking/schema/index.js +165 -121
  174. package/dist/js/treeshaking/schema/legacy.js +323 -256
  175. package/dist/js/treeshaking/types/config/deploy.js +1 -0
  176. package/dist/js/treeshaking/types/config/dev.js +1 -0
  177. package/dist/js/treeshaking/types/config/experiments.js +1 -0
  178. package/dist/js/treeshaking/types/config/html.js +1 -0
  179. package/dist/js/treeshaking/types/config/index.js +0 -1
  180. package/dist/js/treeshaking/types/config/output.js +1 -0
  181. package/dist/js/treeshaking/types/config/performance.js +1 -0
  182. package/dist/js/treeshaking/types/config/security.js +1 -0
  183. package/dist/js/treeshaking/types/config/source.js +1 -0
  184. package/dist/js/treeshaking/types/config/tools.js +1 -0
  185. package/dist/js/treeshaking/types/hooks.js +1 -0
  186. package/dist/js/treeshaking/types/index.js +0 -1
  187. package/dist/js/treeshaking/types/legacyConfig/deploy.js +1 -0
  188. package/dist/js/treeshaking/types/legacyConfig/dev.js +1 -0
  189. package/dist/js/treeshaking/types/legacyConfig/index.js +1 -0
  190. package/dist/js/treeshaking/types/legacyConfig/output.js +1 -1
  191. package/dist/js/treeshaking/types/legacyConfig/source.js +1 -0
  192. package/dist/js/treeshaking/types/legacyConfig/tools.js +1 -0
  193. package/dist/js/treeshaking/utils/commands.js +6 -5
  194. package/dist/js/treeshaking/utils/config.js +295 -117
  195. package/dist/js/treeshaking/utils/createFileWatcher.js +278 -118
  196. package/dist/js/treeshaking/utils/createServer.js +252 -67
  197. package/dist/js/treeshaking/utils/getSpecifiedEntries.js +182 -55
  198. package/dist/js/treeshaking/utils/language.js +6 -5
  199. package/dist/js/treeshaking/utils/printInstructions.js +151 -29
  200. package/dist/js/treeshaking/utils/restart.js +184 -42
  201. package/dist/js/treeshaking/utils/routes.js +151 -27
  202. package/dist/js/treeshaking/utils/types.js +1 -0
  203. package/dist/types/analyze/index.d.ts +2 -0
  204. package/dist/types/builder/builderPlugins/compatModern.d.ts +2 -1
  205. package/dist/types/builder/index.d.ts +2 -2
  206. package/dist/types/builder/webpackPlugins/routerPlugin.d.ts +1 -7
  207. package/dist/types/defineConfig.d.ts +1 -0
  208. package/dist/types/index.d.ts +2 -0
  209. package/dist/types/initialize/index.d.ts +2 -0
  210. package/dist/types/types/config/index.d.ts +1 -0
  211. package/dist/types/types/config/output.d.ts +0 -1
  212. package/dist/types/types/config/source.d.ts +1 -0
  213. package/dist/types/types/config/tools.d.ts +2 -0
  214. package/dist/types/types/legacyConfig/dev.d.ts +1 -0
  215. package/dist/types/types/legacyConfig/output.d.ts +1 -1
  216. package/dist/types/types/legacyConfig/source.d.ts +1 -0
  217. package/dist/types/types/legacyConfig/tools.d.ts +1 -0
  218. package/dist/types/utils/config.d.ts +1 -0
  219. package/dist/types/utils/createServer.d.ts +1 -0
  220. package/dist/types/utils/restart.d.ts +1 -1
  221. package/package.json +9 -8
@@ -1,218 +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
163
  }
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
- }
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
- if (target !== 'node') {
82
- var bareServerModuleReg = /\.(server|node)\.[tj]sx?$/;
83
- 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"));
85
- }
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';
89
- }
90
- });
91
- if (options) {
92
- applyCallbacks(api, options);
93
- }
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);
94
215
  }
95
- };
96
- };
97
-
98
- /**
99
- * register builder hooks callback
100
- */
101
- function applyCallbacks(api, options) {
102
- options.onAfterBuild && api.onAfterBuild(options.onAfterBuild);
103
- options.onAfterCreateCompiler && api.onAfterCreateCompiler(options.onAfterCreateCompiler);
104
- options.onAfterStartDevServer && api.onAfterStartDevServer(options.onAfterStartDevServer);
105
- options.onBeforeBuild && api.onBeforeBuild(options.onBeforeBuild);
106
- options.onBeforeCreateCompiler && api.onBeforeCreateCompiler(options.onBeforeCreateCompiler);
107
- options.onBeforeStartDevServer && api.onBeforeStartDevServer(options.onBeforeStartDevServer);
108
- options.onDevCompileDone && api.onDevCompileDone(options.onDevCompileDone);
109
- options.onExit && api.onExit(options.onExit);
216
+ filterEntriesBySSRConfig(isProd, chain, modernConfig.server, modernConfig.output);
110
217
  }
111
-
112
- /**
113
- * compat some config, if target is `node`
114
- */
115
- function applyNodeCompat(chain, modernConfig, isProd) {
116
- // apply node resolve extensions
117
- for (var _i = 0, _arr = ['.node.js', '.node.jsx', '.node.ts', '.node.tsx', '.server.js', '.server.ts', '.server.ts', '.server.tsx']; _i < _arr.length; _i++) {
118
- var ext = _arr[_i];
119
- chain.resolve.extensions.prepend(ext);
120
- }
121
-
122
- // apply filterEntriesBySSRConfig
123
- filterEntriesBySSRConfig(isProd, chain, modernConfig.server, modernConfig.output);
124
- function filterEntriesBySSRConfig(isProd, chain, serverConfig, outputConfig) {
125
- var _outputConfig$ssg;
126
- var entries = chain.entryPoints.entries();
127
- // if prod and ssg config is true or function
128
- 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')) {
129
- return;
130
- }
131
-
132
- // if single entry has ssg config
133
- // `ssg: {}` is not allowed if multi entry
134
- var entryNames = Object.keys(entries);
135
- if (isProd && entryNames.length === 1 && outputConfig !== null && outputConfig !== void 0 && outputConfig.ssg) {
136
- return;
137
- }
138
-
139
- // collect all ssg entries
140
- var ssgEntries = [];
141
- if (isProd && outputConfig !== null && outputConfig !== void 0 && outputConfig.ssg) {
142
- var ssg = outputConfig.ssg;
143
- entryNames.forEach(function (name) {
144
- if (ssg[name]) {
145
- 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
+ }
146
251
  }
147
- });
148
252
  }
149
- var _ref2 = serverConfig || {},
150
- ssr = _ref2.ssr,
151
- ssrByEntries = _ref2.ssrByEntries;
152
- entryNames.forEach(function (name) {
153
- if (!ssgEntries.includes(name) && (ssr && (ssrByEntries === null || ssrByEntries === void 0 ? void 0 : ssrByEntries[name]) === false || !ssr && !(ssrByEntries !== null && ssrByEntries !== void 0 && ssrByEntries[name]))) {
154
- chain.entryPoints["delete"](name);
155
- }
156
- });
157
- }
253
+ chain.plugin(CHAIN_ID.PLUGIN.BOTTOM_TEMPLATE).use(BottomTemplatePlugin, [
254
+ HtmlWebpackPlugin
255
+ ]);
158
256
  }
159
-
160
- /**
161
- * inject bottom template
162
- */
163
- function applyBottomHtmlWebpackPlugin(_ref3) {
164
- var api = _ref3.api,
165
- chain = _ref3.chain,
166
- modernConfig = _ref3.modernConfig,
167
- appContext = _ref3.appContext,
168
- CHAIN_ID = _ref3.CHAIN_ID;
169
- var _loop = function _loop() {
170
- var entryName = _Object$keys[_i2];
171
- // FIXME: the only need necessary
172
- var baseTemplateParams = _objectSpread({
173
- entryName: entryName,
174
- title: getEntryOptions(entryName, modernConfig.html.title, modernConfig.html.titleByEntries, appContext.packageName),
175
- mountId: modernConfig.html.mountId
176
- }, getEntryOptions(entryName, modernConfig.html.templateParameters, modernConfig.html.templateParametersByEntries, appContext.packageName));
177
- chain.plugin("".concat(CHAIN_ID.PLUGIN.HTML, "-").concat(entryName)).tap(function (args) {
178
- return [_objectSpread(_objectSpread({}, args[0] || {}), {}, {
179
- __internal__: true,
180
- bottomTemplate: appContext.htmlTemplates["__".concat(entryName, "-bottom__")] && lodashTemplate(appContext.htmlTemplates["__".concat(entryName, "-bottom__")])(baseTemplateParams)
181
- })];
182
- });
183
- };
184
- // inject bottomTemplate into html-webpack-plugin
185
- for (var _i2 = 0, _Object$keys = Object.keys(api.context.entry); _i2 < _Object$keys.length; _i2++) {
186
- _loop();
187
- }
188
- chain.plugin(CHAIN_ID.PLUGIN.BOTTOM_TEMPLATE).use(BottomTemplatePlugin, [HtmlWebpackPlugin]);
189
- }
190
- var isStreamingSSR = function isStreamingSSR(userConfig) {
191
- var isStreaming = function isStreaming(ssr) {
192
- return ssr && _typeof(ssr) === 'object' && ssr.mode === 'stream';
193
- };
194
- var server = userConfig.server;
195
- if (isStreaming(server.ssr)) {
196
- return true;
197
- }
198
-
199
- // Since we cannot apply different plugins for different entries,
200
- // we regard the whole app as streaming ssr only if one entry meets the requirement.
201
- if (server !== null && server !== void 0 && server.ssrByEntries && _typeof(server.ssrByEntries) === 'object') {
202
- for (var _i3 = 0, _Object$keys2 = Object.keys(server.ssrByEntries); _i3 < _Object$keys2.length; _i3++) {
203
- var name = _Object$keys2[_i3];
204
- 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)) {
205
263
  return true;
206
- }
207
264
  }
208
- }
209
- 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;
210
290
  };
211
- function applyAsyncChunkHtmlPlugin(_ref4) {
212
- var chain = _ref4.chain,
213
- modernConfig = _ref4.modernConfig,
214
- CHAIN_ID = _ref4.CHAIN_ID;
215
- if (isStreamingSSR(modernConfig)) {
216
- chain.plugin(CHAIN_ID.PLUGIN.HTML_ASYNC_CHUNK).use(HtmlAsyncChunkPlugin, [HtmlWebpackPlugin]);
217
- }
218
- }
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 };