@modern-js/app-tools 2.47.1 → 2.48.1

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 (33) hide show
  1. package/bin/modern.js +7 -1
  2. package/dist/cjs/builder/generator/index.js +3 -2
  3. package/dist/cjs/builder/shared/builderPlugins/adapterSSR.js +2 -1
  4. package/dist/cjs/builder/shared/builderPlugins/adapterWorker.js +49 -0
  5. package/dist/cjs/builder/shared/builderPlugins/index.js +3 -1
  6. package/dist/cjs/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +0 -3
  7. package/dist/cjs/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +2 -5
  8. package/dist/cjs/builder/shared/bundlerPlugins/RouterPlugin.js +1 -8
  9. package/dist/cjs/index.js +5 -5
  10. package/dist/esm/builder/generator/index.js +4 -3
  11. package/dist/esm/builder/shared/builderPlugins/adapterSSR.js +2 -1
  12. package/dist/esm/builder/shared/builderPlugins/adapterWorker.js +41 -0
  13. package/dist/esm/builder/shared/builderPlugins/index.js +1 -0
  14. package/dist/esm/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +35 -43
  15. package/dist/esm/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +24 -32
  16. package/dist/esm/builder/shared/bundlerPlugins/RouterPlugin.js +240 -261
  17. package/dist/esm/index.js +20 -19
  18. package/dist/esm-node/builder/generator/index.js +3 -2
  19. package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.js +2 -1
  20. package/dist/esm-node/builder/shared/builderPlugins/adapterWorker.js +25 -0
  21. package/dist/esm-node/builder/shared/builderPlugins/index.js +1 -0
  22. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +0 -3
  23. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +2 -5
  24. package/dist/esm-node/builder/shared/bundlerPlugins/RouterPlugin.js +1 -8
  25. package/dist/esm-node/index.js +6 -6
  26. package/dist/types/builder/shared/builderPlugins/adapterWorker.d.ts +2 -0
  27. package/dist/types/builder/shared/builderPlugins/index.d.ts +1 -0
  28. package/dist/types/config/legacy/index.d.ts +1 -1
  29. package/dist/types/defineConfig.d.ts +1 -1
  30. package/dist/types/types/config/index.d.ts +4 -3
  31. package/dist/types/types/config/tools.d.ts +5 -3
  32. package/dist/types/types/index.d.ts +2 -2
  33. package/package.json +21 -23
@@ -1,7 +1,5 @@
1
1
  import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
2
  import { _ as _class_call_check } from "@swc/helpers/_/_class_call_check";
3
- import { _ as _create_class } from "@swc/helpers/_/_create_class";
4
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
5
3
  import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
6
4
  import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
