Skip to content

Commit 8e82836

Browse files
fix(mf): restore layer runtime validation and remote wiring
Reinstate legacy share-scope validation and restore the enhanced runtime metadata paths needed for layered consume and module remote resolution. Made-with: Cursor
1 parent 8d0c4a9 commit 8e82836

File tree

2 files changed

+52
-3
lines changed

2 files changed

+52
-3
lines changed

packages/rspack/src/runtime/moduleFederationDefaultRuntime.js

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,47 @@ export default function () {
6767
early(
6868
__webpack_require__.federation,
6969
'consumesLoadingModuleToHandlerMapping',
70-
() => ({}),
70+
() => {
71+
const consumesLoadingModuleToHandlerMapping = {};
72+
for (let [moduleId, data] of Object.entries(
73+
consumesLoadingModuleToConsumeDataMapping,
74+
)) {
75+
consumesLoadingModuleToHandlerMapping[moduleId] = {
76+
getter: sharedFallback
77+
? __webpack_require__.federation.bundlerRuntime?.getSharedFallbackGetter(
78+
{
79+
shareKey: data.shareKey,
80+
factory: data.fallback,
81+
webpackRequire: __webpack_require__,
82+
libraryType: __webpack_require__.federation.libraryType,
83+
},
84+
)
85+
: data.fallback,
86+
treeShakingGetter: sharedFallback ? data.fallback : undefined,
87+
shareInfo: {
88+
shareConfig: {
89+
fixedDependencies: false,
90+
requiredVersion: data.requiredVersion,
91+
strictVersion: data.strictVersion,
92+
singleton: data.singleton,
93+
eager: data.eager,
94+
layer: data.layer,
95+
},
96+
scope: Array.isArray(data.shareScope)
97+
? data.shareScope
98+
: [data.shareScope || 'default'],
99+
},
100+
shareKey: data.shareKey,
101+
treeShaking: __webpack_require__.federation.sharedFallback
102+
? {
103+
get: data.fallback,
104+
mode: data.treeShakingMode,
105+
}
106+
: undefined,
107+
};
108+
}
109+
return consumesLoadingModuleToHandlerMapping;
110+
},
71111
);
72112
early(__webpack_require__.federation, 'initOptions', () => ({}));
73113
early(
@@ -196,8 +236,9 @@ export default function () {
196236
for (let [id, remoteData] of Object.entries(
197237
remotesLoadingModuleIdToRemoteDataMapping,
198238
)) {
199-
const info =
200-
__module_federation_remote_infos__[remoteData.remoteName];
239+
const info = remoteData.remoteInfo
240+
? [remoteData.remoteInfo]
241+
: __module_federation_remote_infos__[remoteData.remoteName];
201242
if (info) idToRemoteMap[id] = info;
202243
}
203244
return idToRemoteMap;

packages/rspack/src/sharing/SharePlugin.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,14 @@ export class SharePlugin {
138138
constructor(options: SharePluginOptions) {
139139
const enhanced = options.enhanced ?? false;
140140
const sharedOptions = normalizeSharedOptions(options.shared);
141+
if (options.shareScope) {
142+
validateShareScope(options.shareScope, enhanced, 'SharePlugin');
143+
}
144+
for (const [, config] of sharedOptions) {
145+
if (config.shareScope) {
146+
validateShareScope(config.shareScope, enhanced, 'SharePlugin');
147+
}
148+
}
141149
const consumes = createConsumeShareOptions(sharedOptions, enhanced);
142150
const provides = createProvideShareOptions(sharedOptions, enhanced);
143151
this._shareScope = options.shareScope;

0 commit comments

Comments
 (0)