@module-federation/enhanced 2.3.1 → 2.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @module-federation/enhanced
2
2
 
3
+ ## 2.3.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 1c02710: chore: lock deps
8
+ - Updated dependencies [1c02710]
9
+ - @module-federation/data-prefetch@2.3.2
10
+ - @module-federation/dts-plugin@2.3.2
11
+ - @module-federation/cli@2.3.2
12
+ - @module-federation/manifest@2.3.2
13
+ - @module-federation/rspack@2.3.2
14
+ - @module-federation/webpack-bundler-runtime@2.3.2
15
+ - @module-federation/sdk@2.3.2
16
+ - @module-federation/runtime-tools@2.3.2
17
+ - @module-federation/managers@2.3.2
18
+ - @module-federation/bridge-react-webpack-plugin@2.3.2
19
+ - @module-federation/error-codes@2.3.2
20
+ - @module-federation/inject-external-runtime-core-plugin@2.3.2
21
+
3
22
  ## 2.3.1
4
23
 
5
24
  ### Patch Changes
@@ -12,7 +12,6 @@ let _module_federation_sdk_normalize_webpack_path = require("@module-federation/
12
12
  //#region src/lib/container/ContainerPlugin.ts
13
13
  const ModuleDependency = require((0, _module_federation_sdk_normalize_webpack_path.normalizeWebpackPath)("webpack/lib/dependencies/ModuleDependency"));
14
14
  const EntryDependency = require((0, _module_federation_sdk_normalize_webpack_path.normalizeWebpackPath)("webpack/lib/dependencies/EntryDependency"));
15
- require((0, _module_federation_sdk_normalize_webpack_path.normalizeWebpackPath)("webpack/lib/util/create-schema-validation"));
16
15
  const PLUGIN_NAME = "ContainerPlugin";
17
16
  var ContainerPlugin = class ContainerPlugin {
18
17
  constructor(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"ContainerPlugin.js","names":["parseOptions","FederationRuntimePlugin","FederationModulesPlugin","ContainerEntryDependency","ContainerEntryModuleFactory","ContainerExposedDependency","FederationRuntimeDependency"],"sources":["../../../../src/lib/container/ContainerPlugin.ts"],"sourcesContent":["/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy, Marais Rossouw @maraisr\n*/\nimport { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path';\nimport ContainerEntryDependency from './ContainerEntryDependency';\nimport ContainerEntryModuleFactory from './ContainerEntryModuleFactory';\nimport ContainerExposedDependency from './ContainerExposedDependency';\nimport { parseOptions } from './options';\nimport type {\n Compiler,\n Compilation,\n WebpackError,\n WebpackPluginInstance,\n WebpackPluginFunction,\n} from 'webpack';\nimport type { containerPlugin } from '@module-federation/sdk';\nimport FederationRuntimePlugin from './runtime/FederationRuntimePlugin';\nimport FederationModulesPlugin from './runtime/FederationModulesPlugin';\nimport checkOptions from '../../schemas/container/ContainerPlugin.check';\nimport schema from '../../schemas/container/ContainerPlugin';\nimport FederationRuntimeDependency from './runtime/FederationRuntimeDependency';\nimport type { OptimizationSplitChunksCacheGroup } from 'webpack/lib/optimize/SplitChunksPlugin';\nimport type { Falsy } from 'webpack/declarations/WebpackOptions';\n\nconst ModuleDependency = require(\n normalizeWebpackPath('webpack/lib/dependencies/ModuleDependency'),\n) as typeof import('webpack/lib/dependencies/ModuleDependency');\n\nconst EntryDependency = require(\n normalizeWebpackPath('webpack/lib/dependencies/EntryDependency'),\n) as typeof import('webpack/lib/dependencies/EntryDependency');\n\nconst createSchemaValidation = require(\n normalizeWebpackPath('webpack/lib/util/create-schema-validation'),\n) as typeof import('webpack/lib/util/create-schema-validation');\n\n// const validate = createSchemaValidation(checkOptions, () => schema, {\n// name: 'Container Plugin',\n// baseDataPath: 'options',\n// });\n\nconst PLUGIN_NAME = 'ContainerPlugin';\n\nclass ContainerPlugin {\n _options: containerPlugin.ContainerPluginOptions;\n name: string;\n\n constructor(options: containerPlugin.ContainerPluginOptions) {\n // validate(options);\n this.name = PLUGIN_NAME;\n\n this._options = {\n name: options.name,\n shareScope: options.shareScope || 'default',\n library: options.library || {\n type: 'global',\n name: options.name,\n },\n runtime: options.runtime,\n filename: options.filename || undefined,\n //@ts-ignore\n exposes: parseOptions(\n options.exposes,\n (item) => ({\n import: Array.isArray(item) ? item : [item],\n name: undefined,\n }),\n (item) => ({\n import: Array.isArray(item.import) ? item.import : [item.import],\n name: item.name || undefined,\n }),\n ),\n runtimePlugins: options.runtimePlugins,\n dataPrefetch: options.dataPrefetch,\n };\n }\n\n // container should not be affected by splitChunks\n static patchChunkSplit(compiler: Compiler, name: string): void {\n const { splitChunks } = compiler.options.optimization;\n const patchChunkSplit = (\n cacheGroup:\n | string\n | false\n | ((...args: any[]) => any)\n | RegExp\n | OptimizationSplitChunksCacheGroup,\n ) => {\n switch (typeof cacheGroup) {\n case 'boolean':\n case 'string':\n case 'function':\n break;\n // cacheGroup.chunks will inherit splitChunks.chunks, so you only need to modify the chunks that are set separately\n case 'object':\n {\n if (cacheGroup instanceof RegExp) {\n break;\n }\n if (!cacheGroup.chunks) {\n break;\n }\n if (typeof cacheGroup.chunks === 'function') {\n const prevChunks = cacheGroup.chunks;\n cacheGroup.chunks = (chunk) => {\n if (\n chunk.name &&\n (chunk.name === name || chunk.name === name + '_partial')\n ) {\n return false;\n }\n return prevChunks(chunk);\n };\n break;\n }\n\n if (cacheGroup.chunks === 'all') {\n cacheGroup.chunks = (chunk) => {\n if (\n chunk.name &&\n (chunk.name === name || chunk.name === name + '_partial')\n ) {\n return false;\n }\n return true;\n };\n break;\n }\n if (cacheGroup.chunks === 'initial') {\n cacheGroup.chunks = (chunk) => {\n if (\n chunk.name &&\n (chunk.name === name || chunk.name === name + '_partial')\n ) {\n return false;\n }\n return chunk.isOnlyInitial();\n };\n break;\n }\n }\n break;\n }\n };\n\n if (!splitChunks) {\n return;\n }\n // patch splitChunk.chunks\n patchChunkSplit(splitChunks);\n\n const cacheGroups = splitChunks.cacheGroups;\n if (!cacheGroups) {\n return;\n }\n\n // patch splitChunk.cacheGroups[key].chunks\n Object.keys(cacheGroups).forEach((cacheGroupKey) => {\n patchChunkSplit(cacheGroups[cacheGroupKey]);\n });\n }\n\n apply(compiler: Compiler): void {\n const useModuleFederationPlugin = compiler.options.plugins.find(\n (p: Falsy | WebpackPluginInstance | WebpackPluginFunction) => {\n if (typeof p !== 'object' || !p) {\n return false;\n }\n\n return p['name'] === 'ModuleFederationPlugin';\n },\n );\n\n if (!useModuleFederationPlugin) {\n ContainerPlugin.patchChunkSplit(compiler, this._options.name);\n }\n\n const federationRuntimePluginInstance = new FederationRuntimePlugin();\n federationRuntimePluginInstance.apply(compiler);\n\n const { name, exposes, shareScope, filename, library, runtime } =\n this._options;\n\n if (\n library &&\n compiler.options.output &&\n compiler.options.output.enabledLibraryTypes &&\n !compiler.options.output.enabledLibraryTypes.includes(library.type)\n ) {\n compiler.options.output.enabledLibraryTypes.push(library.type);\n }\n\n compiler.hooks.make.tapAsync(\n PLUGIN_NAME,\n async (\n compilation: Compilation,\n callback: (error?: WebpackError | null | undefined) => void,\n ) => {\n const hooks = FederationModulesPlugin.getCompilationHooks(compilation);\n const federationRuntimeDependency =\n federationRuntimePluginInstance.getDependency(compiler);\n const dep = new ContainerEntryDependency(\n name,\n //@ts-ignore\n exposes,\n shareScope,\n federationRuntimePluginInstance.entryFilePath,\n this._options.dataPrefetch,\n );\n dep.loc = { name };\n\n await new Promise((resolve, reject) => {\n compilation.addEntry(\n compilation.options.context || '',\n dep,\n {\n name,\n filename,\n runtime,\n library,\n },\n (error: WebpackError | null | undefined) => {\n if (error) return reject(error);\n hooks.addContainerEntryDependency.call(dep);\n resolve(undefined);\n },\n );\n }).catch(callback);\n\n await new Promise((resolve, reject) => {\n compilation.addInclude(\n compiler.context,\n federationRuntimeDependency,\n { name: undefined },\n (err, module) => {\n if (err) {\n return reject(err);\n }\n hooks.addFederationRuntimeDependency.call(\n federationRuntimeDependency,\n );\n resolve(undefined);\n },\n );\n }).catch(callback);\n\n callback();\n },\n );\n\n // this will still be copied into child compiler, so it needs a check to avoid running hook on child\n // we have to use finishMake in order to check the entries created and see if there are multiple runtime chunks\n compiler.hooks.finishMake.tapAsync(\n PLUGIN_NAME,\n (compilation: Compilation, callback) => {\n if (\n compilation.compiler.parentCompilation &&\n compilation.compiler.parentCompilation !== compilation\n ) {\n return callback();\n }\n\n const hooks = FederationModulesPlugin.getCompilationHooks(compilation);\n const createdRuntimes = new Set<string>();\n\n for (const entry of compilation.entries.values()) {\n const runtime = entry.options.runtime;\n if (runtime) {\n createdRuntimes.add(runtime);\n }\n }\n\n if (\n createdRuntimes.size === 0 &&\n !compilation.options?.optimization?.runtimeChunk\n ) {\n return callback();\n }\n\n const dep = new ContainerEntryDependency(\n name,\n //@ts-ignore\n exposes,\n shareScope,\n federationRuntimePluginInstance.entryFilePath,\n this._options.dataPrefetch,\n );\n\n dep.loc = { name };\n\n compilation.addInclude(\n compilation.options.context || '',\n dep,\n { name: undefined },\n (error: WebpackError | null | undefined) => {\n if (error) return callback(error);\n hooks.addContainerEntryDependency.call(dep);\n callback();\n },\n );\n },\n );\n\n // add the container entry module\n compiler.hooks.thisCompilation.tap(\n PLUGIN_NAME,\n (compilation: Compilation, { normalModuleFactory }) => {\n compilation.dependencyFactories.set(\n ContainerEntryDependency,\n new ContainerEntryModuleFactory(),\n );\n\n compilation.dependencyFactories.set(\n ContainerExposedDependency,\n normalModuleFactory,\n );\n\n if (!compilation.dependencyFactories.has(EntryDependency)) {\n compilation.dependencyFactories.set(\n EntryDependency,\n normalModuleFactory,\n );\n }\n },\n );\n\n // add include of federation runtime\n compiler.hooks.thisCompilation.tap(\n PLUGIN_NAME,\n (compilation: Compilation, { normalModuleFactory }) => {\n compilation.dependencyFactories.set(\n FederationRuntimeDependency,\n normalModuleFactory,\n );\n compilation.dependencyTemplates.set(\n FederationRuntimeDependency,\n new ModuleDependency.Template(),\n );\n },\n );\n }\n}\n\nexport default ContainerPlugin;\n"],"mappings":";;;;;;;;;;;;AAyBA,MAAM,mBAAmB,gFACF,4CAA4C,CAClE;AAED,MAAM,kBAAkB,gFACD,2CAA2C,CACjE;AAE8B,gFACR,4CAA4C,CAClE;AAOD,MAAM,cAAc;AAEpB,IAAM,kBAAN,MAAM,gBAAgB;CAIpB,YAAY,SAAiD;AAE3D,OAAK,OAAO;AAEZ,OAAK,WAAW;GACd,MAAM,QAAQ;GACd,YAAY,QAAQ,cAAc;GAClC,SAAS,QAAQ,WAAW;IAC1B,MAAM;IACN,MAAM,QAAQ;IACf;GACD,SAAS,QAAQ;GACjB,UAAU,QAAQ,YAAY;GAE9B,SAASA,2CACP,QAAQ,UACP,UAAU;IACT,QAAQ,MAAM,QAAQ,KAAK,GAAG,OAAO,CAAC,KAAK;IAC3C,MAAM;IACP,IACA,UAAU;IACT,QAAQ,MAAM,QAAQ,KAAK,OAAO,GAAG,KAAK,SAAS,CAAC,KAAK,OAAO;IAChE,MAAM,KAAK,QAAQ;IACpB,EACF;GACD,gBAAgB,QAAQ;GACxB,cAAc,QAAQ;GACvB;;CAIH,OAAO,gBAAgB,UAAoB,MAAoB;EAC7D,MAAM,EAAE,gBAAgB,SAAS,QAAQ;EACzC,MAAM,mBACJ,eAMG;AACH,WAAQ,OAAO,YAAf;IACE,KAAK;IACL,KAAK;IACL,KAAK,WACH;IAEF,KAAK;AAED,SAAI,sBAAsB,OACxB;AAEF,SAAI,CAAC,WAAW,OACd;AAEF,SAAI,OAAO,WAAW,WAAW,YAAY;MAC3C,MAAM,aAAa,WAAW;AAC9B,iBAAW,UAAU,UAAU;AAC7B,WACE,MAAM,SACL,MAAM,SAAS,QAAQ,MAAM,SAAS,OAAO,YAE9C,QAAO;AAET,cAAO,WAAW,MAAM;;AAE1B;;AAGF,SAAI,WAAW,WAAW,OAAO;AAC/B,iBAAW,UAAU,UAAU;AAC7B,WACE,MAAM,SACL,MAAM,SAAS,QAAQ,MAAM,SAAS,OAAO,YAE9C,QAAO;AAET,cAAO;;AAET;;AAEF,SAAI,WAAW,WAAW,WAAW;AACnC,iBAAW,UAAU,UAAU;AAC7B,WACE,MAAM,SACL,MAAM,SAAS,QAAQ,MAAM,SAAS,OAAO,YAE9C,QAAO;AAET,cAAO,MAAM,eAAe;;AAE9B;;AAGJ;;;AAIN,MAAI,CAAC,YACH;AAGF,kBAAgB,YAAY;EAE5B,MAAM,cAAc,YAAY;AAChC,MAAI,CAAC,YACH;AAIF,SAAO,KAAK,YAAY,CAAC,SAAS,kBAAkB;AAClD,mBAAgB,YAAY,eAAe;IAC3C;;CAGJ,MAAM,UAA0B;AAW9B,MAAI,CAV8B,SAAS,QAAQ,QAAQ,MACxD,MAA6D;AAC5D,OAAI,OAAO,MAAM,YAAY,CAAC,EAC5B,QAAO;AAGT,UAAO,EAAE,YAAY;IAExB,CAGC,iBAAgB,gBAAgB,UAAU,KAAK,SAAS,KAAK;EAG/D,MAAM,kCAAkC,IAAIC,+DAAyB;AACrE,kCAAgC,MAAM,SAAS;EAE/C,MAAM,EAAE,MAAM,SAAS,YAAY,UAAU,SAAS,YACpD,KAAK;AAEP,MACE,WACA,SAAS,QAAQ,UACjB,SAAS,QAAQ,OAAO,uBACxB,CAAC,SAAS,QAAQ,OAAO,oBAAoB,SAAS,QAAQ,KAAK,CAEnE,UAAS,QAAQ,OAAO,oBAAoB,KAAK,QAAQ,KAAK;AAGhE,WAAS,MAAM,KAAK,SAClB,aACA,OACE,aACA,aACG;GACH,MAAM,QAAQC,8DAAwB,oBAAoB,YAAY;GACtE,MAAM,8BACJ,gCAAgC,cAAc,SAAS;GACzD,MAAM,MAAM,IAAIC,uDACd,MAEA,SACA,YACA,gCAAgC,eAChC,KAAK,SAAS,aACf;AACD,OAAI,MAAM,EAAE,MAAM;AAElB,SAAM,IAAI,SAAS,SAAS,WAAW;AACrC,gBAAY,SACV,YAAY,QAAQ,WAAW,IAC/B,KACA;KACE;KACA;KACA;KACA;KACD,GACA,UAA2C;AAC1C,SAAI,MAAO,QAAO,OAAO,MAAM;AAC/B,WAAM,4BAA4B,KAAK,IAAI;AAC3C,aAAQ,OAAU;MAErB;KACD,CAAC,MAAM,SAAS;AAElB,SAAM,IAAI,SAAS,SAAS,WAAW;AACrC,gBAAY,WACV,SAAS,SACT,6BACA,EAAE,MAAM,QAAW,GAClB,KAAK,WAAW;AACf,SAAI,IACF,QAAO,OAAO,IAAI;AAEpB,WAAM,+BAA+B,KACnC,4BACD;AACD,aAAQ,OAAU;MAErB;KACD,CAAC,MAAM,SAAS;AAElB,aAAU;IAEb;AAID,WAAS,MAAM,WAAW,SACxB,cACC,aAA0B,aAAa;AACtC,OACE,YAAY,SAAS,qBACrB,YAAY,SAAS,sBAAsB,YAE3C,QAAO,UAAU;GAGnB,MAAM,QAAQD,8DAAwB,oBAAoB,YAAY;GACtE,MAAM,kCAAkB,IAAI,KAAa;AAEzC,QAAK,MAAM,SAAS,YAAY,QAAQ,QAAQ,EAAE;IAChD,MAAM,UAAU,MAAM,QAAQ;AAC9B,QAAI,QACF,iBAAgB,IAAI,QAAQ;;AAIhC,OACE,gBAAgB,SAAS,KACzB,CAAC,YAAY,SAAS,cAAc,aAEpC,QAAO,UAAU;GAGnB,MAAM,MAAM,IAAIC,uDACd,MAEA,SACA,YACA,gCAAgC,eAChC,KAAK,SAAS,aACf;AAED,OAAI,MAAM,EAAE,MAAM;AAElB,eAAY,WACV,YAAY,QAAQ,WAAW,IAC/B,KACA,EAAE,MAAM,QAAW,GAClB,UAA2C;AAC1C,QAAI,MAAO,QAAO,SAAS,MAAM;AACjC,UAAM,4BAA4B,KAAK,IAAI;AAC3C,cAAU;KAEb;IAEJ;AAGD,WAAS,MAAM,gBAAgB,IAC7B,cACC,aAA0B,EAAE,0BAA0B;AACrD,eAAY,oBAAoB,IAC9BA,wDACA,IAAIC,2DAA6B,CAClC;AAED,eAAY,oBAAoB,IAC9BC,0DACA,oBACD;AAED,OAAI,CAAC,YAAY,oBAAoB,IAAI,gBAAgB,CACvD,aAAY,oBAAoB,IAC9B,iBACA,oBACD;IAGN;AAGD,WAAS,MAAM,gBAAgB,IAC7B,cACC,aAA0B,EAAE,0BAA0B;AACrD,eAAY,oBAAoB,IAC9BC,mEACA,oBACD;AACD,eAAY,oBAAoB,IAC9BA,mEACA,IAAI,iBAAiB,UAAU,CAChC;IAEJ"}
1
+ {"version":3,"file":"ContainerPlugin.js","names":["parseOptions","FederationRuntimePlugin","FederationModulesPlugin","ContainerEntryDependency","ContainerEntryModuleFactory","ContainerExposedDependency","FederationRuntimeDependency"],"sources":["../../../../src/lib/container/ContainerPlugin.ts"],"sourcesContent":["/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy, Marais Rossouw @maraisr\n*/\nimport { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path';\nimport ContainerEntryDependency from './ContainerEntryDependency';\nimport ContainerEntryModuleFactory from './ContainerEntryModuleFactory';\nimport ContainerExposedDependency from './ContainerExposedDependency';\nimport { parseOptions } from './options';\nimport type {\n Compiler,\n Compilation,\n WebpackError,\n WebpackPluginInstance,\n WebpackPluginFunction,\n} from 'webpack';\nimport type { containerPlugin } from '@module-federation/sdk';\nimport FederationRuntimePlugin from './runtime/FederationRuntimePlugin';\nimport FederationModulesPlugin from './runtime/FederationModulesPlugin';\nimport FederationRuntimeDependency from './runtime/FederationRuntimeDependency';\nimport type { OptimizationSplitChunksCacheGroup } from 'webpack/lib/optimize/SplitChunksPlugin';\nimport type { Falsy } from 'webpack/declarations/WebpackOptions';\n\nconst ModuleDependency = require(\n normalizeWebpackPath('webpack/lib/dependencies/ModuleDependency'),\n) as typeof import('webpack/lib/dependencies/ModuleDependency');\n\nconst EntryDependency = require(\n normalizeWebpackPath('webpack/lib/dependencies/EntryDependency'),\n) as typeof import('webpack/lib/dependencies/EntryDependency');\n\nconst PLUGIN_NAME = 'ContainerPlugin';\n\nclass ContainerPlugin {\n _options: containerPlugin.ContainerPluginOptions;\n name: string;\n\n constructor(options: containerPlugin.ContainerPluginOptions) {\n // validate(options);\n this.name = PLUGIN_NAME;\n\n this._options = {\n name: options.name,\n shareScope: options.shareScope || 'default',\n library: options.library || {\n type: 'global',\n name: options.name,\n },\n runtime: options.runtime,\n filename: options.filename || undefined,\n //@ts-ignore\n exposes: parseOptions(\n options.exposes,\n (item) => ({\n import: Array.isArray(item) ? item : [item],\n name: undefined,\n }),\n (item) => ({\n import: Array.isArray(item.import) ? item.import : [item.import],\n name: item.name || undefined,\n }),\n ),\n runtimePlugins: options.runtimePlugins,\n dataPrefetch: options.dataPrefetch,\n };\n }\n\n // container should not be affected by splitChunks\n static patchChunkSplit(compiler: Compiler, name: string): void {\n const { splitChunks } = compiler.options.optimization;\n const patchChunkSplit = (\n cacheGroup:\n | string\n | false\n | ((...args: any[]) => any)\n | RegExp\n | OptimizationSplitChunksCacheGroup,\n ) => {\n switch (typeof cacheGroup) {\n case 'boolean':\n case 'string':\n case 'function':\n break;\n // cacheGroup.chunks will inherit splitChunks.chunks, so you only need to modify the chunks that are set separately\n case 'object':\n {\n if (cacheGroup instanceof RegExp) {\n break;\n }\n if (!cacheGroup.chunks) {\n break;\n }\n if (typeof cacheGroup.chunks === 'function') {\n const prevChunks = cacheGroup.chunks;\n cacheGroup.chunks = (chunk) => {\n if (\n chunk.name &&\n (chunk.name === name || chunk.name === name + '_partial')\n ) {\n return false;\n }\n return prevChunks(chunk);\n };\n break;\n }\n\n if (cacheGroup.chunks === 'all') {\n cacheGroup.chunks = (chunk) => {\n if (\n chunk.name &&\n (chunk.name === name || chunk.name === name + '_partial')\n ) {\n return false;\n }\n return true;\n };\n break;\n }\n if (cacheGroup.chunks === 'initial') {\n cacheGroup.chunks = (chunk) => {\n if (\n chunk.name &&\n (chunk.name === name || chunk.name === name + '_partial')\n ) {\n return false;\n }\n return chunk.isOnlyInitial();\n };\n break;\n }\n }\n break;\n }\n };\n\n if (!splitChunks) {\n return;\n }\n // patch splitChunk.chunks\n patchChunkSplit(splitChunks);\n\n const cacheGroups = splitChunks.cacheGroups;\n if (!cacheGroups) {\n return;\n }\n\n // patch splitChunk.cacheGroups[key].chunks\n Object.keys(cacheGroups).forEach((cacheGroupKey) => {\n patchChunkSplit(cacheGroups[cacheGroupKey]);\n });\n }\n\n apply(compiler: Compiler): void {\n const useModuleFederationPlugin = compiler.options.plugins.find(\n (p: Falsy | WebpackPluginInstance | WebpackPluginFunction) => {\n if (typeof p !== 'object' || !p) {\n return false;\n }\n\n return p['name'] === 'ModuleFederationPlugin';\n },\n );\n\n if (!useModuleFederationPlugin) {\n ContainerPlugin.patchChunkSplit(compiler, this._options.name);\n }\n\n const federationRuntimePluginInstance = new FederationRuntimePlugin();\n federationRuntimePluginInstance.apply(compiler);\n\n const { name, exposes, shareScope, filename, library, runtime } =\n this._options;\n\n if (\n library &&\n compiler.options.output &&\n compiler.options.output.enabledLibraryTypes &&\n !compiler.options.output.enabledLibraryTypes.includes(library.type)\n ) {\n compiler.options.output.enabledLibraryTypes.push(library.type);\n }\n\n compiler.hooks.make.tapAsync(\n PLUGIN_NAME,\n async (\n compilation: Compilation,\n callback: (error?: WebpackError | null | undefined) => void,\n ) => {\n const hooks = FederationModulesPlugin.getCompilationHooks(compilation);\n const federationRuntimeDependency =\n federationRuntimePluginInstance.getDependency(compiler);\n const dep = new ContainerEntryDependency(\n name,\n //@ts-ignore\n exposes,\n shareScope,\n federationRuntimePluginInstance.entryFilePath,\n this._options.dataPrefetch,\n );\n dep.loc = { name };\n\n await new Promise((resolve, reject) => {\n compilation.addEntry(\n compilation.options.context || '',\n dep,\n {\n name,\n filename,\n runtime,\n library,\n },\n (error: WebpackError | null | undefined) => {\n if (error) return reject(error);\n hooks.addContainerEntryDependency.call(dep);\n resolve(undefined);\n },\n );\n }).catch(callback);\n\n await new Promise((resolve, reject) => {\n compilation.addInclude(\n compiler.context,\n federationRuntimeDependency,\n { name: undefined },\n (err, module) => {\n if (err) {\n return reject(err);\n }\n hooks.addFederationRuntimeDependency.call(\n federationRuntimeDependency,\n );\n resolve(undefined);\n },\n );\n }).catch(callback);\n\n callback();\n },\n );\n\n // this will still be copied into child compiler, so it needs a check to avoid running hook on child\n // we have to use finishMake in order to check the entries created and see if there are multiple runtime chunks\n compiler.hooks.finishMake.tapAsync(\n PLUGIN_NAME,\n (compilation: Compilation, callback) => {\n if (\n compilation.compiler.parentCompilation &&\n compilation.compiler.parentCompilation !== compilation\n ) {\n return callback();\n }\n\n const hooks = FederationModulesPlugin.getCompilationHooks(compilation);\n const createdRuntimes = new Set<string>();\n\n for (const entry of compilation.entries.values()) {\n const runtime = entry.options.runtime;\n if (runtime) {\n createdRuntimes.add(runtime);\n }\n }\n\n if (\n createdRuntimes.size === 0 &&\n !compilation.options?.optimization?.runtimeChunk\n ) {\n return callback();\n }\n\n const dep = new ContainerEntryDependency(\n name,\n //@ts-ignore\n exposes,\n shareScope,\n federationRuntimePluginInstance.entryFilePath,\n this._options.dataPrefetch,\n );\n\n dep.loc = { name };\n\n compilation.addInclude(\n compilation.options.context || '',\n dep,\n { name: undefined },\n (error: WebpackError | null | undefined) => {\n if (error) return callback(error);\n hooks.addContainerEntryDependency.call(dep);\n callback();\n },\n );\n },\n );\n\n // add the container entry module\n compiler.hooks.thisCompilation.tap(\n PLUGIN_NAME,\n (compilation: Compilation, { normalModuleFactory }) => {\n compilation.dependencyFactories.set(\n ContainerEntryDependency,\n new ContainerEntryModuleFactory(),\n );\n\n compilation.dependencyFactories.set(\n ContainerExposedDependency,\n normalModuleFactory,\n );\n\n if (!compilation.dependencyFactories.has(EntryDependency)) {\n compilation.dependencyFactories.set(\n EntryDependency,\n normalModuleFactory,\n );\n }\n },\n );\n\n // add include of federation runtime\n compiler.hooks.thisCompilation.tap(\n PLUGIN_NAME,\n (compilation: Compilation, { normalModuleFactory }) => {\n compilation.dependencyFactories.set(\n FederationRuntimeDependency,\n normalModuleFactory,\n );\n compilation.dependencyTemplates.set(\n FederationRuntimeDependency,\n new ModuleDependency.Template(),\n );\n },\n );\n }\n}\n\nexport default ContainerPlugin;\n"],"mappings":"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"}
@@ -13,7 +13,6 @@ let _module_federation_sdk_normalize_webpack_path = require("@module-federation/
13
13
 
14
14
  //#region src/lib/container/ContainerReferencePlugin.ts
15
15
  const { ExternalsPlugin } = require((0, _module_federation_sdk_normalize_webpack_path.normalizeWebpackPath)("webpack"));
16
- require((0, _module_federation_sdk_normalize_webpack_path.normalizeWebpackPath)("webpack/lib/util/create-schema-validation"));
17
16
  const slashCode = "/".charCodeAt(0);
18
17
  var ContainerReferencePlugin = class {
19
18
  constructor(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"ContainerReferencePlugin.js","names":["parseOptions","FederationRuntimePlugin","RemoteToExternalDependency","FallbackItemDependency","FallbackDependency","FallbackModuleFactory","FederationModulesPlugin","RemoteModule","RemoteRuntimeModule"],"sources":["../../../../src/lib/container/ContainerReferencePlugin.ts"],"sourcesContent":["/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra and Zackary Jackson @ScriptedAlchemy\n*/\nimport type { Compiler } from 'webpack';\nimport { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path';\n\n// import * as RuntimeGlobals from 'webpack/lib/RuntimeGlobals';\nimport FallbackDependency from './FallbackDependency';\nimport FallbackItemDependency from './FallbackItemDependency';\nimport FallbackModuleFactory from './FallbackModuleFactory';\nimport RemoteModule from './RemoteModule';\nimport RemoteRuntimeModule from './RemoteRuntimeModule';\nimport RemoteToExternalDependency from './RemoteToExternalDependency';\nimport { parseOptions } from './options';\nimport type {\n containerReferencePlugin,\n moduleFederationPlugin,\n} from '@module-federation/sdk';\nimport FederationRuntimePlugin from './runtime/FederationRuntimePlugin';\nimport FederationModulesPlugin from './runtime/FederationModulesPlugin';\nimport schema from '../../schemas/container/ContainerReferencePlugin';\nimport checkOptions from '../../schemas/container/ContainerReferencePlugin.check';\n\nconst { ExternalsPlugin } = require(\n normalizeWebpackPath('webpack'),\n) as typeof import('webpack');\n\nconst createSchemaValidation = require(\n normalizeWebpackPath('webpack/lib/util/create-schema-validation'),\n) as typeof import('webpack/lib/util/create-schema-validation');\n\n// const validate = createSchemaValidation(\n// //eslint-disable-next-line\n// checkOptions,\n// () => schema,\n// {\n// name: 'Container Reference Plugin',\n// baseDataPath: 'options',\n// },\n// );\n\nconst slashCode = '/'.charCodeAt(0);\n\nclass ContainerReferencePlugin {\n private _remoteType: moduleFederationPlugin.ExternalsType;\n private _remotes: [string, moduleFederationPlugin.RemotesConfig][];\n\n constructor(\n options: containerReferencePlugin.ContainerReferencePluginOptions,\n ) {\n // validate(options);\n\n this._remoteType = options.remoteType;\n this._remotes = parseOptions(\n options.remotes,\n (item) => ({\n external: Array.isArray(item) ? item : [item],\n shareScope: options.shareScope || 'default',\n }),\n (item) => ({\n external: Array.isArray(item.external)\n ? item.external\n : [item.external],\n shareScope: item.shareScope || options.shareScope || 'default',\n }),\n );\n }\n\n /**\n * Apply the plugin\n * @param {Compiler} compiler the compiler instance\n * @returns {void}\n */\n apply(compiler: Compiler): void {\n const { _remotes: remotes, _remoteType: remoteType } = this;\n new FederationRuntimePlugin().apply(compiler);\n /** @type {Record<string, string>} */\n const remoteExternals: Record<string, string> = {};\n\n for (const [key, config] of remotes) {\n let i = 0;\n for (const external of config.external) {\n if (typeof external === 'string' && external.startsWith('internal ')) {\n continue;\n }\n remoteExternals[\n `webpack/container/reference/${key}${i ? `/fallback-${i}` : ''}`\n ] = external;\n i++;\n }\n }\n const Externals = compiler.webpack.ExternalsPlugin || ExternalsPlugin;\n new Externals(remoteType, remoteExternals).apply(compiler);\n\n compiler.hooks.compilation.tap(\n 'ContainerReferencePlugin',\n (compilation, { normalModuleFactory }) => {\n compilation.dependencyFactories.set(\n RemoteToExternalDependency,\n normalModuleFactory,\n );\n\n compilation.dependencyFactories.set(\n FallbackItemDependency,\n normalModuleFactory,\n );\n\n compilation.dependencyFactories.set(\n FallbackDependency,\n new FallbackModuleFactory(),\n );\n\n const hooks = FederationModulesPlugin.getCompilationHooks(compilation);\n\n normalModuleFactory.hooks.factorize.tap(\n 'ContainerReferencePlugin',\n //@ts-ignore\n (data) => {\n if (!data.request.includes('!')) {\n for (const [key, config] of remotes) {\n if (\n data.request.startsWith(`${key}`) &&\n (data.request.length === key.length ||\n data.request.charCodeAt(key.length) === slashCode)\n ) {\n const remoteModule = new RemoteModule(\n data.request,\n //@ts-ignore\n config.external.map((external: any, i: any) =>\n external.startsWith('internal ')\n ? external.slice(9)\n : `webpack/container/reference/${key}${\n i ? `/fallback-${i}` : ''\n }`,\n ),\n `.${data.request.slice(key.length)}`,\n //@ts-ignore\n config.shareScope,\n );\n hooks.addRemoteDependency.call(remoteModule);\n return remoteModule;\n }\n }\n }\n },\n );\n\n compilation.hooks.runtimeRequirementInTree\n .for(compiler.webpack.RuntimeGlobals.ensureChunkHandlers)\n .tap('ContainerReferencePlugin', (chunk, set) => {\n set.add(compiler.webpack.RuntimeGlobals.module);\n set.add(compiler.webpack.RuntimeGlobals.moduleFactoriesAddOnly);\n set.add(compiler.webpack.RuntimeGlobals.hasOwnProperty);\n set.add(compiler.webpack.RuntimeGlobals.initializeSharing);\n set.add(compiler.webpack.RuntimeGlobals.shareScopeMap);\n compilation.addRuntimeModule(chunk, new RemoteRuntimeModule());\n });\n },\n );\n }\n}\n\nexport default ContainerReferencePlugin;\n"],"mappings":";;;;;;;;;;;;;;AAwBA,MAAM,EAAE,oBAAoB,gFACL,UAAU,CAChC;AAE8B,gFACR,4CAA4C,CAClE;AAYD,MAAM,YAAY,IAAI,WAAW,EAAE;AAEnC,IAAM,2BAAN,MAA+B;CAI7B,YACE,SACA;AAGA,OAAK,cAAc,QAAQ;AAC3B,OAAK,WAAWA,2CACd,QAAQ,UACP,UAAU;GACT,UAAU,MAAM,QAAQ,KAAK,GAAG,OAAO,CAAC,KAAK;GAC7C,YAAY,QAAQ,cAAc;GACnC,IACA,UAAU;GACT,UAAU,MAAM,QAAQ,KAAK,SAAS,GAClC,KAAK,WACL,CAAC,KAAK,SAAS;GACnB,YAAY,KAAK,cAAc,QAAQ,cAAc;GACtD,EACF;;;;;;;CAQH,MAAM,UAA0B;EAC9B,MAAM,EAAE,UAAU,SAAS,aAAa,eAAe;AACvD,MAAIC,+DAAyB,CAAC,MAAM,SAAS;;EAE7C,MAAM,kBAA0C,EAAE;AAElD,OAAK,MAAM,CAAC,KAAK,WAAW,SAAS;GACnC,IAAI,IAAI;AACR,QAAK,MAAM,YAAY,OAAO,UAAU;AACtC,QAAI,OAAO,aAAa,YAAY,SAAS,WAAW,YAAY,CAClE;AAEF,oBACE,+BAA+B,MAAM,IAAI,aAAa,MAAM,QAC1D;AACJ;;;AAIJ,OADkB,SAAS,QAAQ,mBAAmB,iBACxC,YAAY,gBAAgB,CAAC,MAAM,SAAS;AAE1D,WAAS,MAAM,YAAY,IACzB,6BACC,aAAa,EAAE,0BAA0B;AACxC,eAAY,oBAAoB,IAC9BC,0DACA,oBACD;AAED,eAAY,oBAAoB,IAC9BC,sDACA,oBACD;AAED,eAAY,oBAAoB,IAC9BC,kDACA,IAAIC,qDAAuB,CAC5B;GAED,MAAM,QAAQC,8DAAwB,oBAAoB,YAAY;AAEtE,uBAAoB,MAAM,UAAU,IAClC,6BAEC,SAAS;AACR,QAAI,CAAC,KAAK,QAAQ,SAAS,IAAI,EAC7B;UAAK,MAAM,CAAC,KAAK,WAAW,QAC1B,KACE,KAAK,QAAQ,WAAW,GAAG,MAAM,KAChC,KAAK,QAAQ,WAAW,IAAI,UAC3B,KAAK,QAAQ,WAAW,IAAI,OAAO,KAAK,YAC1C;MACA,MAAM,eAAe,IAAIC,2CACvB,KAAK,SAEL,OAAO,SAAS,KAAK,UAAe,MAClC,SAAS,WAAW,YAAY,GAC5B,SAAS,MAAM,EAAE,GACjB,+BAA+B,MAC7B,IAAI,aAAa,MAAM,KAE9B,EACD,IAAI,KAAK,QAAQ,MAAM,IAAI,OAAO,IAElC,OAAO,WACR;AACD,YAAM,oBAAoB,KAAK,aAAa;AAC5C,aAAO;;;KAKhB;AAED,eAAY,MAAM,yBACf,IAAI,SAAS,QAAQ,eAAe,oBAAoB,CACxD,IAAI,6BAA6B,OAAO,QAAQ;AAC/C,QAAI,IAAI,SAAS,QAAQ,eAAe,OAAO;AAC/C,QAAI,IAAI,SAAS,QAAQ,eAAe,uBAAuB;AAC/D,QAAI,IAAI,SAAS,QAAQ,eAAe,eAAe;AACvD,QAAI,IAAI,SAAS,QAAQ,eAAe,kBAAkB;AAC1D,QAAI,IAAI,SAAS,QAAQ,eAAe,cAAc;AACtD,gBAAY,iBAAiB,OAAO,IAAIC,mDAAqB,CAAC;KAC9D;IAEP"}
1
+ {"version":3,"file":"ContainerReferencePlugin.js","names":["parseOptions","FederationRuntimePlugin","RemoteToExternalDependency","FallbackItemDependency","FallbackDependency","FallbackModuleFactory","FederationModulesPlugin","RemoteModule","RemoteRuntimeModule"],"sources":["../../../../src/lib/container/ContainerReferencePlugin.ts"],"sourcesContent":["/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra and Zackary Jackson @ScriptedAlchemy\n*/\nimport type { Compiler } from 'webpack';\nimport { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path';\n\n// import * as RuntimeGlobals from 'webpack/lib/RuntimeGlobals';\nimport FallbackDependency from './FallbackDependency';\nimport FallbackItemDependency from './FallbackItemDependency';\nimport FallbackModuleFactory from './FallbackModuleFactory';\nimport RemoteModule from './RemoteModule';\nimport RemoteRuntimeModule from './RemoteRuntimeModule';\nimport RemoteToExternalDependency from './RemoteToExternalDependency';\nimport { parseOptions } from './options';\nimport type {\n containerReferencePlugin,\n moduleFederationPlugin,\n} from '@module-federation/sdk';\nimport FederationRuntimePlugin from './runtime/FederationRuntimePlugin';\nimport FederationModulesPlugin from './runtime/FederationModulesPlugin';\n\nconst { ExternalsPlugin } = require(\n normalizeWebpackPath('webpack'),\n) as typeof import('webpack');\n\nconst slashCode = '/'.charCodeAt(0);\n\nclass ContainerReferencePlugin {\n private _remoteType: moduleFederationPlugin.ExternalsType;\n private _remotes: [string, moduleFederationPlugin.RemotesConfig][];\n\n constructor(\n options: containerReferencePlugin.ContainerReferencePluginOptions,\n ) {\n // validate(options);\n\n this._remoteType = options.remoteType;\n this._remotes = parseOptions(\n options.remotes,\n (item) => ({\n external: Array.isArray(item) ? item : [item],\n shareScope: options.shareScope || 'default',\n }),\n (item) => ({\n external: Array.isArray(item.external)\n ? item.external\n : [item.external],\n shareScope: item.shareScope || options.shareScope || 'default',\n }),\n );\n }\n\n /**\n * Apply the plugin\n * @param {Compiler} compiler the compiler instance\n * @returns {void}\n */\n apply(compiler: Compiler): void {\n const { _remotes: remotes, _remoteType: remoteType } = this;\n new FederationRuntimePlugin().apply(compiler);\n /** @type {Record<string, string>} */\n const remoteExternals: Record<string, string> = {};\n\n for (const [key, config] of remotes) {\n let i = 0;\n for (const external of config.external) {\n if (typeof external === 'string' && external.startsWith('internal ')) {\n continue;\n }\n remoteExternals[\n `webpack/container/reference/${key}${i ? `/fallback-${i}` : ''}`\n ] = external;\n i++;\n }\n }\n const Externals = compiler.webpack.ExternalsPlugin || ExternalsPlugin;\n new Externals(remoteType, remoteExternals).apply(compiler);\n\n compiler.hooks.compilation.tap(\n 'ContainerReferencePlugin',\n (compilation, { normalModuleFactory }) => {\n compilation.dependencyFactories.set(\n RemoteToExternalDependency,\n normalModuleFactory,\n );\n\n compilation.dependencyFactories.set(\n FallbackItemDependency,\n normalModuleFactory,\n );\n\n compilation.dependencyFactories.set(\n FallbackDependency,\n new FallbackModuleFactory(),\n );\n\n const hooks = FederationModulesPlugin.getCompilationHooks(compilation);\n\n normalModuleFactory.hooks.factorize.tap(\n 'ContainerReferencePlugin',\n //@ts-ignore\n (data) => {\n if (!data.request.includes('!')) {\n for (const [key, config] of remotes) {\n if (\n data.request.startsWith(`${key}`) &&\n (data.request.length === key.length ||\n data.request.charCodeAt(key.length) === slashCode)\n ) {\n const remoteModule = new RemoteModule(\n data.request,\n //@ts-ignore\n config.external.map((external: any, i: any) =>\n external.startsWith('internal ')\n ? external.slice(9)\n : `webpack/container/reference/${key}${\n i ? `/fallback-${i}` : ''\n }`,\n ),\n `.${data.request.slice(key.length)}`,\n //@ts-ignore\n config.shareScope,\n );\n hooks.addRemoteDependency.call(remoteModule);\n return remoteModule;\n }\n }\n }\n },\n );\n\n compilation.hooks.runtimeRequirementInTree\n .for(compiler.webpack.RuntimeGlobals.ensureChunkHandlers)\n .tap('ContainerReferencePlugin', (chunk, set) => {\n set.add(compiler.webpack.RuntimeGlobals.module);\n set.add(compiler.webpack.RuntimeGlobals.moduleFactoriesAddOnly);\n set.add(compiler.webpack.RuntimeGlobals.hasOwnProperty);\n set.add(compiler.webpack.RuntimeGlobals.initializeSharing);\n set.add(compiler.webpack.RuntimeGlobals.shareScopeMap);\n compilation.addRuntimeModule(chunk, new RemoteRuntimeModule());\n });\n },\n );\n }\n}\n\nexport default ContainerReferencePlugin;\n"],"mappings":";;;;;;;;;;;;;;AAsBA,MAAM,EAAE,oBAAoB,gFACL,UAAU,CAChC;AAED,MAAM,YAAY,IAAI,WAAW,EAAE;AAEnC,IAAM,2BAAN,MAA+B;CAI7B,YACE,SACA;AAGA,OAAK,cAAc,QAAQ;AAC3B,OAAK,WAAWA,2CACd,QAAQ,UACP,UAAU;GACT,UAAU,MAAM,QAAQ,KAAK,GAAG,OAAO,CAAC,KAAK;GAC7C,YAAY,QAAQ,cAAc;GACnC,IACA,UAAU;GACT,UAAU,MAAM,QAAQ,KAAK,SAAS,GAClC,KAAK,WACL,CAAC,KAAK,SAAS;GACnB,YAAY,KAAK,cAAc,QAAQ,cAAc;GACtD,EACF;;;;;;;CAQH,MAAM,UAA0B;EAC9B,MAAM,EAAE,UAAU,SAAS,aAAa,eAAe;AACvD,MAAIC,+DAAyB,CAAC,MAAM,SAAS;;EAE7C,MAAM,kBAA0C,EAAE;AAElD,OAAK,MAAM,CAAC,KAAK,WAAW,SAAS;GACnC,IAAI,IAAI;AACR,QAAK,MAAM,YAAY,OAAO,UAAU;AACtC,QAAI,OAAO,aAAa,YAAY,SAAS,WAAW,YAAY,CAClE;AAEF,oBACE,+BAA+B,MAAM,IAAI,aAAa,MAAM,QAC1D;AACJ;;;AAIJ,OADkB,SAAS,QAAQ,mBAAmB,iBACxC,YAAY,gBAAgB,CAAC,MAAM,SAAS;AAE1D,WAAS,MAAM,YAAY,IACzB,6BACC,aAAa,EAAE,0BAA0B;AACxC,eAAY,oBAAoB,IAC9BC,0DACA,oBACD;AAED,eAAY,oBAAoB,IAC9BC,sDACA,oBACD;AAED,eAAY,oBAAoB,IAC9BC,kDACA,IAAIC,qDAAuB,CAC5B;GAED,MAAM,QAAQC,8DAAwB,oBAAoB,YAAY;AAEtE,uBAAoB,MAAM,UAAU,IAClC,6BAEC,SAAS;AACR,QAAI,CAAC,KAAK,QAAQ,SAAS,IAAI,EAC7B;UAAK,MAAM,CAAC,KAAK,WAAW,QAC1B,KACE,KAAK,QAAQ,WAAW,GAAG,MAAM,KAChC,KAAK,QAAQ,WAAW,IAAI,UAC3B,KAAK,QAAQ,WAAW,IAAI,OAAO,KAAK,YAC1C;MACA,MAAM,eAAe,IAAIC,2CACvB,KAAK,SAEL,OAAO,SAAS,KAAK,UAAe,MAClC,SAAS,WAAW,YAAY,GAC5B,SAAS,MAAM,EAAE,GACjB,+BAA+B,MAC7B,IAAI,aAAa,MAAM,KAE9B,EACD,IAAI,KAAK,QAAQ,MAAM,IAAI,OAAO,IAElC,OAAO,WACR;AACD,YAAM,oBAAoB,KAAK,aAAa;AAC5C,aAAO;;;KAKhB;AAED,eAAY,MAAM,yBACf,IAAI,SAAS,QAAQ,eAAe,oBAAoB,CACxD,IAAI,6BAA6B,OAAO,QAAQ;AAC/C,QAAI,IAAI,SAAS,QAAQ,eAAe,OAAO;AAC/C,QAAI,IAAI,SAAS,QAAQ,eAAe,uBAAuB;AAC/D,QAAI,IAAI,SAAS,QAAQ,eAAe,eAAe;AACvD,QAAI,IAAI,SAAS,QAAQ,eAAe,kBAAkB;AAC1D,QAAI,IAAI,SAAS,QAAQ,eAAe,cAAc;AACtD,gBAAY,iBAAiB,OAAO,IAAIC,mDAAqB,CAAC;KAC9D;IAEP"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@module-federation/enhanced",
3
- "version": "2.3.1",
3
+ "version": "2.3.2",
4
4
  "main": "./dist/src/index.js",
5
5
  "types": "./dist/src/index.d.ts",
6
6
  "repository": {
@@ -91,20 +91,20 @@
91
91
  },
92
92
  "dependencies": {
93
93
  "upath": "2.0.1",
94
- "schema-utils": "^4.3.0",
94
+ "schema-utils": "4.3.0",
95
95
  "tapable": "2.3.0",
96
- "@module-federation/webpack-bundler-runtime": "2.3.1",
97
- "@module-federation/data-prefetch": "2.3.1",
98
- "@module-federation/dts-plugin": "2.3.1",
99
- "@module-federation/bridge-react-webpack-plugin": "2.3.1",
100
- "@module-federation/error-codes": "2.3.1",
101
- "@module-federation/inject-external-runtime-core-plugin": "2.3.1",
102
- "@module-federation/managers": "2.3.1",
103
- "@module-federation/rspack": "2.3.1",
104
- "@module-federation/manifest": "2.3.1",
105
- "@module-federation/sdk": "2.3.1",
106
- "@module-federation/runtime-tools": "2.3.1",
107
- "@module-federation/cli": "2.3.1"
96
+ "@module-federation/webpack-bundler-runtime": "2.3.2",
97
+ "@module-federation/bridge-react-webpack-plugin": "2.3.2",
98
+ "@module-federation/data-prefetch": "2.3.2",
99
+ "@module-federation/error-codes": "2.3.2",
100
+ "@module-federation/dts-plugin": "2.3.2",
101
+ "@module-federation/inject-external-runtime-core-plugin": "2.3.2",
102
+ "@module-federation/manifest": "2.3.2",
103
+ "@module-federation/managers": "2.3.2",
104
+ "@module-federation/rspack": "2.3.2",
105
+ "@module-federation/runtime-tools": "2.3.2",
106
+ "@module-federation/sdk": "2.3.2",
107
+ "@module-federation/cli": "2.3.2"
108
108
  },
109
109
  "scripts": {
110
110
  "generate:schema": "node src/scripts/compile-schema.js && node src/scripts/generate-sdk-types.js",