Skip to content

Commit 2fc6497

Browse files
fix(enhanced): schema validation
1 parent ee0726d commit 2fc6497

25 files changed

+5350
-4621
lines changed

packages/enhanced/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@
9797
"@module-federation/runtime-tools": "workspace:*",
9898
"@module-federation/sdk": "workspace:*",
9999
"btoa": "^1.2.1",
100-
"upath": "2.0.1"
100+
"upath": "2.0.1",
101+
"schema-utils": "^4.3.0"
101102
}
102103
}

packages/enhanced/src/lib/container/ModuleFederationPlugin.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { RemoteEntryPlugin } from './runtime/RemoteEntryPlugin';
2323
import { ExternalsType } from 'webpack/declarations/WebpackOptions';
2424
import StartupChunkDependenciesPlugin from '../startup/MfStartupChunkDependenciesPlugin';
2525
import FederationModulesPlugin from './runtime/FederationModulesPlugin';
26+
import { createSchemaValidation } from '../../utils';
2627

2728
const isValidExternalsType = require(
2829
normalizeWebpackPath(
@@ -34,13 +35,24 @@ const { ExternalsPlugin } = require(
3435
normalizeWebpackPath('webpack'),
3536
) as typeof import('webpack');
3637

38+
const validate = createSchemaValidation(
39+
//eslint-disable-next-line
40+
require('../../schemas/container/ModuleFederationPlugin.check.js').validate,
41+
() => require('../../schemas/container/ModuleFederationPlugin').default,
42+
{
43+
name: 'Module Federation Plugin',
44+
baseDataPath: 'options',
45+
},
46+
);
47+
3748
class ModuleFederationPlugin implements WebpackPluginInstance {
3849
private _options: moduleFederationPlugin.ModuleFederationPluginOptions;
3950
private _statsPlugin?: StatsPlugin;
4051
/**
4152
* @param {moduleFederationPlugin.ModuleFederationPluginOptions} options options
4253
*/
4354
constructor(options: moduleFederationPlugin.ModuleFederationPluginOptions) {
55+
validate(options);
4456
this._options = options;
4557
}
4658

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import type { SemVerRange } from 'webpack/lib/util/semver';
3131
import type { ResolveData } from 'webpack/lib/NormalModuleFactory';
3232
import type { ModuleFactoryCreateDataContextInfo } from 'webpack/lib/ModuleFactory';
3333
import type { ConsumeOptions } from '../../declarations/plugins/sharing/ConsumeSharedModule';
34+
import { createSchemaValidation } from '../../utils';
3435

3536
const ModuleNotFoundError = require(
3637
normalizeWebpackPath('webpack/lib/ModuleNotFoundError'),
@@ -44,14 +45,11 @@ const LazySet = require(
4445
const WebpackError = require(
4546
normalizeWebpackPath('webpack/lib/WebpackError'),
4647
) as typeof import('webpack/lib/WebpackError');
47-
const createSchemaValidation = require(
48-
normalizeWebpackPath('webpack/lib/util/create-schema-validation'),
49-
) as typeof import('webpack/lib/util/create-schema-validation');
5048

5149
const validate = createSchemaValidation(
5250
//eslint-disable-next-line
53-
require('../../schemas/sharing/ConsumeSharedPlugin.check.js'),
54-
() => require('../../schemas/sharing/ConsumeSharedPlugin'),
51+
require('../../schemas/sharing/ConsumeSharedPlugin.check.js').validate,
52+
() => require('../../schemas/sharing/ConsumeSharedPlugin').default,
5553
{
5654
name: 'Consume Shared Plugin',
5755
baseDataPath: 'options',

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,7 @@ import type {
2222
ProvidesConfig,
2323
} from '../../declarations/plugins/sharing/ProvideSharedPlugin';
2424
import FederationRuntimePlugin from '../container/runtime/FederationRuntimePlugin';
25-
import checkOptions from '../../schemas/sharing/ProviderSharedPlugin.check';
26-
import schema from '../../schemas/sharing/ProviderSharedPlugin';
27-
28-
const createSchemaValidation = require(
29-
normalizeWebpackPath('webpack/lib/util/create-schema-validation'),
30-
) as typeof import('webpack/lib/util/create-schema-validation');
25+
import { createSchemaValidation } from '../../utils';
3126
const WebpackError = require(
3227
normalizeWebpackPath('webpack/lib/WebpackError'),
3328
) as typeof import('webpack/lib/WebpackError');
@@ -41,10 +36,15 @@ export type ResolvedProvideMap = Map<
4136
}
4237
>;
4338

44-
const validate = createSchemaValidation(checkOptions, () => schema, {
45-
name: 'Provide Shared Plugin',
46-
baseDataPath: 'options',
47-
});
39+
const validate = createSchemaValidation(
40+
//eslint-disable-next-line
41+
require('../../schemas/sharing/ProvideSharedPlugin.check.js').validate,
42+
() => require('../../schemas/sharing/ProvideSharedPlugin').default,
43+
{
44+
name: 'Provide Shared Plugin',
45+
baseDataPath: 'options',
46+
},
47+
);
4848

4949
/**
5050
* @typedef {Object} ProvideOptions
@@ -76,6 +76,7 @@ class ProvideSharedPlugin {
7676
*/
7777
constructor(options: ProvideSharedPluginOptions) {
7878
validate(options);
79+
7980
this._provides = parseOptions(
8081
options.provides,
8182
(item) => {
@@ -232,7 +233,6 @@ class ProvideSharedPlugin {
232233
const lookup = config.request || prefix;
233234
if (request.startsWith(lookup) && resource) {
234235
const remainder = request.slice(lookup.length);
235-
debugger;
236236
provideSharedModule(
237237
resource,
238238
{

0 commit comments

Comments
 (0)