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
@@ -8,11 +8,18 @@
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
9
|
const StartupChunkDependenciesPlugin = require("../runtime/StartupChunkDependenciesPlugin");
|
10
10
|
|
11
|
+
/** @typedef {import("../Chunk")} Chunk */
|
11
12
|
/** @typedef {import("../Compiler")} Compiler */
|
12
13
|
|
14
|
+
/** @typedef {Object} CommonJsChunkLoadingPluginOptions
|
15
|
+
* @property {boolean} [asyncChunkLoading] enable async chunk loading
|
16
|
+
*/
|
17
|
+
|
13
18
|
class CommonJsChunkLoadingPlugin {
|
14
|
-
|
15
|
-
|
19
|
+
/**
|
20
|
+
* @param {CommonJsChunkLoadingPluginOptions} [options] options
|
21
|
+
*/
|
22
|
+
constructor(options = {}) {
|
16
23
|
this._asyncChunkLoading = options.asyncChunkLoading;
|
17
24
|
}
|
18
25
|
|
@@ -36,6 +43,10 @@ class CommonJsChunkLoadingPlugin {
|
|
36
43
|
"CommonJsChunkLoadingPlugin",
|
37
44
|
compilation => {
|
38
45
|
const globalChunkLoading = compilation.outputOptions.chunkLoading;
|
46
|
+
/**
|
47
|
+
* @param {Chunk} chunk chunk
|
48
|
+
* @returns {boolean} true, if wasm loading is enabled for the chunk
|
49
|
+
*/
|
39
50
|
const isEnabledForChunk = chunk => {
|
40
51
|
const options = chunk.getEntryOptions();
|
41
52
|
const chunkLoading =
|
@@ -45,6 +56,10 @@ class CommonJsChunkLoadingPlugin {
|
|
45
56
|
return chunkLoading === chunkLoadingValue;
|
46
57
|
};
|
47
58
|
const onceForChunkSet = new WeakSet();
|
59
|
+
/**
|
60
|
+
* @param {Chunk} chunk chunk
|
61
|
+
* @param {Set<string>} set runtime requirements
|
62
|
+
*/
|
48
63
|
const handler = (chunk, set) => {
|
49
64
|
if (onceForChunkSet.has(chunk)) return;
|
50
65
|
onceForChunkSet.add(chunk);
|
@@ -31,6 +31,7 @@ const builtins = [
|
|
31
31
|
"http2",
|
32
32
|
"https",
|
33
33
|
"inspector",
|
34
|
+
"inspector/promises",
|
34
35
|
"module",
|
35
36
|
"net",
|
36
37
|
"os",
|
@@ -42,8 +43,10 @@ const builtins = [
|
|
42
43
|
"punycode",
|
43
44
|
"querystring",
|
44
45
|
"readline",
|
46
|
+
"readline/promises",
|
45
47
|
"repl",
|
46
48
|
"stream",
|
49
|
+
"stream/consumers",
|
47
50
|
"stream/promises",
|
48
51
|
"stream/web",
|
49
52
|
"string_decoder",
|
@@ -10,9 +10,17 @@ const EnableChunkLoadingPlugin = require("../javascript/EnableChunkLoadingPlugin
|
|
10
10
|
|
11
11
|
/** @typedef {import("../Compiler")} Compiler */
|
12
12
|
|
13
|
+
/**
|
14
|
+
* @typedef {Object} NodeTemplatePluginOptions
|
15
|
+
* @property {boolean} [asyncChunkLoading] enable async chunk loading
|
16
|
+
*/
|
17
|
+
|
13
18
|
class NodeTemplatePlugin {
|
14
|
-
|
15
|
-
|
19
|
+
/**
|
20
|
+
* @param {NodeTemplatePluginOptions} [options] options object
|
21
|
+
*/
|
22
|
+
constructor(options = {}) {
|
23
|
+
this._options = options;
|
16
24
|
}
|
17
25
|
|
18
26
|
/**
|
@@ -29,7 +29,7 @@ class NodeWatchFileSystem {
|
|
29
29
|
* @param {Iterable<string>} missing watched exitance entries
|
30
30
|
* @param {number} startTime timestamp of start time
|
31
31
|
* @param {WatchOptions} options options object
|
32
|
-
* @param {function(Error=, Map<string, FileSystemInfoEntry>, Map<string, FileSystemInfoEntry>, Set<string>, Set<string>): void} callback aggregated callback
|
32
|
+
* @param {function((Error | null)=, Map<string, FileSystemInfoEntry>, Map<string, FileSystemInfoEntry>, Set<string>, Set<string>): void} callback aggregated callback
|
33
33
|
* @param {function(string, number): void} callbackUndelayed callback when the first change was detected
|
34
34
|
* @returns {Watcher} a watcher
|
35
35
|
*/
|
@@ -16,8 +16,13 @@ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
|
16
16
|
const { getUndoPath } = require("../util/identifier");
|
17
17
|
|
18
18
|
/** @typedef {import("../Chunk")} Chunk */
|
19
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
20
|
+
/** @typedef {import("../Compilation")} Compilation */
|
19
21
|
|
20
22
|
class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
23
|
+
/**
|
24
|
+
* @param {ReadonlySet<string>} runtimeRequirements runtime requirements
|
25
|
+
*/
|
21
26
|
constructor(runtimeRequirements) {
|
22
27
|
super("readFile chunk loading", RuntimeModule.STAGE_ATTACH);
|
23
28
|
this.runtimeRequirements = runtimeRequirements;
|
@@ -43,11 +48,13 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
43
48
|
}
|
44
49
|
|
45
50
|
/**
|
46
|
-
* @returns {string} runtime code
|
51
|
+
* @returns {string | null} runtime code
|
47
52
|
*/
|
48
53
|
generate() {
|
49
|
-
const
|
50
|
-
const
|
54
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
55
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
56
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
57
|
+
const { runtimeTemplate } = compilation;
|
51
58
|
const fn = RuntimeGlobals.ensureChunkHandlers;
|
52
59
|
const withBaseURI = this.runtimeRequirements.has(RuntimeGlobals.baseURI);
|
53
60
|
const withExternalInstallChunk = this.runtimeRequirements.has(
|
@@ -69,8 +76,8 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
69
76
|
const hasJsMatcher = compileBooleanMatcher(conditionMap);
|
70
77
|
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
|
71
78
|
|
72
|
-
const outputName =
|
73
|
-
getChunkFilenameTemplate(chunk,
|
79
|
+
const outputName = compilation.getPath(
|
80
|
+
getChunkFilenameTemplate(chunk, compilation.outputOptions),
|
74
81
|
{
|
75
82
|
chunk,
|
76
83
|
contentHashType: "javascript"
|
@@ -78,7 +85,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
78
85
|
);
|
79
86
|
const rootOutputDir = getUndoPath(
|
80
87
|
outputName,
|
81
|
-
|
88
|
+
/** @type {string} */ (compilation.outputOptions.path),
|
82
89
|
false
|
83
90
|
);
|
84
91
|
|
@@ -124,7 +131,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
124
131
|
"}"
|
125
132
|
]),
|
126
133
|
"}",
|
127
|
-
`if(runtime) runtime(
|
134
|
+
`if(runtime) runtime(${RuntimeGlobals.require});`,
|
128
135
|
"for(var i = 0; i < chunkIds.length; i++) {",
|
129
136
|
Template.indent([
|
130
137
|
"if(installedChunks[chunkIds[i]]) {",
|
@@ -178,7 +185,9 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
178
185
|
"});",
|
179
186
|
"promises.push(installedChunkData[2] = promise);"
|
180
187
|
]),
|
181
|
-
|
188
|
+
hasJsMatcher === true
|
189
|
+
? "}"
|
190
|
+
: "} else installedChunks[chunkId] = 0;"
|
182
191
|
]),
|
183
192
|
"}"
|
184
193
|
]),
|
@@ -191,7 +200,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
191
200
|
"",
|
192
201
|
withExternalInstallChunk
|
193
202
|
? Template.asString([
|
194
|
-
|
203
|
+
`module.exports = ${RuntimeGlobals.require};`,
|
195
204
|
`${RuntimeGlobals.externalInstallChunk} = installChunk;`
|
196
205
|
])
|
197
206
|
: "// no external install chunk",
|
@@ -5,10 +5,12 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const { WEBASSEMBLY_MODULE_TYPE_ASYNC } = require("../ModuleTypeConstants");
|
8
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
10
|
const Template = require("../Template");
|
10
11
|
const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRuntimeModule");
|
11
12
|
|
13
|
+
/** @typedef {import("../Chunk")} Chunk */
|
12
14
|
/** @typedef {import("../Compiler")} Compiler */
|
13
15
|
|
14
16
|
class ReadFileCompileAsyncWasmPlugin {
|
@@ -26,6 +28,10 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
26
28
|
"ReadFileCompileAsyncWasmPlugin",
|
27
29
|
compilation => {
|
28
30
|
const globalWasmLoading = compilation.outputOptions.wasmLoading;
|
31
|
+
/**
|
32
|
+
* @param {Chunk} chunk chunk
|
33
|
+
* @returns {boolean} true, if wasm loading is enabled for the chunk
|
34
|
+
*/
|
29
35
|
const isEnabledForChunk = chunk => {
|
30
36
|
const options = chunk.getEntryOptions();
|
31
37
|
const wasmLoading =
|
@@ -34,12 +40,16 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
34
40
|
: globalWasmLoading;
|
35
41
|
return wasmLoading === this._type;
|
36
42
|
};
|
43
|
+
const { importMetaName } = compilation.outputOptions;
|
44
|
+
/**
|
45
|
+
* @type {(path: string) => string}
|
46
|
+
*/
|
37
47
|
const generateLoadBinaryCode = this._import
|
38
48
|
? path =>
|
39
49
|
Template.asString([
|
40
50
|
"Promise.all([import('fs'), import('url')]).then(([{ readFile }, { URL }]) => new Promise((resolve, reject) => {",
|
41
51
|
Template.indent([
|
42
|
-
`readFile(new URL(${path},
|
52
|
+
`readFile(new URL(${path}, ${importMetaName}.url), (err, buffer) => {`,
|
43
53
|
Template.indent([
|
44
54
|
"if (err) return reject(err);",
|
45
55
|
"",
|
@@ -85,7 +95,7 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
85
95
|
if (
|
86
96
|
!chunkGraph.hasModuleInGraph(
|
87
97
|
chunk,
|
88
|
-
m => m.type ===
|
98
|
+
m => m.type === WEBASSEMBLY_MODULE_TYPE_ASYNC
|
89
99
|
)
|
90
100
|
) {
|
91
101
|
return;
|
@@ -5,17 +5,27 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const { WEBASSEMBLY_MODULE_TYPE_SYNC } = require("../ModuleTypeConstants");
|
8
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
10
|
const Template = require("../Template");
|
10
11
|
const WasmChunkLoadingRuntimeModule = require("../wasm-sync/WasmChunkLoadingRuntimeModule");
|
11
12
|
|
13
|
+
/** @typedef {import("../Chunk")} Chunk */
|
12
14
|
/** @typedef {import("../Compiler")} Compiler */
|
13
15
|
|
16
|
+
/**
|
17
|
+
* @typedef {Object} ReadFileCompileWasmPluginOptions
|
18
|
+
* @property {boolean} [mangleImports] mangle imports
|
19
|
+
*/
|
20
|
+
|
14
21
|
// TODO webpack 6 remove
|
15
22
|
|
16
23
|
class ReadFileCompileWasmPlugin {
|
17
|
-
|
18
|
-
|
24
|
+
/**
|
25
|
+
* @param {ReadFileCompileWasmPluginOptions} [options] options object
|
26
|
+
*/
|
27
|
+
constructor(options = {}) {
|
28
|
+
this.options = options;
|
19
29
|
}
|
20
30
|
|
21
31
|
/**
|
@@ -28,6 +38,10 @@ class ReadFileCompileWasmPlugin {
|
|
28
38
|
"ReadFileCompileWasmPlugin",
|
29
39
|
compilation => {
|
30
40
|
const globalWasmLoading = compilation.outputOptions.wasmLoading;
|
41
|
+
/**
|
42
|
+
* @param {Chunk} chunk chunk
|
43
|
+
* @returns {boolean} true, when wasm loading is enabled for the chunk
|
44
|
+
*/
|
31
45
|
const isEnabledForChunk = chunk => {
|
32
46
|
const options = chunk.getEntryOptions();
|
33
47
|
const wasmLoading =
|
@@ -36,6 +50,10 @@ class ReadFileCompileWasmPlugin {
|
|
36
50
|
: globalWasmLoading;
|
37
51
|
return wasmLoading === "async-node";
|
38
52
|
};
|
53
|
+
/**
|
54
|
+
* @param {string} path path to wasm file
|
55
|
+
* @returns {string} generated code to load the wasm file
|
56
|
+
*/
|
39
57
|
const generateLoadBinaryCode = path =>
|
40
58
|
Template.asString([
|
41
59
|
"new Promise(function (resolve, reject) {",
|
@@ -69,7 +87,7 @@ class ReadFileCompileWasmPlugin {
|
|
69
87
|
if (
|
70
88
|
!chunkGraph.hasModuleInGraph(
|
71
89
|
chunk,
|
72
|
-
m => m.type ===
|
90
|
+
m => m.type === WEBASSEMBLY_MODULE_TYPE_SYNC
|
73
91
|
)
|
74
92
|
) {
|
75
93
|
return;
|
@@ -16,8 +16,13 @@ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
|
16
16
|
const { getUndoPath } = require("../util/identifier");
|
17
17
|
|
18
18
|
/** @typedef {import("../Chunk")} Chunk */
|
19
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
20
|
+
/** @typedef {import("../Compilation")} Compilation */
|
19
21
|
|
20
22
|
class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
23
|
+
/**
|
24
|
+
* @param {ReadonlySet<string>} runtimeRequirements runtime requirements
|
25
|
+
*/
|
21
26
|
constructor(runtimeRequirements) {
|
22
27
|
super("require chunk loading", RuntimeModule.STAGE_ATTACH);
|
23
28
|
this.runtimeRequirements = runtimeRequirements;
|
@@ -43,11 +48,13 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
43
48
|
}
|
44
49
|
|
45
50
|
/**
|
46
|
-
* @returns {string} runtime code
|
51
|
+
* @returns {string | null} runtime code
|
47
52
|
*/
|
48
53
|
generate() {
|
49
|
-
const
|
50
|
-
const
|
54
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
55
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
56
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
57
|
+
const { runtimeTemplate } = compilation;
|
51
58
|
const fn = RuntimeGlobals.ensureChunkHandlers;
|
52
59
|
const withBaseURI = this.runtimeRequirements.has(RuntimeGlobals.baseURI);
|
53
60
|
const withExternalInstallChunk = this.runtimeRequirements.has(
|
@@ -69,8 +76,8 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
69
76
|
const hasJsMatcher = compileBooleanMatcher(conditionMap);
|
70
77
|
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
|
71
78
|
|
72
|
-
const outputName =
|
73
|
-
getChunkFilenameTemplate(chunk,
|
79
|
+
const outputName = compilation.getPath(
|
80
|
+
getChunkFilenameTemplate(chunk, compilation.outputOptions),
|
74
81
|
{
|
75
82
|
chunk,
|
76
83
|
contentHashType: "javascript"
|
@@ -78,7 +85,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
78
85
|
);
|
79
86
|
const rootOutputDir = getUndoPath(
|
80
87
|
outputName,
|
81
|
-
|
88
|
+
/** @type {string} */ (compilation.outputOptions.path),
|
82
89
|
true
|
83
90
|
);
|
84
91
|
|
@@ -124,7 +131,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
124
131
|
"}"
|
125
132
|
]),
|
126
133
|
"}",
|
127
|
-
`if(runtime) runtime(
|
134
|
+
`if(runtime) runtime(${RuntimeGlobals.require});`,
|
128
135
|
"for(var i = 0; i < chunkIds.length; i++)",
|
129
136
|
Template.indent("installedChunks[chunkIds[i]] = 1;"),
|
130
137
|
withOnChunkLoad ? `${RuntimeGlobals.onChunksLoaded}();` : ""
|
@@ -163,7 +170,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
163
170
|
"",
|
164
171
|
withExternalInstallChunk
|
165
172
|
? Template.asString([
|
166
|
-
|
173
|
+
`module.exports = ${RuntimeGlobals.require};`,
|
167
174
|
`${RuntimeGlobals.externalInstallChunk} = installChunk;`
|
168
175
|
])
|
169
176
|
: "// no external install chunk",
|
package/lib/node/nodeConsole.js
CHANGED
@@ -38,10 +38,8 @@ module.exports = ({ colors, appendOnly, stream }) => {
|
|
38
38
|
|
39
39
|
const writeStatusMessage = () => {
|
40
40
|
if (!currentStatusMessage) return;
|
41
|
-
const l = stream.columns;
|
42
|
-
const args = l
|
43
|
-
? truncateArgs(currentStatusMessage, l - 1)
|
44
|
-
: currentStatusMessage;
|
41
|
+
const l = stream.columns || 40;
|
42
|
+
const args = truncateArgs(currentStatusMessage, l - 1);
|
45
43
|
const str = args.join(" ");
|
46
44
|
const coloredStr = `\u001b[1m${str}\u001b[39m\u001b[22m`;
|
47
45
|
stream.write(`\x1b[2K\r${coloredStr}`);
|
@@ -10,7 +10,15 @@ const { STAGE_ADVANCED } = require("../OptimizationStages");
|
|
10
10
|
/** @typedef {import("../Chunk")} Chunk */
|
11
11
|
/** @typedef {import("../Compiler")} Compiler */
|
12
12
|
|
13
|
+
/**
|
14
|
+
* @typedef {Object} AggressiveMergingPluginOptions
|
15
|
+
* @property {number=} minSizeReduce minimal size reduction to trigger merging
|
16
|
+
*/
|
17
|
+
|
13
18
|
class AggressiveMergingPlugin {
|
19
|
+
/**
|
20
|
+
* @param {AggressiveMergingPluginOptions=} [options] options object
|
21
|
+
*/
|
14
22
|
constructor(options) {
|
15
23
|
if (
|
16
24
|
(options !== undefined && typeof options !== "object") ||
|
@@ -30,6 +30,12 @@ const validate = createSchemaValidation(
|
|
30
30
|
}
|
31
31
|
);
|
32
32
|
|
33
|
+
/**
|
34
|
+
* @param {ChunkGraph} chunkGraph the chunk graph
|
35
|
+
* @param {Chunk} oldChunk the old chunk
|
36
|
+
* @param {Chunk} newChunk the new chunk
|
37
|
+
* @returns {(module: Module) => void} function to move module between chunks
|
38
|
+
*/
|
33
39
|
const moveModuleBetween = (chunkGraph, oldChunk, newChunk) => {
|
34
40
|
return module => {
|
35
41
|
chunkGraph.disconnectChunkAndModule(oldChunk, module);
|
@@ -92,6 +98,7 @@ class AggressiveSplittingPlugin {
|
|
92
98
|
compilation => {
|
93
99
|
let needAdditionalSeal = false;
|
94
100
|
let newSplits;
|
101
|
+
/** @type {Set<Chunk>} */
|
95
102
|
let fromAggressiveSplittingSet;
|
96
103
|
let chunkSplitDataMap;
|
97
104
|
compilation.hooks.optimize.tap("AggressiveSplittingPlugin", () => {
|
@@ -133,8 +140,8 @@ class AggressiveSplittingPlugin {
|
|
133
140
|
? recordedSplits.concat(newSplits)
|
134
141
|
: recordedSplits;
|
135
142
|
|
136
|
-
const minSize = this.options.minSize;
|
137
|
-
const maxSize = this.options.maxSize;
|
143
|
+
const minSize = /** @type {number} */ (this.options.minSize);
|
144
|
+
const maxSize = /** @type {number} */ (this.options.maxSize);
|
138
145
|
|
139
146
|
const applySplit = splitData => {
|
140
147
|
// Cannot split if id is already taken
|
@@ -15,6 +15,7 @@ const {
|
|
15
15
|
const ConcatenationScope = require("../ConcatenationScope");
|
16
16
|
const { UsageState } = require("../ExportsInfo");
|
17
17
|
const Module = require("../Module");
|
18
|
+
const { JAVASCRIPT_MODULE_TYPE_ESM } = require("../ModuleTypeConstants");
|
18
19
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
19
20
|
const Template = require("../Template");
|
20
21
|
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
|
@@ -26,6 +27,7 @@ const createHash = require("../util/createHash");
|
|
26
27
|
const { makePathsRelative } = require("../util/identifier");
|
27
28
|
const makeSerializable = require("../util/makeSerializable");
|
28
29
|
const propertyAccess = require("../util/propertyAccess");
|
30
|
+
const { propertyName } = require("../util/propertyName");
|
29
31
|
const {
|
30
32
|
filterRuntime,
|
31
33
|
intersectRuntime,
|
@@ -683,7 +685,7 @@ class ConcatenatedModule extends Module {
|
|
683
685
|
* @param {Set<Module>=} options.modules all concatenated modules
|
684
686
|
*/
|
685
687
|
constructor({ identifier, rootModule, modules, runtime }) {
|
686
|
-
super(
|
688
|
+
super(JAVASCRIPT_MODULE_TYPE_ESM, null, rootModule && rootModule.layer);
|
687
689
|
|
688
690
|
// Info from Factory
|
689
691
|
/** @type {string} */
|
@@ -1483,7 +1485,7 @@ class ConcatenatedModule extends Module {
|
|
1483
1485
|
const definitions = [];
|
1484
1486
|
for (const [key, value] of exportsMap) {
|
1485
1487
|
definitions.push(
|
1486
|
-
`\n ${
|
1488
|
+
`\n ${propertyName(key)}: ${runtimeTemplate.returningFunction(
|
1487
1489
|
value(requestShortener)
|
1488
1490
|
)}`
|
1489
1491
|
);
|
@@ -1528,9 +1530,9 @@ class ConcatenatedModule extends Module {
|
|
1528
1530
|
true
|
1529
1531
|
);
|
1530
1532
|
nsObj.push(
|
1531
|
-
`\n ${
|
1532
|
-
|
1533
|
-
)}
|
1533
|
+
`\n ${propertyName(usedName)}: ${runtimeTemplate.returningFunction(
|
1534
|
+
finalName
|
1535
|
+
)}`
|
1534
1536
|
);
|
1535
1537
|
}
|
1536
1538
|
}
|
@@ -1609,7 +1611,7 @@ ${defineGetters}`
|
|
1609
1611
|
result.add(`if (${condition}) {\n`);
|
1610
1612
|
}
|
1611
1613
|
result.add(
|
1612
|
-
`var ${info.name} =
|
1614
|
+
`var ${info.name} = ${RuntimeGlobals.require}(${JSON.stringify(
|
1613
1615
|
chunkGraph.getModuleId(info.module)
|
1614
1616
|
)});`
|
1615
1617
|
);
|
@@ -21,6 +21,9 @@ class EnsureChunkConditionsPlugin {
|
|
21
21
|
compiler.hooks.compilation.tap(
|
22
22
|
"EnsureChunkConditionsPlugin",
|
23
23
|
compilation => {
|
24
|
+
/**
|
25
|
+
* @param {Iterable<Chunk>} chunks the chunks
|
26
|
+
*/
|
24
27
|
const handler = chunks => {
|
25
28
|
const chunkGraph = compilation.chunkGraph;
|
26
29
|
// These sets are hoisted here to save memory
|
@@ -6,6 +6,7 @@
|
|
6
6
|
"use strict";
|
7
7
|
|
8
8
|
/** @typedef {import("../Chunk")} Chunk */
|
9
|
+
/** @typedef {import("../Chunk").ChunkId} ChunkId */
|
9
10
|
/** @typedef {import("../Compiler")} Compiler */
|
10
11
|
/** @typedef {import("../Module")} Module */
|
11
12
|
|
@@ -61,13 +62,15 @@ class FlagIncludedChunksPlugin {
|
|
61
62
|
for (const chunk of chunks) {
|
62
63
|
let hash = 0;
|
63
64
|
for (const module of chunkGraph.getChunkModulesIterable(chunk)) {
|
64
|
-
hash |= moduleBits.get(module);
|
65
|
+
hash |= /** @type {number} */ (moduleBits.get(module));
|
65
66
|
}
|
66
67
|
chunkModulesHash.set(chunk, hash);
|
67
68
|
}
|
68
69
|
|
69
70
|
for (const chunkA of chunks) {
|
70
|
-
const chunkAHash =
|
71
|
+
const chunkAHash =
|
72
|
+
/** @type {number} */
|
73
|
+
(chunkModulesHash.get(chunkA));
|
71
74
|
const chunkAModulesCount =
|
72
75
|
chunkGraph.getNumberOfChunkModules(chunkA);
|
73
76
|
if (chunkAModulesCount === 0) continue;
|
@@ -81,7 +84,7 @@ class FlagIncludedChunksPlugin {
|
|
81
84
|
bestModule = module;
|
82
85
|
}
|
83
86
|
loopB: for (const chunkB of chunkGraph.getModuleChunksIterable(
|
84
|
-
bestModule
|
87
|
+
/** @type {Module} */ (bestModule)
|
85
88
|
)) {
|
86
89
|
// as we iterate the same iterables twice
|
87
90
|
// skip if we find ourselves
|
@@ -100,14 +103,17 @@ class FlagIncludedChunksPlugin {
|
|
100
103
|
// is chunkA in chunkB?
|
101
104
|
|
102
105
|
// we do a cheap check for the hash value
|
103
|
-
const chunkBHash =
|
106
|
+
const chunkBHash =
|
107
|
+
/** @type {number} */
|
108
|
+
(chunkModulesHash.get(chunkB));
|
104
109
|
if ((chunkBHash & chunkAHash) !== chunkAHash) continue;
|
105
110
|
|
106
111
|
// compare all modules
|
107
112
|
for (const m of chunkGraph.getChunkModulesIterable(chunkA)) {
|
108
113
|
if (!chunkGraph.isModuleInChunk(m, chunkB)) continue loopB;
|
109
114
|
}
|
110
|
-
|
115
|
+
/** @type {ChunkId[]} */
|
116
|
+
(chunkB.ids).push(/** @type {ChunkId} */ (chunkA.id));
|
111
117
|
}
|
112
118
|
}
|
113
119
|
}
|
@@ -16,7 +16,7 @@ const { UsageState } = require("../ExportsInfo");
|
|
16
16
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
17
17
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
18
18
|
|
19
|
-
/** @typedef {Map<TopLevelSymbol | null, Set<string | TopLevelSymbol> | true>} InnerGraph */
|
19
|
+
/** @typedef {Map<TopLevelSymbol | null, Set<string | TopLevelSymbol> | true | undefined>} InnerGraph */
|
20
20
|
/** @typedef {function(boolean | Set<string> | undefined): void} UsageCallback */
|
21
21
|
|
22
22
|
/**
|
@@ -34,7 +34,7 @@ const topLevelSymbolTag = Symbol("top level symbol");
|
|
34
34
|
|
35
35
|
/**
|
36
36
|
* @param {ParserState} parserState parser state
|
37
|
-
* @returns {State} state
|
37
|
+
* @returns {State | undefined} state
|
38
38
|
*/
|
39
39
|
function getState(parserState) {
|
40
40
|
return parserStateMap.get(parserState);
|
@@ -235,7 +235,7 @@ exports.onUsage = (state, onUsageCallback) => {
|
|
235
235
|
|
236
236
|
/**
|
237
237
|
* @param {ParserState} state parser state
|
238
|
-
* @param {TopLevelSymbol} symbol the symbol
|
238
|
+
* @param {TopLevelSymbol | undefined} symbol the symbol
|
239
239
|
*/
|
240
240
|
exports.setTopLevelSymbol = (state, symbol) => {
|
241
241
|
const innerGraphState = getState(state);
|
@@ -260,7 +260,7 @@ exports.getTopLevelSymbol = state => {
|
|
260
260
|
/**
|
261
261
|
* @param {JavascriptParser} parser parser
|
262
262
|
* @param {string} name name of variable
|
263
|
-
* @returns {TopLevelSymbol} symbol
|
263
|
+
* @returns {TopLevelSymbol | undefined} symbol
|
264
264
|
*/
|
265
265
|
exports.tagTopLevelSymbol = (parser, name) => {
|
266
266
|
const innerGraphState = getState(parser.state);
|
@@ -309,7 +309,7 @@ exports.isDependencyUsedByExports = (
|
|
309
309
|
|
310
310
|
/**
|
311
311
|
* @param {Dependency} dependency the dependency
|
312
|
-
* @param {Set<string> | boolean} usedByExports usedByExports info
|
312
|
+
* @param {Set<string> | boolean | undefined} usedByExports usedByExports info
|
313
313
|
* @param {ModuleGraph} moduleGraph moduleGraph
|
314
314
|
* @returns {null | false | function(ModuleGraphConnection, RuntimeSpec): ConnectionState} function to determine if the connection is active
|
315
315
|
*/
|