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
@@ -11,12 +11,15 @@ const HotUpdateChunk = require("../HotUpdateChunk");
|
|
11
11
|
const Template = require("../Template");
|
12
12
|
const { getAllChunks } = require("../javascript/ChunkHelpers");
|
13
13
|
const {
|
14
|
+
chunkHasJs,
|
14
15
|
getCompilationHooks,
|
15
16
|
getChunkFilenameTemplate
|
16
17
|
} = require("../javascript/JavascriptModulesPlugin");
|
17
18
|
const { updateHashForEntryStartup } = require("../javascript/StartupHelpers");
|
18
19
|
|
20
|
+
/** @typedef {import("../Chunk")} Chunk */
|
19
21
|
/** @typedef {import("../Compiler")} Compiler */
|
22
|
+
/** @typedef {import("../Entrypoint")} Entrypoint */
|
20
23
|
|
21
24
|
class ModuleChunkFormatPlugin {
|
22
25
|
/**
|
@@ -72,7 +75,9 @@ class ModuleChunkFormatPlugin {
|
|
72
75
|
chunkGraph.getChunkEntryModulesWithChunkGroupIterable(chunk)
|
73
76
|
);
|
74
77
|
if (entries.length > 0) {
|
75
|
-
const runtimeChunk =
|
78
|
+
const runtimeChunk =
|
79
|
+
/** @type {Entrypoint[][]} */
|
80
|
+
(entries)[0][1].getRuntimeChunk();
|
76
81
|
const currentOutputName = compilation
|
77
82
|
.getPath(
|
78
83
|
getChunkFilenameTemplate(chunk, compilation.outputOptions),
|
@@ -86,6 +91,10 @@ class ModuleChunkFormatPlugin {
|
|
86
91
|
// remove filename, we only need the directory
|
87
92
|
currentOutputName.pop();
|
88
93
|
|
94
|
+
/**
|
95
|
+
* @param {Chunk} chunk the chunk
|
96
|
+
* @returns {string} the relative path
|
97
|
+
*/
|
89
98
|
const getRelativePath = chunk => {
|
90
99
|
const baseOutputName = currentOutputName.slice();
|
91
100
|
const chunkOutputName = compilation
|
@@ -122,15 +131,15 @@ class ModuleChunkFormatPlugin {
|
|
122
131
|
entrySource.add(source);
|
123
132
|
entrySource.add(";\n\n// load runtime\n");
|
124
133
|
entrySource.add(
|
125
|
-
`import
|
126
|
-
getRelativePath(runtimeChunk)
|
134
|
+
`import ${RuntimeGlobals.require} from ${JSON.stringify(
|
135
|
+
getRelativePath(/** @type {Chunk} */ (runtimeChunk))
|
127
136
|
)};\n`
|
128
137
|
);
|
129
138
|
|
130
139
|
const startupSource = new ConcatSource();
|
131
140
|
startupSource.add(
|
132
141
|
`var __webpack_exec__ = ${runtimeTemplate.returningFunction(
|
133
|
-
|
142
|
+
`${RuntimeGlobals.require}(${RuntimeGlobals.entryModuleId} = moduleId)`,
|
134
143
|
"moduleId"
|
135
144
|
)}\n`
|
136
145
|
);
|
@@ -142,12 +151,16 @@ class ModuleChunkFormatPlugin {
|
|
142
151
|
const final = i + 1 === entries.length;
|
143
152
|
const moduleId = chunkGraph.getModuleId(module);
|
144
153
|
const chunks = getAllChunks(
|
145
|
-
entrypoint,
|
146
|
-
runtimeChunk,
|
154
|
+
/** @type {Entrypoint} */ (entrypoint),
|
155
|
+
/** @type {Chunk} */ (runtimeChunk),
|
147
156
|
undefined
|
148
157
|
);
|
149
158
|
for (const chunk of chunks) {
|
150
|
-
if (
|
159
|
+
if (
|
160
|
+
loadedChunks.has(chunk) ||
|
161
|
+
!chunkHasJs(chunk, chunkGraph)
|
162
|
+
)
|
163
|
+
continue;
|
151
164
|
loadedChunks.add(chunk);
|
152
165
|
startupSource.add(
|
153
166
|
`import * as __webpack_chunk_${index}__ from ${JSON.stringify(
|
@@ -161,7 +174,7 @@ class ModuleChunkFormatPlugin {
|
|
161
174
|
}
|
162
175
|
startupSource.add(
|
163
176
|
`${
|
164
|
-
final ?
|
177
|
+
final ? `var ${RuntimeGlobals.exports} = ` : ""
|
165
178
|
}__webpack_exec__(${JSON.stringify(moduleId)});\n`
|
166
179
|
);
|
167
180
|
}
|
@@ -9,6 +9,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
9
|
const ExportWebpackRequireRuntimeModule = require("./ExportWebpackRequireRuntimeModule");
|
10
10
|
const ModuleChunkLoadingRuntimeModule = require("./ModuleChunkLoadingRuntimeModule");
|
11
11
|
|
12
|
+
/** @typedef {import("../Chunk")} Chunk */
|
12
13
|
/** @typedef {import("../Compiler")} Compiler */
|
13
14
|
|
14
15
|
class ModuleChunkLoadingPlugin {
|
@@ -22,6 +23,10 @@ class ModuleChunkLoadingPlugin {
|
|
22
23
|
"ModuleChunkLoadingPlugin",
|
23
24
|
compilation => {
|
24
25
|
const globalChunkLoading = compilation.outputOptions.chunkLoading;
|
26
|
+
/**
|
27
|
+
* @param {Chunk} chunk chunk to check
|
28
|
+
* @returns {boolean} true, when the plugin is enabled for the chunk
|
29
|
+
*/
|
25
30
|
const isEnabledForChunk = chunk => {
|
26
31
|
const options = chunk.getEntryOptions();
|
27
32
|
const chunkLoading =
|
@@ -31,6 +36,10 @@ class ModuleChunkLoadingPlugin {
|
|
31
36
|
return chunkLoading === "import";
|
32
37
|
};
|
33
38
|
const onceForChunkSet = new WeakSet();
|
39
|
+
/**
|
40
|
+
* @param {Chunk} chunk chunk to check
|
41
|
+
* @param {Set<string>} set runtime requirements
|
42
|
+
*/
|
34
43
|
const handler = (chunk, set) => {
|
35
44
|
if (onceForChunkSet.has(chunk)) return;
|
36
45
|
onceForChunkSet.add(chunk);
|
@@ -18,6 +18,7 @@ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
|
18
18
|
const { getUndoPath } = require("../util/identifier");
|
19
19
|
|
20
20
|
/** @typedef {import("../Chunk")} Chunk */
|
21
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
21
22
|
|
22
23
|
/**
|
23
24
|
* @typedef {Object} JsonpCompilationPluginHooks
|
@@ -50,6 +51,9 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
50
51
|
return hooks;
|
51
52
|
}
|
52
53
|
|
54
|
+
/**
|
55
|
+
* @param {ReadonlySet<string>} runtimeRequirements runtime requirements
|
56
|
+
*/
|
53
57
|
constructor(runtimeRequirements) {
|
54
58
|
super("import chunk loading", RuntimeModule.STAGE_ATTACH);
|
55
59
|
this._runtimeRequirements = runtimeRequirements;
|
@@ -66,21 +70,22 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
66
70
|
if (options && options.baseUri) {
|
67
71
|
return `${RuntimeGlobals.baseURI} = ${JSON.stringify(options.baseUri)};`;
|
68
72
|
}
|
73
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
69
74
|
const {
|
70
|
-
|
71
|
-
|
72
|
-
}
|
73
|
-
} = this;
|
75
|
+
outputOptions: { importMetaName }
|
76
|
+
} = compilation;
|
74
77
|
return `${RuntimeGlobals.baseURI} = new URL(${JSON.stringify(
|
75
78
|
rootOutputDir
|
76
79
|
)}, ${importMetaName}.url);`;
|
77
80
|
}
|
78
81
|
|
79
82
|
/**
|
80
|
-
* @returns {string} runtime code
|
83
|
+
* @returns {string | null} runtime code
|
81
84
|
*/
|
82
85
|
generate() {
|
83
|
-
const
|
86
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
87
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
88
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
84
89
|
const {
|
85
90
|
runtimeTemplate,
|
86
91
|
outputOptions: { importFunctionName }
|
@@ -103,8 +108,8 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
103
108
|
const hasJsMatcher = compileBooleanMatcher(conditionMap);
|
104
109
|
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
|
105
110
|
|
106
|
-
const outputName =
|
107
|
-
getChunkFilenameTemplate(chunk,
|
111
|
+
const outputName = compilation.getPath(
|
112
|
+
getChunkFilenameTemplate(chunk, compilation.outputOptions),
|
108
113
|
{
|
109
114
|
chunk,
|
110
115
|
contentHashType: "javascript"
|
@@ -112,7 +117,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
112
117
|
);
|
113
118
|
const rootOutputDir = getUndoPath(
|
114
119
|
outputName,
|
115
|
-
|
120
|
+
/** @type {string} */ (compilation.outputOptions.path),
|
116
121
|
true
|
117
122
|
);
|
118
123
|
|
@@ -127,7 +132,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
127
132
|
"",
|
128
133
|
"// object to store loaded and loading chunks",
|
129
134
|
"// undefined = chunk not loaded, null = chunk preloaded/prefetched",
|
130
|
-
"// [resolve,
|
135
|
+
"// [resolve, Promise] = chunk loading, 0 = chunk loaded",
|
131
136
|
`var installedChunks = ${
|
132
137
|
stateExpression ? `${stateExpression} = ${stateExpression} || ` : ""
|
133
138
|
}{`,
|
@@ -156,7 +161,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
156
161
|
"}"
|
157
162
|
]),
|
158
163
|
"}",
|
159
|
-
|
164
|
+
`if(runtime) runtime(${RuntimeGlobals.require});`,
|
160
165
|
"for(;i < ids.length; i++) {",
|
161
166
|
Template.indent([
|
162
167
|
"chunkId = ids[i];",
|
@@ -210,7 +215,9 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
210
215
|
)})])`,
|
211
216
|
`promises.push(installedChunkData[1] = promise);`
|
212
217
|
]),
|
213
|
-
|
218
|
+
hasJsMatcher === true
|
219
|
+
? "}"
|
220
|
+
: "} else installedChunks[chunkId] = 0;"
|
214
221
|
]),
|
215
222
|
"}"
|
216
223
|
]),
|
@@ -14,7 +14,7 @@ class HotModuleReplacementRuntimeModule extends RuntimeModule {
|
|
14
14
|
super("hot module replacement", RuntimeModule.STAGE_BASIC);
|
15
15
|
}
|
16
16
|
/**
|
17
|
-
* @returns {string} runtime code
|
17
|
+
* @returns {string | null} runtime code
|
18
18
|
*/
|
19
19
|
generate() {
|
20
20
|
return Template.getFunctionContent(
|
@@ -10,6 +10,9 @@ const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
|
10
10
|
const Dependency = require("../Dependency");
|
11
11
|
const Module = require("../Module");
|
12
12
|
const ModuleFactory = require("../ModuleFactory");
|
13
|
+
const {
|
14
|
+
WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY
|
15
|
+
} = require("../ModuleTypeConstants");
|
13
16
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
14
17
|
const Template = require("../Template");
|
15
18
|
const CommonJsRequireDependency = require("../dependencies/CommonJsRequireDependency");
|
@@ -95,7 +98,11 @@ registerNotSerializable(LazyCompilationDependency);
|
|
95
98
|
|
96
99
|
class LazyCompilationProxyModule extends Module {
|
97
100
|
constructor(context, originalModule, request, client, data, active) {
|
98
|
-
super(
|
101
|
+
super(
|
102
|
+
WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY,
|
103
|
+
context,
|
104
|
+
originalModule.layer
|
105
|
+
);
|
99
106
|
this.originalModule = originalModule;
|
100
107
|
this.request = request;
|
101
108
|
this.client = client;
|
@@ -107,7 +114,7 @@ class LazyCompilationProxyModule extends Module {
|
|
107
114
|
* @returns {string} a unique identifier of the module
|
108
115
|
*/
|
109
116
|
identifier() {
|
110
|
-
return
|
117
|
+
return `${WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY}|${this.originalModule.identifier()}`;
|
111
118
|
}
|
112
119
|
|
113
120
|
/**
|
@@ -115,7 +122,7 @@ class LazyCompilationProxyModule extends Module {
|
|
115
122
|
* @returns {string} a user readable identifier of the module
|
116
123
|
*/
|
117
124
|
readableIdentifier(requestShortener) {
|
118
|
-
return
|
125
|
+
return `${WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY} ${this.originalModule.readableIdentifier(
|
119
126
|
requestShortener
|
120
127
|
)}`;
|
121
128
|
}
|
@@ -142,7 +149,9 @@ class LazyCompilationProxyModule extends Module {
|
|
142
149
|
* @returns {string | null} an identifier for library inclusion
|
143
150
|
*/
|
144
151
|
libIdent(options) {
|
145
|
-
return `${this.originalModule.libIdent(
|
152
|
+
return `${this.originalModule.libIdent(
|
153
|
+
options
|
154
|
+
)}!${WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY}`;
|
146
155
|
}
|
147
156
|
|
148
157
|
/**
|
@@ -294,7 +303,7 @@ class LazyCompilationDependencyFactory extends ModuleFactory {
|
|
294
303
|
|
295
304
|
/**
|
296
305
|
* @param {ModuleFactoryCreateData} data data object
|
297
|
-
* @param {function(Error=, ModuleFactoryResult=): void} callback callback
|
306
|
+
* @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
|
298
307
|
* @returns {void}
|
299
308
|
*/
|
300
309
|
create(data, callback) {
|
@@ -13,7 +13,18 @@ const {
|
|
13
13
|
|
14
14
|
/** @typedef {import("../Compiler")} Compiler */
|
15
15
|
|
16
|
+
/**
|
17
|
+
* @typedef {Object} ChunkModuleIdRangePluginOptions
|
18
|
+
* @property {string} name the chunk name
|
19
|
+
* @property {("index" | "index2" | "preOrderIndex" | "postOrderIndex")=} order order
|
20
|
+
* @property {number=} start start id
|
21
|
+
* @property {number=} end end id
|
22
|
+
*/
|
23
|
+
|
16
24
|
class ChunkModuleIdRangePlugin {
|
25
|
+
/**
|
26
|
+
* @param {ChunkModuleIdRangePluginOptions} options options object
|
27
|
+
*/
|
17
28
|
constructor(options) {
|
18
29
|
this.options = options;
|
19
30
|
}
|
@@ -15,9 +15,18 @@ const {
|
|
15
15
|
/** @typedef {import("../Compiler")} Compiler */
|
16
16
|
/** @typedef {import("../Module")} Module */
|
17
17
|
|
18
|
+
/**
|
19
|
+
* @typedef {Object} DeterministicChunkIdsPluginOptions
|
20
|
+
* @property {string=} context context for ids
|
21
|
+
* @property {number=} maxLength maximum length of ids
|
22
|
+
*/
|
23
|
+
|
18
24
|
class DeterministicChunkIdsPlugin {
|
19
|
-
|
20
|
-
|
25
|
+
/**
|
26
|
+
* @param {DeterministicChunkIdsPluginOptions} [options] options
|
27
|
+
*/
|
28
|
+
constructor(options = {}) {
|
29
|
+
this.options = options;
|
21
30
|
}
|
22
31
|
|
23
32
|
/**
|
@@ -17,15 +17,19 @@ const {
|
|
17
17
|
/** @typedef {import("../Compiler")} Compiler */
|
18
18
|
/** @typedef {import("../Module")} Module */
|
19
19
|
|
20
|
+
/**
|
21
|
+
* @typedef {Object} DeterministicModuleIdsPluginOptions
|
22
|
+
* @property {string=} context context relative to which module identifiers are computed
|
23
|
+
* @property {function(Module): boolean=} test selector function for modules
|
24
|
+
* @property {number=} maxLength maximum id length in digits (used as starting point)
|
25
|
+
* @property {number=} salt hash salt for ids
|
26
|
+
* @property {boolean=} fixedLength do not increase the maxLength to find an optimal id space size
|
27
|
+
* @property {boolean=} failOnConflict throw an error when id conflicts occur (instead of rehashing)
|
28
|
+
*/
|
29
|
+
|
20
30
|
class DeterministicModuleIdsPlugin {
|
21
31
|
/**
|
22
|
-
* @param {
|
23
|
-
* @param {string=} options.context context relative to which module identifiers are computed
|
24
|
-
* @param {function(Module): boolean=} options.test selector function for modules
|
25
|
-
* @param {number=} options.maxLength maximum id length in digits (used as starting point)
|
26
|
-
* @param {number=} options.salt hash salt for ids
|
27
|
-
* @param {boolean=} options.fixedLength do not increase the maxLength to find an optimal id space size
|
28
|
-
* @param {boolean=} options.failOnConflict throw an error when id conflicts occur (instead of rehashing)
|
32
|
+
* @param {DeterministicModuleIdsPluginOptions} [options] options
|
29
33
|
*/
|
30
34
|
constructor(options = {}) {
|
31
35
|
this.options = options;
|
@@ -16,6 +16,7 @@ const {
|
|
16
16
|
} = require("./IdHelpers");
|
17
17
|
|
18
18
|
/** @typedef {import("../../declarations/plugins/HashedModuleIdsPlugin").HashedModuleIdsPluginOptions} HashedModuleIdsPluginOptions */
|
19
|
+
/** @typedef {import("../Compiler")} Compiler */
|
19
20
|
|
20
21
|
const validate = createSchemaValidation(
|
21
22
|
require("../../schemas/plugins/HashedModuleIdsPlugin.check.js"),
|
@@ -35,7 +36,7 @@ class HashedModuleIdsPlugin {
|
|
35
36
|
|
36
37
|
/** @type {HashedModuleIdsPluginOptions} */
|
37
38
|
this.options = {
|
38
|
-
context:
|
39
|
+
context: undefined,
|
39
40
|
hashFunction: "md4",
|
40
41
|
hashDigest: "base64",
|
41
42
|
hashDigestLength: 4,
|
@@ -43,6 +44,11 @@ class HashedModuleIdsPlugin {
|
|
43
44
|
};
|
44
45
|
}
|
45
46
|
|
47
|
+
/**
|
48
|
+
* Apply the plugin
|
49
|
+
* @param {Compiler} compiler the compiler instance
|
50
|
+
* @returns {void}
|
51
|
+
*/
|
46
52
|
apply(compiler) {
|
47
53
|
const options = this.options;
|
48
54
|
compiler.hooks.compilation.tap("HashedModuleIdsPlugin", compilation => {
|
@@ -64,7 +70,8 @@ class HashedModuleIdsPlugin {
|
|
64
70
|
hash.digest(options.hashDigest)
|
65
71
|
);
|
66
72
|
let len = options.hashDigestLength;
|
67
|
-
while (usedIds.has(hashId.slice(0, len)))
|
73
|
+
while (usedIds.has(hashId.slice(0, len)))
|
74
|
+
/** @type {number} */ (len)++;
|
68
75
|
const moduleId = hashId.slice(0, len);
|
69
76
|
chunkGraph.setModuleId(module, moduleId);
|
70
77
|
usedIds.add(moduleId);
|
package/lib/ids/IdHelpers.js
CHANGED
@@ -427,6 +427,9 @@ const assignAscendingModuleIds = (usedIds, modules, compilation) => {
|
|
427
427
|
let nextId = 0;
|
428
428
|
let assignId;
|
429
429
|
if (usedIds.size > 0) {
|
430
|
+
/**
|
431
|
+
* @param {Module} module the module
|
432
|
+
*/
|
430
433
|
assignId = module => {
|
431
434
|
if (chunkGraph.getModuleId(module) === null) {
|
432
435
|
while (usedIds.has(nextId + "")) nextId++;
|
@@ -434,6 +437,9 @@ const assignAscendingModuleIds = (usedIds, modules, compilation) => {
|
|
434
437
|
}
|
435
438
|
};
|
436
439
|
} else {
|
440
|
+
/**
|
441
|
+
* @param {Module} module the module
|
442
|
+
*/
|
437
443
|
assignId = module => {
|
438
444
|
if (chunkGraph.getModuleId(module) === null) {
|
439
445
|
chunkGraph.setModuleId(module, nextId++);
|
@@ -14,11 +14,21 @@ const {
|
|
14
14
|
assignAscendingChunkIds
|
15
15
|
} = require("./IdHelpers");
|
16
16
|
|
17
|
+
/** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} Output */
|
17
18
|
/** @typedef {import("../Chunk")} Chunk */
|
18
19
|
/** @typedef {import("../Compiler")} Compiler */
|
19
20
|
/** @typedef {import("../Module")} Module */
|
20
21
|
|
22
|
+
/**
|
23
|
+
* @typedef {Object} NamedChunkIdsPluginOptions
|
24
|
+
* @property {string} [context] context
|
25
|
+
* @property {string} [delimiter] delimiter
|
26
|
+
*/
|
27
|
+
|
21
28
|
class NamedChunkIdsPlugin {
|
29
|
+
/**
|
30
|
+
* @param {NamedChunkIdsPluginOptions=} options options
|
31
|
+
*/
|
22
32
|
constructor(options) {
|
23
33
|
this.delimiter = (options && options.delimiter) || "-";
|
24
34
|
this.context = options && options.context;
|
@@ -31,7 +41,9 @@ class NamedChunkIdsPlugin {
|
|
31
41
|
*/
|
32
42
|
apply(compiler) {
|
33
43
|
compiler.hooks.compilation.tap("NamedChunkIdsPlugin", compilation => {
|
34
|
-
const
|
44
|
+
const hashFunction =
|
45
|
+
/** @type {NonNullable<Output["hashFunction"]>} */
|
46
|
+
(compilation.outputOptions.hashFunction);
|
35
47
|
compilation.hooks.chunkIds.tap("NamedChunkIdsPlugin", chunks => {
|
36
48
|
const chunkGraph = compilation.chunkGraph;
|
37
49
|
const context = this.context ? this.context : compiler.context;
|
@@ -14,12 +14,21 @@ const {
|
|
14
14
|
assignAscendingModuleIds
|
15
15
|
} = require("./IdHelpers");
|
16
16
|
|
17
|
+
/** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} Output */
|
17
18
|
/** @typedef {import("../Compiler")} Compiler */
|
18
19
|
/** @typedef {import("../Module")} Module */
|
19
20
|
|
21
|
+
/**
|
22
|
+
* @typedef {Object} NamedModuleIdsPluginOptions
|
23
|
+
* @property {string} [context] context
|
24
|
+
*/
|
25
|
+
|
20
26
|
class NamedModuleIdsPlugin {
|
21
|
-
|
22
|
-
|
27
|
+
/**
|
28
|
+
* @param {NamedModuleIdsPluginOptions} [options] options
|
29
|
+
*/
|
30
|
+
constructor(options = {}) {
|
31
|
+
this.options = options;
|
23
32
|
}
|
24
33
|
|
25
34
|
/**
|
@@ -30,7 +39,9 @@ class NamedModuleIdsPlugin {
|
|
30
39
|
apply(compiler) {
|
31
40
|
const { root } = compiler;
|
32
41
|
compiler.hooks.compilation.tap("NamedModuleIdsPlugin", compilation => {
|
33
|
-
const
|
42
|
+
const hashFunction =
|
43
|
+
/** @type {NonNullable<Output["hashFunction"]>} */
|
44
|
+
(compilation.outputOptions.hashFunction);
|
34
45
|
compilation.hooks.moduleIds.tap("NamedModuleIdsPlugin", () => {
|
35
46
|
const chunkGraph = compilation.chunkGraph;
|
36
47
|
const context = this.options.context
|
@@ -60,8 +60,12 @@ class OccurrenceChunkIdsPlugin {
|
|
60
60
|
|
61
61
|
const chunksInOccurrenceOrder = Array.from(chunks).sort((a, b) => {
|
62
62
|
if (prioritiseInitial) {
|
63
|
-
const aEntryOccurs =
|
64
|
-
|
63
|
+
const aEntryOccurs =
|
64
|
+
/** @type {number} */
|
65
|
+
(occursInInitialChunksMap.get(a));
|
66
|
+
const bEntryOccurs =
|
67
|
+
/** @type {number} */
|
68
|
+
(occursInInitialChunksMap.get(b));
|
65
69
|
if (aEntryOccurs > bEntryOccurs) return -1;
|
66
70
|
if (aEntryOccurs < bEntryOccurs) return 1;
|
67
71
|
}
|
@@ -81,7 +81,7 @@ class OccurrenceModuleIdsPlugin {
|
|
81
81
|
] of moduleGraph.getIncomingConnectionsByOriginModule(module)) {
|
82
82
|
if (!originModule) continue;
|
83
83
|
if (!connections.some(c => c.isTargetActive(undefined))) continue;
|
84
|
-
sum += initialChunkChunkMap.get(originModule);
|
84
|
+
sum += initialChunkChunkMap.get(originModule) || 0;
|
85
85
|
}
|
86
86
|
return sum;
|
87
87
|
};
|
@@ -50,7 +50,7 @@ class SyncModuleIdsPlugin {
|
|
50
50
|
}
|
51
51
|
return callback();
|
52
52
|
}
|
53
|
-
const json = JSON.parse(buffer.toString());
|
53
|
+
const json = JSON.parse(/** @type {Buffer} */ (buffer).toString());
|
54
54
|
data = new Map();
|
55
55
|
for (const key of Object.keys(json)) {
|
56
56
|
data.set(key, json[key]);
|
@@ -63,6 +63,7 @@ class SyncModuleIdsPlugin {
|
|
63
63
|
if (this._write) {
|
64
64
|
compiler.hooks.emitRecords.tapAsync(plugin, callback => {
|
65
65
|
if (!data || !dataChanged) return callback();
|
66
|
+
/** @type {Object<string, string | number>} */
|
66
67
|
const json = {};
|
67
68
|
const sorted = Array.from(data).sort(([a], [b]) => (a < b ? -1 : 1));
|
68
69
|
for (const [key, value] of sorted) {
|
@@ -98,7 +99,7 @@ class SyncModuleIdsPlugin {
|
|
98
99
|
err.module = module;
|
99
100
|
compilation.errors.push(err);
|
100
101
|
}
|
101
|
-
chunkGraph.setModuleId(module, id);
|
102
|
+
chunkGraph.setModuleId(module, /** @type {string | number} */ (id));
|
102
103
|
usedIds.add(idAsString);
|
103
104
|
}
|
104
105
|
});
|
package/lib/index.js
CHANGED
@@ -11,8 +11,14 @@ const memoize = require("./util/memoize");
|
|
11
11
|
/** @typedef {import("../declarations/WebpackOptions").Entry} Entry */
|
12
12
|
/** @typedef {import("../declarations/WebpackOptions").EntryNormalized} EntryNormalized */
|
13
13
|
/** @typedef {import("../declarations/WebpackOptions").EntryObject} EntryObject */
|
14
|
+
/** @typedef {import("../declarations/WebpackOptions").ExternalItemFunctionData} ExternalItemFunctionData */
|
15
|
+
/** @typedef {import("../declarations/WebpackOptions").ExternalItemObjectKnown} ExternalItemObjectKnown */
|
16
|
+
/** @typedef {import("../declarations/WebpackOptions").ExternalItemObjectUnknown} ExternalItemObjectUnknown */
|
17
|
+
/** @typedef {import("../declarations/WebpackOptions").ExternalItemValue} ExternalItemValue */
|
18
|
+
/** @typedef {import("../declarations/WebpackOptions").Externals} Externals */
|
14
19
|
/** @typedef {import("../declarations/WebpackOptions").FileCacheOptions} FileCacheOptions */
|
15
20
|
/** @typedef {import("../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
|
21
|
+
/** @typedef {import("../declarations/WebpackOptions").MemoryCacheOptions} MemoryCacheOptions */
|
16
22
|
/** @typedef {import("../declarations/WebpackOptions").ModuleOptions} ModuleOptions */
|
17
23
|
/** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
|
18
24
|
/** @typedef {import("../declarations/WebpackOptions").RuleSetCondition} RuleSetCondition */
|
@@ -25,12 +31,14 @@ const memoize = require("./util/memoize");
|
|
25
31
|
/** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptionsNormalized */
|
26
32
|
/** @typedef {import("../declarations/WebpackOptions").WebpackPluginFunction} WebpackPluginFunction */
|
27
33
|
/** @typedef {import("../declarations/WebpackOptions").WebpackPluginInstance} WebpackPluginInstance */
|
34
|
+
/** @typedef {import("./ChunkGroup")} ChunkGroup */
|
28
35
|
/** @typedef {import("./Compilation").Asset} Asset */
|
29
36
|
/** @typedef {import("./Compilation").AssetInfo} AssetInfo */
|
30
37
|
/** @typedef {import("./Compilation").EntryOptions} EntryOptions */
|
31
38
|
/** @typedef {import("./Compilation").PathData} PathData */
|
32
39
|
/** @typedef {import("./Compiler").AssetEmittedInfo} AssetEmittedInfo */
|
33
40
|
/** @typedef {import("./MultiStats")} MultiStats */
|
41
|
+
/** @typedef {import("./NormalModuleFactory").ResolveData} ResolveData */
|
34
42
|
/** @typedef {import("./Parser").ParserState} ParserState */
|
35
43
|
/** @typedef {import("./ResolverFactory").ResolvePluginInstance} ResolvePluginInstance */
|
36
44
|
/** @typedef {import("./ResolverFactory").Resolver} Resolver */
|
@@ -84,8 +84,8 @@ class ArrayPushCallbackChunkFormatPlugin {
|
|
84
84
|
if (runtimeModules.length > 0 || entries.length > 0) {
|
85
85
|
const runtime = new ConcatSource(
|
86
86
|
(runtimeTemplate.supportsArrowFunction()
|
87
|
-
?
|
88
|
-
:
|
87
|
+
? `${RuntimeGlobals.require} =>`
|
88
|
+
: `function(${RuntimeGlobals.require})`) +
|
89
89
|
" { // webpackRuntimeModules\n"
|
90
90
|
);
|
91
91
|
if (runtimeModules.length > 0) {
|
@@ -121,7 +121,7 @@ class ArrayPushCallbackChunkFormatPlugin {
|
|
121
121
|
.getChunkRuntimeRequirements(chunk)
|
122
122
|
.has(RuntimeGlobals.returnExportsFromRuntime)
|
123
123
|
) {
|
124
|
-
runtime.add(
|
124
|
+
runtime.add(`return ${RuntimeGlobals.exports};\n`);
|
125
125
|
}
|
126
126
|
}
|
127
127
|
runtime.add("}\n");
|