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