@module-federation/runtime 0.0.0-next-20240122033350 → 0.0.0-next-20240122072901

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.
@@ -1,4 +1,4 @@
1
- import { l as getRegisteredShare, t as getGlobalShareScope, G as Global, F as nativeGlobal, H as resetFederationGlobalInfo, A as getGlobalFederationInstance, C as setGlobalFederationInstance, B as getGlobalFederationConstructor, z as setGlobalFederationConstructor, m as getInfoWithoutType, r as getGlobalSnapshot, I as getTargetSnapshotInfoByModuleInfo, p as getGlobalSnapshotInfoByModuleInfo, q as setGlobalSnapshotInfoByModuleInfo, J as addGlobalSnapshot, c as getRemoteEntryExports, E as registerGlobalPlugins, g as getGlobalHostPlugins, n as getPreloaded, o as setPreloaded } from './share.esm.js';
1
+ import { l as getRegisteredShare, u as getGlobalShareScope, G as Global, H as nativeGlobal, I as resetFederationGlobalInfo, B as getGlobalFederationInstance, E as setGlobalFederationInstance, C as getGlobalFederationConstructor, A as setGlobalFederationConstructor, m as getInfoWithoutType, t as getGlobalSnapshot, J as getTargetSnapshotInfoByModuleInfo, p as getGlobalSnapshotInfoByModuleInfo, r as setGlobalSnapshotInfoByModuleInfo, q as addGlobalSnapshot, c as getRemoteEntryExports, F as registerGlobalPlugins, g as getGlobalHostPlugins, n as getPreloaded, o as setPreloaded } from './share.esm.js';
2
2
 
3
3
  const ShareUtils = {
4
4
  getRegisteredShare,
package/dist/index.cjs.js CHANGED
@@ -674,9 +674,9 @@ function splitId(id) {
674
674
  }
675
675
  }
676
676
  // Traverse all nodes in moduleInfo and traverse the entire snapshot
677
- function traverseModuleInfo(globalSnapshot, remoteInfo, traverse, isRoot, memo = {}, remoteSnapshot, getModuleInfoHook) {
677
+ function traverseModuleInfo(globalSnapshot, remoteInfo, traverse, isRoot, memo = {}, remoteSnapshot) {
678
678
  const id = share.getFMId(remoteInfo);
679
- const { value: snapshotValue } = share.getInfoWithoutType(globalSnapshot, id, getModuleInfoHook);
679
+ const { value: snapshotValue } = share.getInfoWithoutType(globalSnapshot, id);
680
680
  const effectiveRemoteSnapshot = remoteSnapshot || snapshotValue;
681
681
  if (effectiveRemoteSnapshot && !sdk.isManifestProvider(effectiveRemoteSnapshot)) {
682
682
  traverse(effectiveRemoteSnapshot, remoteInfo, isRoot);
@@ -692,7 +692,7 @@ function traverseModuleInfo(globalSnapshot, remoteInfo, traverse, isRoot, memo =
692
692
  traverseModuleInfo(globalSnapshot, {
693
693
  name: subRemoteInfo.name,
694
694
  version: remoteValue.matchedVersion
695
- }, traverse, false, memo, undefined, getModuleInfoHook);
695
+ }, traverse, false, memo, undefined);
696
696
  }
697
697
  }
698
698
  }
@@ -773,8 +773,7 @@ function generatePreloadAssets(origin, preloadOptions, remote, globalSnapshot, r
773
773
  id: assetsInfo.moduleName === '.' ? remoteInfo.name : exposeFullPath,
774
774
  name: remoteInfo.name,
775
775
  remoteSnapshot: moduleInfoSnapshot,
776
- preloadConfig,
777
- origin
776
+ preloadConfig
778
777
  });
779
778
  const preloaded = share.getPreloaded(exposeFullPath);
780
779
  if (preloaded) {
@@ -793,16 +792,7 @@ function generatePreloadAssets(origin, preloadOptions, remote, globalSnapshot, r
793
792
  share.setPreloaded(exposeFullPath);
794
793
  }
795
794
  }
