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