Skip to content

Commit eee661a

Browse files
feat(enhanced): add filter option for shared modules
1 parent 8795e10 commit eee661a

24 files changed

+1611
-8189
lines changed

packages/enhanced/src/declarations/plugins/sharing/ProvideSharedPlugin.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,10 @@ export interface ProvidesConfig {
7272
* The actual request to use for importing the module. If not specified, the property name/key will be used.
7373
*/
7474
request?: string;
75+
/**
76+
* Filter for the shared module.
77+
*/
78+
filter?: {
79+
request?: RegExp;
80+
};
7581
}

packages/enhanced/src/declarations/plugins/sharing/SharePlugin.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,10 @@ export interface SharedConfig {
8787
* The actual request to use for importing the module. Defaults to the property name.
8888
*/
8989
request?: string;
90+
/**
91+
* Filter for the shared module.
92+
*/
93+
filter?: {
94+
request?: RegExp;
95+
};
9096
}

packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,8 @@ class ConsumeSharedPlugin {
337337
if (
338338
options.filter &&
339339
options.filter.request &&
340-
!options.filter.request.test(remainder)
340+
// Skip if the remainder DOES match the filter
341+
options.filter.request.test(remainder)
341342
) {
342343
continue;
343344
}

packages/enhanced/src/lib/sharing/ProvideSharedPlugin.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ class ProvideSharedPlugin {
9393
singleton: false,
9494
layer: undefined,
9595
request: item,
96+
filter: undefined,
9697
};
9798
return result;
9899
},
@@ -108,6 +109,7 @@ class ProvideSharedPlugin {
108109
singleton: !!item.singleton,
109110
layer: item.layer,
110111
request,
112+
filter: item.filter,
111113
};
112114
},
113115
);
@@ -231,6 +233,13 @@ class ProvideSharedPlugin {
231233
const lookup = config.request || prefix;
232234
if (request.startsWith(lookup) && resource) {
233235
const remainder = request.slice(lookup.length);
236+
if (
237+
config.filter &&
238+
config.filter.request &&
239+
config.filter.request.test(remainder)
240+
) {
241+
continue;
242+
}
234243
provideSharedModule(
235244
resource,
236245
{

packages/enhanced/src/lib/sharing/SharePlugin.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,25 @@ import type {
1616
import type { ConsumesConfig } from '../../declarations/plugins/sharing/ConsumeSharedPlugin';
1717
import type { ProvidesConfig } from '../../declarations/plugins/sharing/ProvideSharedPlugin';
1818
import { getWebpackPath } from '@module-federation/sdk/normalize-webpack-path';
19+
import { createSchemaValidation } from '../../utils';
20+
21+
const validate = createSchemaValidation(
22+
// eslint-disable-next-line @typescript-eslint/no-var-requires
23+
require('../../schemas/sharing/SharePlugin.check.js').validate,
24+
() => require('../../schemas/sharing/SharePlugin').default,
25+
{
26+
name: 'Share Plugin',
27+
baseDataPath: 'options',
28+
},
29+
);
1930

2031
class SharePlugin {
2132
private _shareScope: string | string[];
2233
private _consumes: Record<string, ConsumesConfig>[];
2334
private _provides: Record<string, ProvidesConfig>[];
2435

2536
constructor(options: SharePluginOptions) {
37+
validate(options);
2638
const sharedOptions: [string, SharedConfig][] = parseOptions(
2739
options.shared,
2840
(item, key) => {
@@ -54,6 +66,7 @@ class SharePlugin {
5466
eager: options.eager,
5567
issuerLayer: options.issuerLayer,
5668
layer: options.layer,
69+
filter: options.filter,
5770
request: options.request || key,
5871
},
5972
}),
@@ -71,6 +84,7 @@ class SharePlugin {
7184
singleton: options.singleton,
7285
layer: options.layer,
7386
request: options.request || options.import || key,
87+
filter: options.filter,
7488
},
7589
}));
7690

0 commit comments

Comments
 (0)