webpack 5.59.0 → 5.94.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 +48 -38
- package/bin/webpack.js +34 -10
- package/hot/dev-server.js +19 -5
- package/hot/lazy-compilation-node.js +13 -1
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +23 -4
- package/hot/only-dev-server.js +3 -2
- package/hot/poll.js +5 -2
- package/hot/signal.js +6 -2
- package/lib/APIPlugin.js +226 -122
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +2 -1
- package/lib/BannerPlugin.js +33 -12
- package/lib/Cache.js +16 -12
- package/lib/CacheFacade.js +13 -16
- package/lib/CaseSensitiveModulesWarning.js +8 -8
- package/lib/Chunk.js +60 -33
- package/lib/ChunkGraph.js +207 -72
- package/lib/ChunkGroup.js +40 -20
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +117 -32
- package/lib/CodeGenerationResults.js +8 -7
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +712 -392
- package/lib/Compiler.js +393 -172
- package/lib/ConcatenationScope.js +10 -13
- package/lib/ConditionalInitFragment.js +22 -14
- package/lib/ConstPlugin.js +104 -64
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +283 -108
- package/lib/ContextModuleFactory.js +151 -63
- package/lib/ContextReplacementPlugin.js +25 -10
- package/lib/CssModule.js +166 -0
- package/lib/DefinePlugin.js +254 -148
- package/lib/DelegatedModule.js +29 -6
- package/lib/DelegatedModuleFactoryPlugin.js +42 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +17 -2
- package/lib/Dependency.js +58 -29
- package/lib/DependencyTemplate.js +24 -3
- package/lib/DependencyTemplates.js +2 -2
- package/lib/DllEntryPlugin.js +18 -1
- package/lib/DllModule.js +21 -4
- package/lib/DllModuleFactory.js +2 -1
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +50 -19
- package/lib/EntryOptionPlugin.js +6 -1
- package/lib/EntryPlugin.js +7 -4
- package/lib/Entrypoint.js +2 -2
- package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +65 -26
- package/lib/EvalDevToolModulePlugin.js +37 -13
- package/lib/EvalSourceMapDevToolPlugin.js +50 -20
- package/lib/ExportsInfo.js +234 -133
- package/lib/ExportsInfoApiPlugin.js +31 -15
- package/lib/ExternalModule.js +391 -129
- package/lib/ExternalModuleFactoryPlugin.js +65 -17
- package/lib/FileSystemInfo.js +1038 -523
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +352 -349
- package/lib/FlagDependencyUsagePlugin.js +10 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +16 -8
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +11 -13
- package/lib/HotModuleReplacementPlugin.js +221 -128
- package/lib/IgnoreErrorModuleFactory.js +4 -4
- package/lib/IgnorePlugin.js +5 -4
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +39 -15
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +45 -16
- package/lib/LoaderOptionsPlugin.js +13 -3
- package/lib/MainTemplate.js +74 -21
- package/lib/Module.js +155 -34
- package/lib/ModuleBuildError.js +13 -11
- package/lib/ModuleDependencyError.js +6 -4
- package/lib/ModuleDependencyWarning.js +6 -4
- package/lib/ModuleError.js +10 -5
- package/lib/ModuleFactory.js +4 -4
- package/lib/ModuleFilenameHelpers.js +164 -54
- package/lib/ModuleGraph.js +93 -53
- package/lib/ModuleGraphConnection.js +27 -13
- package/lib/ModuleHashingError.js +29 -0
- package/lib/ModuleInfoHeaderPlugin.js +92 -33
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +17 -9
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +3 -1
- package/lib/ModuleStoreError.js +3 -2
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +168 -0
- package/lib/ModuleWarning.js +10 -5
- package/lib/MultiCompiler.js +115 -38
- package/lib/MultiStats.js +75 -33
- package/lib/MultiWatching.js +6 -2
- package/lib/NodeStuffPlugin.js +136 -37
- package/lib/NormalModule.js +437 -194
- package/lib/NormalModuleFactory.js +313 -116
- package/lib/NormalModuleReplacementPlugin.js +10 -4
- package/lib/NullFactory.js +1 -1
- package/lib/OptimizationStages.js +3 -3
- package/lib/Parser.js +1 -1
- package/lib/PlatformPlugin.js +39 -0
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +83 -28
- package/lib/ProvidePlugin.js +37 -19
- package/lib/RawModule.js +18 -5
- package/lib/RecordIdsPlugin.js +8 -8
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/ResolverFactory.js +8 -4
- package/lib/RuntimeGlobals.js +99 -65
- package/lib/RuntimeModule.js +17 -15
- package/lib/RuntimePlugin.js +116 -13
- package/lib/RuntimeTemplate.js +304 -102
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +89 -42
- package/lib/Stats.js +12 -7
- package/lib/Template.js +30 -33
- package/lib/TemplatedPathPlugin.js +102 -34
- package/lib/UseStrictPlugin.js +37 -12
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +6 -0
- package/lib/WatchIgnorePlugin.js +46 -13
- package/lib/Watching.js +139 -76
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +162 -56
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +351 -99
- package/lib/asset/AssetModulesPlugin.js +57 -33
- package/lib/asset/AssetParser.js +15 -6
- package/lib/asset/AssetSourceGenerator.js +30 -10
- package/lib/asset/AssetSourceParser.js +8 -2
- package/lib/asset/RawDataUrlModule.js +162 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +376 -420
- package/lib/cache/AddManagedPathsPlugin.js +6 -1
- package/lib/cache/IdleFileCachePlugin.js +26 -13
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
- package/lib/cache/PackFileCacheStrategy.js +172 -94
- package/lib/cache/ResolverCachePlugin.js +115 -43
- package/lib/cache/getLazyHashedEtag.js +2 -2
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +195 -110
- package/lib/config/browserslistTargetHandler.js +106 -41
- package/lib/config/defaults.js +572 -154
- package/lib/config/normalization.js +361 -322
- package/lib/config/target.js +105 -66
- package/lib/container/ContainerEntryDependency.js +2 -1
- package/lib/container/ContainerEntryModule.js +27 -11
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +18 -12
- package/lib/container/ContainerReferencePlugin.js +1 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +19 -8
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/ModuleFederationPlugin.js +2 -0
- package/lib/container/RemoteModule.js +17 -4
- package/lib/container/RemoteRuntimeModule.js +31 -17
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +203 -0
- package/lib/css/CssGenerator.js +151 -0
- package/lib/css/CssLoadingRuntimeModule.js +592 -0
- package/lib/css/CssModulesPlugin.js +888 -0
- package/lib/css/CssParser.js +1049 -0
- package/lib/css/walkCssTokens.js +775 -0
- package/lib/debug/ProfilingPlugin.js +102 -54
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
- package/lib/dependencies/AMDPlugin.js +44 -24
- package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
- package/lib/dependencies/AMDRequireDependency.js +21 -6
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +4 -4
- package/lib/dependencies/CachedConstDependency.js +22 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
- package/lib/dependencies/CommonJsExportsDependency.js +28 -5
- package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
- package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
- package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
- package/lib/dependencies/CommonJsRequireDependency.js +9 -1
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
- package/lib/dependencies/ConstDependency.js +12 -3
- package/lib/dependencies/ContextDependency.js +32 -5
- package/lib/dependencies/ContextDependencyHelpers.js +92 -62
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
- package/lib/dependencies/ContextElementDependency.js +41 -4
- package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
- package/lib/dependencies/CriticalDependencyWarning.js +4 -1
- package/lib/dependencies/CssExportDependency.js +156 -0
- package/lib/dependencies/CssImportDependency.js +125 -0
- package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
- package/lib/dependencies/CssUrlDependency.js +164 -0
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +15 -11
- package/lib/dependencies/ExportsInfoDependency.js +26 -5
- package/lib/dependencies/ExternalModuleDependency.js +109 -0
- package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
- package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
- package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
- package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +13 -7
- package/lib/dependencies/HarmonyImportDependency.js +65 -19
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
- package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -2
- package/lib/dependencies/ImportDependency.js +50 -12
- package/lib/dependencies/ImportEagerDependency.js +11 -6
- package/lib/dependencies/ImportMetaContextDependency.js +42 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
- package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +128 -59
- package/lib/dependencies/ImportParserPlugin.js +153 -83
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +11 -6
- package/lib/dependencies/JsonExportsDependency.js +38 -30
- package/lib/dependencies/LoaderDependency.js +14 -0
- package/lib/dependencies/LoaderImportDependency.js +14 -0
- package/lib/dependencies/LoaderPlugin.js +54 -40
- package/lib/dependencies/LocalModule.js +17 -1
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +22 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
- package/lib/dependencies/ModuleDependency.js +24 -7
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +43 -8
- package/lib/dependencies/PureExpressionDependency.js +73 -39
- package/lib/dependencies/RequireContextDependency.js +6 -16
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
- package/lib/dependencies/RequireContextPlugin.js +20 -7
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
- package/lib/dependencies/RequireEnsureDependency.js +16 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +27 -7
- package/lib/dependencies/RequireHeaderDependency.js +14 -1
- package/lib/dependencies/RequireIncludeDependency.js +6 -1
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +19 -2
- package/lib/dependencies/RequireResolveDependency.js +8 -1
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +49 -22
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +20 -13
- package/lib/dependencies/URLPlugin.js +115 -27
- package/lib/dependencies/UnsupportedDependency.js +13 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -1
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +143 -59
- package/lib/dependencies/getFunctionExpression.js +9 -0
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
- package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
- package/lib/hmr/LazyCompilationPlugin.js +94 -41
- package/lib/hmr/lazyCompilationBackend.js +107 -44
- package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
- package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
- package/lib/ids/HashedModuleIdsPlugin.js +24 -16
- package/lib/ids/IdHelpers.js +59 -49
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +20 -12
- package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
- package/lib/ids/SyncModuleIdsPlugin.js +146 -0
- package/lib/index.js +44 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
- package/lib/javascript/BasicEvaluatedExpression.js +133 -19
- package/lib/javascript/ChunkHelpers.js +33 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
- package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
- package/lib/javascript/JavascriptGenerator.js +37 -6
- package/lib/javascript/JavascriptModulesPlugin.js +523 -295
- package/lib/javascript/JavascriptParser.js +1591 -574
- package/lib/javascript/JavascriptParserHelpers.js +58 -37
- package/lib/javascript/StartupHelpers.js +69 -47
- package/lib/json/JsonData.js +33 -0
- package/lib/json/JsonGenerator.js +29 -21
- package/lib/json/JsonModulesPlugin.js +13 -7
- package/lib/json/JsonParser.js +30 -16
- package/lib/library/AbstractLibraryPlugin.js +6 -2
- package/lib/library/AmdLibraryPlugin.js +34 -18
- package/lib/library/AssignLibraryPlugin.js +68 -32
- package/lib/library/EnableLibraryPlugin.js +39 -14
- package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
- package/lib/library/JsonpLibraryPlugin.js +4 -3
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- package/lib/library/ModuleLibraryPlugin.js +12 -7
- package/lib/library/SystemLibraryPlugin.js +6 -4
- package/lib/library/UmdLibraryPlugin.js +119 -100
- package/lib/logging/Logger.js +59 -6
- package/lib/logging/createConsoleLogger.js +25 -40
- package/lib/logging/runtime.js +8 -9
- package/lib/logging/truncateArgs.js +9 -8
- package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
- package/lib/node/NodeEnvironmentPlugin.js +14 -8
- package/lib/node/NodeTargetPlugin.js +7 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +100 -50
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
- package/lib/node/nodeConsole.js +48 -31
- package/lib/optimize/AggressiveMergingPlugin.js +10 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
- package/lib/optimize/ConcatenatedModule.js +353 -212
- package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
- package/lib/optimize/InnerGraph.js +30 -25
- package/lib/optimize/InnerGraphPlugin.js +105 -64
- package/lib/optimize/LimitChunkCountPlugin.js +32 -9
- package/lib/optimize/MangleExportsPlugin.js +7 -2
- package/lib/optimize/MinMaxSizeWarning.js +6 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
- package/lib/optimize/RealContentHashPlugin.js +99 -43
- package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
- package/lib/optimize/RuntimeChunkPlugin.js +15 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
- package/lib/optimize/SplitChunksPlugin.js +129 -78
- package/lib/performance/SizeLimitsPlugin.js +22 -8
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
- package/lib/rules/BasicEffectRulePlugin.js +7 -1
- package/lib/rules/BasicMatcherRulePlugin.js +8 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
- package/lib/rules/RuleSetCompiler.js +53 -32
- package/lib/rules/UseEffectRulePlugin.js +42 -36
- package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
- package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
- package/lib/runtime/BaseUriRuntimeModule.js +35 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
- package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +24 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +9 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +36 -28
- package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +336 -120
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +212 -33
- package/lib/serialization/DateObjectSerializer.js +16 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -6
- package/lib/serialization/FileMiddleware.js +187 -86
- package/lib/serialization/MapObjectSerializer.js +25 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
- package/lib/serialization/ObjectMiddleware.js +96 -66
- package/lib/serialization/PlainObjectSerializer.js +51 -14
- package/lib/serialization/RegExpObjectSerializer.js +17 -5
- package/lib/serialization/Serializer.js +23 -5
- package/lib/serialization/SerializerMiddleware.js +8 -8
- package/lib/serialization/SetObjectSerializer.js +22 -6
- package/lib/serialization/SingleItemMiddleware.js +2 -2
- package/lib/serialization/types.js +2 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +40 -17
- package/lib/sharing/ConsumeSharedPlugin.js +139 -102
- package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +19 -6
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +37 -30
- package/lib/sharing/SharePlugin.js +2 -2
- package/lib/sharing/ShareRuntimeModule.js +20 -10
- package/lib/sharing/resolveMatchedConfigs.js +6 -5
- package/lib/sharing/utils.js +338 -34
- package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
- package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
- package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
- package/lib/stats/StatsFactory.js +128 -57
- package/lib/stats/StatsPrinter.js +77 -46
- package/lib/util/ArrayHelpers.js +35 -1
- package/lib/util/ArrayQueue.js +15 -22
- package/lib/util/AsyncQueue.js +37 -16
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +11 -2
- package/lib/util/MapHelpers.js +17 -5
- package/lib/util/ParallelismFactorCalculator.js +11 -1
- package/lib/util/Queue.js +9 -3
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +19 -6
- package/lib/util/StackedCacheMap.js +33 -3
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +46 -0
- package/lib/util/TupleQueue.js +9 -3
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +8 -8
- package/lib/util/WeakTupleMap.js +70 -28
- package/lib/util/binarySearchBounds.js +51 -9
- package/lib/util/chainedImports.js +97 -0
- package/lib/util/cleverMerge.js +51 -36
- package/lib/util/comparators.js +146 -83
- package/lib/util/compileBooleanMatcher.js +35 -7
- package/lib/util/conventions.js +126 -0
- package/lib/util/create-schema-validation.js +9 -2
- package/lib/util/createHash.js +49 -14
- package/lib/util/deprecation.js +48 -15
- package/lib/util/deterministicGrouping.js +71 -39
- package/lib/util/extractUrlAndGlobal.js +3 -0
- package/lib/util/findGraphRoots.js +7 -5
- package/lib/util/fs.js +419 -94
- package/lib/util/hash/BatchedHash.js +10 -4
- package/lib/util/hash/md4.js +20 -0
- package/lib/util/hash/wasm-hash.js +163 -0
- package/lib/util/hash/xxhash64.js +7 -141
- package/lib/util/identifier.js +140 -93
- package/lib/util/internalSerializables.js +22 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +10 -10
- package/lib/util/mergeScope.js +76 -0
- package/lib/util/nonNumericOnlyHash.js +22 -0
- package/lib/util/numberHash.js +84 -34
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +7 -55
- package/lib/util/propertyName.js +77 -0
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/runtime.js +188 -133
- package/lib/util/semver.js +64 -56
- package/lib/util/serialization.js +26 -1
- package/lib/util/smartGrouping.js +10 -10
- package/lib/util/source.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
- package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +23 -9
- package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
- package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
- package/lib/web/FetchCompileWasmPlugin.js +59 -42
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +71 -41
- package/lib/webpack.js +43 -12
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
- package/module.d.ts +233 -0
- package/package.json +85 -139
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +679 -47
- package/schemas/plugins/BannerPlugin.check.js +1 -1
- package/schemas/plugins/BannerPlugin.json +9 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -1
- 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 +12 -1
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssParserOptions.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5026 -1756
@@ -35,6 +35,7 @@ const ResolverCachePlugin = require("./cache/ResolverCachePlugin");
|
|
35
35
|
|
36
36
|
const CommonJsPlugin = require("./dependencies/CommonJsPlugin");
|
37
37
|
const HarmonyModulesPlugin = require("./dependencies/HarmonyModulesPlugin");
|
38
|
+
const ImportMetaContextPlugin = require("./dependencies/ImportMetaContextPlugin");
|
38
39
|
const ImportMetaPlugin = require("./dependencies/ImportMetaPlugin");
|
39
40
|
const ImportPlugin = require("./dependencies/ImportPlugin");
|
40
41
|
const LoaderPlugin = require("./dependencies/LoaderPlugin");
|
@@ -56,6 +57,8 @@ const { cleverMerge } = require("./util/cleverMerge");
|
|
56
57
|
|
57
58
|
/** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
|
58
59
|
/** @typedef {import("./Compiler")} Compiler */
|
60
|
+
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
61
|
+
/** @typedef {import("./util/fs").IntermediateFileSystem} IntermediateFileSystem */
|
59
62
|
|
60
63
|
class WebpackOptionsApply extends OptionsApply {
|
61
64
|
constructor() {
|
@@ -68,13 +71,13 @@ class WebpackOptionsApply extends OptionsApply {
|
|
68
71
|
* @returns {WebpackOptions} options object
|
69
72
|
*/
|
70
73
|
process(options, compiler) {
|
71
|
-
compiler.outputPath = options.output.path;
|
74
|
+
compiler.outputPath = /** @type {string} */ (options.output.path);
|
72
75
|
compiler.recordsInputPath = options.recordsInputPath || null;
|
73
76
|
compiler.recordsOutputPath = options.recordsOutputPath || null;
|
74
77
|
compiler.name = options.name;
|
75
78
|
|
76
79
|
if (options.externals) {
|
77
|
-
|
80
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
78
81
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
79
82
|
new ExternalsPlugin(options.externalsType, options.externals).apply(
|
80
83
|
compiler
|
@@ -86,17 +89,17 @@ class WebpackOptionsApply extends OptionsApply {
|
|
86
89
|
new NodeTargetPlugin().apply(compiler);
|
87
90
|
}
|
88
91
|
if (options.externalsPresets.electronMain) {
|
89
|
-
|
92
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
90
93
|
const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
|
91
94
|
new ElectronTargetPlugin("main").apply(compiler);
|
92
95
|
}
|
93
96
|
if (options.externalsPresets.electronPreload) {
|
94
|
-
|
97
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
95
98
|
const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
|
96
99
|
new ElectronTargetPlugin("preload").apply(compiler);
|
97
100
|
}
|
98
101
|
if (options.externalsPresets.electronRenderer) {
|
99
|
-
|
102
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
100
103
|
const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
|
101
104
|
new ElectronTargetPlugin("renderer").apply(compiler);
|
102
105
|
}
|
@@ -106,23 +109,69 @@ class WebpackOptionsApply extends OptionsApply {
|
|
106
109
|
!options.externalsPresets.electronPreload &&
|
107
110
|
!options.externalsPresets.electronRenderer
|
108
111
|
) {
|
109
|
-
|
112
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
110
113
|
const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
|
111
114
|
new ElectronTargetPlugin().apply(compiler);
|
112
115
|
}
|
113
116
|
if (options.externalsPresets.nwjs) {
|
114
|
-
|
117
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
115
118
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
116
119
|
new ExternalsPlugin("node-commonjs", "nw.gui").apply(compiler);
|
117
120
|
}
|
118
121
|
if (options.externalsPresets.webAsync) {
|
119
|
-
|
122
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
120
123
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
121
|
-
new ExternalsPlugin("import",
|
124
|
+
new ExternalsPlugin("import", ({ request, dependencyType }, callback) => {
|
125
|
+
if (dependencyType === "url") {
|
126
|
+
if (/^(\/\/|https?:\/\/|#)/.test(request))
|
127
|
+
return callback(null, `asset ${request}`);
|
128
|
+
} else if (options.experiments.css && dependencyType === "css-import") {
|
129
|
+
if (/^(\/\/|https?:\/\/|#)/.test(request))
|
130
|
+
return callback(null, `css-import ${request}`);
|
131
|
+
} else if (
|
132
|
+
options.experiments.css &&
|
133
|
+
/^(\/\/|https?:\/\/|std:)/.test(request)
|
134
|
+
) {
|
135
|
+
if (/^\.css(\?|$)/.test(request))
|
136
|
+
return callback(null, `css-import ${request}`);
|
137
|
+
return callback(null, `import ${request}`);
|
138
|
+
}
|
139
|
+
callback();
|
140
|
+
}).apply(compiler);
|
122
141
|
} else if (options.externalsPresets.web) {
|
123
|
-
|
142
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
143
|
+
const ExternalsPlugin = require("./ExternalsPlugin");
|
144
|
+
new ExternalsPlugin("module", ({ request, dependencyType }, callback) => {
|
145
|
+
if (dependencyType === "url") {
|
146
|
+
if (/^(\/\/|https?:\/\/|#)/.test(request))
|
147
|
+
return callback(null, `asset ${request}`);
|
148
|
+
} else if (options.experiments.css && dependencyType === "css-import") {
|
149
|
+
if (/^(\/\/|https?:\/\/|#)/.test(request))
|
150
|
+
return callback(null, `css-import ${request}`);
|
151
|
+
} else if (/^(\/\/|https?:\/\/|std:)/.test(request)) {
|
152
|
+
if (options.experiments.css && /^\.css((\?)|$)/.test(request))
|
153
|
+
return callback(null, `css-import ${request}`);
|
154
|
+
return callback(null, `module ${request}`);
|
155
|
+
}
|
156
|
+
callback();
|
157
|
+
}).apply(compiler);
|
158
|
+
} else if (options.externalsPresets.node && options.experiments.css) {
|
159
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
124
160
|
const ExternalsPlugin = require("./ExternalsPlugin");
|
125
|
-
new ExternalsPlugin("module",
|
161
|
+
new ExternalsPlugin("module", ({ request, dependencyType }, callback) => {
|
162
|
+
if (dependencyType === "url") {
|
163
|
+
if (/^(\/\/|https?:\/\/|#)/.test(request))
|
164
|
+
return callback(null, `asset ${request}`);
|
165
|
+
} else if (dependencyType === "css-import") {
|
166
|
+
if (/^(\/\/|https?:\/\/|#)/.test(request))
|
167
|
+
return callback(null, `css-import ${request}`);
|
168
|
+
} else if (/^(\/\/|https?:\/\/|std:)/.test(request)) {
|
169
|
+
if (/^\.css(\?|$)/.test(request))
|
170
|
+
return callback(null, `css-import ${request}`);
|
171
|
+
return callback(null, `module ${request}`);
|
172
|
+
}
|
173
|
+
callback();
|
174
|
+
}).apply(compiler);
|
126
175
|
}
|
127
176
|
|
128
177
|
new ChunkPrefetchPreloadPlugin().apply(compiler);
|
@@ -146,27 +195,39 @@ class WebpackOptionsApply extends OptionsApply {
|
|
146
195
|
}
|
147
196
|
default:
|
148
197
|
throw new Error(
|
149
|
-
|
198
|
+
`Unsupported chunk format '${options.output.chunkFormat}'.`
|
150
199
|
);
|
151
200
|
}
|
152
201
|
}
|
153
202
|
|
154
|
-
|
155
|
-
|
203
|
+
const enabledChunkLoadingTypes =
|
204
|
+
/** @type {NonNullable<WebpackOptions["output"]["enabledChunkLoadingTypes"]>} */
|
205
|
+
(options.output.enabledChunkLoadingTypes);
|
206
|
+
|
207
|
+
if (enabledChunkLoadingTypes.length > 0) {
|
208
|
+
for (const type of enabledChunkLoadingTypes) {
|
156
209
|
const EnableChunkLoadingPlugin = require("./javascript/EnableChunkLoadingPlugin");
|
157
210
|
new EnableChunkLoadingPlugin(type).apply(compiler);
|
158
211
|
}
|
159
212
|
}
|
160
213
|
|
161
|
-
|
162
|
-
|
214
|
+
const enabledWasmLoadingTypes =
|
215
|
+
/** @type {NonNullable<WebpackOptions["output"]["enabledWasmLoadingTypes"]>} */
|
216
|
+
(options.output.enabledWasmLoadingTypes);
|
217
|
+
|
218
|
+
if (enabledWasmLoadingTypes.length > 0) {
|
219
|
+
for (const type of enabledWasmLoadingTypes) {
|
163
220
|
const EnableWasmLoadingPlugin = require("./wasm/EnableWasmLoadingPlugin");
|
164
221
|
new EnableWasmLoadingPlugin(type).apply(compiler);
|
165
222
|
}
|
166
223
|
}
|
167
224
|
|
168
|
-
|
169
|
-
|
225
|
+
const enabledLibraryTypes =
|
226
|
+
/** @type {NonNullable<WebpackOptions["output"]["enabledLibraryTypes"]>} */
|
227
|
+
(options.output.enabledLibraryTypes);
|
228
|
+
|
229
|
+
if (enabledLibraryTypes.length > 0) {
|
230
|
+
for (const type of enabledLibraryTypes) {
|
170
231
|
const EnableLibraryPlugin = require("./library/EnableLibraryPlugin");
|
171
232
|
new EnableLibraryPlugin(type).apply(compiler);
|
172
233
|
}
|
@@ -203,9 +264,9 @@ class WebpackOptionsApply extends OptionsApply {
|
|
203
264
|
fallbackModuleFilenameTemplate:
|
204
265
|
options.output.devtoolFallbackModuleFilenameTemplate,
|
205
266
|
append: hidden ? false : undefined,
|
206
|
-
module: moduleMaps ? true : cheap
|
207
|
-
columns: cheap
|
208
|
-
noSources
|
267
|
+
module: moduleMaps ? true : !cheap,
|
268
|
+
columns: !cheap,
|
269
|
+
noSources,
|
209
270
|
namespace: options.output.devtoolNamespace
|
210
271
|
}).apply(compiler);
|
211
272
|
} else if (options.devtool.includes("eval")) {
|
@@ -232,7 +293,15 @@ class WebpackOptionsApply extends OptionsApply {
|
|
232
293
|
"library type \"module\" is only allowed when 'experiments.outputModule' is enabled"
|
233
294
|
);
|
234
295
|
}
|
235
|
-
if (options.
|
296
|
+
if (options.output.enabledLibraryTypes.includes("modern-module")) {
|
297
|
+
throw new Error(
|
298
|
+
"library type \"modern-module\" is only allowed when 'experiments.outputModule' is enabled"
|
299
|
+
);
|
300
|
+
}
|
301
|
+
if (
|
302
|
+
options.externalsType === "module" ||
|
303
|
+
options.externalsType === "module-import"
|
304
|
+
) {
|
236
305
|
throw new Error(
|
237
306
|
"'externalsType: \"module\"' is only allowed when 'experiments.outputModule' is enabled"
|
238
307
|
);
|
@@ -253,23 +322,31 @@ class WebpackOptionsApply extends OptionsApply {
|
|
253
322
|
}).apply(compiler);
|
254
323
|
}
|
255
324
|
|
325
|
+
if (options.experiments.css) {
|
326
|
+
const CssModulesPlugin = require("./css/CssModulesPlugin");
|
327
|
+
new CssModulesPlugin().apply(compiler);
|
328
|
+
}
|
329
|
+
|
256
330
|
if (options.experiments.lazyCompilation) {
|
257
331
|
const LazyCompilationPlugin = require("./hmr/LazyCompilationPlugin");
|
258
332
|
const lazyOptions =
|
259
333
|
typeof options.experiments.lazyCompilation === "object"
|
260
334
|
? options.experiments.lazyCompilation
|
261
|
-
:
|
335
|
+
: {};
|
262
336
|
new LazyCompilationPlugin({
|
263
337
|
backend:
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
338
|
+
typeof lazyOptions.backend === "function"
|
339
|
+
? lazyOptions.backend
|
340
|
+
: require("./hmr/lazyCompilationBackend")({
|
341
|
+
...lazyOptions.backend,
|
342
|
+
client:
|
343
|
+
(lazyOptions.backend && lazyOptions.backend.client) ||
|
344
|
+
require.resolve(
|
345
|
+
`../hot/lazy-compilation-${
|
346
|
+
options.externalsPresets.node ? "node" : "web"
|
347
|
+
}.js`
|
348
|
+
)
|
349
|
+
}),
|
273
350
|
entries: !lazyOptions || lazyOptions.entries !== false,
|
274
351
|
imports: !lazyOptions || lazyOptions.imports !== false,
|
275
352
|
test: (lazyOptions && lazyOptions.test) || undefined
|
@@ -283,7 +360,11 @@ class WebpackOptionsApply extends OptionsApply {
|
|
283
360
|
}
|
284
361
|
|
285
362
|
new EntryOptionPlugin().apply(compiler);
|
286
|
-
compiler.hooks.entryOption.call(
|
363
|
+
compiler.hooks.entryOption.call(
|
364
|
+
/** @type {string} */
|
365
|
+
(options.context),
|
366
|
+
options.entry
|
367
|
+
);
|
287
368
|
|
288
369
|
new RuntimePlugin().apply(compiler);
|
289
370
|
|
@@ -308,7 +389,9 @@ class WebpackOptionsApply extends OptionsApply {
|
|
308
389
|
const NodeStuffPlugin = require("./NodeStuffPlugin");
|
309
390
|
new NodeStuffPlugin(options.node).apply(compiler);
|
310
391
|
}
|
311
|
-
new APIPlugin(
|
392
|
+
new APIPlugin({
|
393
|
+
module: options.output.module
|
394
|
+
}).apply(compiler);
|
312
395
|
new ExportsInfoApiPlugin().apply(compiler);
|
313
396
|
new WebpackIsIncludedPlugin().apply(compiler);
|
314
397
|
new ConstPlugin().apply(compiler);
|
@@ -317,13 +400,15 @@ class WebpackOptionsApply extends OptionsApply {
|
|
317
400
|
new RequireEnsurePlugin().apply(compiler);
|
318
401
|
new RequireContextPlugin().apply(compiler);
|
319
402
|
new ImportPlugin().apply(compiler);
|
403
|
+
new ImportMetaContextPlugin().apply(compiler);
|
320
404
|
new SystemPlugin().apply(compiler);
|
321
405
|
new ImportMetaPlugin().apply(compiler);
|
322
406
|
new URLPlugin().apply(compiler);
|
323
407
|
new WorkerPlugin(
|
324
408
|
options.output.workerChunkLoading,
|
325
409
|
options.output.workerWasmLoading,
|
326
|
-
options.output.module
|
410
|
+
options.output.module,
|
411
|
+
options.output.workerPublicPath
|
327
412
|
).apply(compiler);
|
328
413
|
|
329
414
|
new DefaultStatsFactoryPlugin().apply(compiler);
|
@@ -391,7 +476,10 @@ class WebpackOptionsApply extends OptionsApply {
|
|
391
476
|
}
|
392
477
|
if (options.optimization.runtimeChunk) {
|
393
478
|
const RuntimeChunkPlugin = require("./optimize/RuntimeChunkPlugin");
|
394
|
-
new RuntimeChunkPlugin(
|
479
|
+
new RuntimeChunkPlugin(
|
480
|
+
/** @type {{ name?: (entrypoint: { name: string }) => string }} */
|
481
|
+
(options.optimization.runtimeChunk)
|
482
|
+
).apply(compiler);
|
395
483
|
}
|
396
484
|
if (!options.optimization.emitOnErrors) {
|
397
485
|
const NoEmitOnErrorsPlugin = require("./NoEmitOnErrorsPlugin");
|
@@ -471,7 +559,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
471
559
|
break;
|
472
560
|
}
|
473
561
|
case "size": {
|
474
|
-
|
562
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
475
563
|
const OccurrenceChunkIdsPlugin = require("./ids/OccurrenceChunkIdsPlugin");
|
476
564
|
new OccurrenceChunkIdsPlugin({
|
477
565
|
prioritiseInitial: true
|
@@ -479,7 +567,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
479
567
|
break;
|
480
568
|
}
|
481
569
|
case "total-size": {
|
482
|
-
|
570
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
483
571
|
const OccurrenceChunkIdsPlugin = require("./ids/OccurrenceChunkIdsPlugin");
|
484
572
|
new OccurrenceChunkIdsPlugin({
|
485
573
|
prioritiseInitial: false
|
@@ -502,7 +590,7 @@ class WebpackOptionsApply extends OptionsApply {
|
|
502
590
|
for (const minimizer of options.optimization.minimizer) {
|
503
591
|
if (typeof minimizer === "function") {
|
504
592
|
minimizer.call(compiler, compiler);
|
505
|
-
} else if (minimizer !== "...") {
|
593
|
+
} else if (minimizer !== "..." && minimizer) {
|
506
594
|
minimizer.apply(compiler);
|
507
595
|
}
|
508
596
|
}
|
@@ -523,22 +611,28 @@ class WebpackOptionsApply extends OptionsApply {
|
|
523
611
|
|
524
612
|
const AddManagedPathsPlugin = require("./cache/AddManagedPathsPlugin");
|
525
613
|
new AddManagedPathsPlugin(
|
526
|
-
|
527
|
-
options.snapshot.
|
614
|
+
/** @type {NonNullable<WebpackOptions["snapshot"]["managedPaths"]>} */
|
615
|
+
(options.snapshot.managedPaths),
|
616
|
+
/** @type {NonNullable<WebpackOptions["snapshot"]["managedPaths"]>} */
|
617
|
+
(options.snapshot.immutablePaths),
|
618
|
+
/** @type {NonNullable<WebpackOptions["snapshot"]["managedPaths"]>} */
|
619
|
+
(options.snapshot.unmanagedPaths)
|
528
620
|
).apply(compiler);
|
529
621
|
|
530
622
|
if (options.cache && typeof options.cache === "object") {
|
531
623
|
const cacheOptions = options.cache;
|
532
624
|
switch (cacheOptions.type) {
|
533
625
|
case "memory": {
|
534
|
-
if (isFinite(cacheOptions.maxGenerations)) {
|
535
|
-
|
626
|
+
if (Number.isFinite(cacheOptions.maxGenerations)) {
|
627
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
536
628
|
const MemoryWithGcCachePlugin = require("./cache/MemoryWithGcCachePlugin");
|
537
629
|
new MemoryWithGcCachePlugin({
|
538
|
-
maxGenerations:
|
630
|
+
maxGenerations:
|
631
|
+
/** @type {number} */
|
632
|
+
(cacheOptions.maxGenerations)
|
539
633
|
}).apply(compiler);
|
540
634
|
} else {
|
541
|
-
|
635
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
542
636
|
const MemoryCachePlugin = require("./cache/MemoryCachePlugin");
|
543
637
|
new MemoryCachePlugin().apply(compiler);
|
544
638
|
}
|
@@ -554,16 +648,17 @@ class WebpackOptionsApply extends OptionsApply {
|
|
554
648
|
}
|
555
649
|
case "filesystem": {
|
556
650
|
const AddBuildDependenciesPlugin = require("./cache/AddBuildDependenciesPlugin");
|
651
|
+
// eslint-disable-next-line guard-for-in
|
557
652
|
for (const key in cacheOptions.buildDependencies) {
|
558
653
|
const list = cacheOptions.buildDependencies[key];
|
559
654
|
new AddBuildDependenciesPlugin(list).apply(compiler);
|
560
655
|
}
|
561
|
-
if (!isFinite(cacheOptions.maxMemoryGenerations)) {
|
562
|
-
|
656
|
+
if (!Number.isFinite(cacheOptions.maxMemoryGenerations)) {
|
657
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
563
658
|
const MemoryCachePlugin = require("./cache/MemoryCachePlugin");
|
564
659
|
new MemoryCachePlugin().apply(compiler);
|
565
660
|
} else if (cacheOptions.maxMemoryGenerations !== 0) {
|
566
|
-
|
661
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
567
662
|
const MemoryWithGcCachePlugin = require("./cache/MemoryWithGcCachePlugin");
|
568
663
|
new MemoryWithGcCachePlugin({
|
569
664
|
maxGenerations: cacheOptions.maxMemoryGenerations
|
@@ -584,18 +679,23 @@ class WebpackOptionsApply extends OptionsApply {
|
|
584
679
|
new IdleFileCachePlugin(
|
585
680
|
new PackFileCacheStrategy({
|
586
681
|
compiler,
|
587
|
-
fs:
|
588
|
-
|
589
|
-
|
682
|
+
fs:
|
683
|
+
/** @type {IntermediateFileSystem} */
|
684
|
+
(compiler.intermediateFileSystem),
|
685
|
+
context: /** @type {string} */ (options.context),
|
686
|
+
cacheLocation:
|
687
|
+
/** @type {string} */
|
688
|
+
(cacheOptions.cacheLocation),
|
590
689
|
version: cacheOptions.version,
|
591
690
|
logger: compiler.getInfrastructureLogger(
|
592
691
|
"webpack.cache.PackFileCacheStrategy"
|
593
692
|
),
|
594
693
|
snapshot: options.snapshot,
|
595
|
-
maxAge: cacheOptions.maxAge,
|
694
|
+
maxAge: /** @type {number} */ (cacheOptions.maxAge),
|
596
695
|
profile: cacheOptions.profile,
|
597
696
|
allowCollectingMemory: cacheOptions.allowCollectingMemory,
|
598
|
-
compression: cacheOptions.compression
|
697
|
+
compression: cacheOptions.compression,
|
698
|
+
readonly: cacheOptions.readonly
|
599
699
|
}),
|
600
700
|
cacheOptions.idleTimeout,
|
601
701
|
cacheOptions.idleTimeoutForInitialStore,
|
@@ -628,14 +728,18 @@ class WebpackOptionsApply extends OptionsApply {
|
|
628
728
|
.for("normal")
|
629
729
|
.tap("WebpackOptionsApply", resolveOptions => {
|
630
730
|
resolveOptions = cleverMerge(options.resolve, resolveOptions);
|
631
|
-
resolveOptions.fileSystem =
|
731
|
+
resolveOptions.fileSystem =
|
732
|
+
/** @type {InputFileSystem} */
|
733
|
+
(compiler.inputFileSystem);
|
632
734
|
return resolveOptions;
|
633
735
|
});
|
634
736
|
compiler.resolverFactory.hooks.resolveOptions
|
635
737
|
.for("context")
|
636
738
|
.tap("WebpackOptionsApply", resolveOptions => {
|
637
739
|
resolveOptions = cleverMerge(options.resolve, resolveOptions);
|
638
|
-
resolveOptions.fileSystem =
|
740
|
+
resolveOptions.fileSystem =
|
741
|
+
/** @type {InputFileSystem} */
|
742
|
+
(compiler.inputFileSystem);
|
639
743
|
resolveOptions.resolveToContext = true;
|
640
744
|
return resolveOptions;
|
641
745
|
});
|
@@ -643,7 +747,9 @@ class WebpackOptionsApply extends OptionsApply {
|
|
643
747
|
.for("loader")
|
644
748
|
.tap("WebpackOptionsApply", resolveOptions => {
|
645
749
|
resolveOptions = cleverMerge(options.resolveLoader, resolveOptions);
|
646
|
-
resolveOptions.fileSystem =
|
750
|
+
resolveOptions.fileSystem =
|
751
|
+
/** @type {InputFileSystem} */
|
752
|
+
(compiler.inputFileSystem);
|
647
753
|
return resolveOptions;
|
648
754
|
});
|
649
755
|
compiler.hooks.afterResolvers.call(compiler);
|
@@ -8,11 +8,18 @@
|
|
8
8
|
const { applyWebpackOptionsDefaults } = require("./config/defaults");
|
9
9
|
const { getNormalizedWebpackOptions } = require("./config/normalization");
|
10
10
|
|
11
|
+
/** @typedef {import("./config/normalization").WebpackOptions} WebpackOptions */
|
12
|
+
/** @typedef {import("./config/normalization").WebpackOptionsNormalized} WebpackOptionsNormalized */
|
13
|
+
|
11
14
|
class WebpackOptionsDefaulter {
|
15
|
+
/**
|
16
|
+
* @param {WebpackOptions} options webpack options
|
17
|
+
* @returns {WebpackOptionsNormalized} normalized webpack options
|
18
|
+
*/
|
12
19
|
process(options) {
|
13
|
-
|
14
|
-
applyWebpackOptionsDefaults(
|
15
|
-
return
|
20
|
+
const normalizedOptions = getNormalizedWebpackOptions(options);
|
21
|
+
applyWebpackOptionsDefaults(normalizedOptions);
|
22
|
+
return normalizedOptions;
|
16
23
|
}
|
17
24
|
}
|
18
25
|
|