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

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
 
@@ -296,8 +296,8 @@ const getGlobalHostPlugins = ()=>nativeGlobal.__FEDERATION__.__GLOBAL_PLUGIN__;
296
296
  const getPreloaded = (id)=>CurrentGlobal.__FEDERATION__.__PRELOADED_MAP__.get(id);
297
297
  const setPreloaded = (id)=>CurrentGlobal.__FEDERATION__.__PRELOADED_MAP__.set(id, true);
298
298
 
299
- const DEFAULT_SCOPE = 'default';
300
299
  const DEFAULT_REMOTE_TYPE = 'global';
300
+ const DEFAULT_SCOPE = 'default';
301
301
 
302
302
  // fork from https://github.com/originjs/vite-plugin-federation/blob/v1.1.12/packages/lib/src/utils/semver/index.ts
303
303
  // those constants are based on https://www.rubydoc.info/gems/semantic_range/3.0.0/SemanticRange#BUILDIDENTIFIER-constant
@@ -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) {
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
 
@@ -295,8 +295,8 @@ const getGlobalHostPlugins = ()=>nativeGlobal.__FEDERATION__.__GLOBAL_PLUGIN__;
295
295
  const getPreloaded = (id)=>CurrentGlobal.__FEDERATION__.__PRELOADED_MAP__.get(id);
296
296
  const setPreloaded = (id)=>CurrentGlobal.__FEDERATION__.__PRELOADED_MAP__.set(id, true);
297
297
 
298
- const DEFAULT_SCOPE = 'default';
299
298
  const DEFAULT_REMOTE_TYPE = 'global';
299
+ const DEFAULT_SCOPE = 'default';
300
300
 
301
301
  // fork from https://github.com/originjs/vite-plugin-federation/blob/v1.1.12/packages/lib/src/utils/semver/index.ts
302
302
  // those constants are based on https://www.rubydoc.info/gems/semantic_range/3.0.0/SemanticRange#BUILDIDENTIFIER-constant
@@ -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) {
@@ -1,2 +1,2 @@
1
- export declare const DEFAULT_SCOPE = "default";
2
1
  export declare const DEFAULT_REMOTE_TYPE = "global";
2
+ export declare const DEFAULT_SCOPE = "default";
@@ -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-20250701105507",
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-20250701105507",
56
+ "@module-federation/error-codes": "0.0.0-next-20250701105507"
57
57
  }
58
58
  }