@module-federation/enhanced
Version:
This package provides enhanced features for module federation.
96 lines (93 loc) • 4.34 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_runtime = require('../../_virtual/_rolldown/runtime.js');
const require_lib_container_options = require('../container/options.js');
const require_utils = require('../../utils.js');
const require_lib_sharing_ConsumeSharedPlugin = require('./ConsumeSharedPlugin.js');
const require_lib_sharing_ProvideSharedPlugin = require('./ProvideSharedPlugin.js');
const require_schemas_sharing_SharePlugin_check = require('../../schemas/sharing/SharePlugin.check.js');
const require_schemas_sharing_SharePlugin = require('../../schemas/sharing/SharePlugin.js');
let _module_federation_sdk = require("@module-federation/sdk");
let _module_federation_sdk_normalize_webpack_path = require("@module-federation/sdk/normalize-webpack-path");
//#region src/lib/sharing/SharePlugin.ts
const validate = require_utils.createSchemaValidation((require_schemas_sharing_SharePlugin_check.init_SharePlugin_check(), require_runtime.__toCommonJS(require_schemas_sharing_SharePlugin_check.SharePlugin_check_exports)).validate, () => (require_schemas_sharing_SharePlugin.init_SharePlugin(), require_runtime.__toCommonJS(require_schemas_sharing_SharePlugin.SharePlugin_exports)).default, {
name: "Share Plugin",
baseDataPath: "options"
});
function normalizeSharedOptions(shared) {
return require_lib_container_options.parseOptions(shared, (item, key) => {
if (typeof item !== "string") throw new Error(`Unexpected array in shared configuration for key "${key}"`);
return item === key || !(0, _module_federation_sdk.isRequiredVersion)(item) ? { import: item } : {
import: key,
requiredVersion: item
};
}, (item) => item);
}
function createConsumeShareOptions(normalizedSharedOptions) {
return normalizedSharedOptions.map(([key, options]) => ({ [key]: {
import: options.import,
shareKey: options.shareKey || key,
shareScope: options.shareScope,
requiredVersion: options.requiredVersion,
strictVersion: options.strictVersion,
singleton: options.singleton,
packageName: options.packageName,
eager: options.eager,
issuerLayer: options.issuerLayer,
layer: options.layer,
request: options.request || key,
exclude: options.exclude,
include: options.include,
allowNodeModulesSuffixMatch: options.allowNodeModulesSuffixMatch,
treeShakingMode: options.treeShaking?.mode
} }));
}
function createProvideShareOptions(normalizedSharedOptions) {
return normalizedSharedOptions.filter(([, options]) => options.import !== false).map(([key, options]) => ({ [options.import || key]: {
shareKey: options.shareKey || key,
shareScope: options.shareScope,
version: options.version,
eager: options.eager,
requiredVersion: options.requiredVersion,
strictVersion: options.strictVersion,
singleton: options.singleton,
layer: options.layer,
request: options.request || options.import || key,
exclude: options.exclude,
include: options.include,
allowNodeModulesSuffixMatch: options.allowNodeModulesSuffixMatch,
treeShakingMode: options.treeShaking?.mode
} }));
}
var SharePlugin = class {
constructor(options) {
validate(options);
const sharedOptions = normalizeSharedOptions(options.shared);
const consumes = createConsumeShareOptions(sharedOptions);
const provides = createProvideShareOptions(sharedOptions);
this._shareScope = options.shareScope || "default";
this._consumes = consumes;
this._provides = provides;
}
/**
* Applies the plugin to the webpack compiler instance
* @param compiler - The webpack compiler instance
*/
apply(compiler) {
process.env["FEDERATION_WEBPACK_PATH"] = process.env["FEDERATION_WEBPACK_PATH"] || (0, _module_federation_sdk_normalize_webpack_path.getWebpackPath)(compiler);
new require_lib_sharing_ConsumeSharedPlugin.default({
shareScope: this._shareScope,
consumes: this._consumes
}).apply(compiler);
new require_lib_sharing_ProvideSharedPlugin.default({
shareScope: this._shareScope,
provides: this._provides
}).apply(compiler);
}
};
//#endregion
exports.createConsumeShareOptions = createConsumeShareOptions;
exports.createProvideShareOptions = createProvideShareOptions;
exports.default = SharePlugin;
exports.normalizeSharedOptions = normalizeSharedOptions;
//# sourceMappingURL=SharePlugin.js.map