Skip to content

Commit 05c43f3

Browse files
authored
feat: support pass shareScopeMap (#2583)
1 parent 74f2868 commit 05c43f3

File tree

6 files changed

+22
-8
lines changed

6 files changed

+22
-8
lines changed

.changeset/silver-dolphins-relate.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@module-federation/webpack-bundler-runtime': patch
3+
'@module-federation/runtime': patch
4+
---
5+
6+
feat: support pass shareScopeMap

packages/runtime/src/core.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,9 @@ export class FederationHost {
204204
initShareScopeMap(
205205
scopeName: string,
206206
shareScope: ShareScopeMap[string],
207+
extraOptions: { hostShareScopeMap?: ShareScopeMap } = {},
207208
): void {
208-
this.sharedHandler.initShareScopeMap(scopeName, shareScope);
209+
this.sharedHandler.initShareScopeMap(scopeName, shareScope, extraOptions);
209210
}
210211

211212
private formatOptions(

packages/runtime/src/module/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,16 +84,16 @@ class Module {
8484
};
8585

8686
// Help to find host instance
87-
Object.defineProperty(remoteEntryInitOptions, 'hostId', {
88-
value: this.host.options.id || this.host.name,
87+
Object.defineProperty(remoteEntryInitOptions, 'shareScopeMap', {
88+
value: localShareScopeMap,
8989
// remoteEntryInitOptions will be traversed and assigned during container init, ,so this attribute is not allowed to be traversed
9090
enumerable: false,
9191
});
9292

9393
const initContainerOptions =
9494
await this.host.hooks.lifecycle.beforeInitContainer.emit({
9595
shareScope,
96-
// @ts-ignore hostId will be set by Object.defineProperty
96+
// @ts-ignore shareScopeMap will be set by Object.defineProperty
9797
remoteEntryInitOptions,
9898
initScope,
9999
remoteInfo: this.remoteInfo,

packages/runtime/src/shared/index.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,13 @@ export class SharedHandler {
4646
resolver: () => Shared | undefined;
4747
}>('resolveShare'),
4848
// maybe will change, temporarily for internal use only
49-
initContainerShareScopeMap: new AsyncWaterfallHook<{
49+
initContainerShareScopeMap: new SyncWaterfallHook<{
5050
shareScope: ShareScopeMap[string];
5151
options: Options;
5252
origin: FederationHost;
53-
}>('initContainer'),
53+
scopeName: string;
54+
hostShareScopeMap?: ShareScopeMap;
55+
}>('initContainerShareScopeMap'),
5456
});
5557

5658
constructor(host: FederationHost) {
@@ -414,13 +416,16 @@ export class SharedHandler {
414416
initShareScopeMap(
415417
scopeName: string,
416418
shareScope: ShareScopeMap[string],
419+
extraOptions: { hostShareScopeMap?: ShareScopeMap } = {},
417420
): void {
418421
const { host } = this;
419422
this.shareScopeMap[scopeName] = shareScope;
420423
this.hooks.lifecycle.initContainerShareScopeMap.emit({
421424
shareScope,
422425
options: host.options,
423426
origin: host,
427+
scopeName,
428+
hostShareScopeMap: extraOptions.hostShareScopeMap,
424429
});
425430
}
426431

packages/runtime/src/type/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ export type LoadModuleOptions = {
125125
// Only for legacy federation provider
126126
export type RemoteEntryInitOptions = {
127127
version: string;
128-
hostId: string;
128+
shareScopeMap: ShareScopeMap;
129129
};
130130

131131
export type InitScope = Array<Record<string, never>>;

packages/webpack-bundler-runtime/src/initContainerEntry.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ export function initContainerEntry(
2626
...remoteEntryInitOptions,
2727
});
2828

29-
federationInstance.initShareScopeMap(name, shareScope);
29+
federationInstance.initShareScopeMap(name, shareScope, {
30+
hostShareScopeMap: remoteEntryInitOptions?.shareScopeMap || {},
31+
});
3032

3133
if (webpackRequire.federation.attachShareScopeMap) {
3234
webpackRequire.federation.attachShareScopeMap(webpackRequire);

0 commit comments

Comments
 (0)