@module-federation/runtime-core 0.0.0-feat-shared-treeshake-poc-20251230095050 → 0.0.0-feat-shared-treeshake-poc-20260112031921

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
@@ -200,7 +200,7 @@ function getGlobalFederationConstructor() {
200
200
  function setGlobalFederationConstructor(FederationConstructor, isDebug = isDebugMode()) {
201
201
  if (isDebug) {
202
202
  CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR__ = FederationConstructor;
203
- CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = "0.0.0-feat-shared-treeshake-poc-20251230095050";
203
+ CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = "0.0.0-feat-shared-treeshake-poc-20260112031921";
204
204
  }
205
205
  }
206
206
  // eslint-disable-next-line @typescript-eslint/ban-types
@@ -807,8 +807,8 @@ function formatShare(shareArgs, from, name, shareStrategy) {
807
807
  throw new Error(`Can not get shared '${name}'!`);
808
808
  });
809
809
  }
810
- if (shareArgs.shareConfig?.eager && shareArgs.treeshake) {
811
- throw new Error('Can not set "eager:true" and "treeshake" at the same time!');
810
+ if (shareArgs.shareConfig?.eager && shareArgs.treeShaking) {
811
+ throw new Error('Can not set "eager:true" and "treeShaking" at the same time!');
812
812
  }
813
813
  return {
814
814
  deps: [],
@@ -830,11 +830,11 @@ function formatShare(shareArgs, from, name, shareStrategy) {
830
830
  ? shareArgs.scope
831
831
  : [shareArgs.scope ?? 'default'],
832
832
  strategy: (shareArgs.strategy ?? shareStrategy) || 'version-first',
833
- treeshake: shareArgs.treeshake
833
+ treeShaking: shareArgs.treeShaking
834
834
  ? {
835
- ...shareArgs.treeshake,
836
- strategy: shareArgs.treeshake.strategy ?? 'server',
837
- status: shareArgs.treeshake.status ?? 1 /* TreeshakeStatus.UNKNOWN */,
835
+ ...shareArgs.treeShaking,
836
+ strategy: shareArgs.treeShaking.strategy ?? 'server',
837
+ status: shareArgs.treeShaking.status ?? 1 /* TreeShakingStatus.UNKNOWN */,
838
838
  useIn: [],
839
839
  }
840
840
  : undefined,
@@ -869,22 +869,22 @@ function formatShareConfigs(prevOptions, newOptions) {
869
869
  });
870
870
  return { allShareInfos, newShareInfos };
871
871
  }
872
- function shouldUseTreeshake(treeshake, usedExports) {
873
- if (!treeshake) {
872
+ function shouldUseTreeShaking(treeShaking, usedExports) {
873
+ if (!treeShaking) {
874
874
  return false;
875
875
  }
876
- const { status, strategy } = treeshake;
877
- if (status === 0 /* TreeshakeStatus.NO_USE */) {
876
+ const { status, strategy } = treeShaking;
877
+ if (status === 0 /* TreeShakingStatus.NO_USE */) {
878
878
  return false;
879
879
  }
880
- if (status === 2 /* TreeshakeStatus.CALCULATED */) {
880
+ if (status === 2 /* TreeShakingStatus.CALCULATED */) {
881
881
  return true;
882
882
  }
883
883
  if (strategy === 'infer') {
884
884
  if (!usedExports) {
885
885
  return true;
886
886
  }
887
- return isMatchUsedExports(treeshake, usedExports);
887
+ return isMatchUsedExports(treeShaking, usedExports);
888
888
  }
889
889
  return false;
890
890
  }
@@ -936,76 +936,76 @@ const isLoaded = (shared) => {
936
936
  const isLoading = (shared) => {
937
937
  return Boolean(shared.loading);
938
938
  };
939
- const isMatchUsedExports = (treeshake, usedExports) => {
940
- if (!treeshake || !usedExports) {
939
+ const isMatchUsedExports = (treeShaking, usedExports) => {
940
+ if (!treeShaking || !usedExports) {
941
941
  return false;
942
942
  }
943
- const { usedExports: treeshakeUsedExports } = treeshake;
944
- if (!treeshakeUsedExports) {
943
+ const { usedExports: treeShakingUsedExports } = treeShaking;
944
+ if (!treeShakingUsedExports) {
945
945
  return false;
946
946
  }
947
- if (usedExports.every((e) => treeshakeUsedExports.includes(e))) {
947
+ if (usedExports.every((e) => treeShakingUsedExports.includes(e))) {
948
948
  return true;
949
949
  }
950
950
  return false;
951
951
  };
952
- function findSingletonVersionOrderByVersion(shareScopeMap, scope, pkgName, treeshake) {
952
+ function findSingletonVersionOrderByVersion(shareScopeMap, scope, pkgName, treeShaking) {
953
953
  const versions = shareScopeMap[scope][pkgName];
954
954
  let version = '';
955
- let useTreeshake = shouldUseTreeshake(treeshake);
955
+ let useTreesShaking = shouldUseTreeShaking(treeShaking);
956
956
  // return false means use prev version
957
957
  const callback = function (prev, cur) {
958
- if (useTreeshake) {
959
- if (!versions[prev].treeshake) {
958
+ if (useTreesShaking) {
959
+ if (!versions[prev].treeShaking) {
960
960
  return true;
961
961
  }
962
- if (!versions[cur].treeshake) {
962
+ if (!versions[cur].treeShaking) {
963
963
  return false;
964
964
  }
965
- return !isLoaded(versions[prev].treeshake) && versionLt(prev, cur);
965
+ return !isLoaded(versions[prev].treeShaking) && versionLt(prev, cur);
966
966
  }
967
967
  return !isLoaded(versions[prev]) && versionLt(prev, cur);
968
968
  };
969
- if (useTreeshake) {
969
+ if (useTreesShaking) {
970
970
  version = findVersion(shareScopeMap[scope][pkgName], callback);
971
971
  if (version) {
972
972
  return {
973
973
  version,
974
- useTreeshake,
974
+ useTreesShaking,
975
975
  };
976
976
  }
977
- useTreeshake = false;
977
+ useTreesShaking = false;
978
978
  }
979
979
  return {
980
980
  version: findVersion(shareScopeMap[scope][pkgName], callback),
981
- useTreeshake,
981
+ useTreesShaking,
982
982
  };
983
983
  }
984
984
  const isLoadingOrLoaded = (shared) => {
985
985
  return isLoaded(shared) || isLoading(shared);
986
986
  };
987
- function findSingletonVersionOrderByLoaded(shareScopeMap, scope, pkgName, treeshake) {
987
+ function findSingletonVersionOrderByLoaded(shareScopeMap, scope, pkgName, treeShaking) {
988
988
  const versions = shareScopeMap[scope][pkgName];
989
989
  let version = '';
990
- let useTreeshake = shouldUseTreeshake(treeshake);
990
+ let useTreesShaking = shouldUseTreeShaking(treeShaking);
991
991
  // return false means use prev version
992
992
  const callback = function (prev, cur) {
993
- if (useTreeshake) {
994
- if (!versions[prev].treeshake) {
993
+ if (useTreesShaking) {
994
+ if (!versions[prev].treeShaking) {
995
995
  return true;
996
996
  }
997
- if (!versions[cur].treeshake) {
997
+ if (!versions[cur].treeShaking) {
998
998
  return false;
999
999
  }
1000
- if (isLoadingOrLoaded(versions[cur].treeshake)) {
1001
- if (isLoadingOrLoaded(versions[prev].treeshake)) {
1000
+ if (isLoadingOrLoaded(versions[cur].treeShaking)) {
1001
+ if (isLoadingOrLoaded(versions[prev].treeShaking)) {
1002
1002
  return Boolean(versionLt(prev, cur));
1003
1003
  }
1004
1004
  else {
1005
1005
  return true;
1006
1006
  }
1007
1007
  }
1008
- if (isLoadingOrLoaded(versions[prev].treeshake)) {
1008
+ if (isLoadingOrLoaded(versions[prev].treeShaking)) {
1009
1009
  return false;
1010
1010
  }
1011
1011
  }
@@ -1022,19 +1022,19 @@ function findSingletonVersionOrderByLoaded(shareScopeMap, scope, pkgName, treesh
1022
1022
  }
1023
1023
  return versionLt(prev, cur);
1024
1024
  };
1025
- if (useTreeshake) {
1025
+ if (useTreesShaking) {
1026
1026
  version = findVersion(shareScopeMap[scope][pkgName], callback);
1027
1027
  if (version) {
1028
1028
  return {
1029
1029
  version,
1030
- useTreeshake,
1030
+ useTreesShaking,
1031
1031
  };
1032
1032
  }
1033
- useTreeshake = false;
1033
+ useTreesShaking = false;
1034
1034
  }
1035
1035
  return {
1036
1036
  version: findVersion(shareScopeMap[scope][pkgName], callback),
1037
- useTreeshake,
1037
+ useTreesShaking,
1038
1038
  };
1039
1039
  }
1040
1040
  function getFindShareFunction(strategy) {
@@ -1047,7 +1047,7 @@ function getRegisteredShare(localShareScopeMap, pkgName, shareInfo, resolveShare
1047
1047
  if (!localShareScopeMap) {
1048
1048
  return;
1049
1049
  }
1050
- const { shareConfig, scope = DEFAULT_SCOPE, strategy, treeshake } = shareInfo;
1050
+ const { shareConfig, scope = DEFAULT_SCOPE, strategy, treeShaking, } = shareInfo;
1051
1051
  const scopes = Array.isArray(scope) ? scope : [scope];
1052
1052
  for (const sc of scopes) {
1053
1053
  if (shareConfig &&
@@ -1055,7 +1055,7 @@ function getRegisteredShare(localShareScopeMap, pkgName, shareInfo, resolveShare
1055
1055
  localShareScopeMap[sc][pkgName]) {
1056
1056
  const { requiredVersion } = shareConfig;
1057
1057
  const findShareFunction = getFindShareFunction(strategy);
1058
- const { version: maxOrSingletonVersion, useTreeshake } = findShareFunction(localShareScopeMap, sc, pkgName, treeshake);
1058
+ const { version: maxOrSingletonVersion, useTreesShaking } = findShareFunction(localShareScopeMap, sc, pkgName, treeShaking);
1059
1059
  const defaultResolver = () => {
1060
1060
  const shared = localShareScopeMap[sc][pkgName][maxOrSingletonVersion];
1061
1061
  if (shareConfig.singleton) {
@@ -1071,32 +1071,32 @@ function getRegisteredShare(localShareScopeMap, pkgName, shareInfo, resolveShare
1071
1071
  }
1072
1072
  return {
1073
1073
  shared,
1074
- useTreeshake,
1074
+ useTreesShaking,
1075
1075
  };
1076
1076
  }
1077
1077
  else {
1078
1078
  if (requiredVersion === false || requiredVersion === '*') {
1079
1079
  return {
1080
1080
  shared,
1081
- useTreeshake,
1081
+ useTreesShaking,
1082
1082
  };
1083
1083
  }
1084
1084
  if (satisfy(maxOrSingletonVersion, requiredVersion)) {
1085
1085
  return {
1086
1086
  shared,
1087
- useTreeshake,
1087
+ useTreesShaking,
1088
1088
  };
1089
1089
  }
1090
- const _usedTreeshake = shouldUseTreeshake(treeshake);
1091
- if (_usedTreeshake) {
1090
+ const _usedTreeShaking = shouldUseTreeShaking(treeShaking);
1091
+ if (_usedTreeShaking) {
1092
1092
  for (const [versionKey, versionValue] of Object.entries(localShareScopeMap[sc][pkgName])) {
1093
- if (!shouldUseTreeshake(versionValue.treeshake, treeshake?.usedExports)) {
1093
+ if (!shouldUseTreeShaking(versionValue.treeShaking, treeShaking?.usedExports)) {
1094
1094
  continue;
1095
1095
  }
1096
1096
  if (satisfy(versionKey, requiredVersion)) {
1097
1097
  return {
1098
1098
  shared: versionValue,
1099
- useTreeshake: _usedTreeshake,
1099
+ useTreesShaking: _usedTreeShaking,
1100
1100
  };
1101
1101
  }
1102
1102
  }
@@ -1105,7 +1105,7 @@ function getRegisteredShare(localShareScopeMap, pkgName, shareInfo, resolveShare
1105
1105
  if (satisfy(versionKey, requiredVersion)) {
1106
1106
  return {
1107
1107
  shared: versionValue,
1108
- useTreeshake: false,
1108
+ useTreesShaking: false,
1109
1109
  };
1110
1110
  }
1111
1111
  }
@@ -1141,7 +1141,7 @@ function getTargetSharedOptions(options) {
1141
1141
  });
1142
1142
  const callback = function (prev, cur) {
1143
1143
  return (
1144
- // TODO: consider multiple treeshake shared scenes
1144
+ // TODO: consider multiple treeShaking shared scenes
1145
1145
  !isLoaded(shareVersionMap[prev]) && versionLt(prev, cur));
1146
1146
  };
1147
1147
  const maxVersion = findVersion(shareVersionMap, callback);
@@ -1176,9 +1176,9 @@ const addUseIn = (shared, from) => {
1176
1176
  }
1177
1177
  addUniqueItem(shared.useIn, from);
1178
1178
  };
1179
- function directShare(shared, useTreeshake) {
1180
- if (useTreeshake && shared.treeshake) {
1181
- return shared.treeshake;
1179
+ function directShare(shared, useTreesShaking) {
1180
+ if (useTreesShaking && shared.treeShaking) {
1181
+ return shared.treeShaking;
1182
1182
  }
1183
1183
  return shared;
1184
1184
  }
@@ -2597,9 +2597,9 @@ class SharedHandler {
2597
2597
  const { shareInfo: shareOptionsRes } = loadShareRes;
2598
2598
  // Assert that shareInfoRes exists, if not, throw an error
2599
2599
  assert(shareOptionsRes, `Cannot find ${pkgName} Share in the ${host.options.name}. Please ensure that the ${pkgName} Share parameters have been injected`);
2600
- const { shared: registeredShared, useTreeshake } = getRegisteredShare(this.shareScopeMap, pkgName, shareOptionsRes, this.hooks.lifecycle.resolveShare) || {};
2600
+ const { shared: registeredShared, useTreesShaking } = getRegisteredShare(this.shareScopeMap, pkgName, shareOptionsRes, this.hooks.lifecycle.resolveShare) || {};
2601
2601
  if (registeredShared) {
2602
- const targetShared = directShare(registeredShared, useTreeshake);
2602
+ const targetShared = directShare(registeredShared, useTreesShaking);
2603
2603
  if (targetShared.lib) {
2604
2604
  addUseIn(targetShared, host.options.name);
2605
2605
  return targetShared.lib;
@@ -2629,7 +2629,9 @@ class SharedHandler {
2629
2629
  from: host.options.name,
2630
2630
  lib: null,
2631
2631
  loading,
2632
- treeshake: useTreeshake ? targetShared : undefined,
2632
+ treeShaking: useTreesShaking
2633
+ ? targetShared
2634
+ : undefined,
2633
2635
  });
2634
2636
  return loading;
2635
2637
  }
@@ -2638,16 +2640,16 @@ class SharedHandler {
2638
2640
  if (extraOptions?.customShareInfo) {
2639
2641
  return false;
2640
2642
  }
2641
- const _useTreeshake = shouldUseTreeshake(shareOptionsRes.treeshake);
2642
- const targetShared = directShare(shareOptionsRes, _useTreeshake);
2643
+ const _useTreeShaking = shouldUseTreeShaking(shareOptionsRes.treeShaking);
2644
+ const targetShared = directShare(shareOptionsRes, _useTreeShaking);
2643
2645
  const asyncLoadProcess = async () => {
2644
2646
  const factory = await targetShared.get();
2645
2647
  targetShared.lib = factory;
2646
2648
  targetShared.loaded = true;
2647
2649
  addUseIn(targetShared, host.options.name);
2648
- const { shared: gShared, useTreeshake: gUseTreeshake } = getRegisteredShare(this.shareScopeMap, pkgName, shareOptionsRes, this.hooks.lifecycle.resolveShare) || {};
2650
+ const { shared: gShared, useTreesShaking: gUseTreeShaking } = getRegisteredShare(this.shareScopeMap, pkgName, shareOptionsRes, this.hooks.lifecycle.resolveShare) || {};
2649
2651
  if (gShared) {
2650
- const targetGShared = directShare(gShared, gUseTreeshake);
2652
+ const targetGShared = directShare(gShared, gUseTreeShaking);
2651
2653
  targetGShared.lib = factory;
2652
2654
  targetGShared.loaded = true;
2653
2655
  gShared.from = shareOptionsRes.from;
@@ -2662,7 +2664,9 @@ class SharedHandler {
2662
2664
  from: host.options.name,
2663
2665
  lib: null,
2664
2666
  loading,
2665
- treeshake: _useTreeshake ? targetShared : undefined,
2667
+ treeShaking: _useTreeShaking
2668
+ ? targetShared
2669
+ : undefined,
2666
2670
  });
2667
2671
  return loading;
2668
2672
  }
@@ -2782,7 +2786,7 @@ class SharedHandler {
2782
2786
  this.initializeSharing(shareScope, { strategy: shareOptions.strategy });
2783
2787
  });
2784
2788
  }
2785
- const { shared: registeredShared, useTreeshake } = getRegisteredShare(this.shareScopeMap, pkgName, shareOptions, this.hooks.lifecycle.resolveShare) || {};
2789
+ const { shared: registeredShared, useTreesShaking } = getRegisteredShare(this.shareScopeMap, pkgName, shareOptions, this.hooks.lifecycle.resolveShare) || {};
2786
2790
  if (registeredShared) {
2787
2791
  if (typeof registeredShared.lib === 'function') {
2788
2792
  addUseIn(registeredShared, host.options.name);
@@ -2841,39 +2845,6 @@ class SharedHandler {
2841
2845
  }
2842
2846
  initShareScopeMap(scopeName, shareScope, extraOptions = {}) {
2843
2847
  const { host } = this;
2844
- // const existedShareScope = this.shareScopeMap[scopeName];
2845
- // if (existedShareScope) {
2846
- // Object.entries(shareScope).forEach(([pkgName, newVersions]) => {
2847
- // const existedShareMap = existedShareScope[pkgName];
2848
- // if (!existedShareMap) {
2849
- // return;
2850
- // }
2851
- // Object.entries(existedShareMap).forEach(([version, existedShared]) => {
2852
- // if (!shareScope[pkgName][version]) {
2853
- // shareScope[pkgName][version] = existedShared;
2854
- // }
2855
- // // const newShared = newVersions[version];
2856
- // // if (
2857
- // // newShared &&
2858
- // // newShared.treeshakeStatus === TreeshakeStatus.UNKNOWN &&
2859
- // // newShared.usedExports &&
2860
- // // existedShared.usedExports &&
2861
- // // existedShared.usedExports.some(
2862
- // // (exportName) => !newShared.usedExports?.includes(exportName),
2863
- // // )
2864
- // // ) {
2865
- // // newShared.treeshakeStatus = TreeshakeStatus.NO_USE;
2866
- // // newShared._noMatchedUsedExports =
2867
- // // existedShared._noMatchedUsedExports || [];
2868
- // // const item: NoMatchedUsedExportsItem = [existedShared.from];
2869
- // // if (isDebugMode() && existedShared.usedExports) {
2870
- // // item.push(existedShared.usedExports);
2871
- // // }
2872
- // // newShared._noMatchedUsedExports.push(item);
2873
- // // }
2874
- // });
2875
- // });
2876
- // }
2877
2848
  this.shareScopeMap[scopeName] = shareScope;
2878
2849
  this.hooks.lifecycle.initContainerShareScopeMap.emit({
2879
2850
  shareScope,
@@ -2883,7 +2854,7 @@ class SharedHandler {
2883
2854
  hostShareScopeMap: extraOptions.hostShareScopeMap,
2884
2855
  });
2885
2856
  }
2886
- setShared({ pkgName, shared, from, lib, loading, loaded, get, treeshake, }) {
2857
+ setShared({ pkgName, shared, from, lib, loading, loaded, get, treeShaking, }) {
2887
2858
  const { version, scope = 'default', ...shareInfo } = shared;
2888
2859
  const scopes = Array.isArray(scope) ? scope : [scope];
2889
2860
  const mergeAttrs = (shared) => {
@@ -2892,7 +2863,7 @@ class SharedHandler {
2892
2863
  s[key] = val;
2893
2864
  }
2894
2865
  };
2895
- const targetShared = (treeshake ? shared.treeshake : shared);
2866
+ const targetShared = (treeShaking ? shared.treeShaking : shared);
2896
2867
  merge(targetShared, 'loaded', loaded);
2897
2868
  merge(targetShared, 'loading', loading);
2898
2869
  merge(targetShared, 'get', get);
@@ -3290,7 +3261,7 @@ class ModuleFederation {
3290
3261
  // maybe will change, temporarily for internal use only
3291
3262
  initContainer: new AsyncWaterfallHook('initContainer'),
3292
3263
  });
3293
- this.version = "0.0.0-feat-shared-treeshake-poc-20251230095050";
3264
+ this.version = "0.0.0-feat-shared-treeshake-poc-20260112031921";
3294
3265
  this.moduleCache = new Map();
3295
3266
  this.loaderHook = new PluginSystem({
3296
3267
  // FIXME: may not be suitable , not open to the public yet