@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.0
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/README.md +9 -11
- package/bin/webpack.js +12 -0
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +537 -139
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +33 -30
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +123 -118
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +52 -6
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +302 -12
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +612 -43
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +681 -367
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +49 -12
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +200 -50
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +687 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +118 -7
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1173 -80
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +11053 -3019
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
|
@@ -32,11 +32,12 @@ const ContainerExposedDependency = require("./ContainerExposedDependency");
|
|
|
32
32
|
/** @typedef {import("../Module").SourceTypes} SourceTypes */
|
|
33
33
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
|
34
34
|
/** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
|
35
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
36
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
35
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, ExposesList, string]>} ObjectDeserializerContext */
|
|
36
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, ExposesList, string]>} ObjectSerializerContext */
|
|
37
37
|
/** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
|
+
* Defines the expose options type used by this module.
|
|
40
41
|
* @typedef {object} ExposeOptions
|
|
41
42
|
* @property {string[]} import requests to exposed modules (last one is exported)
|
|
42
43
|
* @property {string} name custom chunk name for the exposed module
|
|
@@ -46,6 +47,7 @@ const ContainerExposedDependency = require("./ContainerExposedDependency");
|
|
|
46
47
|
|
|
47
48
|
class ContainerEntryModule extends Module {
|
|
48
49
|
/**
|
|
50
|
+
* Creates an instance of ContainerEntryModule.
|
|
49
51
|
* @param {string} name container entry name
|
|
50
52
|
* @param {ExposesList} exposes list of exposed modules
|
|
51
53
|
* @param {string} shareScope name of the share scope
|
|
@@ -61,6 +63,7 @@ class ContainerEntryModule extends Module {
|
|
|
61
63
|
}
|
|
62
64
|
|
|
63
65
|
/**
|
|
66
|
+
* Returns the source types this module can generate.
|
|
64
67
|
* @returns {SourceTypes} types available (do not mutate)
|
|
65
68
|
*/
|
|
66
69
|
getSourceTypes() {
|
|
@@ -68,6 +71,7 @@ class ContainerEntryModule extends Module {
|
|
|
68
71
|
}
|
|
69
72
|
|
|
70
73
|
/**
|
|
74
|
+
* Returns the unique identifier used to reference this module.
|
|
71
75
|
* @returns {string} a unique identifier of the module
|
|
72
76
|
*/
|
|
73
77
|
identifier() {
|
|
@@ -77,6 +81,7 @@ class ContainerEntryModule extends Module {
|
|
|
77
81
|
}
|
|
78
82
|
|
|
79
83
|
/**
|
|
84
|
+
* Returns a human-readable identifier for this module.
|
|
80
85
|
* @param {RequestShortener} requestShortener the request shortener
|
|
81
86
|
* @returns {string} a user readable identifier of the module
|
|
82
87
|
*/
|
|
@@ -85,6 +90,7 @@ class ContainerEntryModule extends Module {
|
|
|
85
90
|
}
|
|
86
91
|
|
|
87
92
|
/**
|
|
93
|
+
* Gets the library identifier.
|
|
88
94
|
* @param {LibIdentOptions} options options
|
|
89
95
|
* @returns {LibIdent | null} an identifier for library inclusion
|
|
90
96
|
*/
|
|
@@ -95,6 +101,7 @@ class ContainerEntryModule extends Module {
|
|
|
95
101
|
}
|
|
96
102
|
|
|
97
103
|
/**
|
|
104
|
+
* Checks whether the module needs to be rebuilt for the current build state.
|
|
98
105
|
* @param {NeedBuildContext} context context info
|
|
99
106
|
* @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
|
|
100
107
|
* @returns {void}
|
|
@@ -104,6 +111,7 @@ class ContainerEntryModule extends Module {
|
|
|
104
111
|
}
|
|
105
112
|
|
|
106
113
|
/**
|
|
114
|
+
* Builds the module using the provided compilation context.
|
|
107
115
|
* @param {WebpackOptions} options webpack options
|
|
108
116
|
* @param {Compilation} compilation the compilation
|
|
109
117
|
* @param {ResolverWithOptions} resolver the resolver
|
|
@@ -147,6 +155,7 @@ class ContainerEntryModule extends Module {
|
|
|
147
155
|
}
|
|
148
156
|
|
|
149
157
|
/**
|
|
158
|
+
* Generates code and runtime requirements for this module.
|
|
150
159
|
* @param {CodeGenerationContext} context context for code generation
|
|
151
160
|
* @returns {CodeGenerationResult} result
|
|
152
161
|
*/
|
|
@@ -211,11 +220,12 @@ class ContainerEntryModule extends Module {
|
|
|
211
220
|
);
|
|
212
221
|
}
|
|
213
222
|
|
|
223
|
+
const cst = runtimeTemplate.renderConst();
|
|
214
224
|
const source = Template.asString([
|
|
215
|
-
|
|
225
|
+
`${cst} moduleMap = {`,
|
|
216
226
|
Template.indent(getters.join(",\n")),
|
|
217
227
|
"};",
|
|
218
|
-
|
|
228
|
+
`${cst} get = ${runtimeTemplate.basicFunction("module, getScope", [
|
|
219
229
|
`${RuntimeGlobals.currentRemoteGetScope} = getScope;`,
|
|
220
230
|
// reusing the getScope variable to avoid creating a new var (and module is also used later)
|
|
221
231
|
"getScope = (",
|
|
@@ -233,10 +243,10 @@ class ContainerEntryModule extends Module {
|
|
|
233
243
|
`${RuntimeGlobals.currentRemoteGetScope} = undefined;`,
|
|
234
244
|
"return getScope;"
|
|
235
245
|
])};`,
|
|
236
|
-
|
|
246
|
+
`${cst} init = ${runtimeTemplate.basicFunction("shareScope, initScope", [
|
|
237
247
|
`if (!${RuntimeGlobals.shareScopeMap}) return;`,
|
|
238
|
-
|
|
239
|
-
|
|
248
|
+
`${cst} name = ${JSON.stringify(this._shareScope)}`,
|
|
249
|
+
`${cst} oldScope = ${RuntimeGlobals.shareScopeMap}[name];`,
|
|
240
250
|
'if(oldScope && oldScope !== shareScope) throw new Error("Container initialization failed as it has already been initialized with a different share scope");',
|
|
241
251
|
`${RuntimeGlobals.shareScopeMap}[name] = shareScope;`,
|
|
242
252
|
`return ${RuntimeGlobals.initializeSharing}(name, initScope);`
|
|
@@ -265,6 +275,7 @@ class ContainerEntryModule extends Module {
|
|
|
265
275
|
}
|
|
266
276
|
|
|
267
277
|
/**
|
|
278
|
+
* Returns the estimated size for the requested source type.
|
|
268
279
|
* @param {string=} type the source type for which the size should be estimated
|
|
269
280
|
* @returns {number} the estimated size of the module (must be non-zero)
|
|
270
281
|
*/
|
|
@@ -273,24 +284,26 @@ class ContainerEntryModule extends Module {
|
|
|
273
284
|
}
|
|
274
285
|
|
|
275
286
|
/**
|
|
287
|
+
* Serializes this instance into the provided serializer context.
|
|
276
288
|
* @param {ObjectSerializerContext} context context
|
|
277
289
|
*/
|
|
278
290
|
serialize(context) {
|
|
279
|
-
|
|
280
|
-
write(this._name);
|
|
281
|
-
write(this._exposes);
|
|
282
|
-
write(this._shareScope);
|
|
291
|
+
context.write(this._name).write(this._exposes).write(this._shareScope);
|
|
283
292
|
super.serialize(context);
|
|
284
293
|
}
|
|
285
294
|
|
|
286
295
|
/**
|
|
296
|
+
* Restores this instance from the provided deserializer context.
|
|
287
297
|
* @param {ObjectDeserializerContext} context context
|
|
288
298
|
* @returns {ContainerEntryModule} deserialized container entry module
|
|
289
299
|
*/
|
|
290
300
|
static deserialize(context) {
|
|
291
|
-
const
|
|
292
|
-
const
|
|
293
|
-
|
|
301
|
+
const name = context.read();
|
|
302
|
+
const c1 = context.rest;
|
|
303
|
+
const exposes = c1.read();
|
|
304
|
+
const c2 = c1.rest;
|
|
305
|
+
const obj = new ContainerEntryModule(name, exposes, c2.read());
|
|
306
|
+
obj.deserialize(c2.rest);
|
|
294
307
|
return obj;
|
|
295
308
|
}
|
|
296
309
|
}
|
|
@@ -14,6 +14,7 @@ const ContainerEntryModule = require("./ContainerEntryModule");
|
|
|
14
14
|
|
|
15
15
|
module.exports = class ContainerEntryModuleFactory extends ModuleFactory {
|
|
16
16
|
/**
|
|
17
|
+
* Processes the provided data.
|
|
17
18
|
* @param {ModuleFactoryCreateData} data data object
|
|
18
19
|
* @param {ModuleFactoryCallback} callback callback
|
|
19
20
|
* @returns {void}
|
|
@@ -8,11 +8,12 @@
|
|
|
8
8
|
const ModuleDependency = require("../dependencies/ModuleDependency");
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
|
10
10
|
|
|
11
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
12
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
11
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string]>} ObjectDeserializerContext */
|
|
12
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string]>} ObjectSerializerContext */
|
|
13
13
|
|
|
14
14
|
class ContainerExposedDependency extends ModuleDependency {
|
|
15
15
|
/**
|
|
16
|
+
* Creates an instance of ContainerExposedDependency.
|
|
16
17
|
* @param {string} exposedName public name
|
|
17
18
|
* @param {string} request request to module
|
|
18
19
|
*/
|
|
@@ -31,6 +32,7 @@ class ContainerExposedDependency extends ModuleDependency {
|
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
/**
|
|
35
|
+
* Returns an identifier to merge equal requests.
|
|
34
36
|
* @returns {string | null} an identifier to merge equal requests
|
|
35
37
|
*/
|
|
36
38
|
getResourceIdentifier() {
|
|
@@ -38,6 +40,7 @@ class ContainerExposedDependency extends ModuleDependency {
|
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
/**
|
|
43
|
+
* Serializes this instance into the provided serializer context.
|
|
41
44
|
* @param {ObjectSerializerContext} context context
|
|
42
45
|
*/
|
|
43
46
|
serialize(context) {
|
|
@@ -46,6 +49,7 @@ class ContainerExposedDependency extends ModuleDependency {
|
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
/**
|
|
52
|
+
* Restores this instance from the provided deserializer context.
|
|
49
53
|
* @param {ObjectDeserializerContext} context context
|
|
50
54
|
*/
|
|
51
55
|
deserialize(context) {
|
|
@@ -23,6 +23,7 @@ const PLUGIN_NAME = "ContainerPlugin";
|
|
|
23
23
|
|
|
24
24
|
class ContainerPlugin {
|
|
25
25
|
/**
|
|
26
|
+
* Creates an instance of ContainerPlugin.
|
|
26
27
|
* @param {ContainerPluginOptions} options options
|
|
27
28
|
*/
|
|
28
29
|
constructor(options) {
|
|
@@ -31,7 +32,7 @@ class ContainerPlugin {
|
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
/**
|
|
34
|
-
*
|
|
35
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
35
36
|
* @param {Compiler} compiler the compiler instance
|
|
36
37
|
* @returns {void}
|
|
37
38
|
*/
|
|
@@ -24,15 +24,16 @@ const PLUGIN_NAME = "ContainerReferencePlugin";
|
|
|
24
24
|
|
|
25
25
|
class ContainerReferencePlugin {
|
|
26
26
|
/**
|
|
27
|
+
* Creates an instance of ContainerReferencePlugin.
|
|
27
28
|
* @param {ContainerReferencePluginOptions} options options
|
|
28
29
|
*/
|
|
29
30
|
constructor(options) {
|
|
30
|
-
/** @
|
|
31
|
+
/** @type {ContainerReferencePluginOptions} */
|
|
31
32
|
this.options = options;
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
/**
|
|
35
|
-
*
|
|
36
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
36
37
|
* @param {Compiler} compiler the compiler instance
|
|
37
38
|
* @returns {void}
|
|
38
39
|
*/
|
|
@@ -9,11 +9,12 @@ const Dependency = require("../Dependency");
|
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
|
10
10
|
|
|
11
11
|
/** @typedef {import("./RemoteModule").ExternalRequests} ExternalRequests */
|
|
12
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
13
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
12
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[ExternalRequests]>} ObjectDeserializerContext */
|
|
13
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[ExternalRequests]>} ObjectSerializerContext */
|
|
14
14
|
|
|
15
15
|
class FallbackDependency extends Dependency {
|
|
16
16
|
/**
|
|
17
|
+
* Creates an instance of FallbackDependency.
|
|
17
18
|
* @param {ExternalRequests} requests requests
|
|
18
19
|
*/
|
|
19
20
|
constructor(requests) {
|
|
@@ -23,6 +24,7 @@ class FallbackDependency extends Dependency {
|
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
/**
|
|
27
|
+
* Returns an identifier to merge equal requests.
|
|
26
28
|
* @returns {string | null} an identifier to merge equal requests
|
|
27
29
|
*/
|
|
28
30
|
getResourceIdentifier() {
|
|
@@ -38,22 +40,22 @@ class FallbackDependency extends Dependency {
|
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
/**
|
|
43
|
+
* Serializes this instance into the provided serializer context.
|
|
41
44
|
* @param {ObjectSerializerContext} context context
|
|
42
45
|
*/
|
|
43
46
|
serialize(context) {
|
|
44
|
-
|
|
45
|
-
write(this.requests);
|
|
47
|
+
context.write(this.requests);
|
|
46
48
|
super.serialize(context);
|
|
47
49
|
}
|
|
48
50
|
|
|
49
51
|
/**
|
|
52
|
+
* Restores this instance from the provided deserializer context.
|
|
50
53
|
* @param {ObjectDeserializerContext} context context
|
|
51
54
|
* @returns {FallbackDependency} deserialize fallback dependency
|
|
52
55
|
*/
|
|
53
56
|
static deserialize(context) {
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
obj.deserialize(context);
|
|
57
|
+
const obj = new FallbackDependency(context.read());
|
|
58
|
+
obj.deserialize(context.rest);
|
|
57
59
|
return obj;
|
|
58
60
|
}
|
|
59
61
|
}
|
|
@@ -32,8 +32,8 @@ const FallbackItemDependency = require("./FallbackItemDependency");
|
|
|
32
32
|
/** @typedef {import("../Module").SourceTypes} SourceTypes */
|
|
33
33
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
|
34
34
|
/** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
|
35
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
36
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
35
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[ExternalRequests]>} ObjectDeserializerContext */
|
|
36
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[ExternalRequests]>} ObjectSerializerContext */
|
|
37
37
|
/** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
|
|
38
38
|
/** @typedef {import("./RemoteModule").ExternalRequests} ExternalRequests */
|
|
39
39
|
|
|
@@ -41,6 +41,7 @@ const RUNTIME_REQUIREMENTS = new Set([RuntimeGlobals.module]);
|
|
|
41
41
|
|
|
42
42
|
class FallbackModule extends Module {
|
|
43
43
|
/**
|
|
44
|
+
* Creates an instance of FallbackModule.
|
|
44
45
|
* @param {ExternalRequests} requests list of requests to choose one
|
|
45
46
|
*/
|
|
46
47
|
constructor(requests) {
|
|
@@ -52,6 +53,7 @@ class FallbackModule extends Module {
|
|
|
52
53
|
}
|
|
53
54
|
|
|
54
55
|
/**
|
|
56
|
+
* Returns the unique identifier used to reference this module.
|
|
55
57
|
* @returns {string} a unique identifier of the module
|
|
56
58
|
*/
|
|
57
59
|
identifier() {
|
|
@@ -59,6 +61,7 @@ class FallbackModule extends Module {
|
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
/**
|
|
64
|
+
* Returns a human-readable identifier for this module.
|
|
62
65
|
* @param {RequestShortener} requestShortener the request shortener
|
|
63
66
|
* @returns {string} a user readable identifier of the module
|
|
64
67
|
*/
|
|
@@ -67,6 +70,7 @@ class FallbackModule extends Module {
|
|
|
67
70
|
}
|
|
68
71
|
|
|
69
72
|
/**
|
|
73
|
+
* Gets the library identifier.
|
|
70
74
|
* @param {LibIdentOptions} options options
|
|
71
75
|
* @returns {LibIdent | null} an identifier for library inclusion
|
|
72
76
|
*/
|
|
@@ -77,6 +81,7 @@ class FallbackModule extends Module {
|
|
|
77
81
|
}
|
|
78
82
|
|
|
79
83
|
/**
|
|
84
|
+
* Returns true if the module can be placed in the chunk.
|
|
80
85
|
* @param {Chunk} chunk the chunk which condition should be checked
|
|
81
86
|
* @param {Compilation} compilation the compilation
|
|
82
87
|
* @returns {boolean} true if the module can be placed in the chunk
|
|
@@ -86,6 +91,7 @@ class FallbackModule extends Module {
|
|
|
86
91
|
}
|
|
87
92
|
|
|
88
93
|
/**
|
|
94
|
+
* Checks whether the module needs to be rebuilt for the current build state.
|
|
89
95
|
* @param {NeedBuildContext} context context info
|
|
90
96
|
* @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
|
|
91
97
|
* @returns {void}
|
|
@@ -95,6 +101,7 @@ class FallbackModule extends Module {
|
|
|
95
101
|
}
|
|
96
102
|
|
|
97
103
|
/**
|
|
104
|
+
* Builds the module using the provided compilation context.
|
|
98
105
|
* @param {WebpackOptions} options webpack options
|
|
99
106
|
* @param {Compilation} compilation the compilation
|
|
100
107
|
* @param {ResolverWithOptions} resolver the resolver
|
|
@@ -117,6 +124,7 @@ class FallbackModule extends Module {
|
|
|
117
124
|
}
|
|
118
125
|
|
|
119
126
|
/**
|
|
127
|
+
* Returns the estimated size for the requested source type.
|
|
120
128
|
* @param {string=} type the source type for which the size should be estimated
|
|
121
129
|
* @returns {number} the estimated size of the module (must be non-zero)
|
|
122
130
|
*/
|
|
@@ -125,6 +133,7 @@ class FallbackModule extends Module {
|
|
|
125
133
|
}
|
|
126
134
|
|
|
127
135
|
/**
|
|
136
|
+
* Returns the source types this module can generate.
|
|
128
137
|
* @returns {SourceTypes} types available (do not mutate)
|
|
129
138
|
*/
|
|
130
139
|
getSourceTypes() {
|
|
@@ -132,6 +141,7 @@ class FallbackModule extends Module {
|
|
|
132
141
|
}
|
|
133
142
|
|
|
134
143
|
/**
|
|
144
|
+
* Generates code and runtime requirements for this module.
|
|
135
145
|
* @param {CodeGenerationContext} context context for code generation
|
|
136
146
|
* @returns {CodeGenerationResult} result
|
|
137
147
|
*/
|
|
@@ -139,10 +149,12 @@ class FallbackModule extends Module {
|
|
|
139
149
|
const ids = this.dependencies.map((dep) =>
|
|
140
150
|
chunkGraph.getModuleId(/** @type {Module} */ (moduleGraph.getModule(dep)))
|
|
141
151
|
);
|
|
152
|
+
const cst = runtimeTemplate.renderConst();
|
|
153
|
+
const lt = runtimeTemplate.renderLet();
|
|
142
154
|
const code = Template.asString([
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
155
|
+
`${cst} ids = ${JSON.stringify(ids)};`,
|
|
156
|
+
`${lt} error, result, i = 0;`,
|
|
157
|
+
`${cst} loop = ${runtimeTemplate.basicFunction("next", [
|
|
146
158
|
"while(i < ids.length) {",
|
|
147
159
|
Template.indent([
|
|
148
160
|
`try { next = ${RuntimeGlobals.require}(ids[i++]); } catch(e) { return handleError(e); }`,
|
|
@@ -151,11 +163,11 @@ class FallbackModule extends Module {
|
|
|
151
163
|
"}",
|
|
152
164
|
"if(error) throw error;"
|
|
153
165
|
])}`,
|
|
154
|
-
|
|
166
|
+
`${cst} handleResult = ${runtimeTemplate.basicFunction("result", [
|
|
155
167
|
"if(result) return result;",
|
|
156
168
|
"return loop();"
|
|
157
169
|
])};`,
|
|
158
|
-
|
|
170
|
+
`${cst} handleError = ${runtimeTemplate.basicFunction("e", [
|
|
159
171
|
"error = e;",
|
|
160
172
|
"return loop();"
|
|
161
173
|
])};`,
|
|
@@ -168,15 +180,16 @@ class FallbackModule extends Module {
|
|
|
168
180
|
}
|
|
169
181
|
|
|
170
182
|
/**
|
|
183
|
+
* Serializes this instance into the provided serializer context.
|
|
171
184
|
* @param {ObjectSerializerContext} context context
|
|
172
185
|
*/
|
|
173
186
|
serialize(context) {
|
|
174
|
-
|
|
175
|
-
write(this.requests);
|
|
187
|
+
context.write(this.requests);
|
|
176
188
|
super.serialize(context);
|
|
177
189
|
}
|
|
178
190
|
|
|
179
191
|
/**
|
|
192
|
+
* Restores this instance from the provided deserializer context.
|
|
180
193
|
* @param {ObjectDeserializerContext} context context
|
|
181
194
|
* @returns {FallbackModule} deserialized fallback module
|
|
182
195
|
*/
|
|
@@ -14,6 +14,7 @@ const FallbackModule = require("./FallbackModule");
|
|
|
14
14
|
|
|
15
15
|
module.exports = class FallbackModuleFactory extends ModuleFactory {
|
|
16
16
|
/**
|
|
17
|
+
* Processes the provided data.
|
|
17
18
|
* @param {ModuleFactoryCreateData} data data object
|
|
18
19
|
* @param {ModuleFactoryCallback} callback callback
|
|
19
20
|
* @returns {void}
|
|
@@ -38,12 +38,13 @@ class HoistContainerReferences {
|
|
|
38
38
|
const depsToTrace = new Set();
|
|
39
39
|
/** @type {Set<Dependency>} */
|
|
40
40
|
const entryExternalsToHoist = new Set();
|
|
41
|
-
hooks
|
|
41
|
+
// Both hooks feed the same trace set, so they share one callback.
|
|
42
|
+
/** @type {(dep: Dependency) => void} */
|
|
43
|
+
const traceDep = (dep) => {
|
|
42
44
|
depsToTrace.add(dep);
|
|
43
|
-
}
|
|
44
|
-
hooks.
|
|
45
|
-
|
|
46
|
-
});
|
|
45
|
+
};
|
|
46
|
+
hooks.addContainerEntryDependency.tap(PLUGIN_NAME, traceDep);
|
|
47
|
+
hooks.addFederationRuntimeDependency.tap(PLUGIN_NAME, traceDep);
|
|
47
48
|
|
|
48
49
|
compilation.hooks.addEntry.tap(PLUGIN_NAME, (entryDep) => {
|
|
49
50
|
if (entryDep.type === "entry") {
|
|
@@ -76,46 +77,26 @@ class HoistContainerReferences {
|
|
|
76
77
|
* @param {Set<Dependency>} entryExternalsToHoist Set of container entry dependencies to hoist.
|
|
77
78
|
*/
|
|
78
79
|
hoistModulesInChunks(compilation, depsToTrace, entryExternalsToHoist) {
|
|
79
|
-
const {
|
|
80
|
+
const { moduleGraph } = compilation;
|
|
80
81
|
|
|
81
|
-
//
|
|
82
|
+
// Entry externals: hoist the external modules (e.g. RemoteModule) they reference.
|
|
82
83
|
for (const dep of entryExternalsToHoist) {
|
|
83
84
|
const entryModule = moduleGraph.getModule(dep);
|
|
84
85
|
if (!entryModule) continue;
|
|
85
|
-
// get all the external module types and hoist them to the runtime chunk, this will get RemoteModule externals
|
|
86
86
|
const allReferencedModules = getAllReferencedModules(
|
|
87
87
|
compilation,
|
|
88
88
|
entryModule,
|
|
89
89
|
"external",
|
|
90
90
|
false
|
|
91
91
|
);
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
for (const runtimeSpec of containerRuntimes) {
|
|
98
|
-
forEachRuntime(runtimeSpec, (runtimeKey) => {
|
|
99
|
-
if (runtimeKey) {
|
|
100
|
-
runtimes.add(runtimeKey);
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
for (const runtime of runtimes) {
|
|
106
|
-
const runtimeChunk = compilation.namedChunks.get(runtime);
|
|
107
|
-
if (!runtimeChunk) continue;
|
|
108
|
-
|
|
109
|
-
for (const module of allReferencedModules) {
|
|
110
|
-
if (!chunkGraph.isModuleInChunk(module, runtimeChunk)) {
|
|
111
|
-
chunkGraph.connectChunkAndModule(runtimeChunk, module);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
this.cleanUpChunks(compilation, allReferencedModules);
|
|
92
|
+
this.hoistReferencedModules(
|
|
93
|
+
compilation,
|
|
94
|
+
entryModule,
|
|
95
|
+
allReferencedModules
|
|
96
|
+
);
|
|
116
97
|
}
|
|
117
98
|
|
|
118
|
-
//
|
|
99
|
+
// Container entries: hoist the initial graph plus its external references.
|
|
119
100
|
for (const dep of depsToTrace) {
|
|
120
101
|
const containerEntryModule = moduleGraph.getModule(dep);
|
|
121
102
|
if (!containerEntryModule) continue;
|
|
@@ -125,43 +106,54 @@ class HoistContainerReferences {
|
|
|
125
106
|
"initial",
|
|
126
107
|
false
|
|
127
108
|
);
|
|
128
|
-
|
|
129
109
|
const allRemoteReferences = getAllReferencedModules(
|
|
130
110
|
compilation,
|
|
131
111
|
containerEntryModule,
|
|
132
112
|
"external",
|
|
133
113
|
false
|
|
134
114
|
);
|
|
135
|
-
|
|
136
115
|
for (const remote of allRemoteReferences) {
|
|
137
116
|
allReferencedModules.add(remote);
|
|
138
117
|
}
|
|
118
|
+
this.hoistReferencedModules(
|
|
119
|
+
compilation,
|
|
120
|
+
containerEntryModule,
|
|
121
|
+
allReferencedModules
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
139
125
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
126
|
+
/**
|
|
127
|
+
* Connect `referencedModules` into each runtime chunk of `entryModule`, then
|
|
128
|
+
* prune the chunks they were hoisted out of. The two passes above build
|
|
129
|
+
* `referencedModules` differently but hoist them identically.
|
|
130
|
+
* @param {Compilation} compilation The webpack compilation instance.
|
|
131
|
+
* @param {Module} entryModule The module whose runtimes receive the modules.
|
|
132
|
+
* @param {Set<Module>} referencedModules The modules to hoist.
|
|
133
|
+
*/
|
|
134
|
+
hoistReferencedModules(compilation, entryModule, referencedModules) {
|
|
135
|
+
const { chunkGraph } = compilation;
|
|
136
|
+
/** @type {Set<string>} */
|
|
137
|
+
const runtimes = new Set();
|
|
138
|
+
for (const runtimeSpec of chunkGraph.getModuleRuntimes(entryModule)) {
|
|
139
|
+
forEachRuntime(runtimeSpec, (runtimeKey) => {
|
|
140
|
+
if (runtimeKey) {
|
|
141
|
+
runtimes.add(runtimeKey);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
152
145
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
146
|
+
for (const runtime of runtimes) {
|
|
147
|
+
const runtimeChunk = compilation.namedChunks.get(runtime);
|
|
148
|
+
if (!runtimeChunk) continue;
|
|
156
149
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
}
|
|
150
|
+
for (const module of referencedModules) {
|
|
151
|
+
if (!chunkGraph.isModuleInChunk(module, runtimeChunk)) {
|
|
152
|
+
chunkGraph.connectChunkAndModule(runtimeChunk, module);
|
|
161
153
|
}
|
|
162
154
|
}
|
|
163
|
-
this.cleanUpChunks(compilation, allReferencedModules);
|
|
164
155
|
}
|
|
156
|
+
this.cleanUpChunks(compilation, referencedModules);
|
|
165
157
|
}
|
|
166
158
|
|
|
167
159
|
/**
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
const { SyncHook } = require("tapable");
|
|
9
9
|
const isValidExternalsType = require("../../schemas/plugins/container/ExternalsType.check");
|
|
10
|
-
const Compilation = require("../Compilation");
|
|
11
10
|
const SharePlugin = require("../sharing/SharePlugin");
|
|
11
|
+
const createHooksRegistry = require("../util/createHooksRegistry");
|
|
12
12
|
const ContainerPlugin = require("./ContainerPlugin");
|
|
13
13
|
const ContainerReferencePlugin = require("./ContainerReferencePlugin");
|
|
14
14
|
const HoistContainerReferences = require("./HoistContainerReferencesPlugin");
|
|
@@ -18,18 +18,28 @@ const HoistContainerReferences = require("./HoistContainerReferencesPlugin");
|
|
|
18
18
|
/** @typedef {import("../Compiler")} Compiler */
|
|
19
19
|
/** @typedef {import("../Dependency")} Dependency */
|
|
20
20
|
|
|
21
|
+
const createCompilationHooks = () => ({
|
|
22
|
+
/**
|
|
23
|
+
* @type {SyncHook<Dependency>}
|
|
24
|
+
* @since 5.96.0
|
|
25
|
+
*/
|
|
26
|
+
addContainerEntryDependency: new SyncHook(["dependency"]),
|
|
27
|
+
/**
|
|
28
|
+
* @type {SyncHook<Dependency>}
|
|
29
|
+
* @since 5.96.0
|
|
30
|
+
*/
|
|
31
|
+
addFederationRuntimeDependency: new SyncHook(["dependency"])
|
|
32
|
+
});
|
|
33
|
+
|
|
21
34
|
/**
|
|
22
|
-
* @typedef {
|
|
23
|
-
* @property {SyncHook<Dependency>} addContainerEntryDependency
|
|
24
|
-
* @property {SyncHook<Dependency>} addFederationRuntimeDependency
|
|
35
|
+
* @typedef {ReturnType<typeof createCompilationHooks>} CompilationHooks
|
|
25
36
|
*/
|
|
26
37
|
|
|
27
|
-
/** @type {WeakMap<Compilation, CompilationHooks>} */
|
|
28
|
-
const compilationHooksMap = new WeakMap();
|
|
29
38
|
const PLUGIN_NAME = "ModuleFederationPlugin";
|
|
30
39
|
|
|
31
40
|
class ModuleFederationPlugin {
|
|
32
41
|
/**
|
|
42
|
+
* Creates an instance of ModuleFederationPlugin.
|
|
33
43
|
* @param {ModuleFederationPluginOptions} options options
|
|
34
44
|
*/
|
|
35
45
|
constructor(options) {
|
|
@@ -38,29 +48,7 @@ class ModuleFederationPlugin {
|
|
|
38
48
|
}
|
|
39
49
|
|
|
40
50
|
/**
|
|
41
|
-
*
|
|
42
|
-
* @param {Compilation} compilation The compilation instance.
|
|
43
|
-
* @returns {CompilationHooks} The hooks for the compilation.
|
|
44
|
-
*/
|
|
45
|
-
static getCompilationHooks(compilation) {
|
|
46
|
-
if (!(compilation instanceof Compilation)) {
|
|
47
|
-
throw new TypeError(
|
|
48
|
-
"The 'compilation' argument must be an instance of Compilation"
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
let hooks = compilationHooksMap.get(compilation);
|
|
52
|
-
if (!hooks) {
|
|
53
|
-
hooks = {
|
|
54
|
-
addContainerEntryDependency: new SyncHook(["dependency"]),
|
|
55
|
-
addFederationRuntimeDependency: new SyncHook(["dependency"])
|
|
56
|
-
};
|
|
57
|
-
compilationHooksMap.set(compilation, hooks);
|
|
58
|
-
}
|
|
59
|
-
return hooks;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Apply the plugin
|
|
51
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
64
52
|
* @param {Compiler} compiler the compiler instance
|
|
65
53
|
* @returns {void}
|
|
66
54
|
*/
|
|
@@ -132,4 +120,8 @@ class ModuleFederationPlugin {
|
|
|
132
120
|
}
|
|
133
121
|
}
|
|
134
122
|
|
|
123
|
+
ModuleFederationPlugin.getCompilationHooks = createHooksRegistry(
|
|
124
|
+
createCompilationHooks
|
|
125
|
+
);
|
|
126
|
+
|
|
135
127
|
module.exports = ModuleFederationPlugin;
|