@module-federation/sdk 1.0.0-canary.3 → 1.1.0-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/index.cjs.default.js +1 -0
- package/index.cjs.js +297 -8
- package/index.cjs.mjs +2 -0
- package/index.esm.js +290 -9
- package/normalize-webpack-path.cjs.d.ts +1 -0
- package/normalize-webpack-path.cjs.default.js +1 -0
- package/normalize-webpack-path.cjs.js +42 -0
- package/normalize-webpack-path.cjs.mjs +2 -0
- package/normalize-webpack-path.esm.js +33 -0
- package/package.json +16 -2
- package/src/dom.d.ts +10 -0
- package/src/index.d.ts +1 -0
- package/src/normalize-webpack-path.d.ts +3 -0
- package/src/types/snapshot.d.ts +2 -0
- package/src/types/stats.d.ts +1 -0
- package/src/utils.d.ts +6 -2
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023-present zhanghang(2heal1)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports._default = require('./index.cjs.js').default;
|
package/index.cjs.js
CHANGED
|
@@ -209,6 +209,7 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
209
209
|
if (n === "Map" || n === "Set") return Array.from(n);
|
|
210
210
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
211
211
|
}
|
|
212
|
+
var LOG_CATEGORY = "[ Federation Runtime ]";
|
|
212
213
|
// entry: name:version version : 1.0.0 | ^1.2.3
|
|
213
214
|
// entry: name:entry entry: https://localhost:9000/federation-manifest.json
|
|
214
215
|
var parseEntry = function(str, devVerOrUrl) {
|
|
@@ -218,7 +219,7 @@ var parseEntry = function(str, devVerOrUrl) {
|
|
|
218
219
|
var isEntry = function(s) {
|
|
219
220
|
return s.startsWith("http") || s.endsWith(MANIFEST_EXT);
|
|
220
221
|
};
|
|
221
|
-
//
|
|
222
|
+
// Check if the string starts with a type
|
|
222
223
|
if (strSplit.length >= 2) {
|
|
223
224
|
var _strSplit = _to_array(strSplit), name = _strSplit[0], versionOrEntryArr = _strSplit.slice(1);
|
|
224
225
|
var versionOrEntry = devVersionOrUrl || versionOrEntryArr.join(SEPARATOR);
|
|
@@ -228,7 +229,7 @@ var parseEntry = function(str, devVerOrUrl) {
|
|
|
228
229
|
entry: versionOrEntry
|
|
229
230
|
};
|
|
230
231
|
} else {
|
|
231
|
-
// version rule
|
|
232
|
+
// Apply version rule
|
|
232
233
|
// devVersionOrUrl => inputVersion => defaultVersion
|
|
233
234
|
return {
|
|
234
235
|
name: name,
|
|
@@ -299,7 +300,7 @@ var generateExposeFilename = function(exposeName, withExt) {
|
|
|
299
300
|
}
|
|
300
301
|
var expose = exposeName;
|
|
301
302
|
if (expose === ".") {
|
|
302
|
-
expose = "
|
|
303
|
+
expose = "default_export";
|
|
303
304
|
}
|
|
304
305
|
if (expose.startsWith("./")) {
|
|
305
306
|
expose = expose.replace("./", "");
|
|
@@ -312,6 +313,29 @@ var generateShareFilename = function(pkgName, withExt) {
|
|
|
312
313
|
}
|
|
313
314
|
return encodeName(pkgName, "__federation_shared_", withExt);
|
|
314
315
|
};
|
|
316
|
+
var getResourceUrl = function(module, sourceUrl) {
|
|
317
|
+
if ("getPublicPath" in module) {
|
|
318
|
+
var publicPath = new Function(module.getPublicPath)();
|
|
319
|
+
return "".concat(publicPath).concat(sourceUrl);
|
|
320
|
+
} else if ("publicPath" in module) {
|
|
321
|
+
return "".concat(module.publicPath).concat(sourceUrl);
|
|
322
|
+
} else {
|
|
323
|
+
console.warn("Can not get resource url, if in debug mode, please ignore", module, sourceUrl);
|
|
324
|
+
return "";
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
328
|
+
var assert = function(condition, msg) {
|
|
329
|
+
if (!condition) {
|
|
330
|
+
error(msg);
|
|
331
|
+
}
|
|
332
|
+
};
|
|
333
|
+
var error = function(msg) {
|
|
334
|
+
throw new Error("".concat(LOG_CATEGORY, ": ").concat(msg));
|
|
335
|
+
};
|
|
336
|
+
var warn = function(msg) {
|
|
337
|
+
console.warn("".concat(LOG_CATEGORY, ": ").concat(msg));
|
|
338
|
+
};
|
|
315
339
|
|
|
316
340
|
function _define_property(obj, key, value) {
|
|
317
341
|
if (key in obj) {
|
|
@@ -394,10 +418,11 @@ var simpleJoinRemoteEntry = function(rPath, rName) {
|
|
|
394
418
|
}
|
|
395
419
|
return "".concat(transformedPath, "/").concat(rName);
|
|
396
420
|
};
|
|
397
|
-
//
|
|
421
|
+
// Priority: overrides > remotes
|
|
398
422
|
// eslint-disable-next-line max-lines-per-function
|
|
399
423
|
function generateSnapshotFromManifest(manifest) {
|
|
400
424
|
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
425
|
+
var _manifest_metaData;
|
|
401
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;
|
|
402
427
|
var remoteSnapshot;
|
|
403
428
|
var getPublicPath = function() {
|
|
@@ -409,13 +434,13 @@ function generateSnapshotFromManifest(manifest) {
|
|
|
409
434
|
};
|
|
410
435
|
var overridesKeys = Object.keys(overrides);
|
|
411
436
|
var remotesInfo = {};
|
|
412
|
-
// If remotes are not
|
|
437
|
+
// If remotes are not provided, only the remotes in the manifest will be read
|
|
413
438
|
if (!Object.keys(remotes).length) {
|
|
414
439
|
var _manifest_remotes;
|
|
415
440
|
remotesInfo = ((_manifest_remotes = manifest.remotes) === null || _manifest_remotes === void 0 ? void 0 : _manifest_remotes.reduce(function(res, next) {
|
|
416
441
|
var matchedVersion;
|
|
417
442
|
var name = next.federationContainerName;
|
|
418
|
-
// overrides
|
|
443
|
+
// overrides have higher priority
|
|
419
444
|
if (overridesKeys.includes(name)) {
|
|
420
445
|
matchedVersion = overrides[name];
|
|
421
446
|
} else {
|
|
@@ -431,14 +456,14 @@ function generateSnapshotFromManifest(manifest) {
|
|
|
431
456
|
return res;
|
|
432
457
|
}, {})) || {};
|
|
433
458
|
}
|
|
434
|
-
// If remotes (deploy scenario) are specified,
|
|
459
|
+
// If remotes (deploy scenario) are specified, they need to be traversed again
|
|
435
460
|
Object.keys(remotes).forEach(function(key) {
|
|
436
461
|
return remotesInfo[key] = {
|
|
437
462
|
// overrides will override dependencies
|
|
438
463
|
matchedVersion: overridesKeys.includes(key) ? overrides[key] : remotes[key]
|
|
439
464
|
};
|
|
440
465
|
});
|
|
441
|
-
var
|
|
466
|
+
var _manifest_metaData1 = manifest.metaData, _manifest_metaData_remoteEntry = _manifest_metaData1.remoteEntry, remoteEntryPath = _manifest_metaData_remoteEntry.path, remoteEntryName = _manifest_metaData_remoteEntry.name, remoteEntryType = _manifest_metaData_remoteEntry.type, remoteTypes = _manifest_metaData1.types, buildVersion = _manifest_metaData1.buildInfo.buildVersion, globalName = _manifest_metaData1.globalName;
|
|
442
467
|
var exposes = manifest.exposes;
|
|
443
468
|
var basicRemoteSnapshot = {
|
|
444
469
|
version: version ? version : "",
|
|
@@ -462,6 +487,13 @@ function generateSnapshotFromManifest(manifest) {
|
|
|
462
487
|
};
|
|
463
488
|
})
|
|
464
489
|
};
|
|
490
|
+
if ((_manifest_metaData = manifest.metaData) === null || _manifest_metaData === void 0 ? void 0 : _manifest_metaData.prefetchEntry) {
|
|
491
|
+
var _manifest_metaData_prefetchEntry = manifest.metaData.prefetchEntry, path = _manifest_metaData_prefetchEntry.path, name = _manifest_metaData_prefetchEntry.name, type = _manifest_metaData_prefetchEntry.type;
|
|
492
|
+
basicRemoteSnapshot = _object_spread_props(_object_spread({}, basicRemoteSnapshot), {
|
|
493
|
+
prefetchEntry: simpleJoinRemoteEntry(path, name),
|
|
494
|
+
prefetchEntryType: type
|
|
495
|
+
});
|
|
496
|
+
}
|
|
465
497
|
if ("publicPath" in manifest.metaData) {
|
|
466
498
|
remoteSnapshot = _object_spread_props(_object_spread({}, basicRemoteSnapshot), {
|
|
467
499
|
publicPath: getPublicPath()
|
|
@@ -481,6 +513,255 @@ function isManifestProvider(moduleInfo) {
|
|
|
481
513
|
}
|
|
482
514
|
}
|
|
483
515
|
|
|
516
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
517
|
+
try {
|
|
518
|
+
var info = gen[key](arg);
|
|
519
|
+
var value = info.value;
|
|
520
|
+
} catch (error) {
|
|
521
|
+
reject(error);
|
|
522
|
+
return;
|
|
523
|
+
}
|
|
524
|
+
if (info.done) {
|
|
525
|
+
resolve(value);
|
|
526
|
+
} else {
|
|
527
|
+
Promise.resolve(value).then(_next, _throw);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
function _async_to_generator(fn) {
|
|
531
|
+
return function() {
|
|
532
|
+
var self = this, args = arguments;
|
|
533
|
+
return new Promise(function(resolve, reject) {
|
|
534
|
+
var gen = fn.apply(self, args);
|
|
535
|
+
function _next(value) {
|
|
536
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
537
|
+
}
|
|
538
|
+
function _throw(err) {
|
|
539
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
540
|
+
}
|
|
541
|
+
_next(undefined);
|
|
542
|
+
});
|
|
543
|
+
};
|
|
544
|
+
}
|
|
545
|
+
function _instanceof(left, right) {
|
|
546
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
547
|
+
return !!right[Symbol.hasInstance](left);
|
|
548
|
+
} else {
|
|
549
|
+
return left instanceof right;
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
function _ts_generator(thisArg, body) {
|
|
553
|
+
var f, y, t, g, _ = {
|
|
554
|
+
label: 0,
|
|
555
|
+
sent: function() {
|
|
556
|
+
if (t[0] & 1) throw t[1];
|
|
557
|
+
return t[1];
|
|
558
|
+
},
|
|
559
|
+
trys: [],
|
|
560
|
+
ops: []
|
|
561
|
+
};
|
|
562
|
+
return g = {
|
|
563
|
+
next: verb(0),
|
|
564
|
+
"throw": verb(1),
|
|
565
|
+
"return": verb(2)
|
|
566
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
567
|
+
return this;
|
|
568
|
+
}), g;
|
|
569
|
+
function verb(n) {
|
|
570
|
+
return function(v) {
|
|
571
|
+
return step([
|
|
572
|
+
n,
|
|
573
|
+
v
|
|
574
|
+
]);
|
|
575
|
+
};
|
|
576
|
+
}
|
|
577
|
+
function step(op) {
|
|
578
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
579
|
+
while(_)try {
|
|
580
|
+
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;
|
|
581
|
+
if (y = 0, t) op = [
|
|
582
|
+
op[0] & 2,
|
|
583
|
+
t.value
|
|
584
|
+
];
|
|
585
|
+
switch(op[0]){
|
|
586
|
+
case 0:
|
|
587
|
+
case 1:
|
|
588
|
+
t = op;
|
|
589
|
+
break;
|
|
590
|
+
case 4:
|
|
591
|
+
_.label++;
|
|
592
|
+
return {
|
|
593
|
+
value: op[1],
|
|
594
|
+
done: false
|
|
595
|
+
};
|
|
596
|
+
case 5:
|
|
597
|
+
_.label++;
|
|
598
|
+
y = op[1];
|
|
599
|
+
op = [
|
|
600
|
+
0
|
|
601
|
+
];
|
|
602
|
+
continue;
|
|
603
|
+
case 7:
|
|
604
|
+
op = _.ops.pop();
|
|
605
|
+
_.trys.pop();
|
|
606
|
+
continue;
|
|
607
|
+
default:
|
|
608
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
609
|
+
_ = 0;
|
|
610
|
+
continue;
|
|
611
|
+
}
|
|
612
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
613
|
+
_.label = op[1];
|
|
614
|
+
break;
|
|
615
|
+
}
|
|
616
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
617
|
+
_.label = t[1];
|
|
618
|
+
t = op;
|
|
619
|
+
break;
|
|
620
|
+
}
|
|
621
|
+
if (t && _.label < t[2]) {
|
|
622
|
+
_.label = t[2];
|
|
623
|
+
_.ops.push(op);
|
|
624
|
+
break;
|
|
625
|
+
}
|
|
626
|
+
if (t[2]) _.ops.pop();
|
|
627
|
+
_.trys.pop();
|
|
628
|
+
continue;
|
|
629
|
+
}
|
|
630
|
+
op = body.call(thisArg, _);
|
|
631
|
+
} catch (e) {
|
|
632
|
+
op = [
|
|
633
|
+
6,
|
|
634
|
+
e
|
|
635
|
+
];
|
|
636
|
+
y = 0;
|
|
637
|
+
} finally{
|
|
638
|
+
f = t = 0;
|
|
639
|
+
}
|
|
640
|
+
if (op[0] & 5) throw op[1];
|
|
641
|
+
return {
|
|
642
|
+
value: op[0] ? op[1] : void 0,
|
|
643
|
+
done: true
|
|
644
|
+
};
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
648
|
+
function safeWrapper(callback, disableWarn) {
|
|
649
|
+
return _safeWrapper.apply(this, arguments);
|
|
650
|
+
}
|
|
651
|
+
function _safeWrapper() {
|
|
652
|
+
_safeWrapper = _async_to_generator(function(callback, disableWarn) {
|
|
653
|
+
var res, e;
|
|
654
|
+
return _ts_generator(this, function(_state) {
|
|
655
|
+
switch(_state.label){
|
|
656
|
+
case 0:
|
|
657
|
+
_state.trys.push([
|
|
658
|
+
0,
|
|
659
|
+
2,
|
|
660
|
+
,
|
|
661
|
+
3
|
|
662
|
+
]);
|
|
663
|
+
return [
|
|
664
|
+
4,
|
|
665
|
+
callback()
|
|
666
|
+
];
|
|
667
|
+
case 1:
|
|
668
|
+
res = _state.sent();
|
|
669
|
+
return [
|
|
670
|
+
2,
|
|
671
|
+
res
|
|
672
|
+
];
|
|
673
|
+
case 2:
|
|
674
|
+
e = _state.sent();
|
|
675
|
+
!disableWarn && warn(e);
|
|
676
|
+
return [
|
|
677
|
+
2
|
|
678
|
+
];
|
|
679
|
+
case 3:
|
|
680
|
+
return [
|
|
681
|
+
2
|
|
682
|
+
];
|
|
683
|
+
}
|
|
684
|
+
});
|
|
685
|
+
});
|
|
686
|
+
return _safeWrapper.apply(this, arguments);
|
|
687
|
+
}
|
|
688
|
+
function isStaticResourcesEqual(url1, url2) {
|
|
689
|
+
var REG_EXP = /^(https?:)?\/\//i;
|
|
690
|
+
// Transform url1 and url2 into relative paths
|
|
691
|
+
var relativeUrl1 = url1.replace(REG_EXP, "").replace(/\/$/, "");
|
|
692
|
+
var relativeUrl2 = url2.replace(REG_EXP, "").replace(/\/$/, "");
|
|
693
|
+
// Check if the relative paths are identical
|
|
694
|
+
return relativeUrl1 === relativeUrl2;
|
|
695
|
+
}
|
|
696
|
+
function createScript(url, cb, attrs, createScriptHook) {
|
|
697
|
+
// Retrieve the existing script element by its src attribute
|
|
698
|
+
var script = null;
|
|
699
|
+
var needAttach = true;
|
|
700
|
+
var scripts = document.getElementsByTagName("script");
|
|
701
|
+
for(var i = 0; i < scripts.length; i++){
|
|
702
|
+
var s = scripts[i];
|
|
703
|
+
var scriptSrc = s.getAttribute("src");
|
|
704
|
+
if (scriptSrc && isStaticResourcesEqual(scriptSrc, url)) {
|
|
705
|
+
script = s;
|
|
706
|
+
needAttach = false;
|
|
707
|
+
break;
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
if (!script) {
|
|
711
|
+
script = document.createElement("script");
|
|
712
|
+
script.type = "text/javascript";
|
|
713
|
+
script.src = url;
|
|
714
|
+
if (createScriptHook) {
|
|
715
|
+
var createScriptRes = createScriptHook(url);
|
|
716
|
+
if (_instanceof(createScriptRes, HTMLScriptElement)) {
|
|
717
|
+
script = createScriptRes;
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
if (attrs) {
|
|
722
|
+
Object.keys(attrs).forEach(function(name) {
|
|
723
|
+
if (script) {
|
|
724
|
+
if (name === "async" || name === "defer") {
|
|
725
|
+
script[name] = attrs[name];
|
|
726
|
+
} else {
|
|
727
|
+
script.setAttribute(name, attrs[name]);
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
});
|
|
731
|
+
}
|
|
732
|
+
var onScriptComplete = function(prev, // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
733
|
+
event) {
|
|
734
|
+
// Prevent memory leaks in IE.
|
|
735
|
+
if (script) {
|
|
736
|
+
script.onerror = null;
|
|
737
|
+
script.onload = null;
|
|
738
|
+
safeWrapper(function() {
|
|
739
|
+
(script === null || script === void 0 ? void 0 : script.parentNode) && script.parentNode.removeChild(script);
|
|
740
|
+
});
|
|
741
|
+
if (prev) {
|
|
742
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
743
|
+
var res = prev(event);
|
|
744
|
+
cb();
|
|
745
|
+
return res;
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
cb();
|
|
749
|
+
};
|
|
750
|
+
script.onerror = onScriptComplete.bind(null, script.onerror);
|
|
751
|
+
script.onload = onScriptComplete.bind(null, script.onload);
|
|
752
|
+
return {
|
|
753
|
+
script: script,
|
|
754
|
+
needAttach: needAttach
|
|
755
|
+
};
|
|
756
|
+
}
|
|
757
|
+
function loadScript(url, info) {
|
|
758
|
+
var attrs = info.attrs, createScriptHook = info.createScriptHook;
|
|
759
|
+
return new Promise(function(resolve, _reject) {
|
|
760
|
+
var _createScript = createScript(url, resolve, attrs, createScriptHook), script = _createScript.script, needAttach = _createScript.needAttach;
|
|
761
|
+
needAttach && document.getElementsByTagName("head")[0].appendChild(script);
|
|
762
|
+
});
|
|
763
|
+
}
|
|
764
|
+
|
|
484
765
|
exports.BROWSER_LOG_KEY = BROWSER_LOG_KEY;
|
|
485
766
|
exports.BROWSER_LOG_VALUE = BROWSER_LOG_VALUE;
|
|
486
767
|
exports.EncodedNameTransformMap = EncodedNameTransformMap;
|
|
@@ -490,15 +771,23 @@ exports.MANIFEST_EXT = MANIFEST_EXT;
|
|
|
490
771
|
exports.NameTransformMap = NameTransformMap;
|
|
491
772
|
exports.NameTransformSymbol = NameTransformSymbol;
|
|
492
773
|
exports.SEPARATOR = SEPARATOR;
|
|
774
|
+
exports.assert = assert;
|
|
493
775
|
exports.composeKeyWithSeparator = composeKeyWithSeparator;
|
|
776
|
+
exports.createScript = createScript;
|
|
494
777
|
exports.decodeName = decodeName;
|
|
495
778
|
exports.encodeName = encodeName;
|
|
779
|
+
exports.error = error;
|
|
496
780
|
exports.generateExposeFilename = generateExposeFilename;
|
|
497
781
|
exports.generateShareFilename = generateShareFilename;
|
|
498
782
|
exports.generateSnapshotFromManifest = generateSnapshotFromManifest;
|
|
499
783
|
exports.getProcessEnv = getProcessEnv;
|
|
784
|
+
exports.getResourceUrl = getResourceUrl;
|
|
500
785
|
exports.isBrowserEnv = isBrowserEnv;
|
|
501
786
|
exports.isDebugMode = isDebugMode;
|
|
502
787
|
exports.isManifestProvider = isManifestProvider;
|
|
788
|
+
exports.isStaticResourcesEqual = isStaticResourcesEqual;
|
|
789
|
+
exports.loadScript = loadScript;
|
|
503
790
|
exports.logger = logger;
|
|
504
791
|
exports.parseEntry = parseEntry;
|
|
792
|
+
exports.safeWrapper = safeWrapper;
|
|
793
|
+
exports.warn = warn;
|
package/index.cjs.mjs
ADDED
package/index.esm.js
CHANGED
|
@@ -205,6 +205,7 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
205
205
|
if (n === "Map" || n === "Set") return Array.from(n);
|
|
206
206
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
207
207
|
}
|
|
208
|
+
var LOG_CATEGORY = "[ Federation Runtime ]";
|
|
208
209
|
// entry: name:version version : 1.0.0 | ^1.2.3
|
|
209
210
|
// entry: name:entry entry: https://localhost:9000/federation-manifest.json
|
|
210
211
|
var parseEntry = function(str, devVerOrUrl) {
|
|
@@ -214,7 +215,7 @@ var parseEntry = function(str, devVerOrUrl) {
|
|
|
214
215
|
var isEntry = function(s) {
|
|
215
216
|
return s.startsWith("http") || s.endsWith(MANIFEST_EXT);
|
|
216
217
|
};
|
|
217
|
-
//
|
|
218
|
+
// Check if the string starts with a type
|
|
218
219
|
if (strSplit.length >= 2) {
|
|
219
220
|
var _strSplit = _to_array(strSplit), name = _strSplit[0], versionOrEntryArr = _strSplit.slice(1);
|
|
220
221
|
var versionOrEntry = devVersionOrUrl || versionOrEntryArr.join(SEPARATOR);
|
|
@@ -224,7 +225,7 @@ var parseEntry = function(str, devVerOrUrl) {
|
|
|
224
225
|
entry: versionOrEntry
|
|
225
226
|
};
|
|
226
227
|
} else {
|
|
227
|
-
// version rule
|
|
228
|
+
// Apply version rule
|
|
228
229
|
// devVersionOrUrl => inputVersion => defaultVersion
|
|
229
230
|
return {
|
|
230
231
|
name: name,
|
|
@@ -295,7 +296,7 @@ var generateExposeFilename = function(exposeName, withExt) {
|
|
|
295
296
|
}
|
|
296
297
|
var expose = exposeName;
|
|
297
298
|
if (expose === ".") {
|
|
298
|
-
expose = "
|
|
299
|
+
expose = "default_export";
|
|
299
300
|
}
|
|
300
301
|
if (expose.startsWith("./")) {
|
|
301
302
|
expose = expose.replace("./", "");
|
|
@@ -308,6 +309,29 @@ var generateShareFilename = function(pkgName, withExt) {
|
|
|
308
309
|
}
|
|
309
310
|
return encodeName(pkgName, "__federation_shared_", withExt);
|
|
310
311
|
};
|
|
312
|
+
var getResourceUrl = function(module, sourceUrl) {
|
|
313
|
+
if ("getPublicPath" in module) {
|
|
314
|
+
var publicPath = new Function(module.getPublicPath)();
|
|
315
|
+
return "".concat(publicPath).concat(sourceUrl);
|
|
316
|
+
} else if ("publicPath" in module) {
|
|
317
|
+
return "".concat(module.publicPath).concat(sourceUrl);
|
|
318
|
+
} else {
|
|
319
|
+
console.warn("Can not get resource url, if in debug mode, please ignore", module, sourceUrl);
|
|
320
|
+
return "";
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
324
|
+
var assert = function(condition, msg) {
|
|
325
|
+
if (!condition) {
|
|
326
|
+
error(msg);
|
|
327
|
+
}
|
|
328
|
+
};
|
|
329
|
+
var error = function(msg) {
|
|
330
|
+
throw new Error("".concat(LOG_CATEGORY, ": ").concat(msg));
|
|
331
|
+
};
|
|
332
|
+
var warn = function(msg) {
|
|
333
|
+
console.warn("".concat(LOG_CATEGORY, ": ").concat(msg));
|
|
334
|
+
};
|
|
311
335
|
|
|
312
336
|
function _define_property(obj, key, value) {
|
|
313
337
|
if (key in obj) {
|
|
@@ -390,10 +414,11 @@ var simpleJoinRemoteEntry = function(rPath, rName) {
|
|
|
390
414
|
}
|
|
391
415
|
return "".concat(transformedPath, "/").concat(rName);
|
|
392
416
|
};
|
|
393
|
-
//
|
|
417
|
+
// Priority: overrides > remotes
|
|
394
418
|
// eslint-disable-next-line max-lines-per-function
|
|
395
419
|
function generateSnapshotFromManifest(manifest) {
|
|
396
420
|
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
421
|
+
var _manifest_metaData;
|
|
397
422
|
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;
|
|
398
423
|
var remoteSnapshot;
|
|
399
424
|
var getPublicPath = function() {
|
|
@@ -405,13 +430,13 @@ function generateSnapshotFromManifest(manifest) {
|
|
|
405
430
|
};
|
|
406
431
|
var overridesKeys = Object.keys(overrides);
|
|
407
432
|
var remotesInfo = {};
|
|
408
|
-
// If remotes are not
|
|
433
|
+
// If remotes are not provided, only the remotes in the manifest will be read
|
|
409
434
|
if (!Object.keys(remotes).length) {
|
|
410
435
|
var _manifest_remotes;
|
|
411
436
|
remotesInfo = ((_manifest_remotes = manifest.remotes) === null || _manifest_remotes === void 0 ? void 0 : _manifest_remotes.reduce(function(res, next) {
|
|
412
437
|
var matchedVersion;
|
|
413
438
|
var name = next.federationContainerName;
|
|
414
|
-
// overrides
|
|
439
|
+
// overrides have higher priority
|
|
415
440
|
if (overridesKeys.includes(name)) {
|
|
416
441
|
matchedVersion = overrides[name];
|
|
417
442
|
} else {
|
|
@@ -427,14 +452,14 @@ function generateSnapshotFromManifest(manifest) {
|
|
|
427
452
|
return res;
|
|
428
453
|
}, {})) || {};
|
|
429
454
|
}
|
|
430
|
-
// If remotes (deploy scenario) are specified,
|
|
455
|
+
// If remotes (deploy scenario) are specified, they need to be traversed again
|
|
431
456
|
Object.keys(remotes).forEach(function(key) {
|
|
432
457
|
return remotesInfo[key] = {
|
|
433
458
|
// overrides will override dependencies
|
|
434
459
|
matchedVersion: overridesKeys.includes(key) ? overrides[key] : remotes[key]
|
|
435
460
|
};
|
|
436
461
|
});
|
|
437
|
-
var
|
|
462
|
+
var _manifest_metaData1 = manifest.metaData, _manifest_metaData_remoteEntry = _manifest_metaData1.remoteEntry, remoteEntryPath = _manifest_metaData_remoteEntry.path, remoteEntryName = _manifest_metaData_remoteEntry.name, remoteEntryType = _manifest_metaData_remoteEntry.type, remoteTypes = _manifest_metaData1.types, buildVersion = _manifest_metaData1.buildInfo.buildVersion, globalName = _manifest_metaData1.globalName;
|
|
438
463
|
var exposes = manifest.exposes;
|
|
439
464
|
var basicRemoteSnapshot = {
|
|
440
465
|
version: version ? version : "",
|
|
@@ -458,6 +483,13 @@ function generateSnapshotFromManifest(manifest) {
|
|
|
458
483
|
};
|
|
459
484
|
})
|
|
460
485
|
};
|
|
486
|
+
if ((_manifest_metaData = manifest.metaData) === null || _manifest_metaData === void 0 ? void 0 : _manifest_metaData.prefetchEntry) {
|
|
487
|
+
var _manifest_metaData_prefetchEntry = manifest.metaData.prefetchEntry, path = _manifest_metaData_prefetchEntry.path, name = _manifest_metaData_prefetchEntry.name, type = _manifest_metaData_prefetchEntry.type;
|
|
488
|
+
basicRemoteSnapshot = _object_spread_props(_object_spread({}, basicRemoteSnapshot), {
|
|
489
|
+
prefetchEntry: simpleJoinRemoteEntry(path, name),
|
|
490
|
+
prefetchEntryType: type
|
|
491
|
+
});
|
|
492
|
+
}
|
|
461
493
|
if ("publicPath" in manifest.metaData) {
|
|
462
494
|
remoteSnapshot = _object_spread_props(_object_spread({}, basicRemoteSnapshot), {
|
|
463
495
|
publicPath: getPublicPath()
|
|
@@ -477,4 +509,253 @@ function isManifestProvider(moduleInfo) {
|
|
|
477
509
|
}
|
|
478
510
|
}
|
|
479
511
|
|
|
480
|
-
|
|
512
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
513
|
+
try {
|
|
514
|
+
var info = gen[key](arg);
|
|
515
|
+
var value = info.value;
|
|
516
|
+
} catch (error) {
|
|
517
|
+
reject(error);
|
|
518
|
+
return;
|
|
519
|
+
}
|
|
520
|
+
if (info.done) {
|
|
521
|
+
resolve(value);
|
|
522
|
+
} else {
|
|
523
|
+
Promise.resolve(value).then(_next, _throw);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
function _async_to_generator(fn) {
|
|
527
|
+
return function() {
|
|
528
|
+
var self = this, args = arguments;
|
|
529
|
+
return new Promise(function(resolve, reject) {
|
|
530
|
+
var gen = fn.apply(self, args);
|
|
531
|
+
function _next(value) {
|
|
532
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
533
|
+
}
|
|
534
|
+
function _throw(err) {
|
|
535
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
536
|
+
}
|
|
537
|
+
_next(undefined);
|
|
538
|
+
});
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
function _instanceof(left, right) {
|
|
542
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
543
|
+
return !!right[Symbol.hasInstance](left);
|
|
544
|
+
} else {
|
|
545
|
+
return left instanceof right;
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
function _ts_generator(thisArg, body) {
|
|
549
|
+
var f, y, t, g, _ = {
|
|
550
|
+
label: 0,
|
|
551
|
+
sent: function() {
|
|
552
|
+
if (t[0] & 1) throw t[1];
|
|
553
|
+
return t[1];
|
|
554
|
+
},
|
|
555
|
+
trys: [],
|
|
556
|
+
ops: []
|
|
557
|
+
};
|
|
558
|
+
return g = {
|
|
559
|
+
next: verb(0),
|
|
560
|
+
"throw": verb(1),
|
|
561
|
+
"return": verb(2)
|
|
562
|
+
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
563
|
+
return this;
|
|
564
|
+
}), g;
|
|
565
|
+
function verb(n) {
|
|
566
|
+
return function(v) {
|
|
567
|
+
return step([
|
|
568
|
+
n,
|
|
569
|
+
v
|
|
570
|
+
]);
|
|
571
|
+
};
|
|
572
|
+
}
|
|
573
|
+
function step(op) {
|
|
574
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
575
|
+
while(_)try {
|
|
576
|
+
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;
|
|
577
|
+
if (y = 0, t) op = [
|
|
578
|
+
op[0] & 2,
|
|
579
|
+
t.value
|
|
580
|
+
];
|
|
581
|
+
switch(op[0]){
|
|
582
|
+
case 0:
|
|
583
|
+
case 1:
|
|
584
|
+
t = op;
|
|
585
|
+
break;
|
|
586
|
+
case 4:
|
|
587
|
+
_.label++;
|
|
588
|
+
return {
|
|
589
|
+
value: op[1],
|
|
590
|
+
done: false
|
|
591
|
+
};
|
|
592
|
+
case 5:
|
|
593
|
+
_.label++;
|
|
594
|
+
y = op[1];
|
|
595
|
+
op = [
|
|
596
|
+
0
|
|
597
|
+
];
|
|
598
|
+
continue;
|
|
599
|
+
case 7:
|
|
600
|
+
op = _.ops.pop();
|
|
601
|
+
_.trys.pop();
|
|
602
|
+
continue;
|
|
603
|
+
default:
|
|
604
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
605
|
+
_ = 0;
|
|
606
|
+
continue;
|
|
607
|
+
}
|
|
608
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
609
|
+
_.label = op[1];
|
|
610
|
+
break;
|
|
611
|
+
}
|
|
612
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
613
|
+
_.label = t[1];
|
|
614
|
+
t = op;
|
|
615
|
+
break;
|
|
616
|
+
}
|
|
617
|
+
if (t && _.label < t[2]) {
|
|
618
|
+
_.label = t[2];
|
|
619
|
+
_.ops.push(op);
|
|
620
|
+
break;
|
|
621
|
+
}
|
|
622
|
+
if (t[2]) _.ops.pop();
|
|
623
|
+
_.trys.pop();
|
|
624
|
+
continue;
|
|
625
|
+
}
|
|
626
|
+
op = body.call(thisArg, _);
|
|
627
|
+
} catch (e) {
|
|
628
|
+
op = [
|
|
629
|
+
6,
|
|
630
|
+
e
|
|
631
|
+
];
|
|
632
|
+
y = 0;
|
|
633
|
+
} finally{
|
|
634
|
+
f = t = 0;
|
|
635
|
+
}
|
|
636
|
+
if (op[0] & 5) throw op[1];
|
|
637
|
+
return {
|
|
638
|
+
value: op[0] ? op[1] : void 0,
|
|
639
|
+
done: true
|
|
640
|
+
};
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
644
|
+
function safeWrapper(callback, disableWarn) {
|
|
645
|
+
return _safeWrapper.apply(this, arguments);
|
|
646
|
+
}
|
|
647
|
+
function _safeWrapper() {
|
|
648
|
+
_safeWrapper = _async_to_generator(function(callback, disableWarn) {
|
|
649
|
+
var res, e;
|
|
650
|
+
return _ts_generator(this, function(_state) {
|
|
651
|
+
switch(_state.label){
|
|
652
|
+
case 0:
|
|
653
|
+
_state.trys.push([
|
|
654
|
+
0,
|
|
655
|
+
2,
|
|
656
|
+
,
|
|
657
|
+
3
|
|
658
|
+
]);
|
|
659
|
+
return [
|
|
660
|
+
4,
|
|
661
|
+
callback()
|
|
662
|
+
];
|
|
663
|
+
case 1:
|
|
664
|
+
res = _state.sent();
|
|
665
|
+
return [
|
|
666
|
+
2,
|
|
667
|
+
res
|
|
668
|
+
];
|
|
669
|
+
case 2:
|
|
670
|
+
e = _state.sent();
|
|
671
|
+
!disableWarn && warn(e);
|
|
672
|
+
return [
|
|
673
|
+
2
|
|
674
|
+
];
|
|
675
|
+
case 3:
|
|
676
|
+
return [
|
|
677
|
+
2
|
|
678
|
+
];
|
|
679
|
+
}
|
|
680
|
+
});
|
|
681
|
+
});
|
|
682
|
+
return _safeWrapper.apply(this, arguments);
|
|
683
|
+
}
|
|
684
|
+
function isStaticResourcesEqual(url1, url2) {
|
|
685
|
+
var REG_EXP = /^(https?:)?\/\//i;
|
|
686
|
+
// Transform url1 and url2 into relative paths
|
|
687
|
+
var relativeUrl1 = url1.replace(REG_EXP, "").replace(/\/$/, "");
|
|
688
|
+
var relativeUrl2 = url2.replace(REG_EXP, "").replace(/\/$/, "");
|
|
689
|
+
// Check if the relative paths are identical
|
|
690
|
+
return relativeUrl1 === relativeUrl2;
|
|
691
|
+
}
|
|
692
|
+
function createScript(url, cb, attrs, createScriptHook) {
|
|
693
|
+
// Retrieve the existing script element by its src attribute
|
|
694
|
+
var script = null;
|
|
695
|
+
var needAttach = true;
|
|
696
|
+
var scripts = document.getElementsByTagName("script");
|
|
697
|
+
for(var i = 0; i < scripts.length; i++){
|
|
698
|
+
var s = scripts[i];
|
|
699
|
+
var scriptSrc = s.getAttribute("src");
|
|
700
|
+
if (scriptSrc && isStaticResourcesEqual(scriptSrc, url)) {
|
|
701
|
+
script = s;
|
|
702
|
+
needAttach = false;
|
|
703
|
+
break;
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
if (!script) {
|
|
707
|
+
script = document.createElement("script");
|
|
708
|
+
script.type = "text/javascript";
|
|
709
|
+
script.src = url;
|
|
710
|
+
if (createScriptHook) {
|
|
711
|
+
var createScriptRes = createScriptHook(url);
|
|
712
|
+
if (_instanceof(createScriptRes, HTMLScriptElement)) {
|
|
713
|
+
script = createScriptRes;
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
if (attrs) {
|
|
718
|
+
Object.keys(attrs).forEach(function(name) {
|
|
719
|
+
if (script) {
|
|
720
|
+
if (name === "async" || name === "defer") {
|
|
721
|
+
script[name] = attrs[name];
|
|
722
|
+
} else {
|
|
723
|
+
script.setAttribute(name, attrs[name]);
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
});
|
|
727
|
+
}
|
|
728
|
+
var onScriptComplete = function(prev, // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
729
|
+
event) {
|
|
730
|
+
// Prevent memory leaks in IE.
|
|
731
|
+
if (script) {
|
|
732
|
+
script.onerror = null;
|
|
733
|
+
script.onload = null;
|
|
734
|
+
safeWrapper(function() {
|
|
735
|
+
(script === null || script === void 0 ? void 0 : script.parentNode) && script.parentNode.removeChild(script);
|
|
736
|
+
});
|
|
737
|
+
if (prev) {
|
|
738
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
739
|
+
var res = prev(event);
|
|
740
|
+
cb();
|
|
741
|
+
return res;
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
cb();
|
|
745
|
+
};
|
|
746
|
+
script.onerror = onScriptComplete.bind(null, script.onerror);
|
|
747
|
+
script.onload = onScriptComplete.bind(null, script.onload);
|
|
748
|
+
return {
|
|
749
|
+
script: script,
|
|
750
|
+
needAttach: needAttach
|
|
751
|
+
};
|
|
752
|
+
}
|
|
753
|
+
function loadScript(url, info) {
|
|
754
|
+
var attrs = info.attrs, createScriptHook = info.createScriptHook;
|
|
755
|
+
return new Promise(function(resolve, _reject) {
|
|
756
|
+
var _createScript = createScript(url, resolve, attrs, createScriptHook), script = _createScript.script, needAttach = _createScript.needAttach;
|
|
757
|
+
needAttach && document.getElementsByTagName("head")[0].appendChild(script);
|
|
758
|
+
});
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
export { BROWSER_LOG_KEY, BROWSER_LOG_VALUE, EncodedNameTransformMap, FederationModuleManifest, Logger, MANIFEST_EXT, NameTransformMap, NameTransformSymbol, SEPARATOR, assert, composeKeyWithSeparator, createScript, decodeName, encodeName, error, generateExposeFilename, generateShareFilename, generateSnapshotFromManifest, getProcessEnv, getResourceUrl, isBrowserEnv, isDebugMode, isManifestProvider, isStaticResourcesEqual, loadScript, logger, parseEntry, safeWrapper, warn };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./src/normalize-webpack-path";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports._default = require('./normalize-webpack-path.cjs.js').default;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var path = require('path');
|
|
6
|
+
|
|
7
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
|
+
|
|
9
|
+
var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
|
|
10
|
+
|
|
11
|
+
function getWebpackPath(compiler) {
|
|
12
|
+
try {
|
|
13
|
+
// @ts-ignore just throw err
|
|
14
|
+
compiler.webpack();
|
|
15
|
+
return "";
|
|
16
|
+
} catch (err) {
|
|
17
|
+
var _err_stack;
|
|
18
|
+
var trace = ((_err_stack = err.stack) === null || _err_stack === void 0 ? void 0 : _err_stack.split("\n")) || [];
|
|
19
|
+
var webpackErrLocation = trace.find(function(item) {
|
|
20
|
+
return item.includes("at webpack");
|
|
21
|
+
}) || "";
|
|
22
|
+
var webpackLocationWithDetail = webpackErrLocation.replace(/[^\(\)]+/, "").slice(1, -1);
|
|
23
|
+
var webpackPath = webpackLocationWithDetail.split(":").slice(0, -2)[0];
|
|
24
|
+
return require.resolve("webpack", {
|
|
25
|
+
paths: [
|
|
26
|
+
webpackPath
|
|
27
|
+
]
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
var normalizeWebpackPath = function(fullPath) {
|
|
32
|
+
if (fullPath === "webpack") {
|
|
33
|
+
return process.env["FEDERATION_WEBPACK_PATH"] || fullPath;
|
|
34
|
+
}
|
|
35
|
+
if (process.env["FEDERATION_WEBPACK_PATH"]) {
|
|
36
|
+
return path__default["default"].resolve(process.env["FEDERATION_WEBPACK_PATH"], fullPath.replace("webpack", "../../"));
|
|
37
|
+
}
|
|
38
|
+
return fullPath;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
exports.getWebpackPath = getWebpackPath;
|
|
42
|
+
exports.normalizeWebpackPath = normalizeWebpackPath;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
|
|
3
|
+
function getWebpackPath(compiler) {
|
|
4
|
+
try {
|
|
5
|
+
// @ts-ignore just throw err
|
|
6
|
+
compiler.webpack();
|
|
7
|
+
return "";
|
|
8
|
+
} catch (err) {
|
|
9
|
+
var _err_stack;
|
|
10
|
+
var trace = ((_err_stack = err.stack) === null || _err_stack === void 0 ? void 0 : _err_stack.split("\n")) || [];
|
|
11
|
+
var webpackErrLocation = trace.find(function(item) {
|
|
12
|
+
return item.includes("at webpack");
|
|
13
|
+
}) || "";
|
|
14
|
+
var webpackLocationWithDetail = webpackErrLocation.replace(/[^\(\)]+/, "").slice(1, -1);
|
|
15
|
+
var webpackPath = webpackLocationWithDetail.split(":").slice(0, -2)[0];
|
|
16
|
+
return require.resolve("webpack", {
|
|
17
|
+
paths: [
|
|
18
|
+
webpackPath
|
|
19
|
+
]
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
var normalizeWebpackPath = function(fullPath) {
|
|
24
|
+
if (fullPath === "webpack") {
|
|
25
|
+
return process.env["FEDERATION_WEBPACK_PATH"] || fullPath;
|
|
26
|
+
}
|
|
27
|
+
if (process.env["FEDERATION_WEBPACK_PATH"]) {
|
|
28
|
+
return path.resolve(process.env["FEDERATION_WEBPACK_PATH"], fullPath.replace("webpack", "../../"));
|
|
29
|
+
}
|
|
30
|
+
return fullPath;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export { getWebpackPath, normalizeWebpackPath };
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@module-federation/sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0-canary.1",
|
|
4
|
+
"license": "MIT",
|
|
4
5
|
"description": "A sdk for support module federation",
|
|
5
6
|
"keywords": [
|
|
6
7
|
"Module Federation",
|
|
@@ -13,5 +14,18 @@
|
|
|
13
14
|
"sideEffects": false,
|
|
14
15
|
"main": "./index.cjs.js",
|
|
15
16
|
"module": "./index.esm.js",
|
|
16
|
-
"types": "./index.cjs.d.ts"
|
|
17
|
+
"types": "./index.cjs.d.ts",
|
|
18
|
+
"exports": {
|
|
19
|
+
"./package.json": "./package.json",
|
|
20
|
+
".": {
|
|
21
|
+
"module": "./index.esm.js",
|
|
22
|
+
"import": "./index.cjs.mjs",
|
|
23
|
+
"default": "./index.cjs.js"
|
|
24
|
+
},
|
|
25
|
+
"./normalize-webpack-path": {
|
|
26
|
+
"module": "./normalize-webpack-path.esm.js",
|
|
27
|
+
"import": "./normalize-webpack-path.cjs.mjs",
|
|
28
|
+
"default": "./normalize-webpack-path.cjs.js"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
17
31
|
}
|
package/src/dom.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function safeWrapper<T extends (...args: Array<any>) => any>(callback: T, disableWarn?: boolean): Promise<ReturnType<T> | undefined>;
|
|
2
|
+
export declare function isStaticResourcesEqual(url1: string, url2: string): boolean;
|
|
3
|
+
export declare function createScript(url: string, cb: (value: void | PromiseLike<void>) => void, attrs?: Record<string, any>, createScriptHook?: (url: string) => HTMLScriptElement | void): {
|
|
4
|
+
script: HTMLScriptElement;
|
|
5
|
+
needAttach: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare function loadScript(url: string, info: {
|
|
8
|
+
attrs?: Record<string, any>;
|
|
9
|
+
createScriptHook?: (url: string) => HTMLScriptElement | void;
|
|
10
|
+
}): Promise<void>;
|
package/src/index.d.ts
CHANGED
package/src/types/snapshot.d.ts
CHANGED
|
@@ -27,6 +27,8 @@ export interface BasicProviderModuleInfo extends BasicModuleInfo {
|
|
|
27
27
|
modulePath?: string;
|
|
28
28
|
assets: StatsAssets;
|
|
29
29
|
}>;
|
|
30
|
+
prefetchEntry?: string;
|
|
31
|
+
prefetchEntryType?: RemoteEntryType;
|
|
30
32
|
}
|
|
31
33
|
interface BasicProviderModuleInfoWithPublicPath extends BasicProviderModuleInfo {
|
|
32
34
|
publicPath: string;
|
package/src/types/stats.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export interface BasicStatsMetaData {
|
|
|
14
14
|
globalName: string;
|
|
15
15
|
buildInfo: StatsBuildInfo;
|
|
16
16
|
remoteEntry: ResourceInfo;
|
|
17
|
+
prefetchEntry: ResourceInfo;
|
|
17
18
|
types: Omit<ResourceInfo, 'type'>;
|
|
18
19
|
}
|
|
19
20
|
type StatsMetaDataWithGetPublicPath<T = BasicStatsMetaData> = T & {
|
package/src/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RemoteEntryInfo } from './types';
|
|
1
|
+
import { RemoteEntryInfo, ModuleInfo } from './types';
|
|
2
2
|
import { Logger } from './logger';
|
|
3
3
|
declare const parseEntry: (str: string, devVerOrUrl?: string) => RemoteEntryInfo;
|
|
4
4
|
declare global {
|
|
@@ -10,4 +10,8 @@ declare const encodeName: (name: string, prefix?: string, withExt?: boolean) =>
|
|
|
10
10
|
declare const decodeName: (name: string, prefix?: string, withExt?: boolean) => string;
|
|
11
11
|
declare const generateExposeFilename: (exposeName: string, withExt: boolean) => string;
|
|
12
12
|
declare const generateShareFilename: (pkgName: string, withExt: boolean) => string;
|
|
13
|
-
|
|
13
|
+
declare const getResourceUrl: (module: ModuleInfo, sourceUrl: string) => string;
|
|
14
|
+
declare const assert: (condition: any, msg: string) => asserts condition;
|
|
15
|
+
declare const error: (msg: string | Error | unknown) => never;
|
|
16
|
+
declare const warn: (msg: Parameters<typeof console.warn>[0]) => void;
|
|
17
|
+
export { parseEntry, logger, decodeName, encodeName, composeKeyWithSeparator, generateExposeFilename, generateShareFilename, getResourceUrl, assert, error, warn, };
|