@module-federation/runtime-core 0.0.0-next-20250701093604 → 0.0.0-next-20250701100253

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/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ## Documentation
8
8
 
9
- See [https://module-federation.io/guide/basic/runtime.html](https://module-federation.io/guide/basic/runtime.html) for details.
9
+ See [https://module-federation.io/guide/basic/runtime/runtime.html](https://module-federation.io/guide/basic/runtime/runtime.html) for details.
10
10
 
11
11
  ## License
12
12
 
@@ -196,7 +196,7 @@ function getGlobalFederationConstructor() {
196
196
  function setGlobalFederationConstructor(FederationConstructor, isDebug = sdk.isDebugMode()) {
197
197
  if (isDebug) {
198
198
  CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR__ = FederationConstructor;
199
- CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = "0.15.0";
199
+ CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = "0.16.0";
200
200
  }
201
201
  }
202
202
  // eslint-disable-next-line @typescript-eslint/ban-types
@@ -943,6 +943,34 @@ function getTargetSharedOptions(options) {
943
943
  return Object.assign({}, resolver(shareInfos[pkgName]), extraOptions == null ? void 0 : extraOptions.customShareInfo);
944
944
  }
945
945
 
946
+ const ShareUtils = {
947
+ getRegisteredShare,
948
+ getGlobalShareScope
949
+ };
950
+ const GlobalUtils = {
951
+ Global,
952
+ nativeGlobal,
953
+ resetFederationGlobalInfo,
954
+ setGlobalFederationInstance,
955
+ getGlobalFederationConstructor,
956
+ setGlobalFederationConstructor,
957
+ getInfoWithoutType,
958
+ getGlobalSnapshot,
959
+ getTargetSnapshotInfoByModuleInfo,
960
+ getGlobalSnapshotInfoByModuleInfo,
961
+ setGlobalSnapshotInfoByModuleInfo,
962
+ addGlobalSnapshot,
963
+ getRemoteEntryExports,
964
+ registerGlobalPlugins,
965
+ getGlobalHostPlugins,
966
+ getPreloaded,
967
+ setPreloaded
968
+ };
969
+ var helpers = {
970
+ global: GlobalUtils,
971
+ share: ShareUtils
972
+ };
973
+
946
974
  function getBuilderId() {
947
975
  //@ts-ignore
948
976
  return typeof FEDERATION_BUILD_IDENTIFIER !== 'undefined' ? FEDERATION_BUILD_IDENTIFIER : '';
@@ -1212,202 +1240,6 @@ function getRemoteInfo(remote) {
1212
1240
  });
1213
1241
  }
1214
1242
 
1215
- function defaultPreloadArgs(preloadConfig) {
1216
- return polyfills._extends({
1217
- resourceCategory: 'sync',
1218
- share: true,
1219
- depsRemote: true,
1220
- prefetchInterface: false
1221
- }, preloadConfig);
1222
- }
1223
- function formatPreloadArgs(remotes, preloadArgs) {
1224
- return preloadArgs.map((args)=>{
1225
- const remoteInfo = matchRemote(remotes, args.nameOrAlias);
1226
- assert(remoteInfo, `Unable to preload ${args.nameOrAlias} as it is not included in ${!remoteInfo && sdk.safeToString({
1227
- remoteInfo,
1228
- remotes
1229
- })}`);
1230
- return {
1231
- remote: remoteInfo,
1232
- preloadConfig: defaultPreloadArgs(args)
1233
- };
1234
- });
1235
- }
1236
- function normalizePreloadExposes(exposes) {
1237
- if (!exposes) {
1238
- return [];
1239
- }
1240
- return exposes.map((expose)=>{
1241
- if (expose === '.') {
1242
- return expose;
1243
- }
1244
- if (expose.startsWith('./')) {
1245
- return expose.replace('./', '');
1246
- }
1247
- return expose;
1248
- });
1249
- }
1250
- function preloadAssets(remoteInfo, host, assets, // It is used to distinguish preload from load remote parallel loading
1251
- useLinkPreload = true) {
1252
- const { cssAssets, jsAssetsWithoutEntry, entryAssets } = assets;
1253
- if (host.options.inBrowser) {
1254
- entryAssets.forEach((asset)=>{
1255
- const { moduleInfo } = asset;
1256
- const module = host.moduleCache.get(remoteInfo.name);
1257
- if (module) {
1258
- getRemoteEntry({
1259
- origin: host,
1260
- remoteInfo: moduleInfo,
1261
- remoteEntryExports: module.remoteEntryExports
1262
- });
1263
- } else {
1264
- getRemoteEntry({
1265
- origin: host,
1266
- remoteInfo: moduleInfo,
1267
- remoteEntryExports: undefined
1268
- });
1269
- }
1270
- });
1271
- if (useLinkPreload) {
1272
- const defaultAttrs = {
1273
- rel: 'preload',
1274
- as: 'style'
1275
- };
1276
- cssAssets.forEach((cssUrl)=>{
1277
- const { link: cssEl, needAttach } = sdk.createLink({
1278
- url: cssUrl,
1279
- cb: ()=>{
1280
- // noop
1281
- },
1282
- attrs: defaultAttrs,
1283
- createLinkHook: (url, attrs)=>{
1284
- const res = host.loaderHook.lifecycle.createLink.emit({
1285
- url,
1286
- attrs
1287
- });
1288
- if (res instanceof HTMLLinkElement) {
1289
- return res;
1290
- }
1291
- return;
1292
- }
1293
- });
1294
- needAttach && document.head.appendChild(cssEl);
1295
- });
1296
- } else {
1297
- const defaultAttrs = {
1298
- rel: 'stylesheet',
1299
- type: 'text/css'
1300
- };
1301
- cssAssets.forEach((cssUrl)=>{
1302
- const { link: cssEl, needAttach } = sdk.createLink({
1303
- url: cssUrl,
1304
- cb: ()=>{
1305
- // noop
1306
- },
1307
- attrs: defaultAttrs,
1308
- createLinkHook: (url, attrs)=>{
1309
- const res = host.loaderHook.lifecycle.createLink.emit({
1310
- url,
1311
- attrs
1312
- });
1313
- if (res instanceof HTMLLinkElement) {
1314
- return res;
1315
- }
1316
- return;
1317
- },
1318
- needDeleteLink: false
1319
- });
1320
- needAttach && document.head.appendChild(cssEl);
1321
- });
1322
- }
1323
- if (useLinkPreload) {
1324
- const defaultAttrs = {
1325
- rel: 'preload',
1326
- as: 'script'
1327
- };
1328
- jsAssetsWithoutEntry.forEach((jsUrl)=>{
1329
- const { link: linkEl, needAttach } = sdk.createLink({
1330
- url: jsUrl,
1331
- cb: ()=>{
1332
- // noop
1333
- },
1334
- attrs: defaultAttrs,
1335
- createLinkHook: (url, attrs)=>{
1336
- const res = host.loaderHook.lifecycle.createLink.emit({
1337
- url,
1338
- attrs
1339
- });
1340
- if (res instanceof HTMLLinkElement) {
1341
- return res;
1342
- }
1343
- return;
1344
- }
1345
- });
1346
- needAttach && document.head.appendChild(linkEl);
1347
- });
1348
- } else {
1349
- const defaultAttrs = {
1350
- fetchpriority: 'high',
1351
- type: (remoteInfo == null ? void 0 : remoteInfo.type) === 'module' ? 'module' : 'text/javascript'
1352
- };
1353
- jsAssetsWithoutEntry.forEach((jsUrl)=>{
1354
- const { script: scriptEl, needAttach } = sdk.createScript({
1355
- url: jsUrl,
1356
- cb: ()=>{
1357
- // noop
1358
- },
1359
- attrs: defaultAttrs,
1360
- createScriptHook: (url, attrs)=>{
1361
- const res = host.loaderHook.lifecycle.createScript.emit({
1362
- url,
1363
- attrs
1364
- });
1365
- if (res instanceof HTMLScriptElement) {
1366
- return res;
1367
- }
1368
- return;
1369
- },
1370
- needDeleteScript: true
1371
- });
1372
- needAttach && document.head.appendChild(scriptEl);
1373
- });
1374
- }
1375
- }
1376
- }
1377
-
1378
- const ShareUtils = {
1379
- getRegisteredShare,
1380
- getGlobalShareScope
1381
- };
1382
- const GlobalUtils = {
1383
- Global,
1384
- nativeGlobal,
1385
- resetFederationGlobalInfo,
1386
- setGlobalFederationInstance,
1387
- getGlobalFederationConstructor,
1388
- setGlobalFederationConstructor,
1389
- getInfoWithoutType,
1390
- getGlobalSnapshot,
1391
- getTargetSnapshotInfoByModuleInfo,
1392
- getGlobalSnapshotInfoByModuleInfo,
1393
- setGlobalSnapshotInfoByModuleInfo,
1394
- addGlobalSnapshot,
1395
- getRemoteEntryExports,
1396
- registerGlobalPlugins,
1397
- getGlobalHostPlugins,
1398
- getPreloaded,
1399
- setPreloaded
1400
- };
1401
- var helpers = {
1402
- global: GlobalUtils,
1403
- share: ShareUtils,
1404
- utils: {
1405
- matchRemoteWithNameAndExpose,
1406
- preloadAssets,
1407
- getRemoteInfo
1408
- }
1409
- };
1410
-
1411
1243
  let Module = class Module {
1412
1244
  async getEntry() {
1413
1245
  if (this.remoteEntryExports) {
@@ -1731,6 +1563,169 @@ class PluginSystem {
1731
1563
  }
1732
1564
  }
1733
1565
 
1566
+ function defaultPreloadArgs(preloadConfig) {
1567
+ return polyfills._extends({
1568
+ resourceCategory: 'sync',
1569
+ share: true,
1570
+ depsRemote: true,
1571
+ prefetchInterface: false
1572
+ }, preloadConfig);
1573
+ }
1574
+ function formatPreloadArgs(remotes, preloadArgs) {
1575
+ return preloadArgs.map((args)=>{
1576
+ const remoteInfo = matchRemote(remotes, args.nameOrAlias);
1577
+ assert(remoteInfo, `Unable to preload ${args.nameOrAlias} as it is not included in ${!remoteInfo && sdk.safeToString({
1578
+ remoteInfo,
1579
+ remotes
1580
+ })}`);
1581
+ return {
1582
+ remote: remoteInfo,
1583
+ preloadConfig: defaultPreloadArgs(args)
1584
+ };
1585
+ });
1586
+ }
1587
+ function normalizePreloadExposes(exposes) {
1588
+ if (!exposes) {
1589
+ return [];
1590
+ }
1591
+ return exposes.map((expose)=>{
1592
+ if (expose === '.') {
1593
+ return expose;
1594
+ }
1595
+ if (expose.startsWith('./')) {
1596
+ return expose.replace('./', '');
1597
+ }
1598
+ return expose;
1599
+ });
1600
+ }
1601
+ function preloadAssets(remoteInfo, host, assets, // It is used to distinguish preload from load remote parallel loading
1602
+ useLinkPreload = true) {
1603
+ const { cssAssets, jsAssetsWithoutEntry, entryAssets } = assets;
1604
+ if (host.options.inBrowser) {
1605
+ entryAssets.forEach((asset)=>{
1606
+ const { moduleInfo } = asset;
1607
+ const module = host.moduleCache.get(remoteInfo.name);
1608
+ if (module) {
1609
+ getRemoteEntry({
1610
+ origin: host,
1611
+ remoteInfo: moduleInfo,
1612
+ remoteEntryExports: module.remoteEntryExports
1613
+ });
1614
+ } else {
1615
+ getRemoteEntry({
1616
+ origin: host,
1617
+ remoteInfo: moduleInfo,
1618
+ remoteEntryExports: undefined
1619
+ });
1620
+ }
1621
+ });
1622
+ if (useLinkPreload) {
1623
+ const defaultAttrs = {
1624
+ rel: 'preload',
1625
+ as: 'style'
1626
+ };
1627
+ cssAssets.forEach((cssUrl)=>{
1628
+ const { link: cssEl, needAttach } = sdk.createLink({
1629
+ url: cssUrl,
1630
+ cb: ()=>{
1631
+ // noop
1632
+ },
1633
+ attrs: defaultAttrs,
1634
+ createLinkHook: (url, attrs)=>{
1635
+ const res = host.loaderHook.lifecycle.createLink.emit({
1636
+ url,
1637
+ attrs
1638
+ });
1639
+ if (res instanceof HTMLLinkElement) {
1640
+ return res;
1641
+ }
1642
+ return;
1643
+ }
1644
+ });
1645
+ needAttach && document.head.appendChild(cssEl);
1646
+ });
1647
+ } else {
1648
+ const defaultAttrs = {
1649
+ rel: 'stylesheet',
1650
+ type: 'text/css'
1651
+ };
1652
+ cssAssets.forEach((cssUrl)=>{
1653
+ const { link: cssEl, needAttach } = sdk.createLink({
1654
+ url: cssUrl,
1655
+ cb: ()=>{
1656
+ // noop
1657
+ },
1658
+ attrs: defaultAttrs,
1659
+ createLinkHook: (url, attrs)=>{
1660
+ const res = host.loaderHook.lifecycle.createLink.emit({
1661
+ url,
1662
+ attrs
1663
+ });
1664
+ if (res instanceof HTMLLinkElement) {
1665
+ return res;
1666
+ }
1667
+ return;
1668
+ },
1669
+ needDeleteLink: false
1670
+ });
1671
+ needAttach && document.head.appendChild(cssEl);
1672
+ });
1673
+ }
1674
+ if (useLinkPreload) {
1675
+ const defaultAttrs = {
1676
+ rel: 'preload',
1677
+ as: 'script'
1678
+ };
1679
+ jsAssetsWithoutEntry.forEach((jsUrl)=>{
1680
+ const { link: linkEl, needAttach } = sdk.createLink({
1681
+ url: jsUrl,
1682
+ cb: ()=>{
1683
+ // noop
1684
+ },
1685
+ attrs: defaultAttrs,
1686
+ createLinkHook: (url, attrs)=>{
1687
+ const res = host.loaderHook.lifecycle.createLink.emit({
1688
+ url,
1689
+ attrs
1690
+ });
1691
+ if (res instanceof HTMLLinkElement) {
1692
+ return res;
1693
+ }
1694
+ return;
1695
+ }
1696
+ });
1697
+ needAttach && document.head.appendChild(linkEl);
1698
+ });
1699
+ } else {
1700
+ const defaultAttrs = {
1701
+ fetchpriority: 'high',
1702
+ type: (remoteInfo == null ? void 0 : remoteInfo.type) === 'module' ? 'module' : 'text/javascript'
1703
+ };
1704
+ jsAssetsWithoutEntry.forEach((jsUrl)=>{
1705
+ const { script: scriptEl, needAttach } = sdk.createScript({
1706
+ url: jsUrl,
1707
+ cb: ()=>{
1708
+ // noop
1709
+ },
1710
+ attrs: defaultAttrs,
1711
+ createScriptHook: (url, attrs)=>{
1712
+ const res = host.loaderHook.lifecycle.createScript.emit({
1713
+ url,
1714
+ attrs
1715
+ });
1716
+ if (res instanceof HTMLScriptElement) {
1717
+ return res;
1718
+ }
1719
+ return;
1720
+ },
1721
+ needDeleteScript: true
1722
+ });
1723
+ needAttach && document.head.appendChild(scriptEl);
1724
+ });
1725
+ }
1726
+ }
1727
+ }
1728
+
1734
1729
  function assignRemoteInfo(remoteInfo, remoteSnapshot) {
1735
1730
  const remoteEntryInfo = getRemoteEntryInfoFromSnapshot(remoteSnapshot);
1736
1731
  if (!remoteEntryInfo.url) {
@@ -3029,7 +3024,7 @@ class FederationHost {
3029
3024
  // maybe will change, temporarily for internal use only
3030
3025
  initContainer: new AsyncWaterfallHook('initContainer')
3031
3026
  });
3032
- this.version = "0.15.0";
3027
+ this.version = "0.16.0";
3033
3028
  this.moduleCache = new Map();
3034
3029
  this.loaderHook = new PluginSystem({
3035
3030
  // FIXME: may not be suitable , not open to the public yet
package/dist/index.esm.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { _ as _extends, a as _object_without_properties_loose } from './polyfills.esm.js';
2
- import { createLogger, isBrowserEnv, isReactNativeEnv, isDebugMode, composeKeyWithSeparator, loadScriptNode, loadScript, createLink, createScript, safeToString, getResourceUrl, isManifestProvider, generateSnapshotFromManifest, warn as warn$1 } from '@module-federation/sdk';
2
+ import { createLogger, isBrowserEnv, isReactNativeEnv, isDebugMode, composeKeyWithSeparator, loadScriptNode, loadScript, safeToString, createLink, createScript, getResourceUrl, isManifestProvider, generateSnapshotFromManifest, warn as warn$1 } from '@module-federation/sdk';
3
3
  export { loadScript, loadScriptNode } from '@module-federation/sdk';
4
4
  import { getShortErrorMsg, RUNTIME_008, runtimeDescMap, RUNTIME_001, RUNTIME_002, RUNTIME_007, RUNTIME_003, RUNTIME_005, RUNTIME_006, RUNTIME_004 } from '@module-federation/error-codes';
5
5
 
@@ -195,7 +195,7 @@ function getGlobalFederationConstructor() {
195
195
  function setGlobalFederationConstructor(FederationConstructor, isDebug = isDebugMode()) {
196
196
  if (isDebug) {
197
197
  CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR__ = FederationConstructor;
198
- CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = "0.15.0";
198
+ CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = "0.16.0";
199
199
  }
200
200
  }
201
201
  // eslint-disable-next-line @typescript-eslint/ban-types
@@ -942,6 +942,34 @@ function getTargetSharedOptions(options) {
942
942
  return Object.assign({}, resolver(shareInfos[pkgName]), extraOptions == null ? void 0 : extraOptions.customShareInfo);
943
943
  }
944
944
 
945
+ const ShareUtils = {
946
+ getRegisteredShare,
947
+ getGlobalShareScope
948
+ };
949
+ const GlobalUtils = {
950
+ Global,
951
+ nativeGlobal,
952
+ resetFederationGlobalInfo,
953
+ setGlobalFederationInstance,
954
+ getGlobalFederationConstructor,
955
+ setGlobalFederationConstructor,
956
+ getInfoWithoutType,
957
+ getGlobalSnapshot,
958
+ getTargetSnapshotInfoByModuleInfo,
959
+ getGlobalSnapshotInfoByModuleInfo,
960
+ setGlobalSnapshotInfoByModuleInfo,
961
+ addGlobalSnapshot,
962
+ getRemoteEntryExports,
963
+ registerGlobalPlugins,
964
+ getGlobalHostPlugins,
965
+ getPreloaded,
966
+ setPreloaded
967
+ };
968
+ var helpers = {
969
+ global: GlobalUtils,
970
+ share: ShareUtils
971
+ };
972
+
945
973
  function getBuilderId() {
946
974
  //@ts-ignore
947
975
  return typeof FEDERATION_BUILD_IDENTIFIER !== 'undefined' ? FEDERATION_BUILD_IDENTIFIER : '';
@@ -1211,202 +1239,6 @@ function getRemoteInfo(remote) {
1211
1239
  });
1212
1240
  }
1213
1241
 
1214
- function defaultPreloadArgs(preloadConfig) {
1215
- return _extends({
1216
- resourceCategory: 'sync',
1217
- share: true,
1218
- depsRemote: true,
1219
- prefetchInterface: false
1220
- }, preloadConfig);
1221
- }
1222
- function formatPreloadArgs(remotes, preloadArgs) {
1223
- return preloadArgs.map((args)=>{
1224
- const remoteInfo = matchRemote(remotes, args.nameOrAlias);
1225
- assert(remoteInfo, `Unable to preload ${args.nameOrAlias} as it is not included in ${!remoteInfo && safeToString({
1226
- remoteInfo,
1227
- remotes
1228
- })}`);
1229
- return {
1230
- remote: remoteInfo,
1231
- preloadConfig: defaultPreloadArgs(args)
1232
- };
1233
- });
1234
- }
1235
- function normalizePreloadExposes(exposes) {
1236
- if (!exposes) {
1237
- return [];
1238
- }
1239
- return exposes.map((expose)=>{
1240
- if (expose === '.') {
1241
- return expose;
1242
- }
1243
- if (expose.startsWith('./')) {
1244
- return expose.replace('./', '');
1245
- }
1246
- return expose;
1247
- });
1248
- }
1249
- function preloadAssets(remoteInfo, host, assets, // It is used to distinguish preload from load remote parallel loading
1250
- useLinkPreload = true) {
1251
- const { cssAssets, jsAssetsWithoutEntry, entryAssets } = assets;
1252
- if (host.options.inBrowser) {
1253
- entryAssets.forEach((asset)=>{
1254
- const { moduleInfo } = asset;
1255
- const module = host.moduleCache.get(remoteInfo.name);
1256
- if (module) {
1257
- getRemoteEntry({
1258
- origin: host,
1259
- remoteInfo: moduleInfo,
1260
- remoteEntryExports: module.remoteEntryExports
1261
- });
1262
- } else {
1263
- getRemoteEntry({
1264
- origin: host,
1265
- remoteInfo: moduleInfo,
1266
- remoteEntryExports: undefined
1267
- });
1268
- }
1269
- });
1270
- if (useLinkPreload) {
1271
- const defaultAttrs = {
1272
- rel: 'preload',
1273
- as: 'style'
1274
- };
1275
- cssAssets.forEach((cssUrl)=>{
1276
- const { link: cssEl, needAttach } = createLink({
1277
- url: cssUrl,
1278
- cb: ()=>{
1279
- // noop
1280
- },
1281
- attrs: defaultAttrs,
1282
- createLinkHook: (url, attrs)=>{
1283
- const res = host.loaderHook.lifecycle.createLink.emit({
1284
- url,
1285
- attrs
1286
- });
1287
- if (res instanceof HTMLLinkElement) {
1288
- return res;
1289
- }
1290
- return;
1291
- }
1292
- });
1293
- needAttach && document.head.appendChild(cssEl);
1294
- });
1295
- } else {
1296
- const defaultAttrs = {
1297
- rel: 'stylesheet',
1298
- type: 'text/css'
1299
- };
1300
- cssAssets.forEach((cssUrl)=>{
1301
- const { link: cssEl, needAttach } = createLink({
1302
- url: cssUrl,
1303
- cb: ()=>{
1304
- // noop
1305
- },
1306
- attrs: defaultAttrs,
1307
- createLinkHook: (url, attrs)=>{
1308
- const res = host.loaderHook.lifecycle.createLink.emit({
1309
- url,
1310
- attrs
1311
- });
1312
- if (res instanceof HTMLLinkElement) {
1313
- return res;
1314
- }
1315
- return;
1316
- },
1317
- needDeleteLink: false
1318
- });
1319
- needAttach && document.head.appendChild(cssEl);
1320
- });
1321
- }
1322
- if (useLinkPreload) {
1323
- const defaultAttrs = {
1324
- rel: 'preload',
1325
- as: 'script'
1326
- };
1327
- jsAssetsWithoutEntry.forEach((jsUrl)=>{
1328
- const { link: linkEl, needAttach } = createLink({
1329
- url: jsUrl,
1330
- cb: ()=>{
1331
- // noop
1332
- },
1333
- attrs: defaultAttrs,
1334
- createLinkHook: (url, attrs)=>{
1335
- const res = host.loaderHook.lifecycle.createLink.emit({
1336
- url,
1337
- attrs
1338
- });
1339
- if (res instanceof HTMLLinkElement) {
1340
- return res;
1341
- }
1342
- return;
1343
- }
1344
- });
1345
- needAttach && document.head.appendChild(linkEl);
1346
- });
1347
- } else {
1348
- const defaultAttrs = {
1349
- fetchpriority: 'high',
1350
- type: (remoteInfo == null ? void 0 : remoteInfo.type) === 'module' ? 'module' : 'text/javascript'
1351
- };
1352
- jsAssetsWithoutEntry.forEach((jsUrl)=>{
1353
- const { script: scriptEl, needAttach } = createScript({
1354
- url: jsUrl,
1355
- cb: ()=>{
1356
- // noop
1357
- },
1358
- attrs: defaultAttrs,
1359
- createScriptHook: (url, attrs)=>{
1360
- const res = host.loaderHook.lifecycle.createScript.emit({
1361
- url,
1362
- attrs
1363
- });
1364
- if (res instanceof HTMLScriptElement) {
1365
- return res;
1366
- }
1367
- return;
1368
- },
1369
- needDeleteScript: true
1370
- });
1371
- needAttach && document.head.appendChild(scriptEl);
1372
- });
1373
- }
1374
- }
1375
- }
1376
-
1377
- const ShareUtils = {
1378
- getRegisteredShare,
1379
- getGlobalShareScope
1380
- };
1381
- const GlobalUtils = {
1382
- Global,
1383
- nativeGlobal,
1384
- resetFederationGlobalInfo,
1385
- setGlobalFederationInstance,
1386
- getGlobalFederationConstructor,
1387
- setGlobalFederationConstructor,
1388
- getInfoWithoutType,
1389
- getGlobalSnapshot,
1390
- getTargetSnapshotInfoByModuleInfo,
1391
- getGlobalSnapshotInfoByModuleInfo,
1392
- setGlobalSnapshotInfoByModuleInfo,
1393
- addGlobalSnapshot,
1394
- getRemoteEntryExports,
1395
- registerGlobalPlugins,
1396
- getGlobalHostPlugins,
1397
- getPreloaded,
1398
- setPreloaded
1399
- };
1400
- var helpers = {
1401
- global: GlobalUtils,
1402
- share: ShareUtils,
1403
- utils: {
1404
- matchRemoteWithNameAndExpose,
1405
- preloadAssets,
1406
- getRemoteInfo
1407
- }
1408
- };
1409
-
1410
1242
  let Module = class Module {
1411
1243
  async getEntry() {
1412
1244
  if (this.remoteEntryExports) {
@@ -1730,6 +1562,169 @@ class PluginSystem {
1730
1562
  }
1731
1563
  }
1732
1564
 
1565
+ function defaultPreloadArgs(preloadConfig) {
1566
+ return _extends({
1567
+ resourceCategory: 'sync',
1568
+ share: true,
1569
+ depsRemote: true,
1570
+ prefetchInterface: false
1571
+ }, preloadConfig);
1572
+ }
1573
+ function formatPreloadArgs(remotes, preloadArgs) {
1574
+ return preloadArgs.map((args)=>{
1575
+ const remoteInfo = matchRemote(remotes, args.nameOrAlias);
1576
+ assert(remoteInfo, `Unable to preload ${args.nameOrAlias} as it is not included in ${!remoteInfo && safeToString({
1577
+ remoteInfo,
1578
+ remotes
1579
+ })}`);
1580
+ return {
1581
+ remote: remoteInfo,
1582
+ preloadConfig: defaultPreloadArgs(args)
1583
+ };
1584
+ });
1585
+ }
1586
+ function normalizePreloadExposes(exposes) {
1587
+ if (!exposes) {
1588
+ return [];
1589
+ }
1590
+ return exposes.map((expose)=>{
1591
+ if (expose === '.') {
1592
+ return expose;
1593
+ }
1594
+ if (expose.startsWith('./')) {
1595
+ return expose.replace('./', '');
1596
+ }
1597
+ return expose;
1598
+ });
1599
+ }
1600
+ function preloadAssets(remoteInfo, host, assets, // It is used to distinguish preload from load remote parallel loading
1601
+ useLinkPreload = true) {
1602
+ const { cssAssets, jsAssetsWithoutEntry, entryAssets } = assets;
1603
+ if (host.options.inBrowser) {
1604
+ entryAssets.forEach((asset)=>{
1605
+ const { moduleInfo } = asset;
1606
+ const module = host.moduleCache.get(remoteInfo.name);
1607
+ if (module) {
1608
+ getRemoteEntry({
1609
+ origin: host,
1610
+ remoteInfo: moduleInfo,
1611
+ remoteEntryExports: module.remoteEntryExports
1612
+ });
1613
+ } else {
1614
+ getRemoteEntry({
1615
+ origin: host,
1616
+ remoteInfo: moduleInfo,
1617
+ remoteEntryExports: undefined
1618
+ });
1619
+ }
1620
+ });
1621
+ if (useLinkPreload) {
1622
+ const defaultAttrs = {
1623
+ rel: 'preload',
1624
+ as: 'style'
1625
+ };
1626
+ cssAssets.forEach((cssUrl)=>{
1627
+ const { link: cssEl, needAttach } = createLink({
1628
+ url: cssUrl,
1629
+ cb: ()=>{
1630
+ // noop
1631
+ },
1632
+ attrs: defaultAttrs,
1633
+ createLinkHook: (url, attrs)=>{
1634
+ const res = host.loaderHook.lifecycle.createLink.emit({
1635
+ url,
1636
+ attrs
1637
+ });
1638
+ if (res instanceof HTMLLinkElement) {
1639
+ return res;
1640
+ }
1641
+ return;
1642
+ }
1643
+ });
1644
+ needAttach && document.head.appendChild(cssEl);
1645
+ });
1646
+ } else {
1647
+ const defaultAttrs = {
1648
+ rel: 'stylesheet',
1649
+ type: 'text/css'
1650
+ };
1651
+ cssAssets.forEach((cssUrl)=>{
1652
+ const { link: cssEl, needAttach } = createLink({
1653
+ url: cssUrl,
1654
+ cb: ()=>{
1655
+ // noop
1656
+ },
1657
+ attrs: defaultAttrs,
1658
+ createLinkHook: (url, attrs)=>{
1659
+ const res = host.loaderHook.lifecycle.createLink.emit({
1660
+ url,
1661
+ attrs
1662
+ });
1663
+ if (res instanceof HTMLLinkElement) {
1664
+ return res;
1665
+ }
1666
+ return;
1667
+ },
1668
+ needDeleteLink: false
1669
+ });
1670
+ needAttach && document.head.appendChild(cssEl);
1671
+ });
1672
+ }
1673
+ if (useLinkPreload) {
1674
+ const defaultAttrs = {
1675
+ rel: 'preload',
1676
+ as: 'script'
1677
+ };
1678
+ jsAssetsWithoutEntry.forEach((jsUrl)=>{
1679
+ const { link: linkEl, needAttach } = createLink({
1680
+ url: jsUrl,
1681
+ cb: ()=>{
1682
+ // noop
1683
+ },
1684
+ attrs: defaultAttrs,
1685
+ createLinkHook: (url, attrs)=>{
1686
+ const res = host.loaderHook.lifecycle.createLink.emit({
1687
+ url,
1688
+ attrs
1689
+ });
1690
+ if (res instanceof HTMLLinkElement) {
1691
+ return res;
1692
+ }
1693
+ return;
1694
+ }
1695
+ });
1696
+ needAttach && document.head.appendChild(linkEl);
1697
+ });
1698
+ } else {
1699
+ const defaultAttrs = {
1700
+ fetchpriority: 'high',
1701
+ type: (remoteInfo == null ? void 0 : remoteInfo.type) === 'module' ? 'module' : 'text/javascript'
1702
+ };
1703
+ jsAssetsWithoutEntry.forEach((jsUrl)=>{
1704
+ const { script: scriptEl, needAttach } = createScript({
1705
+ url: jsUrl,
1706
+ cb: ()=>{
1707
+ // noop
1708
+ },
1709
+ attrs: defaultAttrs,
1710
+ createScriptHook: (url, attrs)=>{
1711
+ const res = host.loaderHook.lifecycle.createScript.emit({
1712
+ url,
1713
+ attrs
1714
+ });
1715
+ if (res instanceof HTMLScriptElement) {
1716
+ return res;
1717
+ }
1718
+ return;
1719
+ },
1720
+ needDeleteScript: true
1721
+ });
1722
+ needAttach && document.head.appendChild(scriptEl);
1723
+ });
1724
+ }
1725
+ }
1726
+ }
1727
+
1733
1728
  function assignRemoteInfo(remoteInfo, remoteSnapshot) {
1734
1729
  const remoteEntryInfo = getRemoteEntryInfoFromSnapshot(remoteSnapshot);
1735
1730
  if (!remoteEntryInfo.url) {
@@ -3028,7 +3023,7 @@ class FederationHost {
3028
3023
  // maybe will change, temporarily for internal use only
3029
3024
  initContainer: new AsyncWaterfallHook('initContainer')
3030
3025
  });
3031
- this.version = "0.15.0";
3026
+ this.version = "0.16.0";
3032
3027
  this.moduleCache = new Map();
3033
3028
  this.loaderHook = new PluginSystem({
3034
3029
  // FIXME: may not be suitable , not open to the public yet
@@ -1,7 +1,5 @@
1
1
  import { resetFederationGlobalInfo, setGlobalFederationInstance, getGlobalFederationConstructor, setGlobalFederationConstructor, getInfoWithoutType, getGlobalSnapshot, getTargetSnapshotInfoByModuleInfo, getGlobalSnapshotInfoByModuleInfo, setGlobalSnapshotInfoByModuleInfo, addGlobalSnapshot, getRemoteEntryExports, registerGlobalPlugins, getGlobalHostPlugins, getPreloaded, setPreloaded, Global } from './global';
2
2
  import { getRegisteredShare, getGlobalShareScope } from './utils/share';
3
- import { getRemoteInfo, matchRemoteWithNameAndExpose } from './utils';
4
- import { preloadAssets } from './utils/preload';
5
3
  interface IShareUtils {
6
4
  getRegisteredShare: typeof getRegisteredShare;
7
5
  getGlobalShareScope: typeof getGlobalShareScope;
@@ -28,11 +26,6 @@ interface IGlobalUtils {
28
26
  declare const _default: {
29
27
  global: IGlobalUtils;
30
28
  share: IShareUtils;
31
- utils: {
32
- matchRemoteWithNameAndExpose: typeof matchRemoteWithNameAndExpose;
33
- preloadAssets: typeof preloadAssets;
34
- getRemoteInfo: typeof getRemoteInfo;
35
- };
36
29
  };
37
30
  export default _default;
38
31
  export type { IGlobalUtils, IShareUtils };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@module-federation/runtime-core",
3
- "version": "0.0.0-next-20250701093604",
3
+ "version": "0.0.0-next-20250701100253",
4
4
  "type": "module",
5
5
  "author": "zhouxiao <codingzx@gmail.com>",
6
6
  "main": "./dist/index.cjs.cjs",
@@ -52,7 +52,7 @@
52
52
  }
53
53
  },
54
54
  "dependencies": {
55
- "@module-federation/sdk": "0.0.0-next-20250701093604",
56
- "@module-federation/error-codes": "0.0.0-next-20250701093604"
55
+ "@module-federation/sdk": "0.0.0-next-20250701100253",
56
+ "@module-federation/error-codes": "0.0.0-next-20250701100253"
57
57
  }
58
58
  }