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
@@ -20,17 +20,22 @@ const {
|
|
20
20
|
/** @typedef {import("../../declarations/WebpackOptions").SnapshotOptions} SnapshotOptions */
|
21
21
|
/** @typedef {import("../Cache").Etag} Etag */
|
22
22
|
/** @typedef {import("../Compiler")} Compiler */
|
23
|
+
/** @typedef {import("../FileSystemInfo").ResolveBuildDependenciesResult} ResolveBuildDependenciesResult */
|
23
24
|
/** @typedef {import("../FileSystemInfo").Snapshot} Snapshot */
|
24
25
|
/** @typedef {import("../logging/Logger").Logger} Logger */
|
26
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
27
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
25
28
|
/** @typedef {import("../util/fs").IntermediateFileSystem} IntermediateFileSystem */
|
26
29
|
|
30
|
+
/** @typedef {Map<string, string | false>} ResolveResults */
|
31
|
+
|
27
32
|
class PackContainer {
|
28
33
|
/**
|
29
34
|
* @param {Object} data stored data
|
30
35
|
* @param {string} version version identifier
|
31
36
|
* @param {Snapshot} buildSnapshot snapshot of all build dependencies
|
32
37
|
* @param {Set<string>} buildDependencies list of all unresolved build dependencies captured
|
33
|
-
* @param {
|
38
|
+
* @param {ResolveResults} resolveResults result of the resolved build dependencies
|
34
39
|
* @param {Snapshot} resolveBuildDependenciesSnapshot snapshot of the dependencies of the build dependencies resolving
|
35
40
|
*/
|
36
41
|
constructor(
|
@@ -58,6 +63,9 @@ class PackContainer {
|
|
58
63
|
writeLazy(this.data);
|
59
64
|
}
|
60
65
|
|
66
|
+
/**
|
67
|
+
* @param {ObjectDeserializerContext} context context
|
68
|
+
*/
|
61
69
|
deserialize({ read }) {
|
62
70
|
this.version = read();
|
63
71
|
this.buildSnapshot = read();
|
@@ -99,7 +107,7 @@ class Pack {
|
|
99
107
|
constructor(logger, maxAge) {
|
100
108
|
/** @type {Map<string, PackItemInfo>} */
|
101
109
|
this.itemInfo = new Map();
|
102
|
-
/** @type {string[]} */
|
110
|
+
/** @type {(string | undefined)[]} */
|
103
111
|
this.requests = [];
|
104
112
|
this.requestsTimeout = undefined;
|
105
113
|
/** @type {Map<string, PackItemInfo>} */
|
@@ -111,6 +119,9 @@ class Pack {
|
|
111
119
|
this.maxAge = maxAge;
|
112
120
|
}
|
113
121
|
|
122
|
+
/**
|
123
|
+
* @param {string} identifier identifier
|
124
|
+
*/
|
114
125
|
_addRequest(identifier) {
|
115
126
|
this.requests.push(identifier);
|
116
127
|
if (this.requestsTimeout === undefined) {
|
@@ -149,7 +160,7 @@ class Pack {
|
|
149
160
|
if (!this.content[loc]) {
|
150
161
|
return undefined;
|
151
162
|
}
|
152
|
-
return this.content[loc].get(identifier);
|
163
|
+
return /** @type {PackContent} */ (this.content[loc]).get(identifier);
|
153
164
|
}
|
154
165
|
}
|
155
166
|
|
@@ -175,7 +186,7 @@ class Pack {
|
|
175
186
|
if (loc >= 0) {
|
176
187
|
this._addRequest(identifier);
|
177
188
|
this.freshContent.set(identifier, info);
|
178
|
-
const content = this.content[loc];
|
189
|
+
const content = /** @type {PackContent} */ (this.content[loc]);
|
179
190
|
content.delete(identifier);
|
180
191
|
if (content.items.size === 0) {
|
181
192
|
this.content[loc] = undefined;
|
@@ -351,11 +362,12 @@ class Pack {
|
|
351
362
|
mergedIndices = smallUnusedContents;
|
352
363
|
} else return;
|
353
364
|
|
365
|
+
/** @type {PackContent[] } */
|
354
366
|
const mergedContent = [];
|
355
367
|
|
356
368
|
// 3. Remove old content entries
|
357
369
|
for (const i of mergedIndices) {
|
358
|
-
mergedContent.push(this.content[i]);
|
370
|
+
mergedContent.push(/** @type {PackContent} */ (this.content[i]));
|
359
371
|
this.content[i] = undefined;
|
360
372
|
}
|
361
373
|
|
@@ -364,7 +376,7 @@ class Pack {
|
|
364
376
|
const mergedItems = new Set();
|
365
377
|
/** @type {Set<string>} */
|
366
378
|
const mergedUsedItems = new Set();
|
367
|
-
/** @type {(function(Map<string, any>): Promise)[]} */
|
379
|
+
/** @type {(function(Map<string, any>): Promise<void>)[]} */
|
368
380
|
const addToMergedMap = [];
|
369
381
|
for (const content of mergedContent) {
|
370
382
|
for (const identifier of content.items) {
|
@@ -498,17 +510,20 @@ class Pack {
|
|
498
510
|
* Only runs for one content to avoid large invalidation.
|
499
511
|
*/
|
500
512
|
_gcOldestContent() {
|
501
|
-
/** @type {PackItemInfo} */
|
513
|
+
/** @type {PackItemInfo | undefined} */
|
502
514
|
let oldest = undefined;
|
503
515
|
for (const info of this.itemInfo.values()) {
|
504
516
|
if (oldest === undefined || info.lastAccess < oldest.lastAccess) {
|
505
517
|
oldest = info;
|
506
518
|
}
|
507
519
|
}
|
508
|
-
if (
|
509
|
-
|
520
|
+
if (
|
521
|
+
Date.now() - /** @type {PackItemInfo} */ (oldest).lastAccess >
|
522
|
+
this.maxAge
|
523
|
+
) {
|
524
|
+
const loc = /** @type {PackItemInfo} */ (oldest).location;
|
510
525
|
if (loc < 0) return;
|
511
|
-
const content = this.content[loc];
|
526
|
+
const content = /** @type {PackContent} */ (this.content[loc]);
|
512
527
|
const items = new Set(content.items);
|
513
528
|
const usedItems = new Set(content.used);
|
514
529
|
this._gcAndUpdateLocation(items, usedItems, loc);
|
@@ -771,6 +786,7 @@ class PackContent {
|
|
771
786
|
|
772
787
|
// We are in state B
|
773
788
|
const { lazyName } = this;
|
789
|
+
/** @type {string | undefined} */
|
774
790
|
let timeMessage;
|
775
791
|
if (lazyName) {
|
776
792
|
// only log once
|
@@ -811,7 +827,7 @@ class PackContent {
|
|
811
827
|
|
812
828
|
/**
|
813
829
|
* @param {string} reason explanation why unpack is necessary
|
814
|
-
* @returns {void | Promise} maybe a promise if lazy
|
830
|
+
* @returns {void | Promise<void>} maybe a promise if lazy
|
815
831
|
*/
|
816
832
|
unpack(reason) {
|
817
833
|
if (this.content) return;
|
@@ -819,6 +835,7 @@ class PackContent {
|
|
819
835
|
// Move from state B to C
|
820
836
|
if (this.lazy) {
|
821
837
|
const { lazyName } = this;
|
838
|
+
/** @type {string | undefined} */
|
822
839
|
let timeMessage;
|
823
840
|
if (lazyName) {
|
824
841
|
// only log once
|
@@ -862,6 +879,9 @@ class PackContent {
|
|
862
879
|
return size;
|
863
880
|
}
|
864
881
|
|
882
|
+
/**
|
883
|
+
* @param {string} identifier identifier
|
884
|
+
*/
|
865
885
|
delete(identifier) {
|
866
886
|
this.items.delete(identifier);
|
867
887
|
this.used.delete(identifier);
|
@@ -906,6 +926,7 @@ class PackContent {
|
|
906
926
|
}
|
907
927
|
// State B2
|
908
928
|
const { lazyName } = this;
|
929
|
+
/** @type {string | undefined} */
|
909
930
|
let timeMessage;
|
910
931
|
if (lazyName) {
|
911
932
|
// only log once
|
@@ -959,6 +980,10 @@ class PackContent {
|
|
959
980
|
}
|
960
981
|
}
|
961
982
|
|
983
|
+
/**
|
984
|
+
* @param {Buffer} buf buffer
|
985
|
+
* @returns {Buffer} buffer that can be collected
|
986
|
+
*/
|
962
987
|
const allowCollectingMemory = buf => {
|
963
988
|
const wasted = buf.buffer.byteLength - buf.byteLength;
|
964
989
|
if (wasted > 8192 && (wasted > 1048576 || wasted > buf.byteLength)) {
|
@@ -978,9 +1003,10 @@ class PackFileCacheStrategy {
|
|
978
1003
|
* @param {Logger} options.logger a logger
|
979
1004
|
* @param {SnapshotOptions} options.snapshot options regarding snapshotting
|
980
1005
|
* @param {number} options.maxAge max age of cache items
|
981
|
-
* @param {boolean} options.profile track and log detailed timing information for individual cache items
|
982
|
-
* @param {boolean} options.allowCollectingMemory allow to collect unused memory created during deserialization
|
983
|
-
* @param {false | "gzip" | "brotli"} options.compression compression used
|
1006
|
+
* @param {boolean | undefined} options.profile track and log detailed timing information for individual cache items
|
1007
|
+
* @param {boolean | undefined} options.allowCollectingMemory allow to collect unused memory created during deserialization
|
1008
|
+
* @param {false | "gzip" | "brotli" | undefined} options.compression compression used
|
1009
|
+
* @param {boolean | undefined} options.readonly disable storing cache into filesystem
|
984
1010
|
*/
|
985
1011
|
constructor({
|
986
1012
|
compiler,
|
@@ -993,7 +1019,8 @@ class PackFileCacheStrategy {
|
|
993
1019
|
maxAge,
|
994
1020
|
profile,
|
995
1021
|
allowCollectingMemory,
|
996
|
-
compression
|
1022
|
+
compression,
|
1023
|
+
readonly
|
997
1024
|
}) {
|
998
1025
|
this.fileSerializer = createFileSerializer(
|
999
1026
|
fs,
|
@@ -1012,6 +1039,7 @@ class PackFileCacheStrategy {
|
|
1012
1039
|
this.logger = logger;
|
1013
1040
|
this.maxAge = maxAge;
|
1014
1041
|
this.profile = profile;
|
1042
|
+
this.readonly = readonly;
|
1015
1043
|
this.allowCollectingMemory = allowCollectingMemory;
|
1016
1044
|
this.compression = compression;
|
1017
1045
|
this._extension =
|
@@ -1025,17 +1053,20 @@ class PackFileCacheStrategy {
|
|
1025
1053
|
this.buildDependencies = new Set();
|
1026
1054
|
/** @type {LazySet<string>} */
|
1027
1055
|
this.newBuildDependencies = new LazySet();
|
1028
|
-
/** @type {Snapshot} */
|
1056
|
+
/** @type {Snapshot | undefined} */
|
1029
1057
|
this.resolveBuildDependenciesSnapshot = undefined;
|
1030
|
-
/** @type {
|
1058
|
+
/** @type {ResolveResults | undefined} */
|
1031
1059
|
this.resolveResults = undefined;
|
1032
|
-
/** @type {Snapshot} */
|
1060
|
+
/** @type {Snapshot | undefined} */
|
1033
1061
|
this.buildSnapshot = undefined;
|
1034
|
-
/** @type {Promise<Pack>} */
|
1062
|
+
/** @type {Promise<Pack> | undefined} */
|
1035
1063
|
this.packPromise = this._openPack();
|
1036
1064
|
this.storePromise = Promise.resolve();
|
1037
1065
|
}
|
1038
1066
|
|
1067
|
+
/**
|
1068
|
+
* @returns {Promise<Pack>} pack
|
1069
|
+
*/
|
1039
1070
|
_getPack() {
|
1040
1071
|
if (this.packPromise === undefined) {
|
1041
1072
|
this.packPromise = this.storePromise.then(() => this._openPack());
|
@@ -1056,7 +1087,7 @@ class PackFileCacheStrategy {
|
|
1056
1087
|
let newBuildDependencies;
|
1057
1088
|
/** @type {Snapshot} */
|
1058
1089
|
let resolveBuildDependenciesSnapshot;
|
1059
|
-
/** @type {
|
1090
|
+
/** @type {ResolveResults | undefined} */
|
1060
1091
|
let resolveResults;
|
1061
1092
|
logger.time("restore cache container");
|
1062
1093
|
return this.fileSerializer
|
@@ -1213,6 +1244,8 @@ class PackFileCacheStrategy {
|
|
1213
1244
|
* @returns {Promise<void>} promise
|
1214
1245
|
*/
|
1215
1246
|
store(identifier, etag, data) {
|
1247
|
+
if (this.readonly) return Promise.resolve();
|
1248
|
+
|
1216
1249
|
return this._getPack().then(pack => {
|
1217
1250
|
pack.set(identifier, etag === null ? null : etag.toString(), data);
|
1218
1251
|
});
|
@@ -1238,7 +1271,11 @@ class PackFileCacheStrategy {
|
|
1238
1271
|
});
|
1239
1272
|
}
|
1240
1273
|
|
1274
|
+
/**
|
1275
|
+
* @param {LazySet<string>} dependencies dependencies to store
|
1276
|
+
*/
|
1241
1277
|
storeBuildDependencies(dependencies) {
|
1278
|
+
if (this.readonly) return;
|
1242
1279
|
this.newBuildDependencies.addAll(dependencies);
|
1243
1280
|
}
|
1244
1281
|
|
@@ -1282,7 +1319,7 @@ class PackFileCacheStrategy {
|
|
1282
1319
|
missing,
|
1283
1320
|
resolveResults,
|
1284
1321
|
resolveDependencies
|
1285
|
-
} = result;
|
1322
|
+
} = /** @type {ResolveBuildDependenciesResult} */ (result);
|
1286
1323
|
if (this.resolveResults) {
|
1287
1324
|
for (const [key, value] of resolveResults) {
|
1288
1325
|
this.resolveResults.set(key, value);
|
@@ -1377,7 +1414,7 @@ class PackFileCacheStrategy {
|
|
1377
1414
|
const content = new PackContainer(
|
1378
1415
|
pack,
|
1379
1416
|
this.version,
|
1380
|
-
this.buildSnapshot,
|
1417
|
+
/** @type {Snapshot} */ (this.buildSnapshot),
|
1381
1418
|
updatedBuildDependencies,
|
1382
1419
|
this.resolveResults,
|
1383
1420
|
this.resolveBuildDependenciesSnapshot
|
@@ -124,8 +124,11 @@ class ResolverCachePlugin {
|
|
124
124
|
const newResolveContext = {
|
125
125
|
...resolveContext,
|
126
126
|
stack: new Set(),
|
127
|
+
/** @type {LazySet<string>} */
|
127
128
|
missingDependencies: new LazySet(),
|
129
|
+
/** @type {LazySet<string>} */
|
128
130
|
fileDependencies: new LazySet(),
|
131
|
+
/** @type {LazySet<string>} */
|
129
132
|
contextDependencies: new LazySet()
|
130
133
|
};
|
131
134
|
let yieldResult;
|
@@ -23,7 +23,7 @@ const inputRx = /^(?:((?:[A-Z]:)?[/\\].*?))?(?::(.+?))?$/i;
|
|
23
23
|
*/
|
24
24
|
|
25
25
|
/**
|
26
|
-
* @param {string} input input string
|
26
|
+
* @param {string | null | undefined} input input string
|
27
27
|
* @param {string} context the context directory
|
28
28
|
* @returns {BrowserslistHandlerConfig} config
|
29
29
|
*/
|
@@ -47,7 +47,7 @@ const parse = (input, context) => {
|
|
47
47
|
};
|
48
48
|
|
49
49
|
/**
|
50
|
-
* @param {string} input input string
|
50
|
+
* @param {string | null | undefined} input input string
|
51
51
|
* @param {string} context the context directory
|
52
52
|
* @returns {string[] | undefined} selected browsers
|
53
53
|
*/
|
@@ -66,7 +66,7 @@ const load = (input, context) => {
|
|
66
66
|
})
|
67
67
|
: browserslist.loadConfig({ path: context, env });
|
68
68
|
|
69
|
-
if (!config) return
|
69
|
+
if (!config) return;
|
70
70
|
return browserslist(config);
|
71
71
|
};
|
72
72
|
|
@@ -120,7 +120,7 @@ const resolve = browsers => {
|
|
120
120
|
and_qq: [10, 4],
|
121
121
|
// baidu: Not supported
|
122
122
|
// and_uc: Not supported
|
123
|
-
|
123
|
+
kaios: [3, 0],
|
124
124
|
node: [12, 17]
|
125
125
|
});
|
126
126
|
|
@@ -187,7 +187,7 @@ const resolve = browsers => {
|
|
187
187
|
// and_qq: Unknown support
|
188
188
|
// baidu: Unknown support
|
189
189
|
// and_uc: Unknown support
|
190
|
-
|
190
|
+
kaios: [3, 0],
|
191
191
|
node: [0, 12]
|
192
192
|
}),
|
193
193
|
destructuring: rawChecker({
|
@@ -206,7 +206,7 @@ const resolve = browsers => {
|
|
206
206
|
// and_qq: Unknown support
|
207
207
|
// baidu: Unknown support
|
208
208
|
// and_uc: Unknown support
|
209
|
-
|
209
|
+
kaios: [2, 5],
|
210
210
|
node: [6, 0]
|
211
211
|
}),
|
212
212
|
bigIntLiteral: rawChecker({
|
@@ -225,7 +225,7 @@ const resolve = browsers => {
|
|
225
225
|
// and_qq: Not supported
|
226
226
|
// baidu: Not supported
|
227
227
|
// and_uc: Not supported
|
228
|
-
|
228
|
+
kaios: [3, 0],
|
229
229
|
node: [10, 4]
|
230
230
|
}),
|
231
231
|
// Support syntax `import` and `export` and no limitations and bugs on Node.js
|
@@ -246,7 +246,7 @@ const resolve = browsers => {
|
|
246
246
|
and_qq: [10, 4],
|
247
247
|
// baidu: Not supported
|
248
248
|
// and_uc: Not supported
|
249
|
-
|
249
|
+
kaios: [3, 0],
|
250
250
|
node: [12, 17]
|
251
251
|
}),
|
252
252
|
dynamicImport: es6DynamicImport,
|
@@ -269,7 +269,7 @@ const resolve = browsers => {
|
|
269
269
|
// and_qq: Unknown support
|
270
270
|
// baidu: Unknown support
|
271
271
|
// and_uc: Unknown support
|
272
|
-
|
272
|
+
kaios: [3, 0],
|
273
273
|
node: 12
|
274
274
|
}),
|
275
275
|
optionalChaining: rawChecker({
|
@@ -288,7 +288,7 @@ const resolve = browsers => {
|
|
288
288
|
// and_qq: Not supported
|
289
289
|
// baidu: Not supported
|
290
290
|
// and_uc: Not supported
|
291
|
-
|
291
|
+
kaios: [3, 0],
|
292
292
|
node: 14
|
293
293
|
}),
|
294
294
|
templateLiteral: rawChecker({
|