@module-federation/runtime 1.0.0-canary.5 → 1.0.1-canary.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.
- package/LICENSE +21 -0
- package/helpers.esm.js +1 -1
- package/index.cjs.js +129 -442
- package/index.esm.js +122 -434
- package/package.json +3 -2
- package/share.cjs.js +42 -48
- package/share.esm.js +43 -45
- package/src/core.d.ts +7 -0
- package/src/global.d.ts +2 -2
- package/src/index.d.ts +1 -1
- package/src/plugins/snapshot/index.d.ts +1 -1
- package/src/type/preload.d.ts +1 -0
- package/src/utils/index.d.ts +0 -1
- package/src/utils/manifest.d.ts +0 -2
- package/src/utils/dom.d.ts +0 -8
package/index.esm.js
CHANGED
|
@@ -1,18 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { g as getGlobalHostPlugins, D as DEFAULT_REMOTE_TYPE, a as DEFAULT_SCOPE, b as globalLoading, c as getRemoteEntryExports, d as assert, s as safeToString, G as Global, e as getFMId, i as isObject, f as error, w as warn, h as isPlainObject, j as isRemoteInfoWithEntry, k as isPureRemoteEntry, l as getGlobalShare, m as getInfoWithoutType, n as getPreloaded, o as setPreloaded, p as getGlobalSnapshotInfoByModuleInfo, q as setGlobalSnapshotInfoByModuleInfo, r as getGlobalSnapshot, t as addUniqueItem, u as formatShareConfigs, v as isBrowserEnv, x as getGlobalShareScope, y as getBuilderId, z as setGlobalFederationConstructor, A as getGlobalFederationInstance, B as getGlobalFederationConstructor, C as setGlobalFederationInstance } from './share.esm.js';
|
|
2
|
+
export { E as registerGlobalPlugins } from './share.esm.js';
|
|
3
|
+
import { composeKeyWithSeparator, loadScript, createScript, getResourceUrl, isManifestProvider, generateSnapshotFromManifest } from '@module-federation/sdk';
|
|
3
4
|
|
|
4
|
-
// Function to get the URL of a resource
|
|
5
|
-
function getResourceUrl(module, sourceUrl) {
|
|
6
|
-
if ('getPublicPath' in module) {
|
|
7
|
-
const publicPath = new Function(module.getPublicPath)();
|
|
8
|
-
return `${publicPath}${sourceUrl}`;
|
|
9
|
-
} else if ('publicPath' in module) {
|
|
10
|
-
return `${module.publicPath}${sourceUrl}`;
|
|
11
|
-
} else {
|
|
12
|
-
console.warn('Unable to retrieve resource URL. If in debug mode, this warning can be disregarded.', module, sourceUrl);
|
|
13
|
-
return '';
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
5
|
// Function to match a remote with its name and expose
|
|
17
6
|
// id: pkgName(@federation/app1) + expose(button) = @federation/app1/button
|
|
18
7
|
// id: alias(app1) + expose(button) = app1/button
|
|
@@ -77,75 +66,6 @@ function matchRemote(remotes, nameOrAlias) {
|
|
|
77
66
|
return;
|
|
78
67
|
}
|
|
79
68
|
|
|
80
|
-
function createScript(url, cb, attrs, createScriptHook) {
|
|
81
|
-
// Retrieve the existing script element by its src attribute
|
|
82
|
-
let script = null;
|
|
83
|
-
let needAttach = true;
|
|
84
|
-
const scripts = document.getElementsByTagName('script');
|
|
85
|
-
for(let i = 0; i < scripts.length; i++){
|
|
86
|
-
const s = scripts[i];
|
|
87
|
-
const scriptSrc = s.getAttribute('src');
|
|
88
|
-
if (scriptSrc && isStaticResourcesEqual(scriptSrc, url)) {
|
|
89
|
-
script = s;
|
|
90
|
-
needAttach = false;
|
|
91
|
-
break;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
if (!script) {
|
|
95
|
-
script = document.createElement('script');
|
|
96
|
-
script.type = 'text/javascript';
|
|
97
|
-
script.src = url;
|
|
98
|
-
if (createScriptHook) {
|
|
99
|
-
const createScriptRes = createScriptHook(url);
|
|
100
|
-
if (createScriptRes instanceof HTMLScriptElement) {
|
|
101
|
-
script = createScriptRes;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
if (attrs) {
|
|
106
|
-
Object.keys(attrs).forEach((name)=>{
|
|
107
|
-
if (script) {
|
|
108
|
-
if (name === 'async' || name === 'defer') {
|
|
109
|
-
script[name] = attrs[name];
|
|
110
|
-
} else {
|
|
111
|
-
script.setAttribute(name, attrs[name]);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
const onScriptComplete = (prev, // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
117
|
-
event)=>{
|
|
118
|
-
// Prevent memory leaks in IE.
|
|
119
|
-
if (script) {
|
|
120
|
-
script.onerror = null;
|
|
121
|
-
script.onload = null;
|
|
122
|
-
safeWrapper(()=>{
|
|
123
|
-
(script == null ? void 0 : script.parentNode) && script.parentNode.removeChild(script);
|
|
124
|
-
});
|
|
125
|
-
if (prev) {
|
|
126
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
127
|
-
const res = prev(event);
|
|
128
|
-
cb();
|
|
129
|
-
return res;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
cb();
|
|
133
|
-
};
|
|
134
|
-
script.onerror = onScriptComplete.bind(null, script.onerror);
|
|
135
|
-
script.onload = onScriptComplete.bind(null, script.onload);
|
|
136
|
-
return {
|
|
137
|
-
script,
|
|
138
|
-
needAttach
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
function loadScript(url, info) {
|
|
142
|
-
const { attrs, createScriptHook } = info;
|
|
143
|
-
return new Promise((resolve, _reject)=>{
|
|
144
|
-
const { script, needAttach } = createScript(url, resolve, attrs, createScriptHook);
|
|
145
|
-
needAttach && document.getElementsByTagName('head')[0].appendChild(script);
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
|
|
149
69
|
function registerPlugins(plugins, hookInstances) {
|
|
150
70
|
const globalPlugins = getGlobalHostPlugins();
|
|
151
71
|
// Incorporate global plugins
|
|
@@ -165,347 +85,20 @@ function registerPlugins(plugins, hookInstances) {
|
|
|
165
85
|
}
|
|
166
86
|
}
|
|
167
87
|
|
|
168
|
-
function
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
function _define_property$2(obj, key, value) {
|
|
176
|
-
if (key in obj) {
|
|
177
|
-
Object.defineProperty(obj, key, {
|
|
178
|
-
value: value,
|
|
179
|
-
enumerable: true,
|
|
180
|
-
configurable: true,
|
|
181
|
-
writable: true
|
|
182
|
-
});
|
|
183
|
-
} else {
|
|
184
|
-
obj[key] = value;
|
|
185
|
-
}
|
|
186
|
-
return obj;
|
|
187
|
-
}
|
|
188
|
-
var MANIFEST_EXT = ".json";
|
|
189
|
-
var BROWSER_LOG_KEY = "''";
|
|
190
|
-
var BROWSER_LOG_VALUE = "1";
|
|
191
|
-
var NameTransformSymbol = {
|
|
192
|
-
AT: "@",
|
|
193
|
-
HYPHEN: "-",
|
|
194
|
-
SLASH: "/"
|
|
195
|
-
};
|
|
196
|
-
var _obj;
|
|
197
|
-
var NameTransformMap = (_obj = {}, _define_property$2(_obj, NameTransformSymbol.AT, "scope_"), _define_property$2(_obj, NameTransformSymbol.HYPHEN, "_"), _define_property$2(_obj, NameTransformSymbol.SLASH, "__"), _obj);
|
|
198
|
-
var _obj1;
|
|
199
|
-
(_obj1 = {}, _define_property$2(_obj1, NameTransformMap[NameTransformSymbol.AT], NameTransformSymbol.AT), _define_property$2(_obj1, NameTransformMap[NameTransformSymbol.HYPHEN], NameTransformSymbol.HYPHEN), _define_property$2(_obj1, NameTransformMap[NameTransformSymbol.SLASH], NameTransformSymbol.SLASH), _obj1);
|
|
200
|
-
var SEPARATOR = ":";
|
|
201
|
-
function isBrowserEnv() {
|
|
202
|
-
return typeof window !== "undefined";
|
|
203
|
-
}
|
|
204
|
-
function isDebugMode() {
|
|
205
|
-
if (typeof process !== "undefined" && process.env && process.env["''"]) {
|
|
206
|
-
return Boolean(process.env["''"]);
|
|
207
|
-
}
|
|
208
|
-
return Boolean('');
|
|
209
|
-
}
|
|
210
|
-
function _array_like_to_array$1(arr, len) {
|
|
211
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
212
|
-
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
213
|
-
return arr2;
|
|
214
|
-
}
|
|
215
|
-
function _array_without_holes(arr) {
|
|
216
|
-
if (Array.isArray(arr)) return _array_like_to_array$1(arr);
|
|
217
|
-
}
|
|
218
|
-
function _class_call_check(instance, Constructor) {
|
|
219
|
-
if (!_instanceof(instance, Constructor)) {
|
|
220
|
-
throw new TypeError("Cannot call a class as a function");
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
function _defineProperties(target, props) {
|
|
224
|
-
for(var i = 0; i < props.length; i++){
|
|
225
|
-
var descriptor = props[i];
|
|
226
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
227
|
-
descriptor.configurable = true;
|
|
228
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
229
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
233
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
234
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
235
|
-
return Constructor;
|
|
236
|
-
}
|
|
237
|
-
function _define_property$1(obj, key, value) {
|
|
238
|
-
if (key in obj) {
|
|
239
|
-
Object.defineProperty(obj, key, {
|
|
240
|
-
value: value,
|
|
241
|
-
enumerable: true,
|
|
242
|
-
configurable: true,
|
|
243
|
-
writable: true
|
|
244
|
-
});
|
|
245
|
-
} else {
|
|
246
|
-
obj[key] = value;
|
|
247
|
-
}
|
|
248
|
-
return obj;
|
|
249
|
-
}
|
|
250
|
-
function _iterable_to_array$1(iter) {
|
|
251
|
-
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
252
|
-
}
|
|
253
|
-
function _non_iterable_spread() {
|
|
254
|
-
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
255
|
-
}
|
|
256
|
-
function _to_consumable_array(arr) {
|
|
257
|
-
return _array_without_holes(arr) || _iterable_to_array$1(arr) || _unsupported_iterable_to_array$1(arr) || _non_iterable_spread();
|
|
258
|
-
}
|
|
259
|
-
function _unsupported_iterable_to_array$1(o, minLen) {
|
|
260
|
-
if (!o) return;
|
|
261
|
-
if (typeof o === "string") return _array_like_to_array$1(o, minLen);
|
|
262
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
263
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
264
|
-
if (n === "Map" || n === "Set") return Array.from(n);
|
|
265
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$1(o, minLen);
|
|
266
|
-
}
|
|
267
|
-
function safeToString(info) {
|
|
268
|
-
try {
|
|
269
|
-
return JSON.stringify(info, null, 2);
|
|
270
|
-
} catch (e) {
|
|
271
|
-
return "";
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
var DEBUG_LOG = "[ FEDERATION DEBUG ]";
|
|
275
|
-
var Logger = /*#__PURE__*/ function() {
|
|
276
|
-
function Logger(identifier) {
|
|
277
|
-
_class_call_check(this, Logger);
|
|
278
|
-
_define_property$1(this, "enable", false);
|
|
279
|
-
_define_property$1(this, "identifier", void 0);
|
|
280
|
-
this.identifier = identifier || DEBUG_LOG;
|
|
281
|
-
if (isBrowserEnv() && localStorage.getItem(BROWSER_LOG_KEY) === BROWSER_LOG_VALUE) {
|
|
282
|
-
this.enable = true;
|
|
283
|
-
} else if (isDebugMode()) {
|
|
284
|
-
this.enable = true;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
_create_class(Logger, [
|
|
288
|
-
{
|
|
289
|
-
key: "info",
|
|
290
|
-
value: function info(msg, info) {
|
|
291
|
-
if (this.enable) {
|
|
292
|
-
var argsToString = safeToString(info) || "";
|
|
293
|
-
if (isBrowserEnv()) {
|
|
294
|
-
console.info("%c ".concat(this.identifier, ": ").concat(msg, " ").concat(argsToString), "color:#3300CC");
|
|
295
|
-
} else {
|
|
296
|
-
console.info("\x1b[34m%s", "".concat(this.identifier, ": ").concat(msg, " ").concat(argsToString ? "\n".concat(argsToString) : ""));
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
},
|
|
301
|
-
{
|
|
302
|
-
key: "logOriginalInfo",
|
|
303
|
-
value: function logOriginalInfo() {
|
|
304
|
-
for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
|
|
305
|
-
args[_key] = arguments[_key];
|
|
306
|
-
}
|
|
307
|
-
if (this.enable) {
|
|
308
|
-
if (isBrowserEnv()) {
|
|
309
|
-
var _console;
|
|
310
|
-
console.info("%c ".concat(this.identifier, ": OriginalInfo"), "color:#3300CC");
|
|
311
|
-
(_console = console).log.apply(_console, _to_consumable_array(args));
|
|
312
|
-
} else {
|
|
313
|
-
var _console1;
|
|
314
|
-
console.info("%c ".concat(this.identifier, ": OriginalInfo"), "color:#3300CC");
|
|
315
|
-
(_console1 = console).log.apply(_console1, _to_consumable_array(args));
|
|
316
|
-
}
|
|
88
|
+
function _extends$5() {
|
|
89
|
+
_extends$5 = Object.assign || function(target) {
|
|
90
|
+
for(var i = 1; i < arguments.length; i++){
|
|
91
|
+
var source = arguments[i];
|
|
92
|
+
for(var key in source){
|
|
93
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
94
|
+
target[key] = source[key];
|
|
317
95
|
}
|
|
318
96
|
}
|
|
319
97
|
}
|
|
320
|
-
|
|
321
|
-
return Logger;
|
|
322
|
-
}();
|
|
323
|
-
new Logger();
|
|
324
|
-
var composeKeyWithSeparator = function composeKeyWithSeparator() {
|
|
325
|
-
for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
|
|
326
|
-
args[_key] = arguments[_key];
|
|
327
|
-
}
|
|
328
|
-
if (!args.length) {
|
|
329
|
-
return "";
|
|
330
|
-
}
|
|
331
|
-
return args.reduce(function(sum, cur) {
|
|
332
|
-
if (!cur) {
|
|
333
|
-
return sum;
|
|
334
|
-
}
|
|
335
|
-
if (!sum) {
|
|
336
|
-
return cur;
|
|
337
|
-
}
|
|
338
|
-
return "".concat(sum).concat(SEPARATOR).concat(cur);
|
|
339
|
-
}, "");
|
|
340
|
-
};
|
|
341
|
-
function _define_property(obj, key, value) {
|
|
342
|
-
if (key in obj) {
|
|
343
|
-
Object.defineProperty(obj, key, {
|
|
344
|
-
value: value,
|
|
345
|
-
enumerable: true,
|
|
346
|
-
configurable: true,
|
|
347
|
-
writable: true
|
|
348
|
-
});
|
|
349
|
-
} else {
|
|
350
|
-
obj[key] = value;
|
|
351
|
-
}
|
|
352
|
-
return obj;
|
|
353
|
-
}
|
|
354
|
-
function _object_spread(target) {
|
|
355
|
-
for(var i = 1; i < arguments.length; i++){
|
|
356
|
-
var source = arguments[i] != null ? arguments[i] : {};
|
|
357
|
-
var ownKeys = Object.keys(source);
|
|
358
|
-
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
359
|
-
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
360
|
-
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
361
|
-
}));
|
|
362
|
-
}
|
|
363
|
-
ownKeys.forEach(function(key) {
|
|
364
|
-
_define_property(target, key, source[key]);
|
|
365
|
-
});
|
|
366
|
-
}
|
|
367
|
-
return target;
|
|
368
|
-
}
|
|
369
|
-
function ownKeys(object, enumerableOnly) {
|
|
370
|
-
var keys = Object.keys(object);
|
|
371
|
-
if (Object.getOwnPropertySymbols) {
|
|
372
|
-
var symbols = Object.getOwnPropertySymbols(object);
|
|
373
|
-
if (enumerableOnly) {
|
|
374
|
-
symbols = symbols.filter(function(sym) {
|
|
375
|
-
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
376
|
-
});
|
|
377
|
-
}
|
|
378
|
-
keys.push.apply(keys, symbols);
|
|
379
|
-
}
|
|
380
|
-
return keys;
|
|
381
|
-
}
|
|
382
|
-
function _object_spread_props(target, source) {
|
|
383
|
-
source = source != null ? source : {};
|
|
384
|
-
if (Object.getOwnPropertyDescriptors) {
|
|
385
|
-
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
386
|
-
} else {
|
|
387
|
-
ownKeys(Object(source)).forEach(function(key) {
|
|
388
|
-
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
389
|
-
});
|
|
390
|
-
}
|
|
391
|
-
return target;
|
|
392
|
-
}
|
|
393
|
-
var simpleJoinRemoteEntry = function simpleJoinRemoteEntry(rPath, rName) {
|
|
394
|
-
if (!rPath) {
|
|
395
|
-
return rName;
|
|
396
|
-
}
|
|
397
|
-
var transformPath = function transformPath(str) {
|
|
398
|
-
if (str === ".") {
|
|
399
|
-
return "";
|
|
400
|
-
}
|
|
401
|
-
if (str.startsWith("./")) {
|
|
402
|
-
return str.replace("./", "");
|
|
403
|
-
}
|
|
404
|
-
if (str.startsWith("/")) {
|
|
405
|
-
var strWithoutSlash = str.slice(1);
|
|
406
|
-
if (strWithoutSlash.endsWith("/")) {
|
|
407
|
-
return strWithoutSlash.slice(0, -1);
|
|
408
|
-
}
|
|
409
|
-
return strWithoutSlash;
|
|
410
|
-
}
|
|
411
|
-
return str;
|
|
412
|
-
};
|
|
413
|
-
var transformedPath = transformPath(rPath);
|
|
414
|
-
if (!transformedPath) {
|
|
415
|
-
return rName;
|
|
416
|
-
}
|
|
417
|
-
if (transformedPath.endsWith("/")) {
|
|
418
|
-
return "".concat(transformedPath).concat(rName);
|
|
419
|
-
}
|
|
420
|
-
return "".concat(transformedPath, "/").concat(rName);
|
|
421
|
-
};
|
|
422
|
-
// Priority: overrides > remotes
|
|
423
|
-
// eslint-disable-next-line max-lines-per-function
|
|
424
|
-
function generateSnapshotFromManifest(manifest) {
|
|
425
|
-
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
426
|
-
var _options_remotes = options.remotes, remotes = _options_remotes === void 0 ? {} : _options_remotes, _options_overrides = options.overrides, overrides = _options_overrides === void 0 ? {} : _options_overrides, version = options.version;
|
|
427
|
-
var remoteSnapshot;
|
|
428
|
-
var getPublicPath = function getPublicPath() {
|
|
429
|
-
if ("publicPath" in manifest.metaData) {
|
|
430
|
-
return manifest.metaData.publicPath;
|
|
431
|
-
} else {
|
|
432
|
-
return manifest.metaData.getPublicPath;
|
|
433
|
-
}
|
|
98
|
+
return target;
|
|
434
99
|
};
|
|
435
|
-
|
|
436
|
-
var remotesInfo = {};
|
|
437
|
-
// If remotes are not provided, only the remotes in the manifest will be read
|
|
438
|
-
if (!Object.keys(remotes).length) {
|
|
439
|
-
var _manifest_remotes;
|
|
440
|
-
remotesInfo = ((_manifest_remotes = manifest.remotes) === null || _manifest_remotes === void 0 ? void 0 : _manifest_remotes.reduce(function(res, next) {
|
|
441
|
-
var matchedVersion;
|
|
442
|
-
var name = next.federationContainerName;
|
|
443
|
-
// overrides have higher priority
|
|
444
|
-
if (overridesKeys.includes(name)) {
|
|
445
|
-
matchedVersion = overrides[name];
|
|
446
|
-
} else {
|
|
447
|
-
if ("version" in next) {
|
|
448
|
-
matchedVersion = next.version;
|
|
449
|
-
} else {
|
|
450
|
-
matchedVersion = next.entry;
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
res[name] = {
|
|
454
|
-
matchedVersion: matchedVersion
|
|
455
|
-
};
|
|
456
|
-
return res;
|
|
457
|
-
}, {})) || {};
|
|
458
|
-
}
|
|
459
|
-
// If remotes (deploy scenario) are specified, they need to be traversed again
|
|
460
|
-
Object.keys(remotes).forEach(function(key) {
|
|
461
|
-
return remotesInfo[key] = {
|
|
462
|
-
// overrides will override dependencies
|
|
463
|
-
matchedVersion: overridesKeys.includes(key) ? overrides[key] : remotes[key]
|
|
464
|
-
};
|
|
465
|
-
});
|
|
466
|
-
var _manifest_metaData = manifest.metaData, _manifest_metaData_remoteEntry = _manifest_metaData.remoteEntry, remoteEntryPath = _manifest_metaData_remoteEntry.path, remoteEntryName = _manifest_metaData_remoteEntry.name, remoteEntryType = _manifest_metaData_remoteEntry.type, remoteTypes = _manifest_metaData.types, buildVersion = _manifest_metaData.buildInfo.buildVersion, globalName = _manifest_metaData.globalName;
|
|
467
|
-
var exposes = manifest.exposes;
|
|
468
|
-
var basicRemoteSnapshot = {
|
|
469
|
-
version: version ? version : "",
|
|
470
|
-
buildVersion: buildVersion,
|
|
471
|
-
globalName: globalName,
|
|
472
|
-
remoteEntry: simpleJoinRemoteEntry(remoteEntryPath, remoteEntryName),
|
|
473
|
-
remoteEntryType: remoteEntryType,
|
|
474
|
-
remoteTypes: simpleJoinRemoteEntry(remoteTypes.path, remoteTypes.name),
|
|
475
|
-
remotesInfo: remotesInfo,
|
|
476
|
-
shared: manifest === null || manifest === void 0 ? void 0 : manifest.shared.map(function(item) {
|
|
477
|
-
return {
|
|
478
|
-
assets: item.assets,
|
|
479
|
-
sharedName: item.name
|
|
480
|
-
};
|
|
481
|
-
}),
|
|
482
|
-
modules: exposes === null || exposes === void 0 ? void 0 : exposes.map(function(expose) {
|
|
483
|
-
return {
|
|
484
|
-
moduleName: expose.name,
|
|
485
|
-
modulePath: expose.path,
|
|
486
|
-
assets: expose.assets
|
|
487
|
-
};
|
|
488
|
-
})
|
|
489
|
-
};
|
|
490
|
-
if ("publicPath" in manifest.metaData) {
|
|
491
|
-
remoteSnapshot = _object_spread_props(_object_spread({}, basicRemoteSnapshot), {
|
|
492
|
-
publicPath: getPublicPath()
|
|
493
|
-
});
|
|
494
|
-
} else {
|
|
495
|
-
remoteSnapshot = _object_spread_props(_object_spread({}, basicRemoteSnapshot), {
|
|
496
|
-
getPublicPath: getPublicPath()
|
|
497
|
-
});
|
|
498
|
-
}
|
|
499
|
-
return remoteSnapshot;
|
|
100
|
+
return _extends$5.apply(this, arguments);
|
|
500
101
|
}
|
|
501
|
-
function isManifestProvider(moduleInfo) {
|
|
502
|
-
if ("remoteEntry" in moduleInfo && moduleInfo.remoteEntry.endsWith(MANIFEST_EXT)) {
|
|
503
|
-
return true;
|
|
504
|
-
} else {
|
|
505
|
-
return false;
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
|
|
509
102
|
async function loadEsmEntry({ entry, remoteEntryExports }) {
|
|
510
103
|
return new Promise((resolve, reject)=>{
|
|
511
104
|
try {
|
|
@@ -563,7 +156,7 @@ async function getRemoteEntry({ remoteEntryExports, remoteInfo, createScriptHook
|
|
|
563
156
|
return globalLoading[uniqueKey];
|
|
564
157
|
}
|
|
565
158
|
function getRemoteInfo(remote) {
|
|
566
|
-
return _extends({}, remote, {
|
|
159
|
+
return _extends$5({}, remote, {
|
|
567
160
|
entry: 'entry' in remote ? remote.entry : '',
|
|
568
161
|
type: remote.type || DEFAULT_REMOTE_TYPE,
|
|
569
162
|
entryGlobalName: remote.entryGlobalName || remote.name,
|
|
@@ -571,6 +164,20 @@ function getRemoteInfo(remote) {
|
|
|
571
164
|
});
|
|
572
165
|
}
|
|
573
166
|
|
|
167
|
+
function _extends$4() {
|
|
168
|
+
_extends$4 = Object.assign || function(target) {
|
|
169
|
+
for(var i = 1; i < arguments.length; i++){
|
|
170
|
+
var source = arguments[i];
|
|
171
|
+
for(var key in source){
|
|
172
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
173
|
+
target[key] = source[key];
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return target;
|
|
178
|
+
};
|
|
179
|
+
return _extends$4.apply(this, arguments);
|
|
180
|
+
}
|
|
574
181
|
let Module = class Module {
|
|
575
182
|
async getEntry() {
|
|
576
183
|
if (this.remoteEntryExports) {
|
|
@@ -590,7 +197,7 @@ let Module = class Module {
|
|
|
590
197
|
return;
|
|
591
198
|
}
|
|
592
199
|
});
|
|
593
|
-
assert(remoteEntryExports, `remoteEntryExports is undefined \n ${safeToString
|
|
200
|
+
assert(remoteEntryExports, `remoteEntryExports is undefined \n ${safeToString(this.remoteInfo)}`);
|
|
594
201
|
this.remoteEntryExports = remoteEntryExports;
|
|
595
202
|
return this.remoteEntryExports;
|
|
596
203
|
}
|
|
@@ -617,7 +224,7 @@ let Module = class Module {
|
|
|
617
224
|
remoteEntryExports.init(shareScope, [], remoteEntryInitOptions);
|
|
618
225
|
const federationInstance = Global.__FEDERATION__.__INSTANCES__.find((i)=>i.options.id === composeKeyWithSeparator(this.remoteInfo.name, this.remoteInfo.buildVersion));
|
|
619
226
|
if (federationInstance) {
|
|
620
|
-
federationInstance.initOptions(_extends({}, remoteEntryInitOptions, {
|
|
227
|
+
federationInstance.initOptions(_extends$4({}, remoteEntryInitOptions, {
|
|
621
228
|
remotes: [],
|
|
622
229
|
name: this.remoteInfo.name
|
|
623
230
|
}));
|
|
@@ -833,17 +440,32 @@ class PluginSystem {
|
|
|
833
440
|
}
|
|
834
441
|
}
|
|
835
442
|
|
|
443
|
+
function _extends$3() {
|
|
444
|
+
_extends$3 = Object.assign || function(target) {
|
|
445
|
+
for(var i = 1; i < arguments.length; i++){
|
|
446
|
+
var source = arguments[i];
|
|
447
|
+
for(var key in source){
|
|
448
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
449
|
+
target[key] = source[key];
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
return target;
|
|
454
|
+
};
|
|
455
|
+
return _extends$3.apply(this, arguments);
|
|
456
|
+
}
|
|
836
457
|
function defaultPreloadArgs(preloadConfig) {
|
|
837
|
-
return _extends({
|
|
458
|
+
return _extends$3({
|
|
838
459
|
resourceCategory: 'sync',
|
|
839
460
|
share: true,
|
|
840
|
-
depsRemote: true
|
|
461
|
+
depsRemote: true,
|
|
462
|
+
prefetchInterface: false
|
|
841
463
|
}, preloadConfig);
|
|
842
464
|
}
|
|
843
465
|
function formatPreloadArgs(remotes, preloadArgs) {
|
|
844
466
|
return preloadArgs.map((args)=>{
|
|
845
467
|
const remoteInfo = matchRemote(remotes, args.nameOrAlias);
|
|
846
|
-
assert(remoteInfo, `Unable to preload ${args.nameOrAlias} as it is not included in ${!remoteInfo && safeToString
|
|
468
|
+
assert(remoteInfo, `Unable to preload ${args.nameOrAlias} as it is not included in ${!remoteInfo && safeToString({
|
|
847
469
|
remoteInfo,
|
|
848
470
|
remotes
|
|
849
471
|
})}`);
|
|
@@ -929,6 +551,20 @@ function preloadAssets(remoteInfo, host, assets) {
|
|
|
929
551
|
}
|
|
930
552
|
}
|
|
931
553
|
|
|
554
|
+
function _extends$2() {
|
|
555
|
+
_extends$2 = Object.assign || function(target) {
|
|
556
|
+
for(var i = 1; i < arguments.length; i++){
|
|
557
|
+
var source = arguments[i];
|
|
558
|
+
for(var key in source){
|
|
559
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
560
|
+
target[key] = source[key];
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
return target;
|
|
565
|
+
};
|
|
566
|
+
return _extends$2.apply(this, arguments);
|
|
567
|
+
}
|
|
932
568
|
function assignRemoteInfo(remoteInfo, remoteSnapshot) {
|
|
933
569
|
if (!('remoteEntry' in remoteSnapshot) || !remoteSnapshot.remoteEntry) {
|
|
934
570
|
error(`The attribute remoteEntry of ${name} must not be undefined.`);
|
|
@@ -973,6 +609,9 @@ function snapshotPlugin() {
|
|
|
973
609
|
if (assets) {
|
|
974
610
|
preloadAssets(remoteInfo, origin, assets);
|
|
975
611
|
}
|
|
612
|
+
return _extends$2({}, args, {
|
|
613
|
+
remoteSnapshot
|
|
614
|
+
});
|
|
976
615
|
}
|
|
977
616
|
return args;
|
|
978
617
|
}
|
|
@@ -1096,6 +735,12 @@ function generatePreloadAssets(origin, preloadOptions, remote, globalSnapshot, r
|
|
|
1096
735
|
for(let index = 0; index < assetsLength; index++){
|
|
1097
736
|
const assetsInfo = moduleAssetsInfo[index];
|
|
1098
737
|
const exposeFullPath = `${remoteInfo.name}/${assetsInfo.moduleName}`;
|
|
738
|
+
origin.hooks.lifecycle.handlePreloadModule.emit({
|
|
739
|
+
id: assetsInfo.moduleName === '.' ? remoteInfo.name : exposeFullPath,
|
|
740
|
+
name: remoteInfo.name,
|
|
741
|
+
remoteSnapshot: moduleInfoSnapshot,
|
|
742
|
+
preloadConfig
|
|
743
|
+
});
|
|
1099
744
|
const preloaded = getPreloaded(exposeFullPath);
|
|
1100
745
|
if (preloaded) {
|
|
1101
746
|
continue;
|
|
@@ -1182,6 +827,20 @@ const generatePreloadAssetsPlugin = function() {
|
|
|
1182
827
|
};
|
|
1183
828
|
};
|
|
1184
829
|
|
|
830
|
+
function _extends$1() {
|
|
831
|
+
_extends$1 = Object.assign || function(target) {
|
|
832
|
+
for(var i = 1; i < arguments.length; i++){
|
|
833
|
+
var source = arguments[i];
|
|
834
|
+
for(var key in source){
|
|
835
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
836
|
+
target[key] = source[key];
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
return target;
|
|
841
|
+
};
|
|
842
|
+
return _extends$1.apply(this, arguments);
|
|
843
|
+
}
|
|
1185
844
|
class SnapshotHandler {
|
|
1186
845
|
async loadSnapshot(moduleInfo) {
|
|
1187
846
|
const { options } = this.HostInstance;
|
|
@@ -1233,7 +892,7 @@ class SnapshotHandler {
|
|
|
1233
892
|
return;
|
|
1234
893
|
}).value) {
|
|
1235
894
|
if ('version' in moduleInfo || 'entry' in moduleInfo) {
|
|
1236
|
-
hostSnapshot.remotesInfo = _extends({}, hostSnapshot == null ? void 0 : hostSnapshot.remotesInfo, {
|
|
895
|
+
hostSnapshot.remotesInfo = _extends$1({}, hostSnapshot == null ? void 0 : hostSnapshot.remotesInfo, {
|
|
1237
896
|
[moduleInfo.name]: {
|
|
1238
897
|
matchedVersion: 'version' in moduleInfo ? moduleInfo.version : moduleInfo.entry
|
|
1239
898
|
}
|
|
@@ -1253,7 +912,7 @@ class SnapshotHandler {
|
|
|
1253
912
|
if (isManifestProvider(globalRemoteSnapshot)) {
|
|
1254
913
|
const moduleSnapshot = await this.getManifestJson(globalRemoteSnapshot.remoteEntry, moduleInfo, {});
|
|
1255
914
|
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
1256
|
-
const globalSnapshotRes = setGlobalSnapshotInfoByModuleInfo(_extends({}, moduleInfo), moduleSnapshot);
|
|
915
|
+
const globalSnapshotRes = setGlobalSnapshotInfoByModuleInfo(_extends$1({}, moduleInfo), moduleSnapshot);
|
|
1257
916
|
return {
|
|
1258
917
|
remoteSnapshot: moduleSnapshot,
|
|
1259
918
|
globalSnapshot: globalSnapshotRes
|
|
@@ -1415,6 +1074,32 @@ class SnapshotHandler {
|
|
|
1415
1074
|
}
|
|
1416
1075
|
}
|
|
1417
1076
|
|
|
1077
|
+
function _extends() {
|
|
1078
|
+
_extends = Object.assign || function(target) {
|
|
1079
|
+
for(var i = 1; i < arguments.length; i++){
|
|
1080
|
+
var source = arguments[i];
|
|
1081
|
+
for(var key in source){
|
|
1082
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
1083
|
+
target[key] = source[key];
|
|
1084
|
+
}
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
return target;
|
|
1088
|
+
};
|
|
1089
|
+
return _extends.apply(this, arguments);
|
|
1090
|
+
}
|
|
1091
|
+
function _object_without_properties_loose(source, excluded) {
|
|
1092
|
+
if (source == null) return {};
|
|
1093
|
+
var target = {};
|
|
1094
|
+
var sourceKeys = Object.keys(source);
|
|
1095
|
+
var key, i;
|
|
1096
|
+
for(i = 0; i < sourceKeys.length; i++){
|
|
1097
|
+
key = sourceKeys[i];
|
|
1098
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
1099
|
+
target[key] = source[key];
|
|
1100
|
+
}
|
|
1101
|
+
return target;
|
|
1102
|
+
}
|
|
1418
1103
|
class FederationHost {
|
|
1419
1104
|
initOptions(userOptions) {
|
|
1420
1105
|
this.registerPlugins(userOptions.plugins);
|
|
@@ -1556,9 +1241,11 @@ class FederationHost {
|
|
|
1556
1241
|
const remoteSplitInfo = matchRemoteWithNameAndExpose(this.options.remotes, idRes);
|
|
1557
1242
|
assert(remoteSplitInfo, `
|
|
1558
1243
|
Unable to locate ${idRes} in ${this.options.name}. Potential reasons for failure include:\n
|
|
1559
|
-
1. ${idRes} was not included in the 'remotes' parameter of ${this.options.name}.\n
|
|
1244
|
+
1. ${idRes} was not included in the 'remotes' parameter of ${this.options.name || 'the host'}.\n
|
|
1560
1245
|
2. ${idRes} could not be found in the 'remotes' of ${this.options.name} with either 'name' or 'alias' attributes.
|
|
1561
|
-
3.
|
|
1246
|
+
3. ${idRes} is not online, injected, or loaded.
|
|
1247
|
+
4. ${idRes} cannot be accessed on the expected.
|
|
1248
|
+
5. The 'beforeLoadRemote' hook was provided but did not return the correct 'remoteInfo' when attempting to load ${idRes}.
|
|
1562
1249
|
`);
|
|
1563
1250
|
const { remote: rawRemote } = remoteSplitInfo;
|
|
1564
1251
|
const remoteInfo = getRemoteInfo(rawRemote);
|
|
@@ -1730,7 +1417,7 @@ class FederationHost {
|
|
|
1730
1417
|
}
|
|
1731
1418
|
// Set the remote entry to a complete path
|
|
1732
1419
|
if ('entry' in remote) {
|
|
1733
|
-
if (isBrowserEnv
|
|
1420
|
+
if (isBrowserEnv()) {
|
|
1734
1421
|
remote.entry = new URL(remote.entry, window.location.origin).href;
|
|
1735
1422
|
}
|
|
1736
1423
|
}
|
|
@@ -1806,7 +1493,7 @@ class FederationHost {
|
|
|
1806
1493
|
}
|
|
1807
1494
|
if (target[sc][pkgName][version]) {
|
|
1808
1495
|
warn(// eslint-disable-next-line max-len
|
|
1809
|
-
`The share \n ${safeToString
|
|
1496
|
+
`The share \n ${safeToString({
|
|
1810
1497
|
scope: sc,
|
|
1811
1498
|
pkgName,
|
|
1812
1499
|
version,
|
|
@@ -1836,6 +1523,7 @@ class FederationHost {
|
|
|
1836
1523
|
beforeLoadRemote: new AsyncWaterfallHook('beforeLoadRemote'),
|
|
1837
1524
|
loadRemoteMatch: new AsyncWaterfallHook('loadRemoteMatch'),
|
|
1838
1525
|
loadRemote: new AsyncHook('loadRemote'),
|
|
1526
|
+
handlePreloadModule: new SyncHook('handlePreloadModule'),
|
|
1839
1527
|
errorLoadRemote: new AsyncHook('errorLoadRemote'),
|
|
1840
1528
|
beforeLoadShare: new AsyncWaterfallHook('beforeLoadShare'),
|
|
1841
1529
|
loadShare: new AsyncHook(),
|
|
@@ -1843,7 +1531,7 @@ class FederationHost {
|
|
|
1843
1531
|
generatePreloadAssets: new AsyncHook('generatePreloadAssets'),
|
|
1844
1532
|
afterPreloadRemote: new AsyncHook()
|
|
1845
1533
|
});
|
|
1846
|
-
this.version = '1.0.0-canary.
|
|
1534
|
+
this.version = '1.0.0-canary.1';
|
|
1847
1535
|
this.moduleCache = new Map();
|
|
1848
1536
|
this.loaderHook = new PluginSystem({
|
|
1849
1537
|
// FIXME: may not be suitable
|
|
@@ -1862,7 +1550,7 @@ class FederationHost {
|
|
|
1862
1550
|
],
|
|
1863
1551
|
remotes: [],
|
|
1864
1552
|
shared: {},
|
|
1865
|
-
inBrowser: isBrowserEnv
|
|
1553
|
+
inBrowser: isBrowserEnv()
|
|
1866
1554
|
};
|
|
1867
1555
|
this.name = userOptions.name;
|
|
1868
1556
|
this.options = defaultOptions;
|
|
@@ -1914,4 +1602,4 @@ function preloadRemote(...args) {
|
|
|
1914
1602
|
// Inject for debug
|
|
1915
1603
|
setGlobalFederationConstructor(FederationHost);
|
|
1916
1604
|
|
|
1917
|
-
export { FederationHost, init, loadRemote,
|
|
1605
|
+
export { FederationHost, init, loadRemote, loadShare, loadShareSync, preloadRemote };
|