webpack 5.76.1 → 5.88.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/README.md +10 -4
- package/bin/webpack.js +26 -2
- package/hot/dev-server.js +2 -1
- package/hot/lazy-compilation-node.js +10 -0
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +22 -0
- package/hot/only-dev-server.js +2 -1
- package/hot/poll.js +3 -0
- package/hot/signal.js +4 -0
- package/lib/APIPlugin.js +174 -116
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -0
- package/lib/BannerPlugin.js +6 -1
- package/lib/CacheFacade.js +4 -0
- package/lib/CaseSensitiveModulesWarning.js +3 -1
- package/lib/Chunk.js +36 -18
- package/lib/ChunkGraph.js +4 -4
- package/lib/ChunkGroup.js +25 -10
- package/lib/CleanPlugin.js +30 -7
- package/lib/CodeGenerationResults.js +2 -2
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +17 -8
- package/lib/Compiler.js +18 -14
- package/lib/ConcatenationScope.js +2 -2
- package/lib/ConditionalInitFragment.js +11 -1
- package/lib/ConstPlugin.js +95 -47
- package/lib/ContextModule.js +20 -6
- package/lib/ContextModuleFactory.js +2 -1
- package/lib/ContextReplacementPlugin.js +13 -0
- package/lib/CssModule.js +169 -0
- package/lib/DefinePlugin.js +152 -86
- package/lib/DelegatedModule.js +22 -4
- package/lib/DelegatedModuleFactoryPlugin.js +6 -0
- package/lib/DependenciesBlock.js +17 -1
- package/lib/Dependency.js +19 -5
- package/lib/DependencyTemplates.js +1 -1
- package/lib/DllEntryPlugin.js +16 -1
- package/lib/DllModule.js +17 -2
- package/lib/DllModuleFactory.js +1 -1
- package/lib/DllReferencePlugin.js +13 -1
- package/lib/Entrypoint.js +1 -1
- package/lib/ErrorHelpers.js +62 -22
- package/lib/EvalSourceMapDevToolPlugin.js +9 -2
- package/lib/ExportsInfo.js +25 -4
- package/lib/ExportsInfoApiPlugin.js +30 -14
- package/lib/ExternalModule.js +30 -9
- package/lib/FileSystemInfo.js +61 -25
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +336 -348
- package/lib/FlagDependencyUsagePlugin.js +9 -9
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +7 -0
- package/lib/HookWebpackError.js +1 -1
- package/lib/HotModuleReplacementPlugin.js +60 -46
- package/lib/IgnoreErrorModuleFactory.js +1 -1
- package/lib/InitFragment.js +28 -5
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +22 -5
- package/lib/LoaderOptionsPlugin.js +12 -2
- package/lib/MainTemplate.js +2 -2
- package/lib/Module.js +44 -12
- package/lib/ModuleBuildError.js +9 -0
- package/lib/ModuleDependencyError.js +4 -2
- package/lib/ModuleDependencyWarning.js +4 -2
- package/lib/ModuleError.js +9 -0
- package/lib/ModuleFactory.js +1 -1
- package/lib/ModuleFilenameHelpers.js +114 -4
- package/lib/ModuleGraph.js +33 -23
- package/lib/ModuleGraphConnection.js +19 -6
- package/lib/ModuleInfoHeaderPlugin.js +9 -2
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +9 -0
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +2 -0
- package/lib/ModuleStoreError.js +2 -1
- package/lib/ModuleTypeConstants.js +169 -0
- package/lib/ModuleWarning.js +9 -0
- package/lib/MultiWatching.js +4 -0
- package/lib/NodeStuffPlugin.js +65 -35
- package/lib/NormalModule.js +12 -2
- package/lib/NormalModuleFactory.js +56 -8
- package/lib/NormalModuleReplacementPlugin.js +5 -3
- package/lib/NullFactory.js +1 -1
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +71 -15
- package/lib/ProvidePlugin.js +30 -14
- package/lib/RawModule.js +13 -2
- package/lib/RecordIdsPlugin.js +4 -4
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimeModule.js +12 -11
- package/lib/RuntimePlugin.js +10 -3
- package/lib/RuntimeTemplate.js +29 -11
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +47 -11
- package/lib/Template.js +5 -3
- package/lib/UseStrictPlugin.js +29 -11
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +7 -0
- package/lib/WatchIgnorePlugin.js +4 -0
- package/lib/Watching.js +62 -25
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +41 -44
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +24 -9
- package/lib/asset/AssetModulesPlugin.js +28 -12
- package/lib/asset/AssetParser.js +15 -7
- package/lib/asset/AssetSourceParser.js +8 -3
- package/lib/asset/RawDataUrlModule.js +15 -4
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +37 -21
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
- package/lib/cache/PackFileCacheStrategy.js +59 -22
- package/lib/cache/ResolverCachePlugin.js +3 -0
- package/lib/config/browserslistTargetHandler.js +10 -10
- package/lib/config/defaults.js +306 -105
- package/lib/config/normalization.js +110 -71
- package/lib/config/target.js +37 -10
- package/lib/container/ContainerEntryModule.js +11 -1
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +3 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +12 -2
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/RemoteModule.js +11 -1
- package/lib/container/RemoteRuntimeModule.js +3 -2
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/css/CssExportsGenerator.js +9 -0
- package/lib/css/CssGenerator.js +5 -1
- package/lib/css/CssLoadingRuntimeModule.js +53 -22
- package/lib/css/CssModulesPlugin.js +253 -74
- package/lib/css/CssParser.js +697 -282
- package/lib/css/walkCssTokens.js +269 -138
- package/lib/debug/ProfilingPlugin.js +33 -12
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
- package/lib/dependencies/AMDPlugin.js +33 -20
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
- package/lib/dependencies/AMDRequireDependency.js +16 -1
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CachedConstDependency.js +14 -0
- package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
- package/lib/dependencies/CommonJsExportsDependency.js +16 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
- package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
- package/lib/dependencies/CommonJsRequireDependency.js +7 -0
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
- package/lib/dependencies/ConstDependency.js +11 -2
- package/lib/dependencies/ContextDependency.js +15 -2
- package/lib/dependencies/ContextDependencyHelpers.js +3 -3
- package/lib/dependencies/ContextElementDependency.js +8 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
- package/lib/dependencies/CriticalDependencyWarning.js +3 -0
- package/lib/dependencies/CssExportDependency.js +8 -0
- package/lib/dependencies/CssImportDependency.js +55 -3
- package/lib/dependencies/CssLocalIdentifierDependency.js +18 -1
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
- package/lib/dependencies/CssUrlDependency.js +46 -16
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +10 -6
- package/lib/dependencies/ExportsInfoDependency.js +25 -4
- package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
- package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +11 -5
- package/lib/dependencies/HarmonyImportDependency.js +10 -1
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
- package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -0
- package/lib/dependencies/ImportDependency.js +15 -4
- package/lib/dependencies/ImportEagerDependency.js +7 -4
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +103 -51
- package/lib/dependencies/ImportParserPlugin.js +83 -25
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +7 -4
- package/lib/dependencies/JsonExportsDependency.js +9 -1
- package/lib/dependencies/LocalModule.js +16 -0
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +18 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
- package/lib/dependencies/ModuleDependency.js +9 -1
- 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 +14 -2
- package/lib/dependencies/PureExpressionDependency.js +10 -1
- package/lib/dependencies/RequireContextDependency.js +6 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
- package/lib/dependencies/RequireContextPlugin.js +19 -6
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
- 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 +5 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +17 -0
- package/lib/dependencies/RequireResolveDependency.js +6 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +48 -21
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +13 -4
- package/lib/dependencies/URLPlugin.js +31 -18
- 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 +5 -0
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +105 -32
- package/lib/dependencies/getFunctionExpression.js +7 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
- package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +14 -5
- package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
- package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
- package/lib/ids/HashedModuleIdsPlugin.js +9 -2
- package/lib/ids/IdHelpers.js +6 -0
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +14 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -2
- package/lib/index.js +8 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +137 -11
- package/lib/javascript/ChunkHelpers.js +2 -2
- package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
- package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
- package/lib/javascript/JavascriptModulesPlugin.js +217 -198
- package/lib/javascript/JavascriptParser.js +941 -256
- package/lib/javascript/JavascriptParserHelpers.js +37 -15
- package/lib/javascript/StartupHelpers.js +2 -2
- package/lib/json/JsonData.js +26 -1
- package/lib/json/JsonGenerator.js +21 -7
- package/lib/json/JsonModulesPlugin.js +14 -5
- package/lib/json/JsonParser.js +27 -13
- package/lib/library/AbstractLibraryPlugin.js +4 -0
- package/lib/library/AmdLibraryPlugin.js +22 -6
- package/lib/library/AssignLibraryPlugin.js +19 -5
- package/lib/library/EnableLibraryPlugin.js +4 -0
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +8 -4
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +24 -2
- package/lib/logging/runtime.js +1 -1
- package/lib/logging/truncateArgs.js +4 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
- package/lib/node/NodeTargetPlugin.js +3 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +1 -1
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +8 -0
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
- package/lib/optimize/ConcatenatedModule.js +8 -6
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
- package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
- package/lib/optimize/InnerGraph.js +5 -5
- package/lib/optimize/InnerGraphPlugin.js +57 -48
- package/lib/optimize/LimitChunkCountPlugin.js +29 -4
- package/lib/optimize/MangleExportsPlugin.js +1 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
- package/lib/optimize/RealContentHashPlugin.js +86 -30
- package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
- package/lib/optimize/RuntimeChunkPlugin.js +9 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
- package/lib/optimize/SplitChunksPlugin.js +71 -31
- package/lib/performance/SizeLimitsPlugin.js +7 -4
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
- package/lib/rules/BasicEffectRulePlugin.js +4 -0
- package/lib/rules/BasicMatcherRulePlugin.js +5 -0
- package/lib/rules/RuleSetCompiler.js +3 -3
- package/lib/rules/UseEffectRulePlugin.js +6 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
- package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
- package/lib/runtime/BaseUriRuntimeModule.js +8 -4
- 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 +5 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +1 -1
- 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 +13 -4
- package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +38 -0
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +164 -1
- package/lib/serialization/DateObjectSerializer.js +15 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -8
- package/lib/serialization/FileMiddleware.js +17 -0
- package/lib/serialization/MapObjectSerializer.js +24 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
- package/lib/serialization/ObjectMiddleware.js +33 -2
- package/lib/serialization/PlainObjectSerializer.js +23 -12
- package/lib/serialization/RegExpObjectSerializer.js +16 -5
- package/lib/serialization/SetObjectSerializer.js +21 -6
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +13 -2
- package/lib/sharing/ConsumeSharedPlugin.js +4 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +11 -1
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +22 -21
- package/lib/sharing/ShareRuntimeModule.js +19 -9
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/sharing/utils.js +320 -7
- package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
- package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
- package/lib/util/AsyncQueue.js +4 -2
- package/lib/util/LazySet.js +10 -2
- package/lib/util/MapHelpers.js +19 -5
- package/lib/util/ParallelismFactorCalculator.js +10 -0
- package/lib/util/Semaphore.js +1 -1
- package/lib/util/StackedCacheMap.js +7 -1
- package/lib/util/StringXor.js +51 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -1
- package/lib/util/binarySearchBounds.js +49 -0
- package/lib/util/compileBooleanMatcher.js +31 -0
- package/lib/util/createHash.js +35 -13
- package/lib/util/deprecation.js +18 -3
- package/lib/util/deterministicGrouping.js +50 -11
- package/lib/util/findGraphRoots.js +4 -2
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +4 -0
- package/lib/util/internalSerializables.js +1 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +3 -3
- package/lib/util/numberHash.js +75 -21
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +9 -54
- package/lib/util/propertyName.js +79 -0
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +84 -21
- package/lib/util/semver.js +2 -1
- package/lib/util/serialization.js +10 -0
- package/lib/util/smartGrouping.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
- package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +15 -4
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- 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 +26 -9
- package/lib/webpack.js +12 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
- package/module.d.ts +55 -37
- package/package.json +59 -56
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +133 -6
- 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/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
- package/schemas/plugins/css/CssParserOptions.json +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +1629 -683
package/lib/FileSystemInfo.js
CHANGED
@@ -18,6 +18,8 @@ const processAsyncTree = require("./util/processAsyncTree");
|
|
18
18
|
|
19
19
|
/** @typedef {import("./WebpackError")} WebpackError */
|
20
20
|
/** @typedef {import("./logging/Logger").Logger} Logger */
|
21
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
22
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
21
23
|
/** @typedef {typeof import("./util/Hash")} Hash */
|
22
24
|
/** @typedef {import("./util/fs").IStats} IStats */
|
23
25
|
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
@@ -97,8 +99,8 @@ const INVALID = Symbol("invalid");
|
|
97
99
|
* @typedef {Object} SnapshotOptimizationEntry
|
98
100
|
* @property {Snapshot} snapshot
|
99
101
|
* @property {number} shared
|
100
|
-
* @property {Set<string>} snapshotContent
|
101
|
-
* @property {Set<SnapshotOptimizationEntry>} children
|
102
|
+
* @property {Set<string> | undefined} snapshotContent
|
103
|
+
* @property {Set<SnapshotOptimizationEntry> | undefined} children
|
102
104
|
*/
|
103
105
|
|
104
106
|
/**
|
@@ -113,6 +115,12 @@ const INVALID = Symbol("invalid");
|
|
113
115
|
* @property {Set<string>} resolveDependencies.missing list of missing entries
|
114
116
|
*/
|
115
117
|
|
118
|
+
/**
|
119
|
+
* @typedef {Object} SnapshotOptions
|
120
|
+
* @property {boolean=} hash should use hash to snapshot
|
121
|
+
* @property {boolean=} timestamp should use timestamp to snapshot
|
122
|
+
*/
|
123
|
+
|
116
124
|
const DONE_ITERATOR_RESULT = new Set().keys().next();
|
117
125
|
|
118
126
|
// cspell:word tshs
|
@@ -135,7 +143,7 @@ class SnapshotIterable {
|
|
135
143
|
let state = 0;
|
136
144
|
/** @type {IterableIterator<string>} */
|
137
145
|
let it;
|
138
|
-
/** @type {(Snapshot) => (Map<string, any> | Set<string>)[]} */
|
146
|
+
/** @type {(snapshot: Snapshot) => (Map<string, any> | Set<string>)[]} */
|
139
147
|
let getMaps;
|
140
148
|
/** @type {(Map<string, any> | Set<string>)[]} */
|
141
149
|
let maps;
|
@@ -378,6 +386,9 @@ class Snapshot {
|
|
378
386
|
this.children.add(child);
|
379
387
|
}
|
380
388
|
|
389
|
+
/**
|
390
|
+
* @param {ObjectSerializerContext} context context
|
391
|
+
*/
|
381
392
|
serialize({ write }) {
|
382
393
|
write(this._flags);
|
383
394
|
if (this.hasStartTime()) write(this.startTime);
|
@@ -395,6 +406,9 @@ class Snapshot {
|
|
395
406
|
if (this.hasChildren()) write(this.children);
|
396
407
|
}
|
397
408
|
|
409
|
+
/**
|
410
|
+
* @param {ObjectDeserializerContext} context context
|
411
|
+
*/
|
398
412
|
deserialize({ read }) {
|
399
413
|
this._flags = read();
|
400
414
|
if (this.hasStartTime()) this.startTime = read();
|
@@ -544,7 +558,7 @@ class SnapshotOptimization {
|
|
544
558
|
}
|
545
559
|
};
|
546
560
|
|
547
|
-
/** @type {SnapshotOptimizationEntry} */
|
561
|
+
/** @type {SnapshotOptimizationEntry | undefined} */
|
548
562
|
let newOptimizationEntry = undefined;
|
549
563
|
|
550
564
|
const capturedFilesSize = capturedFiles.size;
|
@@ -749,10 +763,9 @@ const mergeMaps = (a, b) => {
|
|
749
763
|
|
750
764
|
/**
|
751
765
|
* @template T
|
752
|
-
* @
|
753
|
-
* @param {Set<T
|
754
|
-
* @
|
755
|
-
* @returns {Set<T, K>} joined map
|
766
|
+
* @param {Set<T>} a source map
|
767
|
+
* @param {Set<T>} b joining map
|
768
|
+
* @returns {Set<T>} joined map
|
756
769
|
*/
|
757
770
|
const mergeSets = (a, b) => {
|
758
771
|
if (!b || b.size === 0) return a;
|
@@ -850,8 +863,8 @@ const getManagedItem = (managedPath, path) => {
|
|
850
863
|
|
851
864
|
/**
|
852
865
|
* @template {ContextFileSystemInfoEntry | ContextTimestampAndHash} T
|
853
|
-
* @param {T} entry entry
|
854
|
-
* @returns {T["resolved"] | undefined} the resolved entry
|
866
|
+
* @param {T | null} entry entry
|
867
|
+
* @returns {T["resolved"] | null | undefined} the resolved entry
|
855
868
|
*/
|
856
869
|
const getResolvedTimestamp = entry => {
|
857
870
|
if (entry === null) return null;
|
@@ -860,8 +873,8 @@ const getResolvedTimestamp = entry => {
|
|
860
873
|
};
|
861
874
|
|
862
875
|
/**
|
863
|
-
* @param {ContextHash} entry entry
|
864
|
-
* @returns {string | undefined} the resolved entry
|
876
|
+
* @param {ContextHash | null} entry entry
|
877
|
+
* @returns {string | null | undefined} the resolved entry
|
865
878
|
*/
|
866
879
|
const getResolvedHash = entry => {
|
867
880
|
if (entry === null) return null;
|
@@ -869,6 +882,11 @@ const getResolvedHash = entry => {
|
|
869
882
|
return entry.symlinks === undefined ? entry.hash : undefined;
|
870
883
|
};
|
871
884
|
|
885
|
+
/**
|
886
|
+
* @template T
|
887
|
+
* @param {Set<T>} source source
|
888
|
+
* @param {Set<T>} target target
|
889
|
+
*/
|
872
890
|
const addAll = (source, target) => {
|
873
891
|
for (const key of source) target.add(key);
|
874
892
|
};
|
@@ -1137,6 +1155,11 @@ class FileSystemInfo {
|
|
1137
1155
|
);
|
1138
1156
|
}
|
1139
1157
|
|
1158
|
+
/**
|
1159
|
+
* @param {string} path path
|
1160
|
+
* @param {string} reason reason
|
1161
|
+
* @param {any[]} args arguments
|
1162
|
+
*/
|
1140
1163
|
_log(path, reason, ...args) {
|
1141
1164
|
const key = path + reason;
|
1142
1165
|
if (this._loggedPaths.has(key)) return;
|
@@ -1250,7 +1273,7 @@ class FileSystemInfo {
|
|
1250
1273
|
|
1251
1274
|
/**
|
1252
1275
|
* @param {string} path file path
|
1253
|
-
* @param {function((WebpackError | null)=, string=): void} callback callback function
|
1276
|
+
* @param {function((WebpackError | null)=, (string | null)=): void} callback callback function
|
1254
1277
|
* @returns {void}
|
1255
1278
|
*/
|
1256
1279
|
getFileHash(path, callback) {
|
@@ -1281,7 +1304,7 @@ class FileSystemInfo {
|
|
1281
1304
|
|
1282
1305
|
/**
|
1283
1306
|
* @param {string} path context path
|
1284
|
-
* @param {function((WebpackError | null)=, ContextHash=): void} callback callback function
|
1307
|
+
* @param {function((WebpackError | null)=, (ContextHash | null)=): void} callback callback function
|
1285
1308
|
* @returns {void}
|
1286
1309
|
*/
|
1287
1310
|
_getUnresolvedContextHash(path, callback) {
|
@@ -1312,7 +1335,7 @@ class FileSystemInfo {
|
|
1312
1335
|
|
1313
1336
|
/**
|
1314
1337
|
* @param {string} path context path
|
1315
|
-
* @param {function((WebpackError | null)=, ContextTimestampAndHash=): void} callback callback function
|
1338
|
+
* @param {function((WebpackError | null)=, (ContextTimestampAndHash | null)=): void} callback callback function
|
1316
1339
|
* @returns {void}
|
1317
1340
|
*/
|
1318
1341
|
_getUnresolvedContextTsh(path, callback) {
|
@@ -1375,7 +1398,7 @@ class FileSystemInfo {
|
|
1375
1398
|
const resolveDirectories = new Set();
|
1376
1399
|
/** @type {Set<string>} */
|
1377
1400
|
const resolveMissing = new Set();
|
1378
|
-
/** @type {Map<string, string | false>} */
|
1401
|
+
/** @type {Map<string, string | false | undefined>} */
|
1379
1402
|
const resolveResults = new Map();
|
1380
1403
|
const invalidResolveResults = new Set();
|
1381
1404
|
const resolverContext = {
|
@@ -1383,6 +1406,10 @@ class FileSystemInfo {
|
|
1383
1406
|
contextDependencies: resolveDirectories,
|
1384
1407
|
missingDependencies: resolveMissing
|
1385
1408
|
};
|
1409
|
+
/**
|
1410
|
+
* @param {string} expected expected result
|
1411
|
+
* @returns {string} expected result
|
1412
|
+
*/
|
1386
1413
|
const expectedToString = expected => {
|
1387
1414
|
return expected ? ` (expected ${expected})` : "";
|
1388
1415
|
};
|
@@ -1456,7 +1483,7 @@ class FileSystemInfo {
|
|
1456
1483
|
push({
|
1457
1484
|
type: RBDT_DIRECTORY,
|
1458
1485
|
context: undefined,
|
1459
|
-
path: resultPath,
|
1486
|
+
path: /** @type {string} */ (resultPath),
|
1460
1487
|
expected: undefined,
|
1461
1488
|
issuer: job
|
1462
1489
|
});
|
@@ -1602,7 +1629,7 @@ class FileSystemInfo {
|
|
1602
1629
|
break;
|
1603
1630
|
}
|
1604
1631
|
// Check commonjs cache for the module
|
1605
|
-
/** @type {NodeModule} */
|
1632
|
+
/** @type {NodeModule | undefined} */
|
1606
1633
|
const module = require.cache[path];
|
1607
1634
|
if (module && Array.isArray(module.children)) {
|
1608
1635
|
children: for (const child of module.children) {
|
@@ -1902,13 +1929,11 @@ class FileSystemInfo {
|
|
1902
1929
|
|
1903
1930
|
/**
|
1904
1931
|
*
|
1905
|
-
* @param {number} startTime when processing the files has started
|
1932
|
+
* @param {number | null | undefined} startTime when processing the files has started
|
1906
1933
|
* @param {Iterable<string>} files all files
|
1907
1934
|
* @param {Iterable<string>} directories all directories
|
1908
1935
|
* @param {Iterable<string>} missing all missing files or directories
|
1909
|
-
* @param {
|
1910
|
-
* @param {boolean=} options.hash should use hash to snapshot
|
1911
|
-
* @param {boolean=} options.timestamp should use timestamp to snapshot
|
1936
|
+
* @param {SnapshotOptions | null | undefined} options options object (for future extensions)
|
1912
1937
|
* @param {function((WebpackError | null)=, (Snapshot | null)=): void} callback callback function
|
1913
1938
|
* @returns {void}
|
1914
1939
|
*/
|
@@ -2045,6 +2070,9 @@ class FileSystemInfo {
|
|
2045
2070
|
}
|
2046
2071
|
return capturedItems;
|
2047
2072
|
};
|
2073
|
+
/**
|
2074
|
+
* @param {Set<string>} capturedFiles captured files
|
2075
|
+
*/
|
2048
2076
|
const processCapturedFiles = capturedFiles => {
|
2049
2077
|
switch (mode) {
|
2050
2078
|
case 3:
|
@@ -2631,6 +2659,10 @@ class FileSystemInfo {
|
|
2631
2659
|
}
|
2632
2660
|
}
|
2633
2661
|
}
|
2662
|
+
/**
|
2663
|
+
* @param {string} path file path
|
2664
|
+
* @param {string} hash hash
|
2665
|
+
*/
|
2634
2666
|
const processFileHashSnapshot = (path, hash) => {
|
2635
2667
|
const cache = this._fileHashes.get(path);
|
2636
2668
|
if (cache !== undefined) {
|
@@ -2913,7 +2945,7 @@ class FileSystemInfo {
|
|
2913
2945
|
|
2914
2946
|
const hash = createHash(this._hashFunction);
|
2915
2947
|
|
2916
|
-
hash.update(content);
|
2948
|
+
hash.update(/** @type {string | Buffer} */ (content));
|
2917
2949
|
|
2918
2950
|
const digest = /** @type {string} */ (hash.digest("hex"));
|
2919
2951
|
|
@@ -2977,7 +3009,7 @@ class FileSystemInfo {
|
|
2977
3009
|
* @param {function(string, IStats, function(Error=, ItemType=): void): void} options.fromFile called when context item is a file
|
2978
3010
|
* @param {function(string, IStats, function(Error=, ItemType=): void): void} options.fromDirectory called when context item is a directory
|
2979
3011
|
* @param {function(string[], ItemType[]): T} options.reduce called from all context items
|
2980
|
-
* @param {function((Error | null)=, (T)=): void} callback callback
|
3012
|
+
* @param {function((Error | null)=, (T | null)=): void} callback callback
|
2981
3013
|
*/
|
2982
3014
|
_readContext(
|
2983
3015
|
{
|
@@ -3164,6 +3196,7 @@ class FileSystemInfo {
|
|
3164
3196
|
* @returns {void}
|
3165
3197
|
*/
|
3166
3198
|
_resolveContextTimestamp(entry, callback) {
|
3199
|
+
/** @type {string[]} */
|
3167
3200
|
const hashes = [];
|
3168
3201
|
let safeTime = 0;
|
3169
3202
|
processAsyncTree(
|
@@ -3272,6 +3305,7 @@ class FileSystemInfo {
|
|
3272
3305
|
* @returns {void}
|
3273
3306
|
*/
|
3274
3307
|
_resolveContextHash(entry, callback) {
|
3308
|
+
/** @type {string[]} */
|
3275
3309
|
const hashes = [];
|
3276
3310
|
processAsyncTree(
|
3277
3311
|
entry.symlinks,
|
@@ -3428,7 +3462,9 @@ class FileSystemInfo {
|
|
3428
3462
|
* @returns {void}
|
3429
3463
|
*/
|
3430
3464
|
_resolveContextTsh(entry, callback) {
|
3465
|
+
/** @type {string[]} */
|
3431
3466
|
const hashes = [];
|
3467
|
+
/** @type {string[]} */
|
3432
3468
|
const tsHashes = [];
|
3433
3469
|
let safeTime = 0;
|
3434
3470
|
processAsyncTree(
|
@@ -3546,7 +3582,7 @@ class FileSystemInfo {
|
|
3546
3582
|
}
|
3547
3583
|
let data;
|
3548
3584
|
try {
|
3549
|
-
data = JSON.parse(content.toString("utf-8"));
|
3585
|
+
data = JSON.parse(/** @type {Buffer} */ (content).toString("utf-8"));
|
3550
3586
|
} catch (e) {
|
3551
3587
|
return callback(e);
|
3552
3588
|
}
|
@@ -8,9 +8,14 @@
|
|
8
8
|
const { getEntryRuntime, mergeRuntimeOwned } = require("./util/runtime");
|
9
9
|
|
10
10
|
/** @typedef {import("./Compiler")} Compiler */
|
11
|
+
/** @typedef {import("./Module").FactoryMeta} FactoryMeta */
|
11
12
|
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
12
13
|
|
14
|
+
const PLUGIN_NAME = "FlagAllModulesAsUsedPlugin";
|
13
15
|
class FlagAllModulesAsUsedPlugin {
|
16
|
+
/**
|
17
|
+
* @param {string} explanation explanation
|
18
|
+
*/
|
14
19
|
constructor(explanation) {
|
15
20
|
this.explanation = explanation;
|
16
21
|
}
|
@@ -21,34 +26,29 @@ class FlagAllModulesAsUsedPlugin {
|
|
21
26
|
* @returns {void}
|
22
27
|
*/
|
23
28
|
apply(compiler) {
|
24
|
-
compiler.hooks.compilation.tap(
|
25
|
-
|
26
|
-
compilation => {
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
exportsInfo.setUsedInUnknownWay(runtime);
|
42
|
-
moduleGraph.addExtraReason(module, this.explanation);
|
43
|
-
if (module.factoryMeta === undefined) {
|
44
|
-
module.factoryMeta = {};
|
45
|
-
}
|
46
|
-
module.factoryMeta.sideEffectFree = false;
|
47
|
-
}
|
29
|
+
compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
|
30
|
+
const moduleGraph = compilation.moduleGraph;
|
31
|
+
compilation.hooks.optimizeDependencies.tap(PLUGIN_NAME, modules => {
|
32
|
+
/** @type {RuntimeSpec} */
|
33
|
+
let runtime = undefined;
|
34
|
+
for (const [name, { options }] of compilation.entries) {
|
35
|
+
runtime = mergeRuntimeOwned(
|
36
|
+
runtime,
|
37
|
+
getEntryRuntime(compilation, name, options)
|
38
|
+
);
|
39
|
+
}
|
40
|
+
for (const module of modules) {
|
41
|
+
const exportsInfo = moduleGraph.getExportsInfo(module);
|
42
|
+
exportsInfo.setUsedInUnknownWay(runtime);
|
43
|
+
moduleGraph.addExtraReason(module, this.explanation);
|
44
|
+
if (module.factoryMeta === undefined) {
|
45
|
+
module.factoryMeta = {};
|
48
46
|
}
|
49
|
-
|
50
|
-
|
51
|
-
|
47
|
+
/** @type {FactoryMeta} */
|
48
|
+
(module.factoryMeta).sideEffectFree = false;
|
49
|
+
}
|
50
|
+
});
|
51
|
+
});
|
52
52
|
}
|
53
53
|
}
|
54
54
|
|