7
5
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
@@ -18,13 +16,7 @@ var RouterPlugin = /* @__PURE__ */ function() {
18
16
  function RouterPlugin2(param) {
19
17
  var _param_staticJsDir = param.staticJsDir, staticJsDir = _param_staticJsDir === void 0 ? "static/js" : _param_staticJsDir, HtmlBundlerPlugin = param.HtmlBundlerPlugin, enableInlineRouteManifests = param.enableInlineRouteManifests, _param_disableFilenameHash = param.disableFilenameHash, disableFilenameHash = _param_disableFilenameHash === void 0 ? false : _param_disableFilenameHash, _param_scriptLoading = param.scriptLoading, scriptLoading = _param_scriptLoading === void 0 ? "defer" : _param_scriptLoading, nonce = param.nonce;
20
18
  _class_call_check(this, RouterPlugin2);
21
- _define_property(this, "name", "RouterPlugin");
22
- _define_property(this, "HtmlBundlerPlugin", void 0);
23
- _define_property(this, "enableInlineRouteManifests", void 0);
24
- _define_property(this, "staticJsDir", void 0);
25
- _define_property(this, "disableFilenameHash", void 0);
26
- _define_property(this, "scriptLoading", void 0);
27
- _define_property(this, "nonce", void 0);
19
+ this.name = "RouterPlugin";
28
20
  this.HtmlBundlerPlugin = HtmlBundlerPlugin;
29
21
  this.enableInlineRouteManifests = enableInlineRouteManifests;
30
22
  this.staticJsDir = staticJsDir;
@@ -32,276 +24,263 @@ var RouterPlugin = /* @__PURE__ */ function() {
32
24
  this.scriptLoading = scriptLoading;
33
25
  this.nonce = nonce;
34
26
  }
35
- _create_class(RouterPlugin2, [
36
- {
37
- key: "isTargetNodeOrWebWorker",
38
- value: function isTargetNodeOrWebWorker(target) {
39
- if (target === "node" || Array.isArray(target) && target.includes("node")) {
40
- return true;
41
- }
42
- if (target === "webworker" || Array.isArray(target) && target.includes("webworker")) {
43
- return true;
44
- }
45
- return false;
46
- }
47
- },
48
- {
49
- key: "getEntryChunks",
50
- value: function getEntryChunks(compilation, chunks) {
51
- var entrypointsArray = Array.from(compilation.entrypoints.entries());
52
- var entryChunkIds = entrypointsArray.map(function(entrypoint) {
53
- return entrypoint[0];
54
- });
55
- var entryChunks = _to_consumable_array(chunks).filter(function(chunk) {
56
- var _chunk_names;
57
- return (_chunk_names = chunk.names) === null || _chunk_names === void 0 ? void 0 : _chunk_names.some(function(name) {
58
- return entryChunkIds.includes(name);
59
- });
60
- });
61
- return entryChunks;
62
- }
63
- },
64
- {
65
- key: "getEntryChunkFiles",
66
- value: function getEntryChunkFiles(entryChunks) {
67
- return entryChunks.map(function(chunk) {
68
- return _to_consumable_array(chunk.files || []).find(function(fname) {
69
- return fname.includes(".js");
70
- });
71
- });
27
+ var _proto = RouterPlugin2.prototype;
28
+ _proto.isTargetNodeOrWebWorker = function isTargetNodeOrWebWorker(target) {
29
+ if (target === "node" || Array.isArray(target) && target.includes("node")) {
30
+ return true;
31
+ }
32
+ if (target === "webworker" || Array.isArray(target) && target.includes("webworker")) {
33
+ return true;
34
+ }
35
+ return false;
36
+ };
37
+ _proto.getEntryChunks = function getEntryChunks(compilation, chunks) {
38
+ var entrypointsArray = Array.from(compilation.entrypoints.entries());
39
+ var entryChunkIds = entrypointsArray.map(function(entrypoint) {
40
+ return entrypoint[0];
41
+ });
42
+ var entryChunks = _to_consumable_array(chunks).filter(function(chunk) {
43
+ var _chunk_names;
44
+ return (_chunk_names = chunk.names) === null || _chunk_names === void 0 ? void 0 : _chunk_names.some(function(name) {
45
+ return entryChunkIds.includes(name);
46
+ });
47
+ });
48
+ return entryChunks;
49
+ };
50
+ _proto.getEntryChunkFiles = function getEntryChunkFiles(entryChunks) {
51
+ return entryChunks.map(function(chunk) {
52
+ return _to_consumable_array(chunk.files || []).find(function(fname) {
53
+ return fname.includes(".js");
54
+ });
55
+ });
56
+ };
57
+ _proto.apply = function apply(compiler) {
58
+ var _this = this;
59
+ var target = compiler.options.target;
60
+ if (this.isTargetNodeOrWebWorker(target)) {
61
+ return;
62
+ }
63
+ var webpack = compiler.webpack;
64
+ var isRspack = "rspackVersion" in webpack;
65
+ var Compilation = webpack.Compilation, sources = webpack.sources;
66
+ var RawSource = sources.RawSource;
67
+ var normalizePath = function(path) {
68
+ if (!path.endsWith("/")) {
69
+ return "".concat(path, "/");
72
70
  }
73
- },
74
- {
75
- key: "apply",
76
- value: function apply(compiler) {
77
- var _this = this;
78
- var target = compiler.options.target;
79
- if (this.isTargetNodeOrWebWorker(target)) {
80
- return;
81
- }
82
- var webpack = compiler.webpack;
83
- var isRspack = "rspackVersion" in webpack;
84
- var Compilation = webpack.Compilation, sources = webpack.sources;
85
- var RawSource = sources.RawSource;
86
- var normalizePath = function(path) {
87
- if (!path.endsWith("/")) {
88
- return "".concat(path, "/");
89
- }
90
- return path;
91
- };
92
- var chunksToHtmlName = /* @__PURE__ */ new Map();
93
- var ROUTE_MANIFEST_HOLDER = "route-manifest";
94
- var placeholder = "<!--<?- ".concat(ROUTE_MANIFEST_HOLDER, " ?>-->");
95
- compiler.hooks.thisCompilation.tap(PLUGIN_NAME, function(compilation) {
96
- _this.HtmlBundlerPlugin.getHooks(compilation).beforeEmit.tapAsync("RouterManifestPlugin", function(data, callback) {
97
- var outputName = data.outputName;
98
- var chunks = data.plugin.options.chunks;
99
- chunksToHtmlName.set(chunks, outputName);
100
- data.html = data.html.replace("</script>", "</script>".concat(placeholder));
101
- callback(null, data);
102
- });
103
- var _this1 = _this;
104
- compilation.hooks.processAssets.tapPromise({
105
- name: PLUGIN_NAME,
106
- stage: Compilation.PROCESS_ASSETS_STAGE_REPORT
107
- }, /* @__PURE__ */ _async_to_generator(function() {
108
- var _loop, stats, publicPath, _stats_chunks, chunks, namedChunkGroups, routeAssets, prevManifestAsset, prevManifestStr, prevManifest, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _step_value, name, chunkGroup, assets, referenceCssAssets, manifest, entryNames, entryChunks, orignalEntryIds, entryChunkFiles, entryChunkFileIds, i;
109
- return _ts_generator(this, function(_state) {
110
- _loop = function(i2) {
111
- var entryName = entryNames[i2];
112
- var file = entryChunkFiles[i2];
113
- var chunkNames = entryChunks[i2].names;
114
- var chunkId = entryChunkFileIds[i2];
115
- var asset = compilation.assets[file];
116
- if (!asset || !chunkId) {
117
- return "continue";
118
- }
119
- var relatedAssets = {};
120
- if (entryChunkFiles.length > 1) {
121
- Object.keys(routeAssets).forEach(function(routeId) {
122
- var segments = routeId.split("_");
123
- var chunkName = segments[0];
124
- if (chunkNames === null || chunkNames === void 0 ? void 0 : chunkNames.includes(chunkName)) {
125
- relatedAssets[routeId] = routeAssets[routeId];
126
- }
127
- });
128
- } else {
129
- relatedAssets = routeAssets;
130
- }
131
- var manifest2 = {
132
- routeAssets: relatedAssets
133
- };
134
- var injectedContent = "\n ;(function(){\n window.".concat(ROUTE_MANIFEST, " = ").concat(JSON.stringify(manifest2, function(k, v) {
135
- if ((k === "assets" || k === "referenceCssAssets") && Array.isArray(v)) {
136
- return v.map(function(item) {
137
- return item.replace(publicPath, "");
138
- });
139
- }
140
- return v;
141
- }), ";\n })();\n ");
142
- var htmlName = void 0;
143
- var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
144
- try {
145
- var _loop2 = function() {
146
- var _step_value2 = _sliced_to_array(_step2.value, 2), chunks2 = _step_value2[0], name2 = _step_value2[1];
147
- if (Array.isArray(chunkNames) && Array.isArray(chunks2) && chunkNames.every(function(value, index) {
148
- return value === chunks2[index];
149
- })) {
150
- htmlName = name2;
151
- return "break";
152
- }
153
- };
154
- for (var _iterator2 = chunksToHtmlName.entries()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
155
- var _ret = _loop2();
156
- if (_ret === "break")
157
- break;
158
- }
159
- } catch (err) {
160
- _didIteratorError2 = true;
161
- _iteratorError2 = err;
162
- } finally {
163
- try {
164
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
165
- _iterator2.return();
166
- }
167
- } finally {
168
- if (_didIteratorError2) {
169
- throw _iteratorError2;
170
- }
171
- }
71
+ return path;
72
+ };
73
+ var chunksToHtmlName = /* @__PURE__ */ new Map();
74
+ var ROUTE_MANIFEST_HOLDER = "route-manifest";
75
+ var placeholder = "<!--<?- ".concat(ROUTE_MANIFEST_HOLDER, " ?>-->");
76
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, function(compilation) {
77
+ _this.HtmlBundlerPlugin.getHooks(compilation).beforeEmit.tapAsync("RouterManifestPlugin", function(data, callback) {
78
+ var outputName = data.outputName;
79
+ var chunks = data.plugin.options.chunks;
80
+ chunksToHtmlName.set(chunks, outputName);
81
+ data.html = data.html.replace("</script>", "</script>".concat(placeholder));
82
+ callback(null, data);
83
+ });
84
+ var _this1 = _this;
85
+ compilation.hooks.processAssets.tapPromise({
86
+ name: PLUGIN_NAME,
87
+ stage: Compilation.PROCESS_ASSETS_STAGE_REPORT
88
+ }, /* @__PURE__ */ _async_to_generator(function() {
89
+ var _loop, stats, publicPath, _stats_chunks, chunks, namedChunkGroups, routeAssets, prevManifestAsset, prevManifestStr, prevManifest, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _step_value, name, chunkGroup, assets, referenceCssAssets, manifest, entryNames, entryChunks, orignalEntryIds, entryChunkFiles, entryChunkFileIds, i;
90
+ return _ts_generator(this, function(_state) {
91
+ _loop = function(i2) {
92
+ var entryName = entryNames[i2];
93
+ var file = entryChunkFiles[i2];
94
+ var chunkNames = entryChunks[i2].names;
95
+ var chunkId = entryChunkFileIds[i2];
96
+ var asset = compilation.assets[file];
97
+ if (!asset || !chunkId) {
98
+ return "continue";
99
+ }
100
+ var relatedAssets = {};
101
+ if (entryChunkFiles.length > 1) {
102
+ Object.keys(routeAssets).forEach(function(routeId) {
103
+ var segments = routeId.split("_");
104
+ var chunkName = segments[0];
105
+ if (chunkNames === null || chunkNames === void 0 ? void 0 : chunkNames.includes(chunkName)) {
106
+ relatedAssets[routeId] = routeAssets[routeId];
172
107
  }
173
- var oldHtml = compilation.assets[htmlName];
174
- var enableInlineRouteManifests = _this1.enableInlineRouteManifests, disableFilenameHash = _this1.disableFilenameHash, staticJsDir = _this1.staticJsDir, scriptLoading = _this1.scriptLoading, nonce = _this1.nonce;
175
- var nonceAttr = nonce ? 'nonce="'.concat(nonce, '"') : "";
176
- if (oldHtml) {
177
- if (enableInlineRouteManifests) {
178
- compilation.updateAsset(
179
- htmlName,
180
- new RawSource(oldHtml.source().toString().replace(placeholder, "<script ".concat(nonceAttr, ">").concat(injectedContent, "</script>"))),
181
- // FIXME: The arguments third of updatgeAsset is a optional function in webpack.
182
- void 0
183
- );
184
- } else {
185
- var scriptPath = "".concat(staticJsDir, "/").concat(ROUTE_MANIFEST_HOLDER, "-").concat(entryName).concat(disableFilenameHash ? ".js" : ".".concat(generateContentHash(injectedContent), ".js"));
186
- var scriptUrl = "".concat(publicPath).concat(scriptPath);
187
- var scriptLoadingAttr = (
188
- // eslint-disable-next-line no-nested-ternary
189
- scriptLoading === "defer" ? scriptLoading : scriptLoading === "module" ? 'type="module"' : ""
190
- );
191
- var script = "<script ".concat(scriptLoadingAttr, " ").concat(nonceAttr, ' src="').concat(scriptUrl, '"></script>');
192
- compilation.updateAsset(
193
- htmlName,
194
- new RawSource(oldHtml.source().toString().replace(placeholder, script)),
195
- // FIXME: The arguments third of updatgeAsset is a optional function in webpack.
196
- void 0
197
- );
198
- compilation.emitAsset(scriptPath, new RawSource(injectedContent));
199
- }
108
+ });
109
+ } else {
110
+ relatedAssets = routeAssets;
111
+ }
112
+ var manifest2 = {
113
+ routeAssets: relatedAssets
114
+ };
115
+ var injectedContent = "\n ;(function(){\n window.".concat(ROUTE_MANIFEST, " = ").concat(JSON.stringify(manifest2, function(k, v) {
116
+ if ((k === "assets" || k === "referenceCssAssets") && Array.isArray(v)) {
117
+ return v.map(function(item) {
118
+ return item.replace(publicPath, "");
119
+ });
120
+ }
121
+ return v;
122
+ }), ";\n })();\n ");
123
+ var htmlName = void 0;
124
+ var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
125
+ try {
126
+ var _loop2 = function() {
127
+ var _step_value2 = _sliced_to_array(_step2.value, 2), chunks2 = _step_value2[0], name2 = _step_value2[1];
128
+ if (Array.isArray(chunkNames) && Array.isArray(chunks2) && chunkNames.every(function(value, index) {
129
+ return value === chunks2[index];
130
+ })) {
131
+ htmlName = name2;
132
+ return "break";
200
133
  }
201
134
  };
202
- stats = compilation.getStats().toJson({
203
- all: false,
204
- publicPath: true,
205
- assets: true,
206
- chunkGroups: true,
207
- chunks: true,
208
- ids: true
209
- });
210
- publicPath = stats.publicPath, _stats_chunks = stats.chunks, chunks = _stats_chunks === void 0 ? [] : _stats_chunks, namedChunkGroups = stats.namedChunkGroups;
211
- routeAssets = {};
212
- if (!namedChunkGroups) {
213
- return [
214
- 2
215
- ];
135
+ for (var _iterator2 = chunksToHtmlName.entries()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
136
+ var _ret = _loop2();
137
+ if (_ret === "break")
138
+ break;
216
139
  }
217
- prevManifestAsset = compilation.getAsset(ROUTE_MANIFEST_FILE);
218
- prevManifestStr = prevManifestAsset ? prevManifestAsset.source.source().toString() : JSON.stringify({
219
- routeAssets: {}
220
- });
221
- prevManifest = JSON.parse(prevManifestStr);
222
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
140
+ } catch (err) {
141
+ _didIteratorError2 = true;
142
+ _iteratorError2 = err;
143
+ } finally {
223
144
  try {
224
- for (_iterator = Object.entries(namedChunkGroups)[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
225
- _step_value = _sliced_to_array(_step.value, 2), name = _step_value[0], chunkGroup = _step_value[1];
226
- assets = chunkGroup.assets.map(function(asset) {
227
- var filename = asset.name;
228
- return publicPath ? normalizePath(publicPath) + filename : filename;
229
- });
230
- referenceCssAssets = assets.filter(function(asset) {
231
- return /\.css$/.test(asset);
232
- });
233
- routeAssets[name] = {
234
- chunkIds: chunkGroup.chunks,
235
- assets,
236
- referenceCssAssets
237
- };
238
- if (prevManifest.routeAssets[name]) {
239
- mergeWith(routeAssets[name], prevManifest.routeAssets[name], function(obj, source) {
240
- if (Array.isArray(obj)) {
241
- return obj.concat(source);
242
- }
243
- return Object.assign(source, obj);
244
- });
245
- }
145
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
146
+ _iterator2.return();
246
147
  }
247
- } catch (err) {
248
- _didIteratorError = true;
249
- _iteratorError = err;
250
148
  } finally {
251
- try {
252
- if (!_iteratorNormalCompletion && _iterator.return != null) {
253
- _iterator.return();
254
- }
255
- } finally {
256
- if (_didIteratorError) {
257
- throw _iteratorError;
258
- }
149
+ if (_didIteratorError2) {
150
+ throw _iteratorError2;
259
151
  }
260
152
  }
261
- manifest = {
262
- routeAssets
263
- };
264
- entryNames = Array.from(compilation.entrypoints.keys());
265
- entryChunks = [];
266
- if (isRspack) {
267
- entryChunks = _this1.getEntryChunks(compilation, chunks);
268
- } else {
269
- orignalEntryIds = Object.keys(compilation.options.entry).map(function(entryName) {
270
- var chunk = compilation.namedChunks.get(entryName);
271
- if (chunk) {
272
- return chunk.id;
273
- }
274
- return entryName;
275
- });
276
- entryChunks = _this1.getEntryChunks(compilation, chunks).filter(function(chunk) {
277
- return orignalEntryIds.includes(chunk.id);
278
- });
279
- }
280
- entryChunkFiles = _this1.getEntryChunkFiles(entryChunks);
281
- entryChunkFileIds = entryChunks.map(function(chunk) {
282
- return chunk.id;
283
- });
284
- for (i = 0; i < entryChunkFiles.length; i++)
285
- _loop(i);
286
- if (prevManifestAsset) {
153
+ }
154
+ var oldHtml = compilation.assets[htmlName];
155
+ var enableInlineRouteManifests = _this1.enableInlineRouteManifests, disableFilenameHash = _this1.disableFilenameHash, staticJsDir = _this1.staticJsDir, scriptLoading = _this1.scriptLoading, nonce = _this1.nonce;
156
+ var nonceAttr = nonce ? 'nonce="'.concat(nonce, '"') : "";
157
+ if (oldHtml) {
158
+ if (enableInlineRouteManifests) {
287
159
  compilation.updateAsset(
288
- ROUTE_MANIFEST_FILE,
289
- new RawSource(JSON.stringify(manifest, null, 2)),
160
+ htmlName,
161
+ new RawSource(oldHtml.source().toString().replace(placeholder, "<script ".concat(nonceAttr, ">").concat(injectedContent, "</script>"))),
290
162
  // FIXME: The arguments third of updatgeAsset is a optional function in webpack.
291
163
  void 0
292
164
  );
293
165
  } else {
294
- compilation.emitAsset(ROUTE_MANIFEST_FILE, new RawSource(JSON.stringify(manifest, null, 2)));
166
+ var scriptPath = "".concat(staticJsDir, "/").concat(ROUTE_MANIFEST_HOLDER, "-").concat(entryName).concat(disableFilenameHash ? ".js" : ".".concat(generateContentHash(injectedContent), ".js"));
167
+ var scriptUrl = "".concat(publicPath).concat(scriptPath);
168
+ var scriptLoadingAttr = (
169
+ // eslint-disable-next-line no-nested-ternary
170
+ scriptLoading === "defer" ? scriptLoading : scriptLoading === "module" ? 'type="module"' : ""
171
+ );
172
+ var script = "<script ".concat(scriptLoadingAttr, " ").concat(nonceAttr, ' src="').concat(scriptUrl, '"></script>');
173
+ compilation.updateAsset(
174
+ htmlName,
175
+ new RawSource(oldHtml.source().toString().replace(placeholder, script)),
176
+ // FIXME: The arguments third of updatgeAsset is a optional function in webpack.
177
+ void 0
178
+ );
179
+ compilation.emitAsset(scriptPath, new RawSource(injectedContent));
295
180
  }
296
- return [
297
- 2
298
- ];
181
+ }
182
+ };
183
+ stats = compilation.getStats().toJson({
184
+ all: false,
185
+ publicPath: true,
186
+ assets: true,
187
+ chunkGroups: true,
188
+ chunks: true,
189
+ ids: true
190
+ });
191
+ publicPath = stats.publicPath, _stats_chunks = stats.chunks, chunks = _stats_chunks === void 0 ? [] : _stats_chunks, namedChunkGroups = stats.namedChunkGroups;
192
+ routeAssets = {};
193
+ if (!namedChunkGroups) {
194
+ return [
195
+ 2
196
+ ];
197
+ }
198
+ prevManifestAsset = compilation.getAsset(ROUTE_MANIFEST_FILE);
199
+ prevManifestStr = prevManifestAsset ? prevManifestAsset.source.source().toString() : JSON.stringify({
200
+ routeAssets: {}
201
+ });
202
+ prevManifest = JSON.parse(prevManifestStr);
203
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
204
+ try {
205
+ for (_iterator = Object.entries(namedChunkGroups)[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
206
+ _step_value = _sliced_to_array(_step.value, 2), name = _step_value[0], chunkGroup = _step_value[1];
207
+ assets = chunkGroup.assets.map(function(asset) {
208
+ var filename = asset.name;
209
+ return publicPath ? normalizePath(publicPath) + filename : filename;
210
+ });
211
+ referenceCssAssets = assets.filter(function(asset) {
212
+ return /\.css$/.test(asset);
213
+ });
214
+ routeAssets[name] = {
215
+ chunkIds: chunkGroup.chunks,
216
+ assets,
217
+ referenceCssAssets
218
+ };
219
+ if (prevManifest.routeAssets[name]) {
220
+ mergeWith(routeAssets[name], prevManifest.routeAssets[name], function(obj, source) {
221
+ if (Array.isArray(obj)) {
222
+ return obj.concat(source);
223
+ }
224
+ return Object.assign(source, obj);
225
+ });
226
+ }
227
+ }
228
+ } catch (err) {
229
+ _didIteratorError = true;
230
+ _iteratorError = err;
231
+ } finally {
232
+ try {
233
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
234
+ _iterator.return();
235
+ }
236
+ } finally {
237
+ if (_didIteratorError) {
238
+ throw _iteratorError;
239
+ }
240
+ }
241
+ }
242
+ manifest = {
243
+ routeAssets
244
+ };
245
+ entryNames = Array.from(compilation.entrypoints.keys());
246
+ entryChunks = [];
247
+ if (isRspack) {
248
+ entryChunks = _this1.getEntryChunks(compilation, chunks);
249
+ } else {
250
+ orignalEntryIds = Object.keys(compilation.options.entry).map(function(entryName) {
251
+ var chunk = compilation.namedChunks.get(entryName);
252
+ if (chunk) {
253
+ return chunk.id;
254
+ }
255
+ return entryName;
256
+ });
257
+ entryChunks = _this1.getEntryChunks(compilation, chunks).filter(function(chunk) {
258
+ return orignalEntryIds.includes(chunk.id);
299
259
  });
300
- }));
260
+ }
261
+ entryChunkFiles = _this1.getEntryChunkFiles(entryChunks);
262
+ entryChunkFileIds = entryChunks.map(function(chunk) {
263
+ return chunk.id;
264
+ });
265
+ for (i = 0; i < entryChunkFiles.length; i++)
266
+ _loop(i);
267
+ if (prevManifestAsset) {
268
+ compilation.updateAsset(
269
+ ROUTE_MANIFEST_FILE,
270
+ new RawSource(JSON.stringify(manifest, null, 2)),
271
+ // FIXME: The arguments third of updatgeAsset is a optional function in webpack.
272
+ void 0
273
+ );
274
+ } else {
275
+ compilation.emitAsset(ROUTE_MANIFEST_FILE, new RawSource(JSON.stringify(manifest, null, 2)));
276
+ }
277
+ return [
278
+ 2
279
+ ];
301
280
  });
302
- }
303
- }
304
- ]);
281
+ }));
282
+ });
283
+ };
305
284
  return RouterPlugin2;
306
285
  }();
307
286
  export {
package/dist/esm/index.js CHANGED
@@ -4,7 +4,7 @@ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
4
4
  import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
5
5
  import path from "path";
6
6
  import { lintPlugin } from "@modern-js/plugin-lint";
7
- import { cleanRequireCache, emptyDir, getCommand, getArgv, fs, NESTED_ROUTE_SPEC_FILE } from "@modern-js/utils";
7
+ import { cleanRequireCache, emptyDir, getCommand, getArgv, fs, NESTED_ROUTE_SPEC_FILE, newAction, upgradeAction } from "@modern-js/utils";
8
8
  import { castArray } from "@modern-js/utils/lodash";
9
9
  import { getLocaleLanguage } from "@modern-js/plugin-i18n/language-detector";
10
10
  import analyzePlugin from "./analyze";
@@ -328,7 +328,6 @@ var appTools = function() {
328
328
  commands: function commands(param) {
329
329
  var program = param.program;
330
330
  return _async_to_generator(function() {
331
- var defineCommand;
332
331
  return _ts_generator(this, function(_state) {
333
332
  switch (_state.label) {
334
333
  case 0:
@@ -417,23 +416,16 @@ var appTools = function() {
417
416
  }());
418
417
  program.command("new").usage("[options]").description(i18n.t(localeKeys.command.new.describe)).option("--config-file <configFile>", i18n.t(localeKeys.command.shared.config)).option("--lang <lang>", i18n.t(localeKeys.command.new.lang)).option("-c, --config <config>", i18n.t(localeKeys.command.new.config)).option("-d, --debug", i18n.t(localeKeys.command.new.debug), false).option("--dist-tag <tag>", i18n.t(localeKeys.command.new.distTag)).option("--registry", i18n.t(localeKeys.command.new.registry)).option("--no-need-install", i18n.t(localeKeys.command.shared.noNeedInstall)).action(function() {
419
418
  var _ref = _async_to_generator(function(options2) {
420
- var MWANewAction;
421
419
  return _ts_generator(this, function(_state2) {
422
420
  switch (_state2.label) {
423
421
  case 0:
424
422
  return [
425
423
  4,
426
- import("@modern-js/new-action")
427
- ];
428
- case 1:
429
- MWANewAction = _state2.sent().MWANewAction;
430
- return [
431
- 4,
432
- MWANewAction(_object_spread_props(_object_spread({}, options2), {
424
+ newAction(_object_spread_props(_object_spread({}, options2), {
433
425
  locale: options2.lang || locale
434
- }))
426
+ }), "mwa")
435
427
  ];
436
- case 2:
428
+ case 1:
437
429
  _state2.sent();
438
430
  return [
439
431
  2
@@ -468,13 +460,22 @@ var appTools = function() {
468
460
  return _ref.apply(this, arguments);
469
461
  };
470
462
  }());
471
- return [
472
- 4,
473
- import("@modern-js/upgrade")
474
- ];
475
- case 3:
476
- defineCommand = _state.sent().defineCommand;
477
- defineCommand(program.command("upgrade").option("-c --config <config>", i18n.t(localeKeys.command.shared.config)).option("--no-need-install", i18n.t(localeKeys.command.shared.noNeedInstall)));
463
+ program.command("upgrade").allowUnknownOption().option("-h --help", "Show help").action(/* @__PURE__ */ _async_to_generator(function() {
464
+ return _ts_generator(this, function(_state2) {
465
+ switch (_state2.label) {
466
+ case 0:
467
+ return [
468
+ 4,
469
+ upgradeAction()
470
+ ];
471
+ case 1:
472
+ _state2.sent();
473
+ return [
474
+ 2
475
+ ];
476
+ }
477
+ });
478
+ }));
478
479
  return [
479
480
  2
480
481
  ];
@@ -16,11 +16,12 @@ async function generateBuilder(options, bundlerType) {
16
16
  return builder;
17
17
  }
18
18
  async function applyBuilderPlugins(builder, options) {
19
- const { builderPluginAdapterBasic, builderPluginAdapterHtml, builderPluginAdapterSSR } = await import("../shared/builderPlugins");
19
+ const { builderPluginAdapterBasic, builderPluginAdapterHtml, builderPluginAdapterSSR, builderPluginAdapterWorker } = await import("../shared/builderPlugins");
20
20
  builder.addPlugins([
21
21
  builderPluginAdapterBasic(),
22
22
  builderPluginAdapterSSR(options),
23
- builderPluginAdapterHtml(options)
23
+ builderPluginAdapterHtml(options),
24
+ builderPluginAdapterWorker()
24
25
  ]);
25
26
  const { normalizedConfig } = options;
26
27
  if (!normalizedConfig.output.disableNodePolyfill) {
@@ -1,5 +1,6 @@
1
1
  import * as path from "path";
2
- import { isHtmlDisabled, mergeRsbuildConfig } from "@rsbuild/shared";
2
+ import { isHtmlDisabled } from "@rsbuild/shared";
3
+ import { mergeRsbuildConfig } from "@rsbuild/core";
3
4
  import { isSSR, fs } from "@modern-js/utils";
4
5
  import { HtmlAsyncChunkPlugin, RouterPlugin } from "../bundlerPlugins";
5
6
  import { getServerCombinedModueFile } from "../../../analyze/utils";