@module-federation/runtime-core 0.0.0-next-20250902065718 → 0.0.0-next-20250902071251

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/dist/index.esm.js CHANGED
@@ -1097,12 +1097,14 @@ function handleRemoteEntryLoaded(name, globalName, entry) {
1097
1097
  }));
1098
1098
  return entryExports;
1099
1099
  }
1100
- async function loadEntryScript({ name, globalName, entry, loaderHook }) {
1100
+ async function loadEntryScript({ name, globalName, entry, loaderHook, getEntryUrl }) {
1101
1101
  const { entryExports: remoteEntryExports } = getRemoteEntryExports(name, globalName);
1102
1102
  if (remoteEntryExports) {
1103
1103
  return remoteEntryExports;
1104
1104
  }
1105
- return loadScript(entry, {
1105
+ // if getEntryUrl is passed, use the getEntryUrl to get the entry url
1106
+ const url = getEntryUrl ? getEntryUrl(entry) : entry;
1107
+ return loadScript(url, {
1106
1108
  attrs: {},
1107
1109
  createScriptHook: (url, attrs)=>{
1108
1110
  const res = loaderHook.lifecycle.createScript.emit({
@@ -1128,7 +1130,7 @@ async function loadEntryScript({ name, globalName, entry, loaderHook }) {
1128
1130
  throw e;
1129
1131
  });
1130
1132
  }
1131
- async function loadEntryDom({ remoteInfo, remoteEntryExports, loaderHook }) {
1133
+ async function loadEntryDom({ remoteInfo, remoteEntryExports, loaderHook, getEntryUrl }) {
1132
1134
  const { entry, entryGlobalName: globalName, name, type } = remoteInfo;
1133
1135
  switch(type){
1134
1136
  case 'esm':
@@ -1147,7 +1149,8 @@ async function loadEntryDom({ remoteInfo, remoteEntryExports, loaderHook }) {
1147
1149
  entry,
1148
1150
  globalName,
1149
1151
  name,
1150
- loaderHook
1152
+ loaderHook,
1153
+ getEntryUrl
1151
1154
  });
1152
1155
  }
1153
1156
  }
@@ -1186,7 +1189,8 @@ function getRemoteEntryUniqueKey(remoteInfo) {
1186
1189
  const { entry, name } = remoteInfo;
1187
1190
  return composeKeyWithSeparator(name, entry);
1188
1191
  }
1189
- async function getRemoteEntry({ origin, remoteEntryExports, remoteInfo }) {
1192
+ async function getRemoteEntry(params) {
1193
+ const { origin, remoteEntryExports, remoteInfo, getEntryUrl } = params;
1190
1194
  const uniqueKey = getRemoteEntryUniqueKey(remoteInfo);
1191
1195
  if (remoteEntryExports) {
1192
1196
  return remoteEntryExports;
@@ -1207,7 +1211,8 @@ async function getRemoteEntry({ origin, remoteEntryExports, remoteInfo }) {
1207
1211
  return isWebEnvironment ? loadEntryDom({
1208
1212
  remoteInfo,
1209
1213
  remoteEntryExports,
1210
- loaderHook
1214
+ loaderHook,
1215
+ getEntryUrl
1211
1216
  }) : loadEntryNode({
1212
1217
  remoteInfo,
1213
1218
  loaderHook
@@ -1435,14 +1440,20 @@ let Module = class Module {
1435
1440
  });
1436
1441
  } catch (err) {
1437
1442
  const uniqueKey = getRemoteEntryUniqueKey(this.remoteInfo);
1438
- remoteEntryExports = await this.host.loaderHook.lifecycle.loadEntryError.emit({
1439
- getRemoteEntry,
1440
- origin: this.host,
1441
- remoteInfo: this.remoteInfo,
1442
- remoteEntryExports: this.remoteEntryExports,
1443
- globalLoading,
1444
- uniqueKey
1445
- });
1443
+ // only when the error is RUNTIME_008 (script resource load failed) trigger loadEntryError.emit
1444
+ const isScriptLoadError = err instanceof Error && err.message.includes(RUNTIME_008);
1445
+ if (isScriptLoadError) {
1446
+ remoteEntryExports = await this.host.loaderHook.lifecycle.loadEntryError.emit({
1447
+ getRemoteEntry,
1448
+ origin: this.host,
1449
+ remoteInfo: this.remoteInfo,
1450
+ remoteEntryExports: this.remoteEntryExports,
1451
+ globalLoading,
1452
+ uniqueKey
1453
+ });
1454
+ } else {
1455
+ throw err;
1456
+ }
1446
1457
  }
1447
1458
  assert(remoteEntryExports, `remoteEntryExports is undefined \n ${safeToString(this.remoteInfo)}`);
1448
1459
  this.remoteEntryExports = remoteEntryExports;