webpack 5.76.1 → 5.88.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.
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 +4 -0
- 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 +12 -8
- package/lib/ConcatenationScope.js +2 -2
- package/lib/ConditionalInitFragment.js +11 -1
- package/lib/ConstPlugin.js +79 -44
- 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/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 +20 -3
- package/lib/ExportsInfoApiPlugin.js +30 -14
- package/lib/ExternalModule.js +30 -9
- package/lib/FileSystemInfo.js +9 -1
- 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/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/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/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
- package/lib/cache/PackFileCacheStrategy.js +42 -15
- 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 +15 -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 +194 -194
- 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 +6 -4
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +8 -4
- package/lib/library/SystemLibraryPlugin.js +1 -0
- package/lib/library/UmdLibraryPlugin.js +4 -0
- 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 +6 -0
- package/lib/util/StringXor.js +51 -0
- 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 +14 -1
- package/lib/util/semver.js +1 -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 +132 -5
- 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 +1608 -667
@@ -18,9 +18,17 @@ const NullDependency = require("./NullDependency");
|
|
18
18
|
/** @typedef {import("../DependencyTemplates")} DependencyTemplates */
|
19
19
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
20
20
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
21
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
22
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
23
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
21
24
|
/** @typedef {import("../util/Hash")} Hash */
|
22
25
|
|
23
26
|
class CachedConstDependency extends NullDependency {
|
27
|
+
/**
|
28
|
+
* @param {string} expression expression
|
29
|
+
* @param {Range} range range
|
30
|
+
* @param {string} identifier identifier
|
31
|
+
*/
|
24
32
|
constructor(expression, range, identifier) {
|
25
33
|
super();
|
26
34
|
|
@@ -42,6 +50,9 @@ class CachedConstDependency extends NullDependency {
|
|
42
50
|
hash.update(this._hashUpdate);
|
43
51
|
}
|
44
52
|
|
53
|
+
/**
|
54
|
+
* @param {ObjectSerializerContext} context context
|
55
|
+
*/
|
45
56
|
serialize(context) {
|
46
57
|
const { write } = context;
|
47
58
|
|
@@ -52,6 +63,9 @@ class CachedConstDependency extends NullDependency {
|
|
52
63
|
super.serialize(context);
|
53
64
|
}
|
54
65
|
|
66
|
+
/**
|
67
|
+
* @param {ObjectDeserializerContext} context context
|
68
|
+
*/
|
55
69
|
deserialize(context) {
|
56
70
|
const { read } = context;
|
57
71
|
|
@@ -7,6 +7,15 @@
|
|
7
7
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
9
|
|
10
|
+
/** @typedef {import("../Module")} Module */
|
11
|
+
/** @typedef {"exports" | "module.exports" | "this" | "Object.defineProperty(exports)" | "Object.defineProperty(module.exports)" | "Object.defineProperty(this)"} CommonJSDependencyBaseKeywords */
|
12
|
+
|
13
|
+
/**
|
14
|
+
* @param {CommonJSDependencyBaseKeywords} depBase commonjs dependency base
|
15
|
+
* @param {Module} module module
|
16
|
+
* @param {Set<string>} runtimeRequirements runtime requirements
|
17
|
+
* @returns {[string, string]} type and base
|
18
|
+
*/
|
10
19
|
exports.handleDependencyBase = (depBase, module, runtimeRequirements) => {
|
11
20
|
let base = undefined;
|
12
21
|
let type;
|
@@ -22,13 +22,26 @@ const processExportInfo = require("./processExportInfo");
|
|
22
22
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
23
23
|
/** @typedef {import("../Module")} Module */
|
24
24
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
25
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
26
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
27
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
25
28
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
29
|
+
/** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
|
26
30
|
|
27
31
|
const idsSymbol = Symbol("CommonJsExportRequireDependency.ids");
|
28
32
|
|
29
33
|
const EMPTY_OBJECT = {};
|
30
34
|
|
31
35
|
class CommonJsExportRequireDependency extends ModuleDependency {
|
36
|
+
/**
|
37
|
+
* @param {Range} range range
|
38
|
+
* @param {Range} valueRange value range
|
39
|
+
* @param {CommonJSDependencyBaseKeywords} base base
|
40
|
+
* @param {string[]} names names
|
41
|
+
* @param {string} request request
|
42
|
+
* @param {string[]} ids ids
|
43
|
+
* @param {boolean} resultUsed true, when the result is used
|
44
|
+
*/
|
32
45
|
constructor(range, valueRange, base, names, request, ids, resultUsed) {
|
33
46
|
super(request);
|
34
47
|
this.range = range;
|
@@ -270,6 +283,9 @@ class CommonJsExportRequireDependency extends ModuleDependency {
|
|
270
283
|
return { exports, checked };
|
271
284
|
}
|
272
285
|
|
286
|
+
/**
|
287
|
+
* @param {ObjectSerializerContext} context context
|
288
|
+
*/
|
273
289
|
serialize(context) {
|
274
290
|
const { write } = context;
|
275
291
|
write(this.asiSafe);
|
@@ -282,6 +298,9 @@ class CommonJsExportRequireDependency extends ModuleDependency {
|
|
282
298
|
super.serialize(context);
|
283
299
|
}
|
284
300
|
|
301
|
+
/**
|
302
|
+
* @param {ObjectDeserializerContext} context context
|
303
|
+
*/
|
285
304
|
deserialize(context) {
|
286
305
|
const { read } = context;
|
287
306
|
this.asiSafe = read();
|
@@ -16,10 +16,20 @@ const NullDependency = require("./NullDependency");
|
|
16
16
|
/** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
|
17
17
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
18
18
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
19
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
20
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
21
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
22
|
+
/** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
|
19
23
|
|
20
24
|
const EMPTY_OBJECT = {};
|
21
25
|
|
22
26
|
class CommonJsExportsDependency extends NullDependency {
|
27
|
+
/**
|
28
|
+
* @param {Range} range range
|
29
|
+
* @param {Range} valueRange value range
|
30
|
+
* @param {CommonJSDependencyBaseKeywords} base base
|
31
|
+
* @param {string[]} names names
|
32
|
+
*/
|
23
33
|
constructor(range, valueRange, base, names) {
|
24
34
|
super();
|
25
35
|
this.range = range;
|
@@ -53,6 +63,9 @@ class CommonJsExportsDependency extends NullDependency {
|
|
53
63
|
};
|
54
64
|
}
|
55
65
|
|
66
|
+
/**
|
67
|
+
* @param {ObjectSerializerContext} context context
|
68
|
+
*/
|
56
69
|
serialize(context) {
|
57
70
|
const { write } = context;
|
58
71
|
write(this.range);
|
@@ -62,6 +75,9 @@ class CommonJsExportsDependency extends NullDependency {
|
|
62
75
|
super.serialize(context);
|
63
76
|
}
|
64
77
|
|
78
|
+
/**
|
79
|
+
* @param {ObjectDeserializerContext} context context
|
80
|
+
*/
|
65
81
|
deserialize(context) {
|
66
82
|
const { read } = context;
|
67
83
|
this.range = read();
|
@@ -16,11 +16,36 @@ const DynamicExports = require("./DynamicExports");
|
|
16
16
|
const HarmonyExports = require("./HarmonyExports");
|
17
17
|
const ModuleDecoratorDependency = require("./ModuleDecoratorDependency");
|
18
18
|
|
19
|
-
/** @typedef {import("estree").
|
19
|
+
/** @typedef {import("estree").AssignmentExpression} AssignmentExpression */
|
20
|
+
/** @typedef {import("estree").CallExpression} CallExpression */
|
21
|
+
/** @typedef {import("estree").Expression} Expression */
|
22
|
+
/** @typedef {import("estree").Super} Super */
|
23
|
+
|
24
|
+
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
20
25
|
/** @typedef {import("../NormalModule")} NormalModule */
|
21
26
|
/** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
|
22
27
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
28
|
+
/** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
|
23
29
|
|
30
|
+
/**
|
31
|
+
* This function takes a generic expression and detects whether it is an ObjectExpression.
|
32
|
+
* This is used in the context of parsing CommonJS exports to get the value of the property descriptor
|
33
|
+
* when the `exports` object is assigned to `Object.defineProperty`.
|
34
|
+
*
|
35
|
+
* In CommonJS modules, the `exports` object can be assigned to `Object.defineProperty` and therefore
|
36
|
+
* webpack has to detect this case and get the value key of the property descriptor. See the following example
|
37
|
+
* for more information: https://astexplorer.net/#/gist/83ce51a4e96e59d777df315a6d111da6/8058ead48a1bb53c097738225db0967ef7f70e57
|
38
|
+
*
|
39
|
+
* This would be an example of a CommonJS module that exports an object with a property descriptor:
|
40
|
+
* ```js
|
41
|
+
* Object.defineProperty(exports, "__esModule", { value: true });
|
42
|
+
* exports.foo = void 0;
|
43
|
+
* exports.foo = "bar";
|
44
|
+
* ```
|
45
|
+
*
|
46
|
+
* @param {TODO} expr expression
|
47
|
+
* @returns {Expression | undefined} returns the value of property descriptor
|
48
|
+
*/
|
24
49
|
const getValueOfPropertyDescription = expr => {
|
25
50
|
if (expr.type !== "ObjectExpression") return;
|
26
51
|
for (const property of expr.properties) {
|
@@ -31,6 +56,15 @@ const getValueOfPropertyDescription = expr => {
|
|
31
56
|
}
|
32
57
|
};
|
33
58
|
|
59
|
+
/**
|
60
|
+
* The purpose of this function is to check whether an expression is a truthy literal or not. This is
|
61
|
+
* useful when parsing CommonJS exports, because CommonJS modules can export any value, including falsy
|
62
|
+
* values like `null` and `false`. However, exports should only be created if the exported value is truthy.
|
63
|
+
*
|
64
|
+
* @param {Expression} expr expression being checked
|
65
|
+
* @returns {boolean} true, when the expression is a truthy literal
|
66
|
+
*
|
67
|
+
*/
|
34
68
|
const isTruthyLiteral = expr => {
|
35
69
|
switch (expr.type) {
|
36
70
|
case "Literal":
|
@@ -41,6 +75,14 @@ const isTruthyLiteral = expr => {
|
|
41
75
|
return false;
|
42
76
|
};
|
43
77
|
|
78
|
+
/**
|
79
|
+
* The purpose of this function is to check whether an expression is a falsy literal or not. This is
|
80
|
+
* useful when parsing CommonJS exports, because CommonJS modules can export any value, including falsy
|
81
|
+
* values like `null` and `false`. However, exports should only be created if the exported value is truthy.
|
82
|
+
*
|
83
|
+
* @param {Expression} expr expression being checked
|
84
|
+
* @returns {boolean} true, when the expression is a falsy literal
|
85
|
+
*/
|
44
86
|
const isFalsyLiteral = expr => {
|
45
87
|
switch (expr.type) {
|
46
88
|
case "Literal":
|
@@ -53,7 +95,7 @@ const isFalsyLiteral = expr => {
|
|
53
95
|
|
54
96
|
/**
|
55
97
|
* @param {JavascriptParser} parser the parser
|
56
|
-
* @param {
|
98
|
+
* @param {Expression} expr expression
|
57
99
|
* @returns {{ argument: BasicEvaluatedExpression, ids: string[] } | undefined} parsed call
|
58
100
|
*/
|
59
101
|
const parseRequireCall = (parser, expr) => {
|
@@ -86,17 +128,28 @@ const parseRequireCall = (parser, expr) => {
|
|
86
128
|
};
|
87
129
|
|
88
130
|
class CommonJsExportsParserPlugin {
|
131
|
+
/**
|
132
|
+
* @param {ModuleGraph} moduleGraph module graph
|
133
|
+
*/
|
89
134
|
constructor(moduleGraph) {
|
90
135
|
this.moduleGraph = moduleGraph;
|
91
136
|
}
|
92
137
|
|
93
138
|
/**
|
94
139
|
* @param {JavascriptParser} parser the parser
|
140
|
+
* @returns {void}
|
95
141
|
*/
|
96
142
|
apply(parser) {
|
97
143
|
const enableStructuredExports = () => {
|
98
144
|
DynamicExports.enable(parser.state);
|
99
145
|
};
|
146
|
+
|
147
|
+
/**
|
148
|
+
* @param {boolean} topLevel true, when the export is on top level
|
149
|
+
* @param {string[]} members members of the export
|
150
|
+
* @param {Expression | undefined} valueExpr expression for the value
|
151
|
+
* @returns {void}
|
152
|
+
*/
|
100
153
|
const checkNamespace = (topLevel, members, valueExpr) => {
|
101
154
|
if (!DynamicExports.isEnabled(parser.state)) return;
|
102
155
|
if (members.length > 0 && members[0] === "__esModule") {
|
@@ -107,10 +160,16 @@ class CommonJsExportsParserPlugin {
|
|
107
160
|
}
|
108
161
|
}
|
109
162
|
};
|
163
|
+
/**
|
164
|
+
* @param {string=} reason reason
|
165
|
+
*/
|
110
166
|
const bailout = reason => {
|
111
167
|
DynamicExports.bailout(parser.state);
|
112
168
|
if (reason) bailoutHint(reason);
|
113
169
|
};
|
170
|
+
/**
|
171
|
+
* @param {string} reason reason
|
172
|
+
*/
|
114
173
|
const bailoutHint = reason => {
|
115
174
|
this.moduleGraph
|
116
175
|
.getOptimizationBailout(parser.state.module)
|
@@ -126,6 +185,13 @@ class CommonJsExportsParserPlugin {
|
|
126
185
|
.tap("CommonJsPlugin", evaluateToString("object"));
|
127
186
|
|
128
187
|
// exporting //
|
188
|
+
|
189
|
+
/**
|
190
|
+
* @param {AssignmentExpression} expr expression
|
191
|
+
* @param {CommonJSDependencyBaseKeywords} base commonjs base keywords
|
192
|
+
* @param {string[]} members members of the export
|
193
|
+
* @returns {boolean} true, when the expression was handled
|
194
|
+
*/
|
129
195
|
const handleAssignExport = (expr, base, members) => {
|
130
196
|
if (HarmonyExports.isEnabled(parser.state)) return;
|
131
197
|
// Handle reexporting
|
@@ -192,9 +258,7 @@ class CommonJsExportsParserPlugin {
|
|
192
258
|
parser.hooks.call
|
193
259
|
.for("Object.defineProperty")
|
194
260
|
.tap("CommonJsExportsParserPlugin", expression => {
|
195
|
-
const expr = /** @type {
|
196
|
-
expression
|
197
|
-
);
|
261
|
+
const expr = /** @type {CallExpression} */ (expression);
|
198
262
|
if (!parser.isStatementLevelExpression(expr)) return;
|
199
263
|
if (expr.arguments.length !== 3) return;
|
200
264
|
if (expr.arguments[0].type === "SpreadElement") return;
|
@@ -233,6 +297,14 @@ class CommonJsExportsParserPlugin {
|
|
233
297
|
});
|
234
298
|
|
235
299
|
// Self reference //
|
300
|
+
|
301
|
+
/**
|
302
|
+
* @param {Expression | Super} expr expression
|
303
|
+
* @param {CommonJSDependencyBaseKeywords} base commonjs base keywords
|
304
|
+
* @param {string[]} members members of the export
|
305
|
+
* @param {CallExpression=} call call expression
|
306
|
+
* @returns {boolean | void} true, when the expression was handled
|
307
|
+
*/
|
236
308
|
const handleAccessExport = (expr, base, members, call = undefined) => {
|
237
309
|
if (HarmonyExports.isEnabled(parser.state)) return;
|
238
310
|
if (members.length === 0) {
|
@@ -16,12 +16,15 @@ const ModuleDependency = require("./ModuleDependency");
|
|
16
16
|
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
17
17
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
18
18
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
19
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
20
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
21
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
19
22
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
20
23
|
|
21
24
|
class CommonJsFullRequireDependency extends ModuleDependency {
|
22
25
|
/**
|
23
26
|
* @param {string} request the request string
|
24
|
-
* @param {
|
27
|
+
* @param {Range} range location in source code
|
25
28
|
* @param {string[]} names accessed properties on module
|
26
29
|
*/
|
27
30
|
constructor(request, range, names) {
|
@@ -51,6 +54,9 @@ class CommonJsFullRequireDependency extends ModuleDependency {
|
|
51
54
|
return [this.names];
|
52
55
|
}
|
53
56
|
|
57
|
+
/**
|
58
|
+
* @param {ObjectSerializerContext} context context
|
59
|
+
*/
|
54
60
|
serialize(context) {
|
55
61
|
const { write } = context;
|
56
62
|
write(this.names);
|
@@ -59,6 +65,9 @@ class CommonJsFullRequireDependency extends ModuleDependency {
|
|
59
65
|
super.serialize(context);
|
60
66
|
}
|
61
67
|
|
68
|
+
/**
|
69
|
+
* @param {ObjectDeserializerContext} context context
|
70
|
+
*/
|
62
71
|
deserialize(context) {
|
63
72
|
const { read } = context;
|
64
73
|
this.names = read();
|