796
- }, true, memo, remoteSnapshot, (target, key)=>{
797
- const res = origin.loaderHook.lifecycle.getModuleInfo.emit({
798
- target,
799
- key
800
- });
801
- if (res && !(res instanceof Promise)) {
802
- return res;
803
- }
804
- return;
805
- });
795
+ }, true, memo, remoteSnapshot);
806
796
  if (remoteSnapshot.shared) {
807
797
  remoteSnapshot.shared.forEach((shared)=>{
808
798
  var _options_shared;
@@ -895,37 +885,27 @@ class SnapshotHandler {
895
885
  // eslint-disable-next-line max-lines-per-function
896
886
  async loadRemoteSnapshotInfo(moduleInfo) {
897
887
  const { options } = this.HostInstance;
898
- const hostSnapshot = share.getGlobalSnapshotInfoByModuleInfo({
899
- name: this.HostInstance.options.name,
900
- version: this.HostInstance.options.version
901
- }, {
902
- getModuleInfoHook: (target, key)=>{
903
- const res = this.HostInstance.loaderHook.lifecycle.getModuleInfo.emit({
904
- target,
905
- key
906
- });
907
- if (res && !(res instanceof Promise)) {
908
- return res;
909
- }
910
- return;
911
- }
912
- });
913
888
  await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({
914
889
  options,
915
890
  moduleInfo
916
891
  });
892
+ let hostSnapshot = share.getGlobalSnapshotInfoByModuleInfo({
893
+ name: this.HostInstance.options.name,
894
+ version: this.HostInstance.options.version
895
+ });
896
+ if (!hostSnapshot) {
897
+ hostSnapshot = {
898
+ version: this.HostInstance.options.version || '',
899
+ remoteEntry: '',
900
+ remotesInfo: {}
901
+ };
902
+ share.addGlobalSnapshot({
903
+ [this.HostInstance.options.name]: hostSnapshot
904
+ });
905
+ }
917
906
  // In dynamic loadRemote scenarios, incomplete remotesInfo delivery may occur. In such cases, the remotesInfo in the host needs to be completed in the snapshot at runtime.
918
907
  // This ensures the snapshot's integrity and helps the chrome plugin correctly identify all producer modules, ensuring that proxyable producer modules will not be missing.
919
- if (hostSnapshot && 'remotesInfo' in hostSnapshot && !share.getInfoWithoutType(hostSnapshot.remotesInfo, moduleInfo.name, (target, key)=>{
920
- const res = this.HostInstance.loaderHook.lifecycle.getModuleInfo.emit({
921
- target,
922
- key
923
- });
924
- if (res && !(res instanceof Promise)) {
925
- return res;
926
- }
927
- return;
928
- }).value) {
908
+ if (hostSnapshot && 'remotesInfo' in hostSnapshot && !share.getInfoWithoutType(hostSnapshot.remotesInfo, moduleInfo.name).value) {
929
909
  if ('version' in moduleInfo || 'entry' in moduleInfo) {
930
910
  hostSnapshot.remotesInfo = _extends$1({}, hostSnapshot == null ? void 0 : hostSnapshot.remotesInfo, {
931
911
  [moduleInfo.name]: {
@@ -947,7 +927,11 @@ class SnapshotHandler {
947
927
  if (sdk.isManifestProvider(globalRemoteSnapshot)) {
948
928
  const moduleSnapshot = await this.getManifestJson(globalRemoteSnapshot.remoteEntry, moduleInfo, {});
949
929
  // eslint-disable-next-line @typescript-eslint/no-shadow
950
- const globalSnapshotRes = share.setGlobalSnapshotInfoByModuleInfo(_extends$1({}, moduleInfo), moduleSnapshot);
930
+ const globalSnapshotRes = share.setGlobalSnapshotInfoByModuleInfo(_extends$1({}, moduleInfo, {
931
+ // The global remote may be overridden
932
+ // Therefore, set the snapshot key to the global address of the actual request
933
+ entry: globalRemoteSnapshot.remoteEntry
934
+ }), moduleSnapshot);
951
935
  return {
952
936
  remoteSnapshot: moduleSnapshot,
953
937
  globalSnapshot: globalSnapshotRes
@@ -994,29 +978,9 @@ class SnapshotHandler {
994
978
  const hostGlobalSnapshot = share.getGlobalSnapshotInfoByModuleInfo({
995
979
  name: this.HostInstance.options.name,
996
980
  version: this.HostInstance.options.version
997
- }, {
998
- getModuleInfoHook: (target, key)=>{
999
- const res = this.HostInstance.loaderHook.lifecycle.getModuleInfo.emit({
1000
- target,
1001
- key
1002
- });
1003
- if (res && !(res instanceof Promise)) {
1004
- return res;
1005
- }
1006
- return;
1007
- }
1008
981
  });
1009
982
  // get remote detail info from global
1010
- const globalRemoteInfo = hostGlobalSnapshot && 'remotesInfo' in hostGlobalSnapshot && hostGlobalSnapshot.remotesInfo && share.getInfoWithoutType(hostGlobalSnapshot.remotesInfo, moduleInfo.name, (target, key)=>{
1011
- const res = this.HostInstance.loaderHook.lifecycle.getModuleInfo.emit({
1012
- target,
1013
- key
1014
- });
1015
- if (res && !(res instanceof Promise)) {
1016
- return res;
1017
- }
1018
- return;
1019
- }).value;
983
+ const globalRemoteInfo = hostGlobalSnapshot && 'remotesInfo' in hostGlobalSnapshot && hostGlobalSnapshot.remotesInfo && share.getInfoWithoutType(hostGlobalSnapshot.remotesInfo, moduleInfo.name).value;
1020
984
  if (globalRemoteInfo && globalRemoteInfo.matchedVersion) {
1021
985
  return {
1022
986
  hostGlobalSnapshot,
@@ -1024,17 +988,6 @@ class SnapshotHandler {
1024
988
  remoteSnapshot: share.getGlobalSnapshotInfoByModuleInfo({
1025
989
  name: moduleInfo.name,
1026
990
  version: globalRemoteInfo.matchedVersion
1027
- }, {
1028
- getModuleInfoHook: (target, key)=>{
1029
- const res = this.HostInstance.loaderHook.lifecycle.getModuleInfo.emit({
1030
- target,
1031
- key
1032
- });
1033
- if (res && !(res instanceof Promise)) {
1034
- return res;
1035
- }
1036
- return;
1037
- }
1038
991
  })
1039
992
  };
1040
993
  }
@@ -1044,17 +997,6 @@ class SnapshotHandler {
1044
997
  remoteSnapshot: share.getGlobalSnapshotInfoByModuleInfo({
1045
998
  name: moduleInfo.name,
1046
999
  version: 'version' in moduleInfo ? moduleInfo.version : undefined
1047
- }, {
1048
- getModuleInfoHook: (target, key)=>{
1049
- const res = this.HostInstance.loaderHook.lifecycle.getModuleInfo.emit({
1050
- target,
1051
- key
1052
- });
1053
- if (res && !(res instanceof Promise)) {
1054
- return res;
1055
- }
1056
- return;
1057
- }
1058
1000
  })
1059
1001
  };
1060
1002
  }
@@ -1720,8 +1662,6 @@ Object.defineProperty(exports, 'loadScript', {
1720
1662
  get: function () { return sdk.loadScript; }
1721
1663
  });
1722
1664
  exports.FederationHost = FederationHost;
1723
- exports.getRemoteEntry = getRemoteEntry;
1724
- exports.getRemoteInfo = getRemoteInfo;
1725
1665
  exports.init = init;
1726
1666
  exports.loadRemote = loadRemote;
1727
1667
  exports.loadShare = loadShare;
package/dist/index.esm.js CHANGED
@@ -1,5 +1,5 @@
1
- import { g as getGlobalHostPlugins, a as globalLoading, D as DEFAULT_REMOTE_TYPE, b as DEFAULT_SCOPE, c as getRemoteEntryExports, d as assert, s as safeToString, e as getFMId, i as isObject, f as error, w as warn, h as isPlainObject, j as isRemoteInfoWithEntry, k as isPureRemoteEntry, l as getRegisteredShare, m as getInfoWithoutType, n as getPreloaded, o as setPreloaded, p as getGlobalSnapshotInfoByModuleInfo, q as setGlobalSnapshotInfoByModuleInfo, r as getGlobalSnapshot, G as Global, t as getGlobalShareScope, u as formatShareConfigs, v as isBrowserEnv, x as getBuilderId, y as addUniqueItem, z as setGlobalFederationConstructor, A as getGlobalFederationInstance, B as getGlobalFederationConstructor, C as setGlobalFederationInstance } from './share.esm.js';
2
- export { E as registerGlobalPlugins } from './share.esm.js';
1
+ import { g as getGlobalHostPlugins, D as DEFAULT_REMOTE_TYPE, a as DEFAULT_SCOPE, b as globalLoading, c as getRemoteEntryExports, d as assert, s as safeToString, e as getFMId, i as isObject, f as error, w as warn, h as isPlainObject, j as isRemoteInfoWithEntry, k as isPureRemoteEntry, l as getRegisteredShare, m as getInfoWithoutType, n as getPreloaded, o as setPreloaded, p as getGlobalSnapshotInfoByModuleInfo, q as addGlobalSnapshot, r as setGlobalSnapshotInfoByModuleInfo, t as getGlobalSnapshot, G as Global, u as getGlobalShareScope, v as formatShareConfigs, x as isBrowserEnv, y as getBuilderId, z as addUniqueItem, A as setGlobalFederationConstructor, B as getGlobalFederationInstance, C as getGlobalFederationConstructor, E as setGlobalFederationInstance } from './share.esm.js';
2
+ export { F as registerGlobalPlugins } from './share.esm.js';
3
3
  import { composeKeyWithSeparator, loadScriptNode, loadScript, createScript, getResourceUrl, isManifestProvider, generateSnapshotFromManifest } from '@module-federation/sdk';
4
4
  export { loadScript } from '@module-federation/sdk';
5
5
 
@@ -672,9 +672,9 @@ function splitId(id) {
672
672
  }
673
673
  }
674
674
  // Traverse all nodes in moduleInfo and traverse the entire snapshot
675
- function traverseModuleInfo(globalSnapshot, remoteInfo, traverse, isRoot, memo = {}, remoteSnapshot, getModuleInfoHook) {
675
+ function traverseModuleInfo(globalSnapshot, remoteInfo, traverse, isRoot, memo = {}, remoteSnapshot) {
676
676
  const id = getFMId(remoteInfo);
677
- const { value: snapshotValue } = getInfoWithoutType(globalSnapshot, id, getModuleInfoHook);
677
+ const { value: snapshotValue } = getInfoWithoutType(globalSnapshot, id);
678
678
  const effectiveRemoteSnapshot = remoteSnapshot || snapshotValue;
679
679
  if (effectiveRemoteSnapshot && !isManifestProvider(effectiveRemoteSnapshot)) {
680
680
  traverse(effectiveRemoteSnapshot, remoteInfo, isRoot);
@@ -690,7 +690,7 @@ function traverseModuleInfo(globalSnapshot, remoteInfo, traverse, isRoot, memo =
690
690
  traverseModuleInfo(globalSnapshot, {
691
691
  name: subRemoteInfo.name,
692
692
  version: remoteValue.matchedVersion
693
- }, traverse, false, memo, undefined, getModuleInfoHook);
693
+ }, traverse, false, memo, undefined);
694
694
  }
695
695
  }
696
696
  }
@@ -771,8 +771,7 @@ function generatePreloadAssets(origin, preloadOptions, remote, globalSnapshot, r
771
771
  id: assetsInfo.moduleName === '.' ? remoteInfo.name : exposeFullPath,
772
772
  name: remoteInfo.name,
773
773
  remoteSnapshot: moduleInfoSnapshot,
774
- preloadConfig,
775
- origin
774
+ preloadConfig
776
775
  });
777
776
  const preloaded = getPreloaded(exposeFullPath);
778
777
  if (preloaded) {
@@ -791,16 +790,7 @@ function generatePreloadAssets(origin, preloadOptions, remote, globalSnapshot, r
791
790
  setPreloaded(exposeFullPath);
792
791
  }
793
792
  }
794
- }, true, memo, remoteSnapshot, (target, key)=>{
795
- const res = origin.loaderHook.lifecycle.getModuleInfo.emit({
796
- target,
797
- key
798
- });
799
- if (res && !(res instanceof Promise)) {
800
- return res;
801
- }
802
- return;
803
- });
793
+ }, true, memo, remoteSnapshot);
804
794
  if (remoteSnapshot.shared) {
805
795
  remoteSnapshot.shared.forEach((shared)=>{
806
796
  var _options_shared;
@@ -893,37 +883,27 @@ class SnapshotHandler {
893
883
  // eslint-disable-next-line max-lines-per-function
894
884
  async loadRemoteSnapshotInfo(moduleInfo) {
895
885
  const { options } = this.HostInstance;
896
- const hostSnapshot = getGlobalSnapshotInfoByModuleInfo({
897
- name: this.HostInstance.options.name,
898
- version: this.HostInstance.options.version
899
- }, {
900
- getModuleInfoHook: (target, key)=>{
901
- const res = this.HostInstance.loaderHook.lifecycle.getModuleInfo.emit({
902
- target,
903
- key
904
- });
905
- if (res && !(res instanceof Promise)) {
906
- return res;
907
- }
908
- return;
909
- }
910
- });
911
886
  await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({
912
887
  options,
913
888
  moduleInfo
914
889
  });
890
+ let hostSnapshot = getGlobalSnapshotInfoByModuleInfo({
891
+ name: this.HostInstance.options.name,
892
+ version: this.HostInstance.options.version
893
+ });
894
+ if (!hostSnapshot) {
895
+ hostSnapshot = {
896
+ version: this.HostInstance.options.version || '',
897
+ remoteEntry: '',
898
+ remotesInfo: {}
899
+ };
900
+ addGlobalSnapshot({
901
+ [this.HostInstance.options.name]: hostSnapshot
902
+ });
903
+ }
915
904
  // In dynamic loadRemote scenarios, incomplete remotesInfo delivery may occur. In such cases, the remotesInfo in the host needs to be completed in the snapshot at runtime.
916
905
  // This ensures the snapshot's integrity and helps the chrome plugin correctly identify all producer modules, ensuring that proxyable producer modules will not be missing.
917
- if (hostSnapshot && 'remotesInfo' in hostSnapshot && !getInfoWithoutType(hostSnapshot.remotesInfo, moduleInfo.name, (target, key)=>{
918
- const res = this.HostInstance.loaderHook.lifecycle.getModuleInfo.emit({
919
- target,
920
- key
921
- });
922
- if (res && !(res instanceof Promise)) {
923
- return res;
924
- }
925
- return;
926
- }).value) {
906
+ if (hostSnapshot && 'remotesInfo' in hostSnapshot && !getInfoWithoutType(hostSnapshot.remotesInfo, moduleInfo.name).value) {
927
907
  if ('version' in moduleInfo || 'entry' in moduleInfo) {
928
908
  hostSnapshot.remotesInfo = _extends$1({}, hostSnapshot == null ? void 0 : hostSnapshot.remotesInfo, {
929
909
  [moduleInfo.name]: {
@@ -945,7 +925,11 @@ class SnapshotHandler {
945
925
  if (isManifestProvider(globalRemoteSnapshot)) {
946
926
  const moduleSnapshot = await this.getManifestJson(globalRemoteSnapshot.remoteEntry, moduleInfo, {});
947
927
  // eslint-disable-next-line @typescript-eslint/no-shadow
948
- const globalSnapshotRes = setGlobalSnapshotInfoByModuleInfo(_extends$1({}, moduleInfo), moduleSnapshot);
928
+ const globalSnapshotRes = setGlobalSnapshotInfoByModuleInfo(_extends$1({}, moduleInfo, {
929
+ // The global remote may be overridden
930
+ // Therefore, set the snapshot key to the global address of the actual request
931
+ entry: globalRemoteSnapshot.remoteEntry
932
+ }), moduleSnapshot);
949
933
  return {
950
934
  remoteSnapshot: moduleSnapshot,
951
935
  globalSnapshot: globalSnapshotRes
@@ -992,29 +976,9 @@ class SnapshotHandler {
992
976
  const hostGlobalSnapshot = getGlobalSnapshotInfoByModuleInfo({
993
977
  name: this.HostInstance.options.name,
994
978
  version: this.HostInstance.options.version
995
- }, {
996
- getModuleInfoHook: (target, key)=>{
997
- const res = this.HostInstance.loaderHook.lifecycle.getModuleInfo.emit({
998
- target,
999
- key
1000
- });
1001
- if (res && !(res instanceof Promise)) {
1002
- return res;
1003
- }
1004
- return;
1005
- }
1006
979
  });
1007
980
  // get remote detail info from global
1008
- const globalRemoteInfo = hostGlobalSnapshot && 'remotesInfo' in hostGlobalSnapshot && hostGlobalSnapshot.remotesInfo && getInfoWithoutType(hostGlobalSnapshot.remotesInfo, moduleInfo.name, (target, key)=>{
1009
- const res = this.HostInstance.loaderHook.lifecycle.getModuleInfo.emit({
1010
- target,
1011
- key
1012
- });
1013
- if (res && !(res instanceof Promise)) {
1014
- return res;
1015
- }
1016
- return;
1017
- }).value;
981
+ const globalRemoteInfo = hostGlobalSnapshot && 'remotesInfo' in hostGlobalSnapshot && hostGlobalSnapshot.remotesInfo && getInfoWithoutType(hostGlobalSnapshot.remotesInfo, moduleInfo.name).value;
1018
982
  if (globalRemoteInfo && globalRemoteInfo.matchedVersion) {
1019
983
  return {
1020
984
  hostGlobalSnapshot,
@@ -1022,17 +986,6 @@ class SnapshotHandler {
1022
986
  remoteSnapshot: getGlobalSnapshotInfoByModuleInfo({
1023
987
  name: moduleInfo.name,
1024
988
  version: globalRemoteInfo.matchedVersion
1025
- }, {
1026
- getModuleInfoHook: (target, key)=>{
1027
- const res = this.HostInstance.loaderHook.lifecycle.getModuleInfo.emit({
1028
- target,
1029
- key
1030
- });
1031
- if (res && !(res instanceof Promise)) {
1032
- return res;
1033
- }
1034
- return;
1035
- }
1036
989
  })
1037
990
  };
1038
991
  }
@@ -1042,17 +995,6 @@ class SnapshotHandler {
1042
995
  remoteSnapshot: getGlobalSnapshotInfoByModuleInfo({
1043
996
  name: moduleInfo.name,
1044
997
  version: 'version' in moduleInfo ? moduleInfo.version : undefined
1045
- }, {
1046
- getModuleInfoHook: (target, key)=>{
1047
- const res = this.HostInstance.loaderHook.lifecycle.getModuleInfo.emit({
1048
- target,
1049
- key
1050
- });
1051
- if (res && !(res instanceof Promise)) {
1052
- return res;
1053
- }
1054
- return;
1055
- }
1056
998
  })
1057
999
  };
1058
1000
  }
@@ -1712,4 +1654,4 @@ function preloadRemote(...args) {
1712
1654
  // Inject for debug
1713
1655
  setGlobalFederationConstructor(FederationHost);
1714
1656
 
1715
- export { FederationHost, getRemoteEntry, getRemoteInfo, init, loadRemote, loadShare, loadShareSync, preloadRemote };
1657
+ export { FederationHost, init, loadRemote, loadShare, loadShareSync, preloadRemote };
package/dist/share.cjs.js CHANGED
@@ -168,29 +168,48 @@ function setGlobalFederationInstance(FederationInstance) {
168
168
  function getGlobalFederationConstructor() {
169
169
  return globalThis.__FEDERATION__.__DEBUG_CONSTRUCTOR__;
170
170
  }
171
- function setGlobalFederationConstructor(FederationConstructor) {
172
- if (isDebugMode()) {
171
+ function setGlobalFederationConstructor(FederationConstructor, isDebug = isDebugMode()) {
172
+ if (isDebug) {
173
173
  globalThis.__FEDERATION__.__DEBUG_CONSTRUCTOR__ = FederationConstructor;
174
174
  globalThis.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = "0.0.9";
175
175
  }
176
176
  }
177
177
  // eslint-disable-next-line @typescript-eslint/ban-types
178
- function getInfoWithoutType(target, key, getModuleInfoHook) {
179
- let res = {
180
- value: target[key],
181
- key: key
182
- };
183
- if (getModuleInfoHook) {
184
- const hookRes = getModuleInfoHook(target, key);
185
- res = hookRes || res;
178
+ function getInfoWithoutType(target, key) {
179
+ if (typeof key === 'string') {
180
+ const keyRes = target[key];
181
+ if (keyRes) {
182
+ return {
183
+ value: target[key],
184
+ key: key
185
+ };
186
+ } else {
187
+ const targetKeys = Object.keys(target);
188
+ for (const targetKey of targetKeys){
189
+ const [targetTypeOrName, _] = targetKey.split(':');
190
+ const nKey = `${targetTypeOrName}:${key}`;
191
+ const typeWithKeyRes = target[nKey];
192
+ if (typeWithKeyRes) {
193
+ return {
194
+ value: typeWithKeyRes,
195
+ key: nKey
196
+ };
197
+ }
198
+ }
199
+ return {
200
+ value: undefined,
201
+ key: key
202
+ };
203
+ }
204
+ } else {
205
+ throw new Error('key must be string');
186
206
  }
187
- return res;
188
207
  }
189
208
  const getGlobalSnapshot = ()=>nativeGlobal.__FEDERATION__.moduleInfo;
190
- const getTargetSnapshotInfoByModuleInfo = (moduleInfo, snapshot, getModuleInfoHook)=>{
209
+ const getTargetSnapshotInfoByModuleInfo = (moduleInfo, snapshot)=>{
191
210
  // Check if the remote is included in the hostSnapshot
192
211
  const moduleKey = getFMId(moduleInfo);
193
- const getModuleInfo = getInfoWithoutType(snapshot, moduleKey, getModuleInfoHook).value;
212
+ const getModuleInfo = getInfoWithoutType(snapshot, moduleKey).value;
194
213
  // The remoteSnapshot might not include a version
195
214
  if (getModuleInfo && !getModuleInfo.version && 'version' in moduleInfo && moduleInfo['version']) {
196
215
  getModuleInfo.version = moduleInfo['version'];
@@ -204,14 +223,14 @@ const getTargetSnapshotInfoByModuleInfo = (moduleInfo, snapshot, getModuleInfoHo
204
223
  "version"
205
224
  ]);
206
225
  const moduleKeyWithoutVersion = getFMId(resModuleInfo);
207
- const getModuleInfoWithoutVersion = getInfoWithoutType(nativeGlobal.__FEDERATION__.moduleInfo, moduleKeyWithoutVersion, getModuleInfoHook).value;
226
+ const getModuleInfoWithoutVersion = getInfoWithoutType(nativeGlobal.__FEDERATION__.moduleInfo, moduleKeyWithoutVersion).value;
208
227
  if ((getModuleInfoWithoutVersion == null ? void 0 : getModuleInfoWithoutVersion.version) === version) {
209
228
  return getModuleInfoWithoutVersion;
210
229
  }
211
230
  }
212
231
  return;
213
232
  };
214
- const getGlobalSnapshotInfoByModuleInfo = (moduleInfo, extraOptions)=>getTargetSnapshotInfoByModuleInfo(moduleInfo, nativeGlobal.__FEDERATION__.moduleInfo, extraOptions == null ? void 0 : extraOptions.getModuleInfoHook);
233
+ const getGlobalSnapshotInfoByModuleInfo = (moduleInfo)=>getTargetSnapshotInfoByModuleInfo(moduleInfo, nativeGlobal.__FEDERATION__.moduleInfo);
215
234
  const setGlobalSnapshotInfoByModuleInfo = (remoteInfo, moduleDetailInfo)=>{
216
235
  const moduleKey = getFMId(remoteInfo);
217
236
  nativeGlobal.__FEDERATION__.moduleInfo[moduleKey] = moduleDetailInfo;
package/dist/share.esm.js CHANGED
@@ -166,29 +166,48 @@ function setGlobalFederationInstance(FederationInstance) {
166
166
  function getGlobalFederationConstructor() {
167
167
  return globalThis.__FEDERATION__.__DEBUG_CONSTRUCTOR__;
168
168
  }
169
- function setGlobalFederationConstructor(FederationConstructor) {
170
- if (isDebugMode()) {
169
+ function setGlobalFederationConstructor(FederationConstructor, isDebug = isDebugMode()) {
170
+ if (isDebug) {
171
171
  globalThis.__FEDERATION__.__DEBUG_CONSTRUCTOR__ = FederationConstructor;
172
172
  globalThis.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = "0.0.9";
173
173
  }
174
174
  }
175
175
  // eslint-disable-next-line @typescript-eslint/ban-types
176
- function getInfoWithoutType(target, key, getModuleInfoHook) {
177
- let res = {
178
- value: target[key],
179
- key: key
180
- };
181
- if (getModuleInfoHook) {
182
- const hookRes = getModuleInfoHook(target, key);
183
- res = hookRes || res;
176
+ function getInfoWithoutType(target, key) {
177
+ if (typeof key === 'string') {
178
+ const keyRes = target[key];
179
+ if (keyRes) {
180
+ return {
181
+ value: target[key],
182
+ key: key
183
+ };
184
+ } else {
185
+ const targetKeys = Object.keys(target);
186
+ for (const targetKey of targetKeys){
187
+ const [targetTypeOrName, _] = targetKey.split(':');
188
+ const nKey = `${targetTypeOrName}:${key}`;
189
+ const typeWithKeyRes = target[nKey];
190
+ if (typeWithKeyRes) {
191
+ return {
192
+ value: typeWithKeyRes,
193
+ key: nKey
194
+ };
195
+ }
196
+ }
197
+ return {
198
+ value: undefined,
199
+ key: key
200
+ };
201
+ }
202
+ } else {
203
+ throw new Error('key must be string');
184
204
  }
185
- return res;
186
205
  }
187
206
  const getGlobalSnapshot = ()=>nativeGlobal.__FEDERATION__.moduleInfo;
188
- const getTargetSnapshotInfoByModuleInfo = (moduleInfo, snapshot, getModuleInfoHook)=>{
207
+ const getTargetSnapshotInfoByModuleInfo = (moduleInfo, snapshot)=>{
189
208
  // Check if the remote is included in the hostSnapshot
190
209
  const moduleKey = getFMId(moduleInfo);
191
- const getModuleInfo = getInfoWithoutType(snapshot, moduleKey, getModuleInfoHook).value;
210
+ const getModuleInfo = getInfoWithoutType(snapshot, moduleKey).value;
192
211
  // The remoteSnapshot might not include a version
193
212
  if (getModuleInfo && !getModuleInfo.version && 'version' in moduleInfo && moduleInfo['version']) {
194
213
  getModuleInfo.version = moduleInfo['version'];
@@ -202,14 +221,14 @@ const getTargetSnapshotInfoByModuleInfo = (moduleInfo, snapshot, getModuleInfoHo
202
221
  "version"
203
222
  ]);
204
223
  const moduleKeyWithoutVersion = getFMId(resModuleInfo);
205
- const getModuleInfoWithoutVersion = getInfoWithoutType(nativeGlobal.__FEDERATION__.moduleInfo, moduleKeyWithoutVersion, getModuleInfoHook).value;
224
+ const getModuleInfoWithoutVersion = getInfoWithoutType(nativeGlobal.__FEDERATION__.moduleInfo, moduleKeyWithoutVersion).value;
206
225
  if ((getModuleInfoWithoutVersion == null ? void 0 : getModuleInfoWithoutVersion.version) === version) {
207
226
  return getModuleInfoWithoutVersion;
208
227
  }
209
228
  }
210
229
  return;
211
230
  };
212
- const getGlobalSnapshotInfoByModuleInfo = (moduleInfo, extraOptions)=>getTargetSnapshotInfoByModuleInfo(moduleInfo, nativeGlobal.__FEDERATION__.moduleInfo, extraOptions == null ? void 0 : extraOptions.getModuleInfoHook);
231
+ const getGlobalSnapshotInfoByModuleInfo = (moduleInfo)=>getTargetSnapshotInfoByModuleInfo(moduleInfo, nativeGlobal.__FEDERATION__.moduleInfo);
213
232
  const setGlobalSnapshotInfoByModuleInfo = (remoteInfo, moduleDetailInfo)=>{
214
233
  const moduleKey = getFMId(remoteInfo);
215
234
  nativeGlobal.__FEDERATION__.moduleInfo[moduleKey] = moduleDetailInfo;
@@ -770,4 +789,4 @@ function getGlobalShareScope() {
770
789
  return Global.__FEDERATION__.__SHARE__;
771
790
  }
772
791
 
773
- export { getGlobalFederationInstance as A, getGlobalFederationConstructor as B, setGlobalFederationInstance as C, DEFAULT_REMOTE_TYPE as D, registerGlobalPlugins as E, nativeGlobal as F, Global as G, resetFederationGlobalInfo as H, getTargetSnapshotInfoByModuleInfo as I, addGlobalSnapshot as J, globalLoading as a, DEFAULT_SCOPE as b, getRemoteEntryExports as c, assert as d, getFMId as e, error as f, getGlobalHostPlugins as g, isPlainObject as h, isObject as i, isRemoteInfoWithEntry as j, isPureRemoteEntry as k, getRegisteredShare as l, getInfoWithoutType as m, getPreloaded as n, setPreloaded as o, getGlobalSnapshotInfoByModuleInfo as p, setGlobalSnapshotInfoByModuleInfo as q, getGlobalSnapshot as r, safeToString as s, getGlobalShareScope as t, formatShareConfigs as u, isBrowserEnv as v, warn as w, getBuilderId as x, addUniqueItem as y, setGlobalFederationConstructor as z };
792
+ export { setGlobalFederationConstructor as A, getGlobalFederationInstance as B, getGlobalFederationConstructor as C, DEFAULT_REMOTE_TYPE as D, setGlobalFederationInstance as E, registerGlobalPlugins as F, Global as G, nativeGlobal as H, resetFederationGlobalInfo as I, getTargetSnapshotInfoByModuleInfo as J, DEFAULT_SCOPE as a, globalLoading as b, getRemoteEntryExports as c, assert as d, getFMId as e, error as f, getGlobalHostPlugins as g, isPlainObject as h, isObject as i, isRemoteInfoWithEntry as j, isPureRemoteEntry as k, getRegisteredShare as l, getInfoWithoutType as m, getPreloaded as n, setPreloaded as o, getGlobalSnapshotInfoByModuleInfo as p, addGlobalSnapshot as q, setGlobalSnapshotInfoByModuleInfo as r, safeToString as s, getGlobalSnapshot as t, getGlobalShareScope as u, formatShareConfigs as v, warn as w, isBrowserEnv as x, getBuilderId as y, addUniqueItem as z };
@@ -69,7 +69,6 @@ export declare class FederationHost {
69
69
  name: string;
70
70
  remoteSnapshot: ModuleInfo;
71
71
  preloadConfig: PreloadRemoteArgs;
72
- origin: FederationHost;
73
72
  }, void>;
74
73
  errorLoadRemote: AsyncHook<[{
75
74
  id: string;
@@ -23,25 +23,14 @@ export declare function resetFederationGlobalInfo(): void;
23
23
  export declare function getGlobalFederationInstance(name: string, version: string | undefined): FederationHost | undefined;
24
24
  export declare function setGlobalFederationInstance(FederationInstance: FederationHost): void;
25
25
  export declare function getGlobalFederationConstructor(): typeof FederationHost | undefined;
26
- export declare function setGlobalFederationConstructor(FederationConstructor: typeof FederationHost): void;
27
- export declare function getInfoWithoutType<T extends object>(target: T, key: keyof T, getModuleInfoHook?: (target: any, key: string | number | symbol) => {
28
- value: any | undefined;
29
- key: string;
30
- } | void): {
26
+ export declare function setGlobalFederationConstructor(FederationConstructor: typeof FederationHost | undefined, isDebug?: boolean): void;
27
+ export declare function getInfoWithoutType<T extends object>(target: T, key: keyof T): {
31
28
  value: T[keyof T] | undefined;
32
29
  key: string;
33
30
  };
34
31
  export declare const getGlobalSnapshot: () => GlobalModuleInfo;
35
- export declare const getTargetSnapshotInfoByModuleInfo: (moduleInfo: Optional<Remote, 'alias'>, snapshot: GlobalModuleInfo, getModuleInfoHook?: ((target: any, key: string | number | symbol) => void | {
36
- value: any | undefined;
37
- key: string;
38
- }) | undefined) => GlobalModuleInfo[string] | undefined;
39
- export declare const getGlobalSnapshotInfoByModuleInfo: (moduleInfo: Optional<Remote, 'alias'>, extraOptions?: {
40
- getModuleInfoHook?: ((target: any, key: string | number | symbol) => void | {
41
- value: any | undefined;
42
- key: string;
43
- }) | undefined;
44
- } | undefined) => GlobalModuleInfo[string] | undefined;
32
+ export declare const getTargetSnapshotInfoByModuleInfo: (moduleInfo: Optional<Remote, 'alias'>, snapshot: GlobalModuleInfo) => GlobalModuleInfo[string] | undefined;
33
+ export declare const getGlobalSnapshotInfoByModuleInfo: (moduleInfo: Optional<Remote, 'alias'>) => GlobalModuleInfo[string] | undefined;
45
34
  export declare const setGlobalSnapshotInfoByModuleInfo: (remoteInfo: Remote, moduleDetailInfo: GlobalModuleInfo[string]) => GlobalModuleInfo;
46
35
  export declare const addGlobalSnapshot: (moduleInfos: GlobalModuleInfo) => (() => void);
47
36
  export declare const getRemoteEntryExports: (name: string, globalName: string | undefined) => {
@@ -2,7 +2,6 @@ import { FederationHost } from './core';
2
2
  import { UserOptions, FederationRuntimePlugin } from './type';
3
3
  export { FederationHost } from './core';
4
4
  export { registerGlobalPlugins } from './global';
5
- export { getRemoteEntry, getRemoteInfo } from './utils';
6
5
  export { loadScript } from '@module-federation/sdk';
7
6
  export type { Federation } from './global';
8
7
  export type { FederationRuntimePlugin };
@@ -38,12 +38,12 @@ type SharedBaseArgs = {
38
38
  deps?: Array<string>;
39
39
  strategy?: 'version-first' | 'loaded-first';
40
40
  };
41
+ export type SharedGetter = (() => () => Module) | (() => Promise<() => Module>);
41
42
  export type ShareArgs = (SharedBaseArgs & {
42
- get: () => () => Module | Promise<() => Module>;
43
+ get: SharedGetter;
43
44
  }) | (SharedBaseArgs & {
44
45
  lib: () => Module;
45
46
  });
46
- export type SharedGetter = () => () => Promise<() => Module> | Module;
47
47
  export type Shared = {
48
48
  version: string;
49
49
  get: SharedGetter;
@@ -3,4 +3,3 @@ export * from './tool';
3
3
  export * from './manifest';
4
4
  export * from './logger';
5
5
  export * from './plugin';
6
- export * from './load';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@module-federation/runtime",
3
- "version": "0.0.0-next-20240122033350",
3
+ "version": "0.0.0-next-20240122072901",
4
4
  "author": "zhouxiao <codingzx@gmail.com>",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.esm.js",
@@ -45,6 +45,6 @@
45
45
  }
46
46
  },
47
47
  "dependencies": {
48
- "@module-federation/sdk": "0.0.0-next-20240122033350"
48
+ "@module-federation/sdk": "0.0.0-next-20240122072901"
49
49
  }
50
50
  }