@module-federation/sdk 1.0.0-canary.3

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/index.cjs.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./src/index";
package/index.cjs.js ADDED
@@ -0,0 +1,504 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ function _define_property$2(obj, key, value) {
6
+ if (key in obj) {
7
+ Object.defineProperty(obj, key, {
8
+ value: value,
9
+ enumerable: true,
10
+ configurable: true,
11
+ writable: true
12
+ });
13
+ } else {
14
+ obj[key] = value;
15
+ }
16
+ return obj;
17
+ }
18
+ var FederationModuleManifest = "federation-manifest.json";
19
+ var MANIFEST_EXT = ".json";
20
+ var BROWSER_LOG_KEY = "FEDERATION_DEBUG";
21
+ var BROWSER_LOG_VALUE = "1";
22
+ var NameTransformSymbol = {
23
+ AT: "@",
24
+ HYPHEN: "-",
25
+ SLASH: "/"
26
+ };
27
+ var _obj;
28
+ var NameTransformMap = (_obj = {}, _define_property$2(_obj, NameTransformSymbol.AT, "scope_"), _define_property$2(_obj, NameTransformSymbol.HYPHEN, "_"), _define_property$2(_obj, NameTransformSymbol.SLASH, "__"), _obj);
29
+ var _obj1;
30
+ var EncodedNameTransformMap = (_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);
31
+ var SEPARATOR = ":";
32
+
33
+ function isBrowserEnv() {
34
+ return typeof window !== "undefined";
35
+ }
36
+ function isDebugMode() {
37
+ if (typeof process !== "undefined" && process.env && process.env["FEDERATION_DEBUG"]) {
38
+ return Boolean(process.env["FEDERATION_DEBUG"]);
39
+ }
40
+ return typeof FEDERATION_DEBUG !== "undefined" && Boolean(FEDERATION_DEBUG);
41
+ }
42
+ var getProcessEnv = function getProcessEnv() {
43
+ return typeof process !== "undefined" && process.env ? process.env : {};
44
+ };
45
+
46
+ function _array_like_to_array$1(arr, len) {
47
+ if (len == null || len > arr.length) len = arr.length;
48
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
49
+ return arr2;
50
+ }
51
+ function _array_without_holes(arr) {
52
+ if (Array.isArray(arr)) return _array_like_to_array$1(arr);
53
+ }
54
+ function _class_call_check(instance, Constructor) {
55
+ if (!(instance instanceof Constructor)) {
56
+ throw new TypeError("Cannot call a class as a function");
57
+ }
58
+ }
59
+ function _defineProperties(target, props) {
60
+ for(var i = 0; i < props.length; i++){
61
+ var descriptor = props[i];
62
+ descriptor.enumerable = descriptor.enumerable || false;
63
+ descriptor.configurable = true;
64
+ if ("value" in descriptor) descriptor.writable = true;
65
+ Object.defineProperty(target, descriptor.key, descriptor);
66
+ }
67
+ }
68
+ function _create_class(Constructor, protoProps, staticProps) {
69
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
70
+ if (staticProps) _defineProperties(Constructor, staticProps);
71
+ return Constructor;
72
+ }
73
+ function _define_property$1(obj, key, value) {
74
+ if (key in obj) {
75
+ Object.defineProperty(obj, key, {
76
+ value: value,
77
+ enumerable: true,
78
+ configurable: true,
79
+ writable: true
80
+ });
81
+ } else {
82
+ obj[key] = value;
83
+ }
84
+ return obj;
85
+ }
86
+ function _iterable_to_array$1(iter) {
87
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
88
+ }
89
+ function _non_iterable_spread() {
90
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
91
+ }
92
+ function _to_consumable_array(arr) {
93
+ return _array_without_holes(arr) || _iterable_to_array$1(arr) || _unsupported_iterable_to_array$1(arr) || _non_iterable_spread();
94
+ }
95
+ function _unsupported_iterable_to_array$1(o, minLen) {
96
+ if (!o) return;
97
+ if (typeof o === "string") return _array_like_to_array$1(o, minLen);
98
+ var n = Object.prototype.toString.call(o).slice(8, -1);
99
+ if (n === "Object" && o.constructor) n = o.constructor.name;
100
+ if (n === "Map" || n === "Set") return Array.from(n);
101
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$1(o, minLen);
102
+ }
103
+ function safeToString(info) {
104
+ try {
105
+ return JSON.stringify(info, null, 2);
106
+ } catch (e) {
107
+ return "";
108
+ }
109
+ }
110
+ var DEBUG_LOG = "[ FEDERATION DEBUG ]";
111
+ var Logger = /*#__PURE__*/ function() {
112
+ function Logger(identifier) {
113
+ _class_call_check(this, Logger);
114
+ _define_property$1(this, "enable", false);
115
+ _define_property$1(this, "identifier", void 0);
116
+ this.identifier = identifier || DEBUG_LOG;
117
+ if (isBrowserEnv() && localStorage.getItem(BROWSER_LOG_KEY) === BROWSER_LOG_VALUE) {
118
+ this.enable = true;
119
+ } else if (isDebugMode()) {
120
+ this.enable = true;
121
+ }
122
+ }
123
+ _create_class(Logger, [
124
+ {
125
+ key: "info",
126
+ value: function info(msg, info) {
127
+ if (this.enable) {
128
+ var argsToString = safeToString(info) || "";
129
+ if (isBrowserEnv()) {
130
+ console.info("%c ".concat(this.identifier, ": ").concat(msg, " ").concat(argsToString), "color:#3300CC");
131
+ } else {
132
+ console.info("\x1b[34m%s", "".concat(this.identifier, ": ").concat(msg, " ").concat(argsToString ? "\n".concat(argsToString) : ""));
133
+ }
134
+ }
135
+ }
136
+ },
137
+ {
138
+ key: "logOriginalInfo",
139
+ value: function logOriginalInfo() {
140
+ for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
141
+ args[_key] = arguments[_key];
142
+ }
143
+ if (this.enable) {
144
+ if (isBrowserEnv()) {
145
+ var _console;
146
+ console.info("%c ".concat(this.identifier, ": OriginalInfo"), "color:#3300CC");
147
+ (_console = console).log.apply(_console, _to_consumable_array(args));
148
+ } else {
149
+ var _console1;
150
+ console.info("%c ".concat(this.identifier, ": OriginalInfo"), "color:#3300CC");
151
+ (_console1 = console).log.apply(_console1, _to_consumable_array(args));
152
+ }
153
+ }
154
+ }
155
+ }
156
+ ]);
157
+ return Logger;
158
+ }();
159
+
160
+ function _array_like_to_array(arr, len) {
161
+ if (len == null || len > arr.length) len = arr.length;
162
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
163
+ return arr2;
164
+ }
165
+ function _array_with_holes(arr) {
166
+ if (Array.isArray(arr)) return arr;
167
+ }
168
+ function _iterable_to_array(iter) {
169
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
170
+ }
171
+ function _iterable_to_array_limit(arr, i) {
172
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
173
+ if (_i == null) return;
174
+ var _arr = [];
175
+ var _n = true;
176
+ var _d = false;
177
+ var _s, _e;
178
+ try {
179
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
180
+ _arr.push(_s.value);
181
+ if (i && _arr.length === i) break;
182
+ }
183
+ } catch (err) {
184
+ _d = true;
185
+ _e = err;
186
+ } finally{
187
+ try {
188
+ if (!_n && _i["return"] != null) _i["return"]();
189
+ } finally{
190
+ if (_d) throw _e;
191
+ }
192
+ }
193
+ return _arr;
194
+ }
195
+ function _non_iterable_rest() {
196
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
197
+ }
198
+ function _sliced_to_array(arr, i) {
199
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
200
+ }
201
+ function _to_array(arr) {
202
+ return _array_with_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_rest();
203
+ }
204
+ function _unsupported_iterable_to_array(o, minLen) {
205
+ if (!o) return;
206
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
207
+ var n = Object.prototype.toString.call(o).slice(8, -1);
208
+ if (n === "Object" && o.constructor) n = o.constructor.name;
209
+ if (n === "Map" || n === "Set") return Array.from(n);
210
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
211
+ }
212
+ // entry: name:version version : 1.0.0 | ^1.2.3
213
+ // entry: name:entry entry: https://localhost:9000/federation-manifest.json
214
+ var parseEntry = function(str, devVerOrUrl) {
215
+ var strSplit = str.split(SEPARATOR);
216
+ var devVersionOrUrl = getProcessEnv()["NODE_ENV"] === "development" && devVerOrUrl;
217
+ var defaultVersion = "*";
218
+ var isEntry = function(s) {
219
+ return s.startsWith("http") || s.endsWith(MANIFEST_EXT);
220
+ };
221
+ // startWith type
222
+ if (strSplit.length >= 2) {
223
+ var _strSplit = _to_array(strSplit), name = _strSplit[0], versionOrEntryArr = _strSplit.slice(1);
224
+ var versionOrEntry = devVersionOrUrl || versionOrEntryArr.join(SEPARATOR);
225
+ if (isEntry(versionOrEntry)) {
226
+ return {
227
+ name: name,
228
+ entry: versionOrEntry
229
+ };
230
+ } else {
231
+ // version rule
232
+ // devVersionOrUrl => inputVersion => defaultVersion
233
+ return {
234
+ name: name,
235
+ version: versionOrEntry || defaultVersion
236
+ };
237
+ }
238
+ } else if (strSplit.length === 1) {
239
+ var _strSplit1 = _sliced_to_array(strSplit, 1), name1 = _strSplit1[0];
240
+ if (devVersionOrUrl && isEntry(devVersionOrUrl)) {
241
+ return {
242
+ name: name1,
243
+ entry: devVersionOrUrl
244
+ };
245
+ }
246
+ return {
247
+ name: name1,
248
+ version: devVersionOrUrl || defaultVersion
249
+ };
250
+ } else {
251
+ throw "Invalid entry value: ".concat(str);
252
+ }
253
+ };
254
+ var logger = new Logger();
255
+ var composeKeyWithSeparator = function composeKeyWithSeparator() {
256
+ for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
257
+ args[_key] = arguments[_key];
258
+ }
259
+ if (!args.length) {
260
+ return "";
261
+ }
262
+ return args.reduce(function(sum, cur) {
263
+ if (!cur) {
264
+ return sum;
265
+ }
266
+ if (!sum) {
267
+ return cur;
268
+ }
269
+ return "".concat(sum).concat(SEPARATOR).concat(cur);
270
+ }, "");
271
+ };
272
+ var encodeName = function encodeName(name) {
273
+ var prefix = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "", withExt = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
274
+ try {
275
+ var ext = withExt ? ".js" : "";
276
+ return "".concat(prefix).concat(name.replace(new RegExp("".concat(NameTransformSymbol.AT), "g"), NameTransformMap[NameTransformSymbol.AT]).replace(new RegExp("".concat(NameTransformSymbol.HYPHEN), "g"), NameTransformMap[NameTransformSymbol.HYPHEN]).replace(new RegExp("".concat(NameTransformSymbol.SLASH), "g"), NameTransformMap[NameTransformSymbol.SLASH])).concat(ext);
277
+ } catch (err) {
278
+ throw err;
279
+ }
280
+ };
281
+ var decodeName = function decodeName(name, prefix, withExt) {
282
+ try {
283
+ var decodedName = name;
284
+ if (prefix) {
285
+ decodedName = decodedName.replace(new RegExp(prefix, "g"), "");
286
+ }
287
+ decodedName = decodedName.replace(new RegExp("".concat(NameTransformMap[NameTransformSymbol.AT]), "g"), EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(new RegExp("".concat(NameTransformMap[NameTransformSymbol.SLASH]), "g"), EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(new RegExp("".concat(NameTransformMap[NameTransformSymbol.HYPHEN]), "g"), EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]);
288
+ if (withExt) {
289
+ decodedName = decodedName.replace(".js", "");
290
+ }
291
+ return decodedName;
292
+ } catch (err) {
293
+ throw err;
294
+ }
295
+ };
296
+ var generateExposeFilename = function(exposeName, withExt) {
297
+ if (!exposeName) {
298
+ return "";
299
+ }
300
+ var expose = exposeName;
301
+ if (expose === ".") {
302
+ expose = "defautl_export";
303
+ }
304
+ if (expose.startsWith("./")) {
305
+ expose = expose.replace("./", "");
306
+ }
307
+ return encodeName(expose, "__federation_expose_", withExt);
308
+ };
309
+ var generateShareFilename = function(pkgName, withExt) {
310
+ if (!pkgName) {
311
+ return "";
312
+ }
313
+ return encodeName(pkgName, "__federation_shared_", withExt);
314
+ };
315
+
316
+ function _define_property(obj, key, value) {
317
+ if (key in obj) {
318
+ Object.defineProperty(obj, key, {
319
+ value: value,
320
+ enumerable: true,
321
+ configurable: true,
322
+ writable: true
323
+ });
324
+ } else {
325
+ obj[key] = value;
326
+ }
327
+ return obj;
328
+ }
329
+ function _object_spread(target) {
330
+ for(var i = 1; i < arguments.length; i++){
331
+ var source = arguments[i] != null ? arguments[i] : {};
332
+ var ownKeys = Object.keys(source);
333
+ if (typeof Object.getOwnPropertySymbols === "function") {
334
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
335
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
336
+ }));
337
+ }
338
+ ownKeys.forEach(function(key) {
339
+ _define_property(target, key, source[key]);
340
+ });
341
+ }
342
+ return target;
343
+ }
344
+ function ownKeys(object, enumerableOnly) {
345
+ var keys = Object.keys(object);
346
+ if (Object.getOwnPropertySymbols) {
347
+ var symbols = Object.getOwnPropertySymbols(object);
348
+ if (enumerableOnly) {
349
+ symbols = symbols.filter(function(sym) {
350
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
351
+ });
352
+ }
353
+ keys.push.apply(keys, symbols);
354
+ }
355
+ return keys;
356
+ }
357
+ function _object_spread_props(target, source) {
358
+ source = source != null ? source : {};
359
+ if (Object.getOwnPropertyDescriptors) {
360
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
361
+ } else {
362
+ ownKeys(Object(source)).forEach(function(key) {
363
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
364
+ });
365
+ }
366
+ return target;
367
+ }
368
+ var simpleJoinRemoteEntry = function(rPath, rName) {
369
+ if (!rPath) {
370
+ return rName;
371
+ }
372
+ var transformPath = function(str) {
373
+ if (str === ".") {
374
+ return "";
375
+ }
376
+ if (str.startsWith("./")) {
377
+ return str.replace("./", "");
378
+ }
379
+ if (str.startsWith("/")) {
380
+ var strWithoutSlash = str.slice(1);
381
+ if (strWithoutSlash.endsWith("/")) {
382
+ return strWithoutSlash.slice(0, -1);
383
+ }
384
+ return strWithoutSlash;
385
+ }
386
+ return str;
387
+ };
388
+ var transformedPath = transformPath(rPath);
389
+ if (!transformedPath) {
390
+ return rName;
391
+ }
392
+ if (transformedPath.endsWith("/")) {
393
+ return "".concat(transformedPath).concat(rName);
394
+ }
395
+ return "".concat(transformedPath, "/").concat(rName);
396
+ };
397
+ // 优先级:overrides > remotes
398
+ // eslint-disable-next-line max-lines-per-function
399
+ function generateSnapshotFromManifest(manifest) {
400
+ var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
401
+ 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
+ var remoteSnapshot;
403
+ var getPublicPath = function() {
404
+ if ("publicPath" in manifest.metaData) {
405
+ return manifest.metaData.publicPath;
406
+ } else {
407
+ return manifest.metaData.getPublicPath;
408
+ }
409
+ };
410
+ var overridesKeys = Object.keys(overrides);
411
+ var remotesInfo = {};
412
+ // If remotes are not passed, only the remotes in the manifest will be read
413
+ if (!Object.keys(remotes).length) {
414
+ var _manifest_remotes;
415
+ remotesInfo = ((_manifest_remotes = manifest.remotes) === null || _manifest_remotes === void 0 ? void 0 : _manifest_remotes.reduce(function(res, next) {
416
+ var matchedVersion;
417
+ var name = next.federationContainerName;
418
+ // overrides has hight priority
419
+ if (overridesKeys.includes(name)) {
420
+ matchedVersion = overrides[name];
421
+ } else {
422
+ if ("version" in next) {
423
+ matchedVersion = next.version;
424
+ } else {
425
+ matchedVersion = next.entry;
426
+ }
427
+ }
428
+ res[name] = {
429
+ matchedVersion: matchedVersion
430
+ };
431
+ return res;
432
+ }, {})) || {};
433
+ }
434
+ // If remotes (deploy scenario) are specified, you need to traverse it again
435
+ Object.keys(remotes).forEach(function(key) {
436
+ return remotesInfo[key] = {
437
+ // overrides will override dependencies
438
+ matchedVersion: overridesKeys.includes(key) ? overrides[key] : remotes[key]
439
+ };
440
+ });
441
+ 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;
442
+ var exposes = manifest.exposes;
443
+ var basicRemoteSnapshot = {
444
+ version: version ? version : "",
445
+ buildVersion: buildVersion,
446
+ globalName: globalName,
447
+ remoteEntry: simpleJoinRemoteEntry(remoteEntryPath, remoteEntryName),
448
+ remoteEntryType: remoteEntryType,
449
+ remoteTypes: simpleJoinRemoteEntry(remoteTypes.path, remoteTypes.name),
450
+ remotesInfo: remotesInfo,
451
+ shared: manifest === null || manifest === void 0 ? void 0 : manifest.shared.map(function(item) {
452
+ return {
453
+ assets: item.assets,
454
+ sharedName: item.name
455
+ };
456
+ }),
457
+ modules: exposes === null || exposes === void 0 ? void 0 : exposes.map(function(expose) {
458
+ return {
459
+ moduleName: expose.name,
460
+ modulePath: expose.path,
461
+ assets: expose.assets
462
+ };
463
+ })
464
+ };
465
+ if ("publicPath" in manifest.metaData) {
466
+ remoteSnapshot = _object_spread_props(_object_spread({}, basicRemoteSnapshot), {
467
+ publicPath: getPublicPath()
468
+ });
469
+ } else {
470
+ remoteSnapshot = _object_spread_props(_object_spread({}, basicRemoteSnapshot), {
471
+ getPublicPath: getPublicPath()
472
+ });
473
+ }
474
+ return remoteSnapshot;
475
+ }
476
+ function isManifestProvider(moduleInfo) {
477
+ if ("remoteEntry" in moduleInfo && moduleInfo.remoteEntry.endsWith(MANIFEST_EXT)) {
478
+ return true;
479
+ } else {
480
+ return false;
481
+ }
482
+ }
483
+
484
+ exports.BROWSER_LOG_KEY = BROWSER_LOG_KEY;
485
+ exports.BROWSER_LOG_VALUE = BROWSER_LOG_VALUE;
486
+ exports.EncodedNameTransformMap = EncodedNameTransformMap;
487
+ exports.FederationModuleManifest = FederationModuleManifest;
488
+ exports.Logger = Logger;
489
+ exports.MANIFEST_EXT = MANIFEST_EXT;
490
+ exports.NameTransformMap = NameTransformMap;
491
+ exports.NameTransformSymbol = NameTransformSymbol;
492
+ exports.SEPARATOR = SEPARATOR;
493
+ exports.composeKeyWithSeparator = composeKeyWithSeparator;
494
+ exports.decodeName = decodeName;
495
+ exports.encodeName = encodeName;
496
+ exports.generateExposeFilename = generateExposeFilename;
497
+ exports.generateShareFilename = generateShareFilename;
498
+ exports.generateSnapshotFromManifest = generateSnapshotFromManifest;
499
+ exports.getProcessEnv = getProcessEnv;
500
+ exports.isBrowserEnv = isBrowserEnv;
501
+ exports.isDebugMode = isDebugMode;
502
+ exports.isManifestProvider = isManifestProvider;
503
+ exports.logger = logger;
504
+ exports.parseEntry = parseEntry;
package/index.esm.js ADDED
@@ -0,0 +1,480 @@
1
+ function _define_property$2(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ var FederationModuleManifest = "federation-manifest.json";
15
+ var MANIFEST_EXT = ".json";
16
+ var BROWSER_LOG_KEY = "FEDERATION_DEBUG";
17
+ var BROWSER_LOG_VALUE = "1";
18
+ var NameTransformSymbol = {
19
+ AT: "@",
20
+ HYPHEN: "-",
21
+ SLASH: "/"
22
+ };
23
+ var _obj;
24
+ var NameTransformMap = (_obj = {}, _define_property$2(_obj, NameTransformSymbol.AT, "scope_"), _define_property$2(_obj, NameTransformSymbol.HYPHEN, "_"), _define_property$2(_obj, NameTransformSymbol.SLASH, "__"), _obj);
25
+ var _obj1;
26
+ var EncodedNameTransformMap = (_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);
27
+ var SEPARATOR = ":";
28
+
29
+ function isBrowserEnv() {
30
+ return typeof window !== "undefined";
31
+ }
32
+ function isDebugMode() {
33
+ if (typeof process !== "undefined" && process.env && process.env["FEDERATION_DEBUG"]) {
34
+ return Boolean(process.env["FEDERATION_DEBUG"]);
35
+ }
36
+ return typeof FEDERATION_DEBUG !== "undefined" && Boolean(FEDERATION_DEBUG);
37
+ }
38
+ var getProcessEnv = function getProcessEnv() {
39
+ return typeof process !== "undefined" && process.env ? process.env : {};
40
+ };
41
+
42
+ function _array_like_to_array$1(arr, len) {
43
+ if (len == null || len > arr.length) len = arr.length;
44
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
45
+ return arr2;
46
+ }
47
+ function _array_without_holes(arr) {
48
+ if (Array.isArray(arr)) return _array_like_to_array$1(arr);
49
+ }
50
+ function _class_call_check(instance, Constructor) {
51
+ if (!(instance instanceof Constructor)) {
52
+ throw new TypeError("Cannot call a class as a function");
53
+ }
54
+ }
55
+ function _defineProperties(target, props) {
56
+ for(var i = 0; i < props.length; i++){
57
+ var descriptor = props[i];
58
+ descriptor.enumerable = descriptor.enumerable || false;
59
+ descriptor.configurable = true;
60
+ if ("value" in descriptor) descriptor.writable = true;
61
+ Object.defineProperty(target, descriptor.key, descriptor);
62
+ }
63
+ }
64
+ function _create_class(Constructor, protoProps, staticProps) {
65
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
66
+ if (staticProps) _defineProperties(Constructor, staticProps);
67
+ return Constructor;
68
+ }
69
+ function _define_property$1(obj, key, value) {
70
+ if (key in obj) {
71
+ Object.defineProperty(obj, key, {
72
+ value: value,
73
+ enumerable: true,
74
+ configurable: true,
75
+ writable: true
76
+ });
77
+ } else {
78
+ obj[key] = value;
79
+ }
80
+ return obj;
81
+ }
82
+ function _iterable_to_array$1(iter) {
83
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
84
+ }
85
+ function _non_iterable_spread() {
86
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
87
+ }
88
+ function _to_consumable_array(arr) {
89
+ return _array_without_holes(arr) || _iterable_to_array$1(arr) || _unsupported_iterable_to_array$1(arr) || _non_iterable_spread();
90
+ }
91
+ function _unsupported_iterable_to_array$1(o, minLen) {
92
+ if (!o) return;
93
+ if (typeof o === "string") return _array_like_to_array$1(o, minLen);
94
+ var n = Object.prototype.toString.call(o).slice(8, -1);
95
+ if (n === "Object" && o.constructor) n = o.constructor.name;
96
+ if (n === "Map" || n === "Set") return Array.from(n);
97
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$1(o, minLen);
98
+ }
99
+ function safeToString(info) {
100
+ try {
101
+ return JSON.stringify(info, null, 2);
102
+ } catch (e) {
103
+ return "";
104
+ }
105
+ }
106
+ var DEBUG_LOG = "[ FEDERATION DEBUG ]";
107
+ var Logger = /*#__PURE__*/ function() {
108
+ function Logger(identifier) {
109
+ _class_call_check(this, Logger);
110
+ _define_property$1(this, "enable", false);
111
+ _define_property$1(this, "identifier", void 0);
112
+ this.identifier = identifier || DEBUG_LOG;
113
+ if (isBrowserEnv() && localStorage.getItem(BROWSER_LOG_KEY) === BROWSER_LOG_VALUE) {
114
+ this.enable = true;
115
+ } else if (isDebugMode()) {
116
+ this.enable = true;
117
+ }
118
+ }
119
+ _create_class(Logger, [
120
+ {
121
+ key: "info",
122
+ value: function info(msg, info) {
123
+ if (this.enable) {
124
+ var argsToString = safeToString(info) || "";
125
+ if (isBrowserEnv()) {
126
+ console.info("%c ".concat(this.identifier, ": ").concat(msg, " ").concat(argsToString), "color:#3300CC");
127
+ } else {
128
+ console.info("\x1b[34m%s", "".concat(this.identifier, ": ").concat(msg, " ").concat(argsToString ? "\n".concat(argsToString) : ""));
129
+ }
130
+ }
131
+ }
132
+ },
133
+ {
134
+ key: "logOriginalInfo",
135
+ value: function logOriginalInfo() {
136
+ for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
137
+ args[_key] = arguments[_key];
138
+ }
139
+ if (this.enable) {
140
+ if (isBrowserEnv()) {
141
+ var _console;
142
+ console.info("%c ".concat(this.identifier, ": OriginalInfo"), "color:#3300CC");
143
+ (_console = console).log.apply(_console, _to_consumable_array(args));
144
+ } else {
145
+ var _console1;
146
+ console.info("%c ".concat(this.identifier, ": OriginalInfo"), "color:#3300CC");
147
+ (_console1 = console).log.apply(_console1, _to_consumable_array(args));
148
+ }
149
+ }
150
+ }
151
+ }
152
+ ]);
153
+ return Logger;
154
+ }();
155
+
156
+ function _array_like_to_array(arr, len) {
157
+ if (len == null || len > arr.length) len = arr.length;
158
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
159
+ return arr2;
160
+ }
161
+ function _array_with_holes(arr) {
162
+ if (Array.isArray(arr)) return arr;
163
+ }
164
+ function _iterable_to_array(iter) {
165
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
166
+ }
167
+ function _iterable_to_array_limit(arr, i) {
168
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
169
+ if (_i == null) return;
170
+ var _arr = [];
171
+ var _n = true;
172
+ var _d = false;
173
+ var _s, _e;
174
+ try {
175
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
176
+ _arr.push(_s.value);
177
+ if (i && _arr.length === i) break;
178
+ }
179
+ } catch (err) {
180
+ _d = true;
181
+ _e = err;
182
+ } finally{
183
+ try {
184
+ if (!_n && _i["return"] != null) _i["return"]();
185
+ } finally{
186
+ if (_d) throw _e;
187
+ }
188
+ }
189
+ return _arr;
190
+ }
191
+ function _non_iterable_rest() {
192
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
193
+ }
194
+ function _sliced_to_array(arr, i) {
195
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
196
+ }
197
+ function _to_array(arr) {
198
+ return _array_with_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_rest();
199
+ }
200
+ function _unsupported_iterable_to_array(o, minLen) {
201
+ if (!o) return;
202
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
203
+ var n = Object.prototype.toString.call(o).slice(8, -1);
204
+ if (n === "Object" && o.constructor) n = o.constructor.name;
205
+ if (n === "Map" || n === "Set") return Array.from(n);
206
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
207
+ }
208
+ // entry: name:version version : 1.0.0 | ^1.2.3
209
+ // entry: name:entry entry: https://localhost:9000/federation-manifest.json
210
+ var parseEntry = function(str, devVerOrUrl) {
211
+ var strSplit = str.split(SEPARATOR);
212
+ var devVersionOrUrl = getProcessEnv()["NODE_ENV"] === "development" && devVerOrUrl;
213
+ var defaultVersion = "*";
214
+ var isEntry = function(s) {
215
+ return s.startsWith("http") || s.endsWith(MANIFEST_EXT);
216
+ };
217
+ // startWith type
218
+ if (strSplit.length >= 2) {
219
+ var _strSplit = _to_array(strSplit), name = _strSplit[0], versionOrEntryArr = _strSplit.slice(1);
220
+ var versionOrEntry = devVersionOrUrl || versionOrEntryArr.join(SEPARATOR);
221
+ if (isEntry(versionOrEntry)) {
222
+ return {
223
+ name: name,
224
+ entry: versionOrEntry
225
+ };
226
+ } else {
227
+ // version rule
228
+ // devVersionOrUrl => inputVersion => defaultVersion
229
+ return {
230
+ name: name,
231
+ version: versionOrEntry || defaultVersion
232
+ };
233
+ }
234
+ } else if (strSplit.length === 1) {
235
+ var _strSplit1 = _sliced_to_array(strSplit, 1), name1 = _strSplit1[0];
236
+ if (devVersionOrUrl && isEntry(devVersionOrUrl)) {
237
+ return {
238
+ name: name1,
239
+ entry: devVersionOrUrl
240
+ };
241
+ }
242
+ return {
243
+ name: name1,
244
+ version: devVersionOrUrl || defaultVersion
245
+ };
246
+ } else {
247
+ throw "Invalid entry value: ".concat(str);
248
+ }
249
+ };
250
+ var logger = new Logger();
251
+ var composeKeyWithSeparator = function composeKeyWithSeparator() {
252
+ for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
253
+ args[_key] = arguments[_key];
254
+ }
255
+ if (!args.length) {
256
+ return "";
257
+ }
258
+ return args.reduce(function(sum, cur) {
259
+ if (!cur) {
260
+ return sum;
261
+ }
262
+ if (!sum) {
263
+ return cur;
264
+ }
265
+ return "".concat(sum).concat(SEPARATOR).concat(cur);
266
+ }, "");
267
+ };
268
+ var encodeName = function encodeName(name) {
269
+ var prefix = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "", withExt = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
270
+ try {
271
+ var ext = withExt ? ".js" : "";
272
+ return "".concat(prefix).concat(name.replace(new RegExp("".concat(NameTransformSymbol.AT), "g"), NameTransformMap[NameTransformSymbol.AT]).replace(new RegExp("".concat(NameTransformSymbol.HYPHEN), "g"), NameTransformMap[NameTransformSymbol.HYPHEN]).replace(new RegExp("".concat(NameTransformSymbol.SLASH), "g"), NameTransformMap[NameTransformSymbol.SLASH])).concat(ext);
273
+ } catch (err) {
274
+ throw err;
275
+ }
276
+ };
277
+ var decodeName = function decodeName(name, prefix, withExt) {
278
+ try {
279
+ var decodedName = name;
280
+ if (prefix) {
281
+ decodedName = decodedName.replace(new RegExp(prefix, "g"), "");
282
+ }
283
+ decodedName = decodedName.replace(new RegExp("".concat(NameTransformMap[NameTransformSymbol.AT]), "g"), EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(new RegExp("".concat(NameTransformMap[NameTransformSymbol.SLASH]), "g"), EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(new RegExp("".concat(NameTransformMap[NameTransformSymbol.HYPHEN]), "g"), EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]);
284
+ if (withExt) {
285
+ decodedName = decodedName.replace(".js", "");
286
+ }
287
+ return decodedName;
288
+ } catch (err) {
289
+ throw err;
290
+ }
291
+ };
292
+ var generateExposeFilename = function(exposeName, withExt) {
293
+ if (!exposeName) {
294
+ return "";
295
+ }
296
+ var expose = exposeName;
297
+ if (expose === ".") {
298
+ expose = "defautl_export";
299
+ }
300
+ if (expose.startsWith("./")) {
301
+ expose = expose.replace("./", "");
302
+ }
303
+ return encodeName(expose, "__federation_expose_", withExt);
304
+ };
305
+ var generateShareFilename = function(pkgName, withExt) {
306
+ if (!pkgName) {
307
+ return "";
308
+ }
309
+ return encodeName(pkgName, "__federation_shared_", withExt);
310
+ };
311
+
312
+ function _define_property(obj, key, value) {
313
+ if (key in obj) {
314
+ Object.defineProperty(obj, key, {
315
+ value: value,
316
+ enumerable: true,
317
+ configurable: true,
318
+ writable: true
319
+ });
320
+ } else {
321
+ obj[key] = value;
322
+ }
323
+ return obj;
324
+ }
325
+ function _object_spread(target) {
326
+ for(var i = 1; i < arguments.length; i++){
327
+ var source = arguments[i] != null ? arguments[i] : {};
328
+ var ownKeys = Object.keys(source);
329
+ if (typeof Object.getOwnPropertySymbols === "function") {
330
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
331
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
332
+ }));
333
+ }
334
+ ownKeys.forEach(function(key) {
335
+ _define_property(target, key, source[key]);
336
+ });
337
+ }
338
+ return target;
339
+ }
340
+ function ownKeys(object, enumerableOnly) {
341
+ var keys = Object.keys(object);
342
+ if (Object.getOwnPropertySymbols) {
343
+ var symbols = Object.getOwnPropertySymbols(object);
344
+ if (enumerableOnly) {
345
+ symbols = symbols.filter(function(sym) {
346
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
347
+ });
348
+ }
349
+ keys.push.apply(keys, symbols);
350
+ }
351
+ return keys;
352
+ }
353
+ function _object_spread_props(target, source) {
354
+ source = source != null ? source : {};
355
+ if (Object.getOwnPropertyDescriptors) {
356
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
357
+ } else {
358
+ ownKeys(Object(source)).forEach(function(key) {
359
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
360
+ });
361
+ }
362
+ return target;
363
+ }
364
+ var simpleJoinRemoteEntry = function(rPath, rName) {
365
+ if (!rPath) {
366
+ return rName;
367
+ }
368
+ var transformPath = function(str) {
369
+ if (str === ".") {
370
+ return "";
371
+ }
372
+ if (str.startsWith("./")) {
373
+ return str.replace("./", "");
374
+ }
375
+ if (str.startsWith("/")) {
376
+ var strWithoutSlash = str.slice(1);
377
+ if (strWithoutSlash.endsWith("/")) {
378
+ return strWithoutSlash.slice(0, -1);
379
+ }
380
+ return strWithoutSlash;
381
+ }
382
+ return str;
383
+ };
384
+ var transformedPath = transformPath(rPath);
385
+ if (!transformedPath) {
386
+ return rName;
387
+ }
388
+ if (transformedPath.endsWith("/")) {
389
+ return "".concat(transformedPath).concat(rName);
390
+ }
391
+ return "".concat(transformedPath, "/").concat(rName);
392
+ };
393
+ // 优先级:overrides > remotes
394
+ // eslint-disable-next-line max-lines-per-function
395
+ function generateSnapshotFromManifest(manifest) {
396
+ var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
397
+ 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
+ var remoteSnapshot;
399
+ var getPublicPath = function() {
400
+ if ("publicPath" in manifest.metaData) {
401
+ return manifest.metaData.publicPath;
402
+ } else {
403
+ return manifest.metaData.getPublicPath;
404
+ }
405
+ };
406
+ var overridesKeys = Object.keys(overrides);
407
+ var remotesInfo = {};
408
+ // If remotes are not passed, only the remotes in the manifest will be read
409
+ if (!Object.keys(remotes).length) {
410
+ var _manifest_remotes;
411
+ remotesInfo = ((_manifest_remotes = manifest.remotes) === null || _manifest_remotes === void 0 ? void 0 : _manifest_remotes.reduce(function(res, next) {
412
+ var matchedVersion;
413
+ var name = next.federationContainerName;
414
+ // overrides has hight priority
415
+ if (overridesKeys.includes(name)) {
416
+ matchedVersion = overrides[name];
417
+ } else {
418
+ if ("version" in next) {
419
+ matchedVersion = next.version;
420
+ } else {
421
+ matchedVersion = next.entry;
422
+ }
423
+ }
424
+ res[name] = {
425
+ matchedVersion: matchedVersion
426
+ };
427
+ return res;
428
+ }, {})) || {};
429
+ }
430
+ // If remotes (deploy scenario) are specified, you need to traverse it again
431
+ Object.keys(remotes).forEach(function(key) {
432
+ return remotesInfo[key] = {
433
+ // overrides will override dependencies
434
+ matchedVersion: overridesKeys.includes(key) ? overrides[key] : remotes[key]
435
+ };
436
+ });
437
+ 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;
438
+ var exposes = manifest.exposes;
439
+ var basicRemoteSnapshot = {
440
+ version: version ? version : "",
441
+ buildVersion: buildVersion,
442
+ globalName: globalName,
443
+ remoteEntry: simpleJoinRemoteEntry(remoteEntryPath, remoteEntryName),
444
+ remoteEntryType: remoteEntryType,
445
+ remoteTypes: simpleJoinRemoteEntry(remoteTypes.path, remoteTypes.name),
446
+ remotesInfo: remotesInfo,
447
+ shared: manifest === null || manifest === void 0 ? void 0 : manifest.shared.map(function(item) {
448
+ return {
449
+ assets: item.assets,
450
+ sharedName: item.name
451
+ };
452
+ }),
453
+ modules: exposes === null || exposes === void 0 ? void 0 : exposes.map(function(expose) {
454
+ return {
455
+ moduleName: expose.name,
456
+ modulePath: expose.path,
457
+ assets: expose.assets
458
+ };
459
+ })
460
+ };
461
+ if ("publicPath" in manifest.metaData) {
462
+ remoteSnapshot = _object_spread_props(_object_spread({}, basicRemoteSnapshot), {
463
+ publicPath: getPublicPath()
464
+ });
465
+ } else {
466
+ remoteSnapshot = _object_spread_props(_object_spread({}, basicRemoteSnapshot), {
467
+ getPublicPath: getPublicPath()
468
+ });
469
+ }
470
+ return remoteSnapshot;
471
+ }
472
+ function isManifestProvider(moduleInfo) {
473
+ if ("remoteEntry" in moduleInfo && moduleInfo.remoteEntry.endsWith(MANIFEST_EXT)) {
474
+ return true;
475
+ } else {
476
+ return false;
477
+ }
478
+ }
479
+
480
+ export { BROWSER_LOG_KEY, BROWSER_LOG_VALUE, EncodedNameTransformMap, FederationModuleManifest, Logger, MANIFEST_EXT, NameTransformMap, NameTransformSymbol, SEPARATOR, composeKeyWithSeparator, decodeName, encodeName, generateExposeFilename, generateShareFilename, generateSnapshotFromManifest, getProcessEnv, isBrowserEnv, isDebugMode, isManifestProvider, logger, parseEntry };
package/package.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@module-federation/sdk",
3
+ "version": "1.0.0-canary.3",
4
+ "description": "A sdk for support module federation",
5
+ "keywords": [
6
+ "Module Federation",
7
+ "sdk"
8
+ ],
9
+ "publishConfig": {
10
+ "access": "public"
11
+ },
12
+ "author": "zhanghang <hanric.zhang@gmail.com>",
13
+ "sideEffects": false,
14
+ "main": "./index.cjs.js",
15
+ "module": "./index.esm.js",
16
+ "types": "./index.cjs.d.ts"
17
+ }
@@ -0,0 +1,16 @@
1
+ export declare const FederationModuleManifest = "federation-manifest.json";
2
+ export declare const MANIFEST_EXT = ".json";
3
+ export declare const BROWSER_LOG_KEY = "FEDERATION_DEBUG";
4
+ export declare const BROWSER_LOG_VALUE = "1";
5
+ export declare const NameTransformSymbol: {
6
+ AT: string;
7
+ HYPHEN: string;
8
+ SLASH: string;
9
+ };
10
+ export declare const NameTransformMap: {
11
+ [x: string]: string;
12
+ };
13
+ export declare const EncodedNameTransformMap: {
14
+ [x: string]: string;
15
+ };
16
+ export declare const SEPARATOR = ":";
package/src/env.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ declare global {
2
+ var FEDERATION_DEBUG: string | undefined;
3
+ }
4
+ declare function isBrowserEnv(): boolean;
5
+ declare function isDebugMode(): boolean;
6
+ declare const getProcessEnv: () => Record<string, string | undefined>;
7
+ export { isBrowserEnv, isDebugMode, getProcessEnv };
@@ -0,0 +1,10 @@
1
+ import { Manifest, ProviderModuleInfo, ModuleInfo, ManifestProvider } from './types';
2
+ interface IOptions {
3
+ remotes?: Record<string, string>;
4
+ overrides?: Record<string, string>;
5
+ version?: string;
6
+ }
7
+ export declare const simpleJoinRemoteEntry: (rPath: string, rName: string) => string;
8
+ export declare function generateSnapshotFromManifest(manifest: Manifest, options?: IOptions): ProviderModuleInfo;
9
+ export declare function isManifestProvider(moduleInfo: ModuleInfo | ManifestProvider): moduleInfo is ManifestProvider;
10
+ export {};
package/src/index.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export * from './constant';
2
+ export * from './types';
3
+ export * from './utils';
4
+ export { generateSnapshotFromManifest, isManifestProvider, } from './generateSnapshotFromManifest';
5
+ export * from './logger';
6
+ export * from './env';
@@ -0,0 +1,8 @@
1
+ declare class Logger {
2
+ enable: boolean;
3
+ identifier: string;
4
+ constructor(identifier?: string);
5
+ info(msg: string, info?: any): void;
6
+ logOriginalInfo(...args: unknown[]): void;
7
+ }
8
+ export { Logger };
@@ -0,0 +1,10 @@
1
+ export interface RemoteWithEntry {
2
+ name: string;
3
+ entry: string;
4
+ }
5
+ export interface RemoteWithVersion {
6
+ name: string;
7
+ version: string;
8
+ }
9
+ export type RemoteEntryInfo = RemoteWithEntry | RemoteWithVersion;
10
+ export type Module = any;
@@ -0,0 +1,4 @@
1
+ export * from './common';
2
+ export * from './manifest';
3
+ export * from './stats';
4
+ export * from './snapshot';
@@ -0,0 +1,26 @@
1
+ import { StatsMetaData, StatsAssets, StatsExpose, BasicStatsMetaData } from './stats';
2
+ import { RemoteWithEntry, RemoteWithVersion } from './common';
3
+ export interface ManifestShared {
4
+ id: string;
5
+ name: string;
6
+ version: string;
7
+ singleton: boolean;
8
+ requiredVersion: string;
9
+ hash: string;
10
+ assets: StatsAssets;
11
+ }
12
+ export interface ManifestRemoteCommonInfo {
13
+ federationContainerName: string;
14
+ moduleName: string;
15
+ alias: string;
16
+ }
17
+ export type ManifestRemote<T = ManifestRemoteCommonInfo> = (Omit<RemoteWithEntry, 'name'> & T) | (Omit<RemoteWithVersion, 'name'> & T);
18
+ export type ManifestExpose = Pick<StatsExpose, 'assets' | 'id' | 'name' | 'path'>;
19
+ export interface Manifest<T = BasicStatsMetaData, K = ManifestRemoteCommonInfo> {
20
+ id: string;
21
+ name: string;
22
+ metaData: StatsMetaData<T>;
23
+ shared: ManifestShared[];
24
+ remotes: ManifestRemote<K>[];
25
+ exposes: ManifestExpose[];
26
+ }
@@ -0,0 +1,60 @@
1
+ import { RemoteEntryType, StatsAssets } from './stats';
2
+ interface BasicModuleInfo {
3
+ dev?: {
4
+ version?: string;
5
+ remotes?: {
6
+ [nameWithType: string]: string;
7
+ };
8
+ };
9
+ version: string;
10
+ buildVersion: string;
11
+ remoteTypes: string;
12
+ remotesInfo: Record<string, {
13
+ matchedVersion: string;
14
+ }>;
15
+ shared: Array<{
16
+ sharedName: string;
17
+ assets: StatsAssets;
18
+ }>;
19
+ }
20
+ export interface BasicProviderModuleInfo extends BasicModuleInfo {
21
+ remoteEntry: string;
22
+ remoteEntryType: RemoteEntryType;
23
+ remoteManifest?: string;
24
+ globalName: string;
25
+ modules: Array<{
26
+ moduleName: string;
27
+ modulePath?: string;
28
+ assets: StatsAssets;
29
+ }>;
30
+ }
31
+ interface BasicProviderModuleInfoWithPublicPath extends BasicProviderModuleInfo {
32
+ publicPath: string;
33
+ }
34
+ interface BasicProviderModuleInfoWithGetPublicPath extends BasicProviderModuleInfo {
35
+ getPublicPath: string;
36
+ }
37
+ export interface ManifestProvider {
38
+ remoteEntry: string;
39
+ version?: string;
40
+ }
41
+ export interface PureEntryProvider extends ManifestProvider {
42
+ globalName: string;
43
+ }
44
+ interface BasicConsumerModuleInfo extends BasicModuleInfo {
45
+ consumerList: Array<string>;
46
+ }
47
+ export interface ConsumerModuleInfoWithPublicPath extends BasicConsumerModuleInfo, BasicProviderModuleInfo {
48
+ publicPath: string;
49
+ }
50
+ interface ConsumerModuleInfoWithGetPublicPath extends BasicConsumerModuleInfo, BasicProviderModuleInfo {
51
+ getPublicPath: string;
52
+ }
53
+ export type PureConsumerModuleInfo = Omit<BasicConsumerModuleInfo, 'remoteTypes'>;
54
+ export type ConsumerModuleInfo = ConsumerModuleInfoWithPublicPath | ConsumerModuleInfoWithGetPublicPath;
55
+ export type ProviderModuleInfo = BasicProviderModuleInfoWithPublicPath | BasicProviderModuleInfoWithGetPublicPath;
56
+ export type ModuleInfo = ConsumerModuleInfo | PureConsumerModuleInfo | ProviderModuleInfo;
57
+ export type GlobalModuleInfo = {
58
+ [key: string]: ModuleInfo | ManifestProvider | PureEntryProvider | undefined;
59
+ };
60
+ export {};
@@ -0,0 +1,78 @@
1
+ import type { RemoteWithEntry, RemoteWithVersion } from './common';
2
+ export type RemoteEntryType = 'esm' | 'global';
3
+ interface ResourceInfo {
4
+ path: string;
5
+ name: string;
6
+ type: RemoteEntryType;
7
+ }
8
+ export interface StatsBuildInfo {
9
+ buildVersion: string;
10
+ buildName: string;
11
+ }
12
+ export interface BasicStatsMetaData {
13
+ name: string;
14
+ globalName: string;
15
+ buildInfo: StatsBuildInfo;
16
+ remoteEntry: ResourceInfo;
17
+ types: Omit<ResourceInfo, 'type'>;
18
+ }
19
+ type StatsMetaDataWithGetPublicPath<T = BasicStatsMetaData> = T & {
20
+ getPublicPath: string;
21
+ };
22
+ type StatsMetaDataWithPublicPath<T = BasicStatsMetaData> = T & {
23
+ publicPath: string;
24
+ };
25
+ export type StatsMetaData<T = BasicStatsMetaData> = StatsMetaDataWithGetPublicPath<T> | StatsMetaDataWithPublicPath<T>;
26
+ export interface StatsAssets {
27
+ js: StatsAssetsInfo;
28
+ css: StatsAssetsInfo;
29
+ }
30
+ interface StatsAssetsInfo {
31
+ sync: string[];
32
+ async: string[];
33
+ }
34
+ export interface StatsShared {
35
+ id: string;
36
+ name: string;
37
+ version: string;
38
+ singleton: boolean;
39
+ requiredVersion: string;
40
+ hash: string;
41
+ assets: StatsAssets;
42
+ deps: string[];
43
+ usedIn: string[];
44
+ }
45
+ export interface StatsRemoteVal {
46
+ moduleName: string;
47
+ federationContainerName: string;
48
+ consumingFederationContainerName: string;
49
+ alias: string;
50
+ usedIn: string[];
51
+ }
52
+ export type StatsRemoteWithEntry<T = StatsRemoteVal> = T & Omit<RemoteWithEntry, 'name'>;
53
+ export type StatsRemoteWithVersion<T = StatsRemoteVal> = T & Omit<RemoteWithVersion, 'name'>;
54
+ export type StatsRemote<T = StatsRemoteVal> = StatsRemoteWithEntry<T> | StatsRemoteWithVersion<T>;
55
+ export interface StatsModuleInfo {
56
+ name: string;
57
+ file: string;
58
+ }
59
+ export interface ManifestModuleInfos {
60
+ [exposeModuleName: string]: StatsModuleInfo;
61
+ }
62
+ export interface StatsExpose {
63
+ id: string;
64
+ name: string;
65
+ path?: string;
66
+ file: string;
67
+ requires: string[];
68
+ assets: StatsAssets;
69
+ }
70
+ export interface Stats<T = BasicStatsMetaData, K = StatsRemoteVal> {
71
+ id: string;
72
+ name: string;
73
+ metaData: StatsMetaData<T>;
74
+ shared: StatsShared[];
75
+ remotes: StatsRemote<K>[];
76
+ exposes: StatsExpose[];
77
+ }
78
+ export {};
package/src/utils.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ import { RemoteEntryInfo } from './types';
2
+ import { Logger } from './logger';
3
+ declare const parseEntry: (str: string, devVerOrUrl?: string) => RemoteEntryInfo;
4
+ declare global {
5
+ var FEDERATION_DEBUG: string | undefined;
6
+ }
7
+ declare const logger: Logger;
8
+ declare const composeKeyWithSeparator: (...args: (string | undefined)[]) => string;
9
+ declare const encodeName: (name: string, prefix?: string, withExt?: boolean) => string;
10
+ declare const decodeName: (name: string, prefix?: string, withExt?: boolean) => string;
11
+ declare const generateExposeFilename: (exposeName: string, withExt: boolean) => string;
12
+ declare const generateShareFilename: (pkgName: string, withExt: boolean) => string;
13
+ export { parseEntry, logger, decodeName, encodeName, composeKeyWithSeparator, generateExposeFilename, generateShareFilename, };