@module-federation/manifest 0.0.0-next-20240223065734
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.
- package/LICENSE +21 -0
- package/README.md +1 -0
- package/dist/LICENSE +21 -0
- package/dist/index.cjs.d.ts +1 -0
- package/dist/index.cjs.js +1723 -0
- package/dist/index.esm.js +1712 -0
- package/dist/package.json +44 -0
- package/dist/src/ManifestManager.d.ts +16 -0
- package/dist/src/ModuleHandler.d.ts +26 -0
- package/dist/src/StatsManager.d.ts +26 -0
- package/dist/src/StatsPlugin.d.ts +13 -0
- package/dist/src/constants.d.ts +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/utils.d.ts +13 -0
- package/package.json +44 -0
|
@@ -0,0 +1,1712 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { simpleJoinRemoteEntry, ManifestFileName, StatsFileName } from '@module-federation/sdk';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { RemoteManager, SharedManager, ContainerManager, PKGJsonManager, utils } from '@module-federation/managers';
|
|
5
|
+
|
|
6
|
+
var PLUGIN_IDENTIFIER = "Module Federation Manifest Plugin";
|
|
7
|
+
|
|
8
|
+
function _array_like_to_array$2(arr, len) {
|
|
9
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
10
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
11
|
+
return arr2;
|
|
12
|
+
}
|
|
13
|
+
function _array_with_holes$2(arr) {
|
|
14
|
+
if (Array.isArray(arr)) return arr;
|
|
15
|
+
}
|
|
16
|
+
function _array_without_holes$1(arr) {
|
|
17
|
+
if (Array.isArray(arr)) return _array_like_to_array$2(arr);
|
|
18
|
+
}
|
|
19
|
+
function _iterable_to_array$1(iter) {
|
|
20
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
21
|
+
}
|
|
22
|
+
function _iterable_to_array_limit$2(arr, i) {
|
|
23
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
24
|
+
if (_i == null) return;
|
|
25
|
+
var _arr = [];
|
|
26
|
+
var _n = true;
|
|
27
|
+
var _d = false;
|
|
28
|
+
var _s, _e;
|
|
29
|
+
try {
|
|
30
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
31
|
+
_arr.push(_s.value);
|
|
32
|
+
if (i && _arr.length === i) break;
|
|
33
|
+
}
|
|
34
|
+
} catch (err) {
|
|
35
|
+
_d = true;
|
|
36
|
+
_e = err;
|
|
37
|
+
} finally{
|
|
38
|
+
try {
|
|
39
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
40
|
+
} finally{
|
|
41
|
+
if (_d) throw _e;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return _arr;
|
|
45
|
+
}
|
|
46
|
+
function _non_iterable_rest$2() {
|
|
47
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
48
|
+
}
|
|
49
|
+
function _non_iterable_spread$1() {
|
|
50
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
51
|
+
}
|
|
52
|
+
function _sliced_to_array$2(arr, i) {
|
|
53
|
+
return _array_with_holes$2(arr) || _iterable_to_array_limit$2(arr, i) || _unsupported_iterable_to_array$2(arr, i) || _non_iterable_rest$2();
|
|
54
|
+
}
|
|
55
|
+
function _to_consumable_array$1(arr) {
|
|
56
|
+
return _array_without_holes$1(arr) || _iterable_to_array$1(arr) || _unsupported_iterable_to_array$2(arr) || _non_iterable_spread$1();
|
|
57
|
+
}
|
|
58
|
+
function _unsupported_iterable_to_array$2(o, minLen) {
|
|
59
|
+
if (!o) return;
|
|
60
|
+
if (typeof o === "string") return _array_like_to_array$2(o, minLen);
|
|
61
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
62
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
63
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
64
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$2(o, minLen);
|
|
65
|
+
}
|
|
66
|
+
function getSharedModuleName(name) {
|
|
67
|
+
var _name_split = _sliced_to_array$2(name.split(" "), 5); _name_split[0]; _name_split[1]; _name_split[2]; _name_split[3]; var sharedInfo = _name_split[4];
|
|
68
|
+
return sharedInfo.split("@").slice(0, -1).join("@");
|
|
69
|
+
}
|
|
70
|
+
function getAssetsByChunkIDs(compilation, chunkIDMap) {
|
|
71
|
+
var arrayChunks = Array.from(compilation.chunks);
|
|
72
|
+
var assetMap = {};
|
|
73
|
+
Object.keys(chunkIDMap).forEach(function(key) {
|
|
74
|
+
var chunkIDs = Array.from(chunkIDMap[key]);
|
|
75
|
+
if (!assetMap[key]) {
|
|
76
|
+
assetMap[key] = {
|
|
77
|
+
css: new Set(),
|
|
78
|
+
js: new Set()
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
chunkIDs.forEach(function(chunkID) {
|
|
82
|
+
var chunk = arrayChunks.find(function(item) {
|
|
83
|
+
return item.id === chunkID;
|
|
84
|
+
});
|
|
85
|
+
if (chunk) {
|
|
86
|
+
_to_consumable_array$1(chunk.files).forEach(function(asset) {
|
|
87
|
+
if (asset.endsWith(".css")) {
|
|
88
|
+
assetMap[key].css.add(asset);
|
|
89
|
+
} else {
|
|
90
|
+
if (process.env["NODE_ENV"] === "development") {
|
|
91
|
+
if (!asset.includes(".hot-update")) {
|
|
92
|
+
assetMap[key].js.add(asset);
|
|
93
|
+
}
|
|
94
|
+
} else {
|
|
95
|
+
assetMap[key].js.add(asset);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
var assets = {};
|
|
103
|
+
Object.keys(assetMap).map(function(key) {
|
|
104
|
+
assets[key] = {
|
|
105
|
+
js: Array.from(assetMap[key].js),
|
|
106
|
+
css: Array.from(assetMap[key].css)
|
|
107
|
+
};
|
|
108
|
+
});
|
|
109
|
+
return assets;
|
|
110
|
+
}
|
|
111
|
+
function findChunk(id, chunks) {
|
|
112
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
113
|
+
try {
|
|
114
|
+
for(var _iterator = chunks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
115
|
+
var chunk = _step.value;
|
|
116
|
+
if (id === chunk.id) {
|
|
117
|
+
return chunk;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
} catch (err) {
|
|
121
|
+
_didIteratorError = true;
|
|
122
|
+
_iteratorError = err;
|
|
123
|
+
} finally{
|
|
124
|
+
try {
|
|
125
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
126
|
+
_iterator.return();
|
|
127
|
+
}
|
|
128
|
+
} finally{
|
|
129
|
+
if (_didIteratorError) {
|
|
130
|
+
throw _iteratorError;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
function getSharedModules(stats, sharedModules) {
|
|
136
|
+
var _stats_modules;
|
|
137
|
+
// 获取入口文件就是实际内容的 module
|
|
138
|
+
var entryContentModuleNames = [];
|
|
139
|
+
var effectiveSharedModules = ((_stats_modules = stats.modules) === null || _stats_modules === void 0 ? void 0 : _stats_modules.reduce(function(sum, module) {
|
|
140
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
141
|
+
try {
|
|
142
|
+
for(var _iterator = sharedModules[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
143
|
+
var sharedModule = _step.value;
|
|
144
|
+
if (sharedModule.name === module.issuerName) {
|
|
145
|
+
entryContentModuleNames.push(sharedModule.name);
|
|
146
|
+
sum.push([
|
|
147
|
+
getSharedModuleName(module.issuerName),
|
|
148
|
+
module
|
|
149
|
+
]);
|
|
150
|
+
return sum;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
} catch (err) {
|
|
154
|
+
_didIteratorError = true;
|
|
155
|
+
_iteratorError = err;
|
|
156
|
+
} finally{
|
|
157
|
+
try {
|
|
158
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
159
|
+
_iterator.return();
|
|
160
|
+
}
|
|
161
|
+
} finally{
|
|
162
|
+
if (_didIteratorError) {
|
|
163
|
+
throw _iteratorError;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return sum;
|
|
168
|
+
}, [])) || [];
|
|
169
|
+
// 获取入口文件仅作为 Re Export 的 module
|
|
170
|
+
var entryReExportModules = sharedModules.filter(function(sharedModule) {
|
|
171
|
+
return !entryContentModuleNames.includes(sharedModule.name);
|
|
172
|
+
});
|
|
173
|
+
if (entryReExportModules.length) {
|
|
174
|
+
effectiveSharedModules = effectiveSharedModules.concat(stats.modules.reduce(function(sum, module) {
|
|
175
|
+
var flag = false;
|
|
176
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
177
|
+
try {
|
|
178
|
+
for(var _iterator = entryReExportModules[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
179
|
+
var entryReExportModule = _step.value;
|
|
180
|
+
if (flag) {
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
if (module.reasons) {
|
|
184
|
+
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
185
|
+
try {
|
|
186
|
+
for(var _iterator1 = module.reasons[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
187
|
+
var issueModule = _step1.value;
|
|
188
|
+
if (issueModule.moduleName === entryReExportModule.name) {
|
|
189
|
+
sum.push([
|
|
190
|
+
getSharedModuleName(entryReExportModule.name),
|
|
191
|
+
module
|
|
192
|
+
]);
|
|
193
|
+
flag = true;
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
} catch (err) {
|
|
198
|
+
_didIteratorError1 = true;
|
|
199
|
+
_iteratorError1 = err;
|
|
200
|
+
} finally{
|
|
201
|
+
try {
|
|
202
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
203
|
+
_iterator1.return();
|
|
204
|
+
}
|
|
205
|
+
} finally{
|
|
206
|
+
if (_didIteratorError1) {
|
|
207
|
+
throw _iteratorError1;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
} catch (err) {
|
|
214
|
+
_didIteratorError = true;
|
|
215
|
+
_iteratorError = err;
|
|
216
|
+
} finally{
|
|
217
|
+
try {
|
|
218
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
219
|
+
_iterator.return();
|
|
220
|
+
}
|
|
221
|
+
} finally{
|
|
222
|
+
if (_didIteratorError) {
|
|
223
|
+
throw _iteratorError;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return sum;
|
|
228
|
+
}, []));
|
|
229
|
+
}
|
|
230
|
+
return effectiveSharedModules;
|
|
231
|
+
}
|
|
232
|
+
function getAssetsByChunk(chunk) {
|
|
233
|
+
var assesSet = {
|
|
234
|
+
js: {
|
|
235
|
+
sync: new Set(),
|
|
236
|
+
async: new Set()
|
|
237
|
+
},
|
|
238
|
+
css: {
|
|
239
|
+
sync: new Set(),
|
|
240
|
+
async: new Set()
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
var collectChunkFiles = function(targetChunk, type) {
|
|
244
|
+
_to_consumable_array$1(targetChunk.groupsIterable).forEach(function(chunkGroup) {
|
|
245
|
+
chunkGroup.getFiles().forEach(function(file) {
|
|
246
|
+
if (file.endsWith(".css")) {
|
|
247
|
+
assesSet.css[type].add(file);
|
|
248
|
+
} else {
|
|
249
|
+
assesSet.js[type].add(file);
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
};
|
|
254
|
+
collectChunkFiles(chunk, "sync");
|
|
255
|
+
_to_consumable_array$1(chunk.getAllAsyncChunks()).forEach(function(asyncChunk) {
|
|
256
|
+
asyncChunk.files.forEach(function(file) {
|
|
257
|
+
if (file.endsWith(".css")) {
|
|
258
|
+
assesSet.css.async.add(file);
|
|
259
|
+
} else {
|
|
260
|
+
assesSet.js.async.add(file);
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
collectChunkFiles(asyncChunk, "async");
|
|
264
|
+
});
|
|
265
|
+
var assets = {
|
|
266
|
+
js: {
|
|
267
|
+
sync: Array.from(assesSet.js.sync),
|
|
268
|
+
async: Array.from(assesSet.js.async)
|
|
269
|
+
},
|
|
270
|
+
css: {
|
|
271
|
+
sync: Array.from(assesSet.css.sync),
|
|
272
|
+
async: Array.from(assesSet.css.async)
|
|
273
|
+
}
|
|
274
|
+
};
|
|
275
|
+
return assets;
|
|
276
|
+
}
|
|
277
|
+
function assert(condition, msg) {
|
|
278
|
+
if (!condition) {
|
|
279
|
+
error(msg);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
function error(msg) {
|
|
283
|
+
throw new Error("[ ".concat(PLUGIN_IDENTIFIER, " ]: ").concat(msg));
|
|
284
|
+
}
|
|
285
|
+
function isDev() {
|
|
286
|
+
return process.env["NODE_ENV"] === "development";
|
|
287
|
+
}
|
|
288
|
+
function getFileNameWithOutExt(str) {
|
|
289
|
+
return str.replace(path.extname(str), "");
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
function _class_call_check$3(instance, Constructor) {
|
|
293
|
+
if (!(instance instanceof Constructor)) {
|
|
294
|
+
throw new TypeError("Cannot call a class as a function");
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
function _defineProperties$3(target, props) {
|
|
298
|
+
for(var i = 0; i < props.length; i++){
|
|
299
|
+
var descriptor = props[i];
|
|
300
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
301
|
+
descriptor.configurable = true;
|
|
302
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
303
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
function _create_class$3(Constructor, protoProps, staticProps) {
|
|
307
|
+
if (protoProps) _defineProperties$3(Constructor.prototype, protoProps);
|
|
308
|
+
if (staticProps) _defineProperties$3(Constructor, staticProps);
|
|
309
|
+
return Constructor;
|
|
310
|
+
}
|
|
311
|
+
function _define_property$3(obj, key, value) {
|
|
312
|
+
if (key in obj) {
|
|
313
|
+
Object.defineProperty(obj, key, {
|
|
314
|
+
value: value,
|
|
315
|
+
enumerable: true,
|
|
316
|
+
configurable: true,
|
|
317
|
+
writable: true
|
|
318
|
+
});
|
|
319
|
+
} else {
|
|
320
|
+
obj[key] = value;
|
|
321
|
+
}
|
|
322
|
+
return obj;
|
|
323
|
+
}
|
|
324
|
+
function _object_spread$2(target) {
|
|
325
|
+
for(var i = 1; i < arguments.length; i++){
|
|
326
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
327
|
+
var ownKeys = Object.keys(source);
|
|
328
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
329
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
330
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
331
|
+
}));
|
|
332
|
+
}
|
|
333
|
+
ownKeys.forEach(function(key) {
|
|
334
|
+
_define_property$3(target, key, source[key]);
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
return target;
|
|
338
|
+
}
|
|
339
|
+
function _tagged_template_literal$1(strings, raw) {
|
|
340
|
+
if (!raw) {
|
|
341
|
+
raw = strings.slice(0);
|
|
342
|
+
}
|
|
343
|
+
return Object.freeze(Object.defineProperties(strings, {
|
|
344
|
+
raw: {
|
|
345
|
+
value: Object.freeze(raw)
|
|
346
|
+
}
|
|
347
|
+
}));
|
|
348
|
+
}
|
|
349
|
+
function _templateObject$1() {
|
|
350
|
+
var data = _tagged_template_literal$1([
|
|
351
|
+
"{bold {greenBright [ ",
|
|
352
|
+
" ]} {greenBright Manifest Link:} {cyan ",
|
|
353
|
+
"",
|
|
354
|
+
"}}"
|
|
355
|
+
]);
|
|
356
|
+
_templateObject$1 = function _templateObject() {
|
|
357
|
+
return data;
|
|
358
|
+
};
|
|
359
|
+
return data;
|
|
360
|
+
}
|
|
361
|
+
var ManifestManager = /*#__PURE__*/ function() {
|
|
362
|
+
function ManifestManager() {
|
|
363
|
+
_class_call_check$3(this, ManifestManager);
|
|
364
|
+
_define_property$3(this, "_options", {});
|
|
365
|
+
_define_property$3(this, "_manifest", void 0);
|
|
366
|
+
}
|
|
367
|
+
_create_class$3(ManifestManager, [
|
|
368
|
+
{
|
|
369
|
+
key: "manifest",
|
|
370
|
+
get: function get() {
|
|
371
|
+
return this._manifest;
|
|
372
|
+
}
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
key: "init",
|
|
376
|
+
value: function init(options) {
|
|
377
|
+
this._options = options;
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
key: "generateManifest",
|
|
382
|
+
value: function generateManifest(options) {
|
|
383
|
+
var compilation = options.compilation, publicPath = options.publicPath, stats = options.stats, compiler = options.compiler;
|
|
384
|
+
var _this__options = this._options, tmp = _this__options.manifest, manifestOptions = tmp === void 0 ? {} : tmp;
|
|
385
|
+
var manifest = _object_spread$2({}, stats);
|
|
386
|
+
manifest.exposes = Object.keys(stats.exposes).reduce(function(sum, cur) {
|
|
387
|
+
var statsExpose = manifest.exposes[cur];
|
|
388
|
+
var expose = {
|
|
389
|
+
id: statsExpose.id,
|
|
390
|
+
name: statsExpose.name,
|
|
391
|
+
assets: statsExpose.assets,
|
|
392
|
+
path: statsExpose.path
|
|
393
|
+
};
|
|
394
|
+
sum.push(expose);
|
|
395
|
+
return sum;
|
|
396
|
+
}, []);
|
|
397
|
+
manifest.shared = Object.keys(stats.shared).reduce(function(sum, cur) {
|
|
398
|
+
var statsShared = manifest.shared[cur];
|
|
399
|
+
var shared = {
|
|
400
|
+
id: statsShared.id,
|
|
401
|
+
name: statsShared.name,
|
|
402
|
+
version: statsShared.version,
|
|
403
|
+
singleton: statsShared.singleton,
|
|
404
|
+
requiredVersion: statsShared.requiredVersion,
|
|
405
|
+
hash: statsShared.hash,
|
|
406
|
+
assets: statsShared.assets
|
|
407
|
+
};
|
|
408
|
+
sum.push(shared);
|
|
409
|
+
return sum;
|
|
410
|
+
}, []);
|
|
411
|
+
manifest.remotes = Object.keys(stats.remotes).reduce(function(sum, cur) {
|
|
412
|
+
var statsRemote = manifest.remotes[cur];
|
|
413
|
+
// @ts-ignore version/entry will be added as follow
|
|
414
|
+
var remote = {
|
|
415
|
+
federationContainerName: statsRemote.federationContainerName,
|
|
416
|
+
moduleName: statsRemote.moduleName,
|
|
417
|
+
alias: statsRemote.alias
|
|
418
|
+
};
|
|
419
|
+
if ("entry" in statsRemote) {
|
|
420
|
+
// @ts-ignore
|
|
421
|
+
remote.entry = statsRemote.entry;
|
|
422
|
+
} else if ("version" in statsRemote) {
|
|
423
|
+
// @ts-ignore
|
|
424
|
+
remote.entry = statsRemote.version;
|
|
425
|
+
}
|
|
426
|
+
sum.push(remote);
|
|
427
|
+
return sum;
|
|
428
|
+
}, []);
|
|
429
|
+
this._manifest = manifest;
|
|
430
|
+
var manifestFilePath = typeof manifestOptions === "boolean" ? "" : manifestOptions.filePath || "";
|
|
431
|
+
var manifestFileName = simpleJoinRemoteEntry(manifestFilePath, ManifestFileName);
|
|
432
|
+
compilation.emitAsset(manifestFileName, new compiler.webpack.sources.RawSource(JSON.stringify(manifest, null, 2)));
|
|
433
|
+
if (isDev()) {
|
|
434
|
+
console.log(chalk(_templateObject$1(), PLUGIN_IDENTIFIER, publicPath, manifestFileName));
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
]);
|
|
439
|
+
return ManifestManager;
|
|
440
|
+
}();
|
|
441
|
+
|
|
442
|
+
function _array_like_to_array$1(arr, len) {
|
|
443
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
444
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
445
|
+
return arr2;
|
|
446
|
+
}
|
|
447
|
+
function _array_with_holes$1(arr) {
|
|
448
|
+
if (Array.isArray(arr)) return arr;
|
|
449
|
+
}
|
|
450
|
+
function _class_call_check$2(instance, Constructor) {
|
|
451
|
+
if (!(instance instanceof Constructor)) {
|
|
452
|
+
throw new TypeError("Cannot call a class as a function");
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
function _defineProperties$2(target, props) {
|
|
456
|
+
for(var i = 0; i < props.length; i++){
|
|
457
|
+
var descriptor = props[i];
|
|
458
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
459
|
+
descriptor.configurable = true;
|
|
460
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
461
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
function _create_class$2(Constructor, protoProps, staticProps) {
|
|
465
|
+
if (protoProps) _defineProperties$2(Constructor.prototype, protoProps);
|
|
466
|
+
if (staticProps) _defineProperties$2(Constructor, staticProps);
|
|
467
|
+
return Constructor;
|
|
468
|
+
}
|
|
469
|
+
function _define_property$2(obj, key, value) {
|
|
470
|
+
if (key in obj) {
|
|
471
|
+
Object.defineProperty(obj, key, {
|
|
472
|
+
value: value,
|
|
473
|
+
enumerable: true,
|
|
474
|
+
configurable: true,
|
|
475
|
+
writable: true
|
|
476
|
+
});
|
|
477
|
+
} else {
|
|
478
|
+
obj[key] = value;
|
|
479
|
+
}
|
|
480
|
+
return obj;
|
|
481
|
+
}
|
|
482
|
+
function _iterable_to_array_limit$1(arr, i) {
|
|
483
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
484
|
+
if (_i == null) return;
|
|
485
|
+
var _arr = [];
|
|
486
|
+
var _n = true;
|
|
487
|
+
var _d = false;
|
|
488
|
+
var _s, _e;
|
|
489
|
+
try {
|
|
490
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
491
|
+
_arr.push(_s.value);
|
|
492
|
+
if (i && _arr.length === i) break;
|
|
493
|
+
}
|
|
494
|
+
} catch (err) {
|
|
495
|
+
_d = true;
|
|
496
|
+
_e = err;
|
|
497
|
+
} finally{
|
|
498
|
+
try {
|
|
499
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
500
|
+
} finally{
|
|
501
|
+
if (_d) throw _e;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
return _arr;
|
|
505
|
+
}
|
|
506
|
+
function _non_iterable_rest$1() {
|
|
507
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
508
|
+
}
|
|
509
|
+
function _object_spread$1(target) {
|
|
510
|
+
for(var i = 1; i < arguments.length; i++){
|
|
511
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
512
|
+
var ownKeys = Object.keys(source);
|
|
513
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
514
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
515
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
516
|
+
}));
|
|
517
|
+
}
|
|
518
|
+
ownKeys.forEach(function(key) {
|
|
519
|
+
_define_property$2(target, key, source[key]);
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
return target;
|
|
523
|
+
}
|
|
524
|
+
function ownKeys$1(object, enumerableOnly) {
|
|
525
|
+
var keys = Object.keys(object);
|
|
526
|
+
if (Object.getOwnPropertySymbols) {
|
|
527
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
528
|
+
if (enumerableOnly) {
|
|
529
|
+
symbols = symbols.filter(function(sym) {
|
|
530
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
keys.push.apply(keys, symbols);
|
|
534
|
+
}
|
|
535
|
+
return keys;
|
|
536
|
+
}
|
|
537
|
+
function _object_spread_props$1(target, source) {
|
|
538
|
+
source = source != null ? source : {};
|
|
539
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
540
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
541
|
+
} else {
|
|
542
|
+
ownKeys$1(Object(source)).forEach(function(key) {
|
|
543
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
544
|
+
});
|
|
545
|
+
}
|
|
546
|
+
return target;
|
|
547
|
+
}
|
|
548
|
+
function _sliced_to_array$1(arr, i) {
|
|
549
|
+
return _array_with_holes$1(arr) || _iterable_to_array_limit$1(arr, i) || _unsupported_iterable_to_array$1(arr, i) || _non_iterable_rest$1();
|
|
550
|
+
}
|
|
551
|
+
function _unsupported_iterable_to_array$1(o, minLen) {
|
|
552
|
+
if (!o) return;
|
|
553
|
+
if (typeof o === "string") return _array_like_to_array$1(o, minLen);
|
|
554
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
555
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
556
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
557
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$1(o, minLen);
|
|
558
|
+
}
|
|
559
|
+
var ModuleHandler = /*#__PURE__*/ function() {
|
|
560
|
+
function ModuleHandler(options, modules, param) {
|
|
561
|
+
var bundler = param.bundler;
|
|
562
|
+
_class_call_check$2(this, ModuleHandler);
|
|
563
|
+
_define_property$2(this, "_options", void 0);
|
|
564
|
+
_define_property$2(this, "_bundler", "webpack");
|
|
565
|
+
_define_property$2(this, "_modules", void 0);
|
|
566
|
+
_define_property$2(this, "_remoteManager", new RemoteManager());
|
|
567
|
+
_define_property$2(this, "_sharedManager", new SharedManager());
|
|
568
|
+
this._options = options;
|
|
569
|
+
this._modules = modules;
|
|
570
|
+
this._bundler = bundler;
|
|
571
|
+
this._remoteManager = new RemoteManager();
|
|
572
|
+
this._remoteManager.init(options);
|
|
573
|
+
this._sharedManager = new SharedManager();
|
|
574
|
+
this._sharedManager.init(options);
|
|
575
|
+
}
|
|
576
|
+
_create_class$2(ModuleHandler, [
|
|
577
|
+
{
|
|
578
|
+
key: "isRspack",
|
|
579
|
+
get: function get() {
|
|
580
|
+
return this._bundler === "rspack";
|
|
581
|
+
}
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
key: "_handleSharedModule",
|
|
585
|
+
value: function _handleSharedModule(mod, sharedMap, exposesMap) {
|
|
586
|
+
var _this = this;
|
|
587
|
+
var identifier = mod.identifier, moduleType = mod.moduleType;
|
|
588
|
+
if (!identifier) {
|
|
589
|
+
return;
|
|
590
|
+
}
|
|
591
|
+
var sharedManagerNormalizedOptions = this._sharedManager.normalizedOptions;
|
|
592
|
+
var initShared = function(pkgName, pkgVersion) {
|
|
593
|
+
if (sharedMap[pkgName]) {
|
|
594
|
+
return;
|
|
595
|
+
}
|
|
596
|
+
sharedMap[pkgName] = _object_spread_props$1(_object_spread$1({}, sharedManagerNormalizedOptions[pkgName]), {
|
|
597
|
+
id: "".concat(_this._options.name, ":").concat(pkgName),
|
|
598
|
+
name: pkgName,
|
|
599
|
+
version: pkgVersion,
|
|
600
|
+
assets: {
|
|
601
|
+
js: {
|
|
602
|
+
async: [],
|
|
603
|
+
sync: []
|
|
604
|
+
},
|
|
605
|
+
css: {
|
|
606
|
+
async: [],
|
|
607
|
+
sync: []
|
|
608
|
+
}
|
|
609
|
+
},
|
|
610
|
+
// @ts-ignore to deduplicate
|
|
611
|
+
usedIn: new Set()
|
|
612
|
+
});
|
|
613
|
+
};
|
|
614
|
+
var collectRelationshipMap = function(mod, pkgName) {
|
|
615
|
+
var issuerName = mod.issuerName, reasons = mod.reasons;
|
|
616
|
+
if (issuerName) {
|
|
617
|
+
if (exposesMap[getFileNameWithOutExt(issuerName)]) {
|
|
618
|
+
var expose = exposesMap[getFileNameWithOutExt(issuerName)];
|
|
619
|
+
// @ts-ignore use Set to deduplicate
|
|
620
|
+
expose.requires.add(pkgName);
|
|
621
|
+
// @ts-ignore use Set to deduplicate
|
|
622
|
+
sharedMap[pkgName].usedIn.add(expose.path);
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
if (reasons) {
|
|
626
|
+
reasons.forEach(function(param) {
|
|
627
|
+
var resolvedModule = param.resolvedModule, moduleName = param.moduleName;
|
|
628
|
+
var exposeModName = _this.isRspack ? moduleName : resolvedModule;
|
|
629
|
+
// filters out entrypoints
|
|
630
|
+
if (exposeModName) {
|
|
631
|
+
if (exposesMap[getFileNameWithOutExt(exposeModName)]) {
|
|
632
|
+
var expose = exposesMap[getFileNameWithOutExt(exposeModName)];
|
|
633
|
+
// @ts-ignore to deduplicate
|
|
634
|
+
expose.requires.add(pkgName);
|
|
635
|
+
// @ts-ignore to deduplicate
|
|
636
|
+
sharedMap[pkgName].usedIn.add(expose.path);
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
});
|
|
640
|
+
}
|
|
641
|
+
};
|
|
642
|
+
var parseResolvedIdentifier = function(nameAndVersion) {
|
|
643
|
+
var name1 = "";
|
|
644
|
+
var version = "";
|
|
645
|
+
if (nameAndVersion.startsWith("@")) {
|
|
646
|
+
var splitInfo = nameAndVersion.split("@");
|
|
647
|
+
splitInfo[0] = "@";
|
|
648
|
+
name1 = splitInfo[0] + splitInfo[1];
|
|
649
|
+
version = splitInfo[2];
|
|
650
|
+
} else if (nameAndVersion.includes("@")) {
|
|
651
|
+
var ref;
|
|
652
|
+
ref = _sliced_to_array$1(nameAndVersion.split("@"), 2), name1 = ref[0], version = ref[1];
|
|
653
|
+
version = version.replace(/[\^~>|>=]/g, "");
|
|
654
|
+
}
|
|
655
|
+
return {
|
|
656
|
+
name: name1,
|
|
657
|
+
version: version
|
|
658
|
+
};
|
|
659
|
+
};
|
|
660
|
+
if (moduleType === "provide-module") {
|
|
661
|
+
// identifier(rspack) = provide shared module (default) react@18.2.0 = /temp/node_modules/.pnpm/react@18.2.0/node_modules/react/index.js
|
|
662
|
+
// identifier(webpack) = provide module (default) react@18.2.0 = /temp/node_modules/.pnpm/react@18.2.0/node_modules/react/index.js
|
|
663
|
+
var data = identifier.split(" ");
|
|
664
|
+
var nameAndVersion = this.isRspack ? data[4] : data[3];
|
|
665
|
+
var _parseResolvedIdentifier = parseResolvedIdentifier(nameAndVersion), name1 = _parseResolvedIdentifier.name, version = _parseResolvedIdentifier.version;
|
|
666
|
+
if (name1 && version) {
|
|
667
|
+
initShared(name1, version);
|
|
668
|
+
collectRelationshipMap(mod, name1);
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
if (moduleType === "consume-shared-module") {
|
|
672
|
+
// identifier(rspack) = consume shared module (default) lodash/get@^4.17.21 (strict) (fallback: /temp/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/get.js)
|
|
673
|
+
// identifier(webpack) = consume-shared-module|default|react-dom|!=1.8...2...0|false|/temp/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/index.js|true|false
|
|
674
|
+
var SEPARATOR = this.isRspack ? " " : "|";
|
|
675
|
+
var data1 = identifier.split(SEPARATOR);
|
|
676
|
+
var pkgName = "";
|
|
677
|
+
var pkgVersion = "";
|
|
678
|
+
if (this.isRspack) {
|
|
679
|
+
var nameAndVersion1 = data1[4];
|
|
680
|
+
var res = parseResolvedIdentifier(nameAndVersion1);
|
|
681
|
+
pkgName = res.name;
|
|
682
|
+
pkgVersion = res.version;
|
|
683
|
+
} else {
|
|
684
|
+
var pkgName1 = data1[2];
|
|
685
|
+
var pkgVersionRange = data1[3];
|
|
686
|
+
if (pkgVersionRange.startsWith("=")) {
|
|
687
|
+
data1[3].replace("=", "");
|
|
688
|
+
} else {
|
|
689
|
+
if (sharedManagerNormalizedOptions[pkgName1]) {
|
|
690
|
+
sharedManagerNormalizedOptions[pkgName1].version;
|
|
691
|
+
} else {
|
|
692
|
+
var fullPkgName = pkgName1.split("/").slice(0, -1).join("/");
|
|
693
|
+
// pkgName: react-dom/
|
|
694
|
+
if (sharedManagerNormalizedOptions["".concat(fullPkgName, "/")]) {
|
|
695
|
+
if (sharedManagerNormalizedOptions[fullPkgName]) {
|
|
696
|
+
sharedManagerNormalizedOptions[fullPkgName].version;
|
|
697
|
+
} else {
|
|
698
|
+
sharedManagerNormalizedOptions["".concat(fullPkgName, "/")].version;
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
if (pkgName && pkgVersion) {
|
|
705
|
+
initShared(pkgName, pkgVersion);
|
|
706
|
+
collectRelationshipMap(mod, pkgName);
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
},
|
|
711
|
+
{
|
|
712
|
+
key: "_handleRemoteModule",
|
|
713
|
+
value: function _handleRemoteModule(mod, remotes, remotesConsumerMap) {
|
|
714
|
+
var _this = this;
|
|
715
|
+
var identifier = mod.identifier, reasons = mod.reasons, nameForCondition = mod.nameForCondition;
|
|
716
|
+
if (!identifier) {
|
|
717
|
+
return;
|
|
718
|
+
}
|
|
719
|
+
var remoteManagerNormalizedOptions = this._remoteManager.normalizedOptions;
|
|
720
|
+
// identifier = remote (default) webpack/container/reference/app2 ./Button
|
|
721
|
+
var data = identifier.split(" ");
|
|
722
|
+
if (data.length === 4) {
|
|
723
|
+
var moduleName = data[3].replace("./", "");
|
|
724
|
+
var remoteAlias = data[2].replace("webpack/container/reference/", "");
|
|
725
|
+
var normalizedRemote = remoteManagerNormalizedOptions[remoteAlias];
|
|
726
|
+
var basicRemote = {
|
|
727
|
+
alias: normalizedRemote.alias,
|
|
728
|
+
consumingGarfishModuleName: name,
|
|
729
|
+
garfishModuleName: remoteManagerNormalizedOptions[remoteAlias].name,
|
|
730
|
+
moduleName: moduleName,
|
|
731
|
+
// @ts-ignore to deduplicate
|
|
732
|
+
usedIn: new Set()
|
|
733
|
+
};
|
|
734
|
+
if (!nameForCondition) {
|
|
735
|
+
return;
|
|
736
|
+
}
|
|
737
|
+
var remote;
|
|
738
|
+
if ("version" in normalizedRemote) {
|
|
739
|
+
remote = _object_spread_props$1(_object_spread$1({}, basicRemote), {
|
|
740
|
+
version: normalizedRemote.version
|
|
741
|
+
});
|
|
742
|
+
} else {
|
|
743
|
+
remote = _object_spread_props$1(_object_spread$1({}, basicRemote), {
|
|
744
|
+
entry: normalizedRemote.entry
|
|
745
|
+
});
|
|
746
|
+
}
|
|
747
|
+
remotes.push(remote);
|
|
748
|
+
remotesConsumerMap[nameForCondition] = remote;
|
|
749
|
+
}
|
|
750
|
+
if (reasons) {
|
|
751
|
+
reasons.forEach(function(param) {
|
|
752
|
+
var userRequest = param.userRequest, resolvedModule = param.resolvedModule, moduleName = param.moduleName;
|
|
753
|
+
var exposeModName = _this.isRspack ? moduleName : resolvedModule;
|
|
754
|
+
if (userRequest && exposeModName && remotesConsumerMap[userRequest]) {
|
|
755
|
+
// @ts-ignore to deduplicate
|
|
756
|
+
remotesConsumerMap[userRequest].usedIn.add(exposeModName.replace("./", ""));
|
|
757
|
+
}
|
|
758
|
+
});
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
},
|
|
762
|
+
{
|
|
763
|
+
key: "_handleContainerModule",
|
|
764
|
+
value: function _handleContainerModule(mod, exposesMap) {
|
|
765
|
+
var _this = this;
|
|
766
|
+
var identifier = mod.identifier;
|
|
767
|
+
if (!identifier) {
|
|
768
|
+
return;
|
|
769
|
+
}
|
|
770
|
+
// identifier: container entry (default) [[".",{"import":["./src/routes/page.tsx"],"name":"__federation_expose_default_export"}]]'
|
|
771
|
+
var data = identifier.split(" ");
|
|
772
|
+
JSON.parse(data[3]).forEach(function(param) {
|
|
773
|
+
var _param = _sliced_to_array$1(param, 2), prefixedName = _param[0], file = _param[1];
|
|
774
|
+
var exposeModuleName = prefixedName.replace("./", "");
|
|
775
|
+
// TODO: support multiple import
|
|
776
|
+
exposesMap[getFileNameWithOutExt(file.import[0])] = {
|
|
777
|
+
path: prefixedName,
|
|
778
|
+
id: "".concat(_this._options.name, ":").concat(exposeModuleName),
|
|
779
|
+
name: exposeModuleName,
|
|
780
|
+
// @ts-ignore to deduplicate
|
|
781
|
+
requires: new Set(),
|
|
782
|
+
file: path.relative(process.cwd(), file.import[0]),
|
|
783
|
+
assets: {
|
|
784
|
+
js: {
|
|
785
|
+
async: [],
|
|
786
|
+
sync: []
|
|
787
|
+
},
|
|
788
|
+
css: {
|
|
789
|
+
async: [],
|
|
790
|
+
sync: []
|
|
791
|
+
}
|
|
792
|
+
}
|
|
793
|
+
};
|
|
794
|
+
});
|
|
795
|
+
}
|
|
796
|
+
},
|
|
797
|
+
{
|
|
798
|
+
key: "collect",
|
|
799
|
+
value: function collect() {
|
|
800
|
+
var _this = this;
|
|
801
|
+
var remotes = [];
|
|
802
|
+
var remotesConsumerMap = {};
|
|
803
|
+
var exposesMap = {};
|
|
804
|
+
var sharedMap = {};
|
|
805
|
+
var isSharedModule = function(moduleType) {
|
|
806
|
+
return Boolean(moduleType && [
|
|
807
|
+
"provide-module",
|
|
808
|
+
"consume-shared-module"
|
|
809
|
+
].includes(moduleType));
|
|
810
|
+
};
|
|
811
|
+
var isContainerModule = function(identifier) {
|
|
812
|
+
var data = identifier.split(" ");
|
|
813
|
+
return Boolean(data[0] === "container" && data[1] === "entry");
|
|
814
|
+
};
|
|
815
|
+
var isRemoteModule = function(identifier) {
|
|
816
|
+
var data = identifier.split(" ");
|
|
817
|
+
return data[0] === "remote";
|
|
818
|
+
};
|
|
819
|
+
// handle remote/expose
|
|
820
|
+
this._modules.forEach(function(mod) {
|
|
821
|
+
var identifier = mod.identifier; mod.reasons; mod.nameForCondition; var moduleType = mod.moduleType;
|
|
822
|
+
if (!identifier) {
|
|
823
|
+
return;
|
|
824
|
+
}
|
|
825
|
+
if (isSharedModule(moduleType)) {
|
|
826
|
+
_this._handleSharedModule(mod, sharedMap, exposesMap);
|
|
827
|
+
}
|
|
828
|
+
if (isRemoteModule(identifier)) {
|
|
829
|
+
_this._handleRemoteModule(mod, remotes, remotesConsumerMap);
|
|
830
|
+
} else if (isContainerModule(identifier)) {
|
|
831
|
+
_this._handleContainerModule(mod, exposesMap);
|
|
832
|
+
}
|
|
833
|
+
});
|
|
834
|
+
return {
|
|
835
|
+
remotes: remotes,
|
|
836
|
+
exposesMap: exposesMap,
|
|
837
|
+
sharedMap: sharedMap
|
|
838
|
+
};
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
]);
|
|
842
|
+
return ModuleHandler;
|
|
843
|
+
}();
|
|
844
|
+
|
|
845
|
+
/* eslint-disable max-lines-per-function */ /* eslint-disable @typescript-eslint/member-ordering */ /* eslint-disable max-depth */ function _array_like_to_array(arr, len) {
|
|
846
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
847
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
848
|
+
return arr2;
|
|
849
|
+
}
|
|
850
|
+
function _array_with_holes(arr) {
|
|
851
|
+
if (Array.isArray(arr)) return arr;
|
|
852
|
+
}
|
|
853
|
+
function _array_without_holes(arr) {
|
|
854
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
855
|
+
}
|
|
856
|
+
function asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) {
|
|
857
|
+
try {
|
|
858
|
+
var info = gen[key](arg);
|
|
859
|
+
var value = info.value;
|
|
860
|
+
} catch (error) {
|
|
861
|
+
reject(error);
|
|
862
|
+
return;
|
|
863
|
+
}
|
|
864
|
+
if (info.done) {
|
|
865
|
+
resolve(value);
|
|
866
|
+
} else {
|
|
867
|
+
Promise.resolve(value).then(_next, _throw);
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
function _async_to_generator$1(fn) {
|
|
871
|
+
return function() {
|
|
872
|
+
var self = this, args = arguments;
|
|
873
|
+
return new Promise(function(resolve, reject) {
|
|
874
|
+
var gen = fn.apply(self, args);
|
|
875
|
+
function _next(value) {
|
|
876
|
+
asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "next", value);
|
|
877
|
+
}
|
|
878
|
+
function _throw(err) {
|
|
879
|
+
asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "throw", err);
|
|
880
|
+
}
|
|
881
|
+
_next(undefined);
|
|
882
|
+
});
|
|
883
|
+
};
|
|
884
|
+
}
|
|
885
|
+
function _class_call_check$1(instance, Constructor) {
|
|
886
|
+
if (!(instance instanceof Constructor)) {
|
|
887
|
+
throw new TypeError("Cannot call a class as a function");
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
function _defineProperties$1(target, props) {
|
|
891
|
+
for(var i = 0; i < props.length; i++){
|
|
892
|
+
var descriptor = props[i];
|
|
893
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
894
|
+
descriptor.configurable = true;
|
|
895
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
896
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
function _create_class$1(Constructor, protoProps, staticProps) {
|
|
900
|
+
if (protoProps) _defineProperties$1(Constructor.prototype, protoProps);
|
|
901
|
+
if (staticProps) _defineProperties$1(Constructor, staticProps);
|
|
902
|
+
return Constructor;
|
|
903
|
+
}
|
|
904
|
+
function _define_property$1(obj, key, value) {
|
|
905
|
+
if (key in obj) {
|
|
906
|
+
Object.defineProperty(obj, key, {
|
|
907
|
+
value: value,
|
|
908
|
+
enumerable: true,
|
|
909
|
+
configurable: true,
|
|
910
|
+
writable: true
|
|
911
|
+
});
|
|
912
|
+
} else {
|
|
913
|
+
obj[key] = value;
|
|
914
|
+
}
|
|
915
|
+
return obj;
|
|
916
|
+
}
|
|
917
|
+
function _iterable_to_array(iter) {
|
|
918
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
919
|
+
}
|
|
920
|
+
function _iterable_to_array_limit(arr, i) {
|
|
921
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
922
|
+
if (_i == null) return;
|
|
923
|
+
var _arr = [];
|
|
924
|
+
var _n = true;
|
|
925
|
+
var _d = false;
|
|
926
|
+
var _s, _e;
|
|
927
|
+
try {
|
|
928
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
929
|
+
_arr.push(_s.value);
|
|
930
|
+
if (i && _arr.length === i) break;
|
|
931
|
+
}
|
|
932
|
+
} catch (err) {
|
|
933
|
+
_d = true;
|
|
934
|
+
_e = err;
|
|
935
|
+
} finally{
|
|
936
|
+
try {
|
|
937
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
938
|
+
} finally{
|
|
939
|
+
if (_d) throw _e;
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
return _arr;
|
|
943
|
+
}
|
|
944
|
+
function _non_iterable_rest() {
|
|
945
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
946
|
+
}
|
|
947
|
+
function _non_iterable_spread() {
|
|
948
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
949
|
+
}
|
|
950
|
+
function _object_spread(target) {
|
|
951
|
+
for(var i = 1; i < arguments.length; i++){
|
|
952
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
953
|
+
var ownKeys = Object.keys(source);
|
|
954
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
955
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
956
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
957
|
+
}));
|
|
958
|
+
}
|
|
959
|
+
ownKeys.forEach(function(key) {
|
|
960
|
+
_define_property$1(target, key, source[key]);
|
|
961
|
+
});
|
|
962
|
+
}
|
|
963
|
+
return target;
|
|
964
|
+
}
|
|
965
|
+
function ownKeys(object, enumerableOnly) {
|
|
966
|
+
var keys = Object.keys(object);
|
|
967
|
+
if (Object.getOwnPropertySymbols) {
|
|
968
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
969
|
+
if (enumerableOnly) {
|
|
970
|
+
symbols = symbols.filter(function(sym) {
|
|
971
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
972
|
+
});
|
|
973
|
+
}
|
|
974
|
+
keys.push.apply(keys, symbols);
|
|
975
|
+
}
|
|
976
|
+
return keys;
|
|
977
|
+
}
|
|
978
|
+
function _object_spread_props(target, source) {
|
|
979
|
+
source = source != null ? source : {};
|
|
980
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
981
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
982
|
+
} else {
|
|
983
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
984
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
985
|
+
});
|
|
986
|
+
}
|
|
987
|
+
return target;
|
|
988
|
+
}
|
|
989
|
+
function _sliced_to_array(arr, i) {
|
|
990
|
+
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
991
|
+
}
|
|
992
|
+
function _tagged_template_literal(strings, raw) {
|
|
993
|
+
if (!raw) {
|
|
994
|
+
raw = strings.slice(0);
|
|
995
|
+
}
|
|
996
|
+
return Object.freeze(Object.defineProperties(strings, {
|
|
997
|
+
raw: {
|
|
998
|
+
value: Object.freeze(raw)
|
|
999
|
+
}
|
|
1000
|
+
}));
|
|
1001
|
+
}
|
|
1002
|
+
function _to_consumable_array(arr) {
|
|
1003
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
1004
|
+
}
|
|
1005
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
1006
|
+
if (!o) return;
|
|
1007
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
1008
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
1009
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
1010
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
1011
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
1012
|
+
}
|
|
1013
|
+
function _ts_generator$1(thisArg, body) {
|
|
1014
|
+
var f, y, t, g, _ = {
|
|
1015
|
+
label: 0,
|
|
1016
|
+
sent: function() {
|
|
1017
|
+
if (t[0] & 1) throw t[1];
|
|
1018
|
+
return t[1];
|
|
1019
|
+
},
|
|
1020
|
+
trys: [],
|
|
1021
|
+
ops: []
|
|
1022
|
+
};
|
|
1023
|
+
return g = {
|
|
1024
|
+
next: verb(0),
|
|
1025
|
+
"throw": verb(1),
|
|
1026
|
+
"return": verb(2)
|
|
1027
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
1028
|
+
return this;
|
|
1029
|
+
}), g;
|
|
1030
|
+
function verb(n) {
|
|
1031
|
+
return function(v) {
|
|
1032
|
+
return step([
|
|
1033
|
+
n,
|
|
1034
|
+
v
|
|
1035
|
+
]);
|
|
1036
|
+
};
|
|
1037
|
+
}
|
|
1038
|
+
function step(op) {
|
|
1039
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
1040
|
+
while(_)try {
|
|
1041
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
1042
|
+
if (y = 0, t) op = [
|
|
1043
|
+
op[0] & 2,
|
|
1044
|
+
t.value
|
|
1045
|
+
];
|
|
1046
|
+
switch(op[0]){
|
|
1047
|
+
case 0:
|
|
1048
|
+
case 1:
|
|
1049
|
+
t = op;
|
|
1050
|
+
break;
|
|
1051
|
+
case 4:
|
|
1052
|
+
_.label++;
|
|
1053
|
+
return {
|
|
1054
|
+
value: op[1],
|
|
1055
|
+
done: false
|
|
1056
|
+
};
|
|
1057
|
+
case 5:
|
|
1058
|
+
_.label++;
|
|
1059
|
+
y = op[1];
|
|
1060
|
+
op = [
|
|
1061
|
+
0
|
|
1062
|
+
];
|
|
1063
|
+
continue;
|
|
1064
|
+
case 7:
|
|
1065
|
+
op = _.ops.pop();
|
|
1066
|
+
_.trys.pop();
|
|
1067
|
+
continue;
|
|
1068
|
+
default:
|
|
1069
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
1070
|
+
_ = 0;
|
|
1071
|
+
continue;
|
|
1072
|
+
}
|
|
1073
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
1074
|
+
_.label = op[1];
|
|
1075
|
+
break;
|
|
1076
|
+
}
|
|
1077
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
1078
|
+
_.label = t[1];
|
|
1079
|
+
t = op;
|
|
1080
|
+
break;
|
|
1081
|
+
}
|
|
1082
|
+
if (t && _.label < t[2]) {
|
|
1083
|
+
_.label = t[2];
|
|
1084
|
+
_.ops.push(op);
|
|
1085
|
+
break;
|
|
1086
|
+
}
|
|
1087
|
+
if (t[2]) _.ops.pop();
|
|
1088
|
+
_.trys.pop();
|
|
1089
|
+
continue;
|
|
1090
|
+
}
|
|
1091
|
+
op = body.call(thisArg, _);
|
|
1092
|
+
} catch (e) {
|
|
1093
|
+
op = [
|
|
1094
|
+
6,
|
|
1095
|
+
e
|
|
1096
|
+
];
|
|
1097
|
+
y = 0;
|
|
1098
|
+
} finally{
|
|
1099
|
+
f = t = 0;
|
|
1100
|
+
}
|
|
1101
|
+
if (op[0] & 5) throw op[1];
|
|
1102
|
+
return {
|
|
1103
|
+
value: op[0] ? op[1] : void 0,
|
|
1104
|
+
done: true
|
|
1105
|
+
};
|
|
1106
|
+
}
|
|
1107
|
+
}
|
|
1108
|
+
function _templateObject() {
|
|
1109
|
+
var data = _tagged_template_literal([
|
|
1110
|
+
"{bold {red [ ",
|
|
1111
|
+
" ]: PublicPath can only be string, but got ",
|
|
1112
|
+
"}}"
|
|
1113
|
+
]);
|
|
1114
|
+
_templateObject = function _templateObject() {
|
|
1115
|
+
return data;
|
|
1116
|
+
};
|
|
1117
|
+
return data;
|
|
1118
|
+
}
|
|
1119
|
+
var StatsManager = /*#__PURE__*/ function() {
|
|
1120
|
+
function StatsManager() {
|
|
1121
|
+
_class_call_check$1(this, StatsManager);
|
|
1122
|
+
_define_property$1(this, "_options", {});
|
|
1123
|
+
_define_property$1(this, "_publicPath", void 0);
|
|
1124
|
+
_define_property$1(this, "_pluginVersion", void 0);
|
|
1125
|
+
_define_property$1(this, "_bundler", "webpack");
|
|
1126
|
+
_define_property$1(this, "_containerManager", new ContainerManager());
|
|
1127
|
+
_define_property$1(this, "_remoteManager", new RemoteManager());
|
|
1128
|
+
_define_property$1(this, "_sharedManager", new SharedManager());
|
|
1129
|
+
_define_property$1(this, "_pkgJsonManager", new PKGJsonManager());
|
|
1130
|
+
}
|
|
1131
|
+
_create_class$1(StatsManager, [
|
|
1132
|
+
{
|
|
1133
|
+
key: "buildInfo",
|
|
1134
|
+
get: function get() {
|
|
1135
|
+
this._pkgJsonManager.getExposeGarfishModuleType();
|
|
1136
|
+
var pkg = this._pkgJsonManager.readPKGJson(process.cwd());
|
|
1137
|
+
return {
|
|
1138
|
+
buildVersion: utils.getBuildVersion(),
|
|
1139
|
+
buildName: utils.getBuildName() || pkg["name"]
|
|
1140
|
+
};
|
|
1141
|
+
}
|
|
1142
|
+
},
|
|
1143
|
+
{
|
|
1144
|
+
key: "_getMetaData",
|
|
1145
|
+
value: function _getMetaData(compiler, compilation, extraOptions) {
|
|
1146
|
+
var _this = this;
|
|
1147
|
+
var context = compiler.options.context;
|
|
1148
|
+
var _this1 = this, name = _this1._options.name, buildInfo = _this1.buildInfo;
|
|
1149
|
+
var type = this._pkgJsonManager.getExposeGarfishModuleType(context || process.cwd());
|
|
1150
|
+
var getRemoteEntryName = function() {
|
|
1151
|
+
if (!_this._containerManager.enable) {
|
|
1152
|
+
return "";
|
|
1153
|
+
}
|
|
1154
|
+
assert(name, "name is required");
|
|
1155
|
+
var remoteEntryPoint = compilation.entrypoints.get(name);
|
|
1156
|
+
assert(remoteEntryPoint, "Can not get remoteEntry entryPoint!");
|
|
1157
|
+
var remoteEntryNameChunk = compilation.namedChunks.get(name);
|
|
1158
|
+
assert(remoteEntryNameChunk, "Can not get remoteEntry chunk!");
|
|
1159
|
+
debugger;
|
|
1160
|
+
assert(Array.from(remoteEntryNameChunk.files).length === 1, "remoteEntry chunk should not have multiple files!");
|
|
1161
|
+
var remoteEntryName = _to_consumable_array(remoteEntryNameChunk.files)[0];
|
|
1162
|
+
return remoteEntryName;
|
|
1163
|
+
};
|
|
1164
|
+
var globalName = this._containerManager.globalEntryName;
|
|
1165
|
+
assert(globalName, 'Can not get library.name, please ensure you have set library.name and the type is "string" !');
|
|
1166
|
+
assert(this._pluginVersion, "Can not get pluginVersion, please ensure you have set pluginVersion !");
|
|
1167
|
+
var metaData = {
|
|
1168
|
+
name: name,
|
|
1169
|
+
type: type,
|
|
1170
|
+
buildInfo: buildInfo,
|
|
1171
|
+
remoteEntry: {
|
|
1172
|
+
name: getRemoteEntryName(),
|
|
1173
|
+
path: "",
|
|
1174
|
+
type: "global"
|
|
1175
|
+
},
|
|
1176
|
+
types: {
|
|
1177
|
+
name: "",
|
|
1178
|
+
path: ""
|
|
1179
|
+
},
|
|
1180
|
+
globalName: globalName,
|
|
1181
|
+
pluginVersion: this._pluginVersion
|
|
1182
|
+
};
|
|
1183
|
+
return _object_spread_props(_object_spread({}, metaData), {
|
|
1184
|
+
publicPath: this.getPublicPath(compiler)
|
|
1185
|
+
});
|
|
1186
|
+
}
|
|
1187
|
+
},
|
|
1188
|
+
{
|
|
1189
|
+
key: "_getFilteredModules",
|
|
1190
|
+
value: function _getFilteredModules(stats) {
|
|
1191
|
+
var filteredModules = stats.modules.filter(function(module) {
|
|
1192
|
+
if (!module || !module.name) {
|
|
1193
|
+
return false;
|
|
1194
|
+
}
|
|
1195
|
+
var array = [
|
|
1196
|
+
module.name.includes("container entry"),
|
|
1197
|
+
module.name.includes("remote "),
|
|
1198
|
+
module.name.includes("shared module "),
|
|
1199
|
+
module.name.includes("provide module ")
|
|
1200
|
+
];
|
|
1201
|
+
return array.some(function(item) {
|
|
1202
|
+
return item;
|
|
1203
|
+
});
|
|
1204
|
+
});
|
|
1205
|
+
return filteredModules;
|
|
1206
|
+
}
|
|
1207
|
+
},
|
|
1208
|
+
{
|
|
1209
|
+
key: "_getModuleAssets",
|
|
1210
|
+
value: function _getModuleAssets(compilation) {
|
|
1211
|
+
var chunks = compilation.chunks;
|
|
1212
|
+
var exposeFileNameImportMap = this._containerManager.exposeFileNameImportMap;
|
|
1213
|
+
var assets = {};
|
|
1214
|
+
chunks.forEach(function(chunk) {
|
|
1215
|
+
if (typeof chunk.name === "string" && exposeFileNameImportMap[chunk.name]) {
|
|
1216
|
+
var exposeKey = exposeFileNameImportMap[chunk.name];
|
|
1217
|
+
assets[exposeKey] = getAssetsByChunk(chunk);
|
|
1218
|
+
}
|
|
1219
|
+
});
|
|
1220
|
+
return assets;
|
|
1221
|
+
}
|
|
1222
|
+
},
|
|
1223
|
+
{
|
|
1224
|
+
key: "_getProvideSharedAssets",
|
|
1225
|
+
value: function _getProvideSharedAssets(compilation, stats) {
|
|
1226
|
+
var sharedModules = stats.modules.filter(function(module) {
|
|
1227
|
+
if (!module || !module.name) {
|
|
1228
|
+
return false;
|
|
1229
|
+
}
|
|
1230
|
+
var array = [
|
|
1231
|
+
module.name.includes("consume shared module ")
|
|
1232
|
+
];
|
|
1233
|
+
return array.some(function(item) {
|
|
1234
|
+
return item;
|
|
1235
|
+
});
|
|
1236
|
+
});
|
|
1237
|
+
var manifestOverrideChunkIDMap = {};
|
|
1238
|
+
var effectiveSharedModules = getSharedModules(stats, sharedModules);
|
|
1239
|
+
effectiveSharedModules.forEach(function(item) {
|
|
1240
|
+
var _item = _sliced_to_array(item, 2), sharedModuleName = _item[0], sharedModule = _item[1];
|
|
1241
|
+
if (!manifestOverrideChunkIDMap[sharedModuleName]) {
|
|
1242
|
+
manifestOverrideChunkIDMap[sharedModuleName] = {
|
|
1243
|
+
async: new Set(),
|
|
1244
|
+
sync: new Set()
|
|
1245
|
+
};
|
|
1246
|
+
}
|
|
1247
|
+
sharedModule.chunks.forEach(function(chunkID) {
|
|
1248
|
+
var chunk = findChunk(chunkID, compilation.chunks);
|
|
1249
|
+
manifestOverrideChunkIDMap[sharedModuleName].sync.add(chunkID);
|
|
1250
|
+
Array.from(chunk.getAllInitialChunks()).forEach(function(syncChunk) {
|
|
1251
|
+
syncChunk.id && manifestOverrideChunkIDMap[sharedModuleName].sync.add(syncChunk.id);
|
|
1252
|
+
});
|
|
1253
|
+
Array.from(chunk.getAllAsyncChunks()).forEach(function(asyncChunk) {
|
|
1254
|
+
asyncChunk.id && manifestOverrideChunkIDMap[sharedModuleName].async.add(asyncChunk.id);
|
|
1255
|
+
});
|
|
1256
|
+
});
|
|
1257
|
+
});
|
|
1258
|
+
var assets = {
|
|
1259
|
+
js: {
|
|
1260
|
+
async: [],
|
|
1261
|
+
sync: []
|
|
1262
|
+
},
|
|
1263
|
+
css: {
|
|
1264
|
+
async: [],
|
|
1265
|
+
sync: []
|
|
1266
|
+
}
|
|
1267
|
+
};
|
|
1268
|
+
Object.keys(manifestOverrideChunkIDMap).forEach(function(override) {
|
|
1269
|
+
var asyncAssets = getAssetsByChunkIDs(compilation, _define_property$1({}, override, manifestOverrideChunkIDMap[override].async));
|
|
1270
|
+
var syncAssets = getAssetsByChunkIDs(compilation, _define_property$1({}, override, manifestOverrideChunkIDMap[override].sync));
|
|
1271
|
+
assets[override] = {
|
|
1272
|
+
js: {
|
|
1273
|
+
async: asyncAssets[override].js,
|
|
1274
|
+
sync: syncAssets[override].js
|
|
1275
|
+
},
|
|
1276
|
+
css: {
|
|
1277
|
+
async: asyncAssets[override].css,
|
|
1278
|
+
sync: syncAssets[override].css
|
|
1279
|
+
}
|
|
1280
|
+
};
|
|
1281
|
+
});
|
|
1282
|
+
return assets;
|
|
1283
|
+
}
|
|
1284
|
+
},
|
|
1285
|
+
{
|
|
1286
|
+
key: "_generateStats",
|
|
1287
|
+
value: function _generateStats(compiler, compilation, extraOptions) {
|
|
1288
|
+
var _this = this;
|
|
1289
|
+
return _async_to_generator$1(function() {
|
|
1290
|
+
var _this__options, name, tmp, manifestOptions, metaData, stats, remotes, liveStats, webpackStats, filteredModules, moduleHandler, _moduleHandler_collect, remotes1, exposesMap, sharedMap, err;
|
|
1291
|
+
return _ts_generator$1(this, function(_state) {
|
|
1292
|
+
switch(_state.label){
|
|
1293
|
+
case 0:
|
|
1294
|
+
_state.trys.push([
|
|
1295
|
+
0,
|
|
1296
|
+
3,
|
|
1297
|
+
,
|
|
1298
|
+
4
|
|
1299
|
+
]);
|
|
1300
|
+
_this__options = _this._options, name = _this__options.name, tmp = _this__options.manifest, manifestOptions = tmp === void 0 ? {} : tmp;
|
|
1301
|
+
metaData = _this._getMetaData(compiler, compilation, extraOptions);
|
|
1302
|
+
stats = {
|
|
1303
|
+
id: name,
|
|
1304
|
+
name: name,
|
|
1305
|
+
metaData: metaData,
|
|
1306
|
+
shared: [],
|
|
1307
|
+
remotes: [],
|
|
1308
|
+
exposes: []
|
|
1309
|
+
};
|
|
1310
|
+
if (typeof manifestOptions === "object" && manifestOptions.disableAssetsAnalyze) {
|
|
1311
|
+
remotes = _this._remoteManager.statsRemoteWithEmptyUsedIn;
|
|
1312
|
+
stats.remotes = remotes;
|
|
1313
|
+
return [
|
|
1314
|
+
2,
|
|
1315
|
+
stats
|
|
1316
|
+
];
|
|
1317
|
+
}
|
|
1318
|
+
liveStats = compilation.getStats();
|
|
1319
|
+
webpackStats = liveStats.toJson({
|
|
1320
|
+
all: false,
|
|
1321
|
+
modules: true,
|
|
1322
|
+
builtAt: true,
|
|
1323
|
+
hash: true,
|
|
1324
|
+
ids: true,
|
|
1325
|
+
version: true,
|
|
1326
|
+
entrypoints: true,
|
|
1327
|
+
assets: false,
|
|
1328
|
+
chunks: false,
|
|
1329
|
+
reasons: true
|
|
1330
|
+
});
|
|
1331
|
+
filteredModules = _this._getFilteredModules(webpackStats);
|
|
1332
|
+
moduleHandler = new ModuleHandler(_this._options, filteredModules, {
|
|
1333
|
+
bundler: _this._bundler
|
|
1334
|
+
});
|
|
1335
|
+
_moduleHandler_collect = moduleHandler.collect(), remotes1 = _moduleHandler_collect.remotes, exposesMap = _moduleHandler_collect.exposesMap, sharedMap = _moduleHandler_collect.sharedMap;
|
|
1336
|
+
return [
|
|
1337
|
+
4,
|
|
1338
|
+
Promise.all([
|
|
1339
|
+
new Promise(function(resolve) {
|
|
1340
|
+
var sharedAssets = _this._getProvideSharedAssets(compilation, webpackStats);
|
|
1341
|
+
Object.keys(sharedMap).forEach(function(sharedKey) {
|
|
1342
|
+
var assets = sharedAssets[sharedKey];
|
|
1343
|
+
if (assets) {
|
|
1344
|
+
sharedMap[sharedKey].assets = assets;
|
|
1345
|
+
}
|
|
1346
|
+
});
|
|
1347
|
+
resolve();
|
|
1348
|
+
}),
|
|
1349
|
+
new Promise(function(resolve) {
|
|
1350
|
+
var moduleAssets = _this._getModuleAssets(compilation);
|
|
1351
|
+
Object.keys(exposesMap).forEach(function(exposeKey) {
|
|
1352
|
+
var assets = moduleAssets[exposeKey];
|
|
1353
|
+
if (assets) {
|
|
1354
|
+
exposesMap[exposeKey].assets = assets;
|
|
1355
|
+
}
|
|
1356
|
+
exposesMap[exposeKey].requires = Array.from(exposesMap[exposeKey].requires);
|
|
1357
|
+
});
|
|
1358
|
+
resolve();
|
|
1359
|
+
})
|
|
1360
|
+
])
|
|
1361
|
+
];
|
|
1362
|
+
case 1:
|
|
1363
|
+
_state.sent();
|
|
1364
|
+
return [
|
|
1365
|
+
4,
|
|
1366
|
+
Promise.all([
|
|
1367
|
+
new Promise(function(resolve) {
|
|
1368
|
+
stats.remotes = remotes1.map(function(remote) {
|
|
1369
|
+
return _object_spread_props(_object_spread({}, remote), {
|
|
1370
|
+
usedIn: Array.from(remote.usedIn.values())
|
|
1371
|
+
});
|
|
1372
|
+
});
|
|
1373
|
+
resolve();
|
|
1374
|
+
}),
|
|
1375
|
+
new Promise(function(resolve) {
|
|
1376
|
+
stats.shared = Object.values(sharedMap).map(function(shared) {
|
|
1377
|
+
return _object_spread_props(_object_spread({}, shared), {
|
|
1378
|
+
usedIn: Array.from(shared.usedIn)
|
|
1379
|
+
});
|
|
1380
|
+
});
|
|
1381
|
+
resolve();
|
|
1382
|
+
}),
|
|
1383
|
+
new Promise(function(resolve) {
|
|
1384
|
+
stats.exposes = Object.values(exposesMap).map(function(expose) {
|
|
1385
|
+
return _object_spread({}, expose);
|
|
1386
|
+
});
|
|
1387
|
+
resolve();
|
|
1388
|
+
})
|
|
1389
|
+
])
|
|
1390
|
+
];
|
|
1391
|
+
case 2:
|
|
1392
|
+
_state.sent();
|
|
1393
|
+
return [
|
|
1394
|
+
2,
|
|
1395
|
+
stats
|
|
1396
|
+
];
|
|
1397
|
+
case 3:
|
|
1398
|
+
err = _state.sent();
|
|
1399
|
+
throw err;
|
|
1400
|
+
case 4:
|
|
1401
|
+
return [
|
|
1402
|
+
2
|
|
1403
|
+
];
|
|
1404
|
+
}
|
|
1405
|
+
});
|
|
1406
|
+
})();
|
|
1407
|
+
}
|
|
1408
|
+
},
|
|
1409
|
+
{
|
|
1410
|
+
key: "getPublicPath",
|
|
1411
|
+
value: function getPublicPath(compiler) {
|
|
1412
|
+
if (this._publicPath) {
|
|
1413
|
+
return this._publicPath;
|
|
1414
|
+
}
|
|
1415
|
+
var _compiler_options = compiler.options, _compiler_options_output = _compiler_options.output, originalPublicPath = _compiler_options_output.publicPath;
|
|
1416
|
+
var publicPath = originalPublicPath;
|
|
1417
|
+
this._publicPath = publicPath;
|
|
1418
|
+
return publicPath;
|
|
1419
|
+
}
|
|
1420
|
+
},
|
|
1421
|
+
{
|
|
1422
|
+
key: "init",
|
|
1423
|
+
value: function init(options, param) {
|
|
1424
|
+
var pluginVersion = param.pluginVersion, bundler = param.bundler;
|
|
1425
|
+
this._options = options;
|
|
1426
|
+
this._pluginVersion = pluginVersion;
|
|
1427
|
+
this._bundler = bundler;
|
|
1428
|
+
this._containerManager = new ContainerManager();
|
|
1429
|
+
this._containerManager.init(options);
|
|
1430
|
+
this._remoteManager = new RemoteManager();
|
|
1431
|
+
this._remoteManager.init(options);
|
|
1432
|
+
this._sharedManager = new SharedManager();
|
|
1433
|
+
this._sharedManager.init(options);
|
|
1434
|
+
}
|
|
1435
|
+
},
|
|
1436
|
+
{
|
|
1437
|
+
key: "generateStats",
|
|
1438
|
+
value: function generateStats(compiler, compilation, extraOptions) {
|
|
1439
|
+
var _this = this;
|
|
1440
|
+
return _async_to_generator$1(function() {
|
|
1441
|
+
var stats, _this__options, tmp, manifestOptions, statsFilePath, statsFileName, err;
|
|
1442
|
+
return _ts_generator$1(this, function(_state) {
|
|
1443
|
+
switch(_state.label){
|
|
1444
|
+
case 0:
|
|
1445
|
+
_state.trys.push([
|
|
1446
|
+
0,
|
|
1447
|
+
2,
|
|
1448
|
+
,
|
|
1449
|
+
3
|
|
1450
|
+
]);
|
|
1451
|
+
return [
|
|
1452
|
+
4,
|
|
1453
|
+
_this._generateStats(compiler, compilation)
|
|
1454
|
+
];
|
|
1455
|
+
case 1:
|
|
1456
|
+
stats = _state.sent();
|
|
1457
|
+
_this__options = _this._options, tmp = _this__options.manifest, manifestOptions = tmp === void 0 ? {} : tmp;
|
|
1458
|
+
statsFilePath = typeof manifestOptions === "boolean" ? "" : manifestOptions.filePath || "";
|
|
1459
|
+
statsFileName = simpleJoinRemoteEntry(statsFilePath, StatsFileName);
|
|
1460
|
+
compilation.emitAsset(statsFileName, new compiler.webpack.sources.RawSource(JSON.stringify(stats, null, 2)));
|
|
1461
|
+
return [
|
|
1462
|
+
2,
|
|
1463
|
+
stats
|
|
1464
|
+
];
|
|
1465
|
+
case 2:
|
|
1466
|
+
err = _state.sent();
|
|
1467
|
+
throw err;
|
|
1468
|
+
case 3:
|
|
1469
|
+
return [
|
|
1470
|
+
2
|
|
1471
|
+
];
|
|
1472
|
+
}
|
|
1473
|
+
});
|
|
1474
|
+
})();
|
|
1475
|
+
}
|
|
1476
|
+
},
|
|
1477
|
+
{
|
|
1478
|
+
key: "validate",
|
|
1479
|
+
value: function validate(compiler) {
|
|
1480
|
+
var _compiler_options = compiler.options, publicPath = _compiler_options.output.publicPath;
|
|
1481
|
+
if (typeof publicPath !== "string") {
|
|
1482
|
+
console.error(chalk(_templateObject(), PLUGIN_IDENTIFIER, publicPath));
|
|
1483
|
+
process.exit(1);
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1486
|
+
}
|
|
1487
|
+
]);
|
|
1488
|
+
return StatsManager;
|
|
1489
|
+
}();
|
|
1490
|
+
|
|
1491
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
1492
|
+
try {
|
|
1493
|
+
var info = gen[key](arg);
|
|
1494
|
+
var value = info.value;
|
|
1495
|
+
} catch (error) {
|
|
1496
|
+
reject(error);
|
|
1497
|
+
return;
|
|
1498
|
+
}
|
|
1499
|
+
if (info.done) {
|
|
1500
|
+
resolve(value);
|
|
1501
|
+
} else {
|
|
1502
|
+
Promise.resolve(value).then(_next, _throw);
|
|
1503
|
+
}
|
|
1504
|
+
}
|
|
1505
|
+
function _async_to_generator(fn) {
|
|
1506
|
+
return function() {
|
|
1507
|
+
var self = this, args = arguments;
|
|
1508
|
+
return new Promise(function(resolve, reject) {
|
|
1509
|
+
var gen = fn.apply(self, args);
|
|
1510
|
+
function _next(value) {
|
|
1511
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
1512
|
+
}
|
|
1513
|
+
function _throw(err) {
|
|
1514
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
1515
|
+
}
|
|
1516
|
+
_next(undefined);
|
|
1517
|
+
});
|
|
1518
|
+
};
|
|
1519
|
+
}
|
|
1520
|
+
function _class_call_check(instance, Constructor) {
|
|
1521
|
+
if (!(instance instanceof Constructor)) {
|
|
1522
|
+
throw new TypeError("Cannot call a class as a function");
|
|
1523
|
+
}
|
|
1524
|
+
}
|
|
1525
|
+
function _defineProperties(target, props) {
|
|
1526
|
+
for(var i = 0; i < props.length; i++){
|
|
1527
|
+
var descriptor = props[i];
|
|
1528
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
1529
|
+
descriptor.configurable = true;
|
|
1530
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
1531
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
1532
|
+
}
|
|
1533
|
+
}
|
|
1534
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
1535
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
1536
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
1537
|
+
return Constructor;
|
|
1538
|
+
}
|
|
1539
|
+
function _define_property(obj, key, value) {
|
|
1540
|
+
if (key in obj) {
|
|
1541
|
+
Object.defineProperty(obj, key, {
|
|
1542
|
+
value: value,
|
|
1543
|
+
enumerable: true,
|
|
1544
|
+
configurable: true,
|
|
1545
|
+
writable: true
|
|
1546
|
+
});
|
|
1547
|
+
} else {
|
|
1548
|
+
obj[key] = value;
|
|
1549
|
+
}
|
|
1550
|
+
return obj;
|
|
1551
|
+
}
|
|
1552
|
+
function _ts_generator(thisArg, body) {
|
|
1553
|
+
var f, y, t, g, _ = {
|
|
1554
|
+
label: 0,
|
|
1555
|
+
sent: function() {
|
|
1556
|
+
if (t[0] & 1) throw t[1];
|
|
1557
|
+
return t[1];
|
|
1558
|
+
},
|
|
1559
|
+
trys: [],
|
|
1560
|
+
ops: []
|
|
1561
|
+
};
|
|
1562
|
+
return g = {
|
|
1563
|
+
next: verb(0),
|
|
1564
|
+
"throw": verb(1),
|
|
1565
|
+
"return": verb(2)
|
|
1566
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
1567
|
+
return this;
|
|
1568
|
+
}), g;
|
|
1569
|
+
function verb(n) {
|
|
1570
|
+
return function(v) {
|
|
1571
|
+
return step([
|
|
1572
|
+
n,
|
|
1573
|
+
v
|
|
1574
|
+
]);
|
|
1575
|
+
};
|
|
1576
|
+
}
|
|
1577
|
+
function step(op) {
|
|
1578
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
1579
|
+
while(_)try {
|
|
1580
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
1581
|
+
if (y = 0, t) op = [
|
|
1582
|
+
op[0] & 2,
|
|
1583
|
+
t.value
|
|
1584
|
+
];
|
|
1585
|
+
switch(op[0]){
|
|
1586
|
+
case 0:
|
|
1587
|
+
case 1:
|
|
1588
|
+
t = op;
|
|
1589
|
+
break;
|
|
1590
|
+
case 4:
|
|
1591
|
+
_.label++;
|
|
1592
|
+
return {
|
|
1593
|
+
value: op[1],
|
|
1594
|
+
done: false
|
|
1595
|
+
};
|
|
1596
|
+
case 5:
|
|
1597
|
+
_.label++;
|
|
1598
|
+
y = op[1];
|
|
1599
|
+
op = [
|
|
1600
|
+
0
|
|
1601
|
+
];
|
|
1602
|
+
continue;
|
|
1603
|
+
case 7:
|
|
1604
|
+
op = _.ops.pop();
|
|
1605
|
+
_.trys.pop();
|
|
1606
|
+
continue;
|
|
1607
|
+
default:
|
|
1608
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
1609
|
+
_ = 0;
|
|
1610
|
+
continue;
|
|
1611
|
+
}
|
|
1612
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
1613
|
+
_.label = op[1];
|
|
1614
|
+
break;
|
|
1615
|
+
}
|
|
1616
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
1617
|
+
_.label = t[1];
|
|
1618
|
+
t = op;
|
|
1619
|
+
break;
|
|
1620
|
+
}
|
|
1621
|
+
if (t && _.label < t[2]) {
|
|
1622
|
+
_.label = t[2];
|
|
1623
|
+
_.ops.push(op);
|
|
1624
|
+
break;
|
|
1625
|
+
}
|
|
1626
|
+
if (t[2]) _.ops.pop();
|
|
1627
|
+
_.trys.pop();
|
|
1628
|
+
continue;
|
|
1629
|
+
}
|
|
1630
|
+
op = body.call(thisArg, _);
|
|
1631
|
+
} catch (e) {
|
|
1632
|
+
op = [
|
|
1633
|
+
6,
|
|
1634
|
+
e
|
|
1635
|
+
];
|
|
1636
|
+
y = 0;
|
|
1637
|
+
} finally{
|
|
1638
|
+
f = t = 0;
|
|
1639
|
+
}
|
|
1640
|
+
if (op[0] & 5) throw op[1];
|
|
1641
|
+
return {
|
|
1642
|
+
value: op[0] ? op[1] : void 0,
|
|
1643
|
+
done: true
|
|
1644
|
+
};
|
|
1645
|
+
}
|
|
1646
|
+
}
|
|
1647
|
+
var StatsPlugin = /*#__PURE__*/ function() {
|
|
1648
|
+
function StatsPlugin(options, param) {
|
|
1649
|
+
var pluginVersion = param.pluginVersion, bundler = param.bundler;
|
|
1650
|
+
_class_call_check(this, StatsPlugin);
|
|
1651
|
+
_define_property(this, "name", "StatsPlugin");
|
|
1652
|
+
_define_property(this, "_options", void 0);
|
|
1653
|
+
_define_property(this, "_statsManager", void 0);
|
|
1654
|
+
_define_property(this, "_manifestManager", void 0);
|
|
1655
|
+
this._options = options;
|
|
1656
|
+
this._statsManager = new StatsManager();
|
|
1657
|
+
this._statsManager.init(this._options, {
|
|
1658
|
+
pluginVersion: pluginVersion,
|
|
1659
|
+
bundler: bundler
|
|
1660
|
+
});
|
|
1661
|
+
this._manifestManager = new ManifestManager();
|
|
1662
|
+
this._manifestManager.init(this._options);
|
|
1663
|
+
}
|
|
1664
|
+
_create_class(StatsPlugin, [
|
|
1665
|
+
{
|
|
1666
|
+
key: "apply",
|
|
1667
|
+
value: function apply(compiler) {
|
|
1668
|
+
var _this = this;
|
|
1669
|
+
this._statsManager.validate(compiler);
|
|
1670
|
+
compiler.hooks.thisCompilation.tap("generateStats", function(compilation) {
|
|
1671
|
+
var _this1 = _this;
|
|
1672
|
+
compilation.hooks.processAssets.tapPromise({
|
|
1673
|
+
name: "generateStats",
|
|
1674
|
+
// @ts-ignore use runtime variable in case peer dep not installed
|
|
1675
|
+
stage: compilation.constructor.PROCESS_ASSETS_STAGE_OPTIMIZE_TRANSFER
|
|
1676
|
+
}, /*#__PURE__*/ _async_to_generator(function() {
|
|
1677
|
+
var stats;
|
|
1678
|
+
return _ts_generator(this, function(_state) {
|
|
1679
|
+
switch(_state.label){
|
|
1680
|
+
case 0:
|
|
1681
|
+
if (!_this1._options.manifest) return [
|
|
1682
|
+
3,
|
|
1683
|
+
2
|
|
1684
|
+
];
|
|
1685
|
+
return [
|
|
1686
|
+
4,
|
|
1687
|
+
_this1._statsManager.generateStats(compiler, compilation)
|
|
1688
|
+
];
|
|
1689
|
+
case 1:
|
|
1690
|
+
stats = _state.sent();
|
|
1691
|
+
_this1._manifestManager.generateManifest({
|
|
1692
|
+
compilation: compilation,
|
|
1693
|
+
stats: stats,
|
|
1694
|
+
publicPath: _this1._statsManager.getPublicPath(compiler),
|
|
1695
|
+
compiler: compiler
|
|
1696
|
+
});
|
|
1697
|
+
_state.label = 2;
|
|
1698
|
+
case 2:
|
|
1699
|
+
return [
|
|
1700
|
+
2
|
|
1701
|
+
];
|
|
1702
|
+
}
|
|
1703
|
+
});
|
|
1704
|
+
}));
|
|
1705
|
+
});
|
|
1706
|
+
}
|
|
1707
|
+
}
|
|
1708
|
+
]);
|
|
1709
|
+
return StatsPlugin;
|
|
1710
|
+
}();
|
|
1711
|
+
|
|
1712
|
+
export { ManifestManager, StatsManager, StatsPlugin };
|