webpack 5.59.0 → 5.94.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.
- package/README.md +48 -38
- package/bin/webpack.js +34 -10
- package/hot/dev-server.js +19 -5
- package/hot/lazy-compilation-node.js +13 -1
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +23 -4
- package/hot/only-dev-server.js +3 -2
- package/hot/poll.js +5 -2
- package/hot/signal.js +6 -2
- package/lib/APIPlugin.js +226 -122
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +2 -1
- package/lib/BannerPlugin.js +33 -12
- package/lib/Cache.js +16 -12
- package/lib/CacheFacade.js +13 -16
- package/lib/CaseSensitiveModulesWarning.js +8 -8
- package/lib/Chunk.js +60 -33
- package/lib/ChunkGraph.js +207 -72
- package/lib/ChunkGroup.js +40 -20
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +117 -32
- package/lib/CodeGenerationResults.js +8 -7
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +712 -392
- package/lib/Compiler.js +393 -172
- package/lib/ConcatenationScope.js +10 -13
- package/lib/ConditionalInitFragment.js +22 -14
- package/lib/ConstPlugin.js +104 -64
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +283 -108
- package/lib/ContextModuleFactory.js +151 -63
- package/lib/ContextReplacementPlugin.js +25 -10
- package/lib/CssModule.js +166 -0
- package/lib/DefinePlugin.js +254 -148
- package/lib/DelegatedModule.js +29 -6
- package/lib/DelegatedModuleFactoryPlugin.js +42 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +17 -2
- package/lib/Dependency.js +58 -29
- package/lib/DependencyTemplate.js +24 -3
- package/lib/DependencyTemplates.js +2 -2
- package/lib/DllEntryPlugin.js +18 -1
- package/lib/DllModule.js +21 -4
- package/lib/DllModuleFactory.js +2 -1
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +50 -19
- package/lib/EntryOptionPlugin.js +6 -1
- package/lib/EntryPlugin.js +7 -4
- package/lib/Entrypoint.js +2 -2
- package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +65 -26
- package/lib/EvalDevToolModulePlugin.js +37 -13
- package/lib/EvalSourceMapDevToolPlugin.js +50 -20
- package/lib/ExportsInfo.js +234 -133
- package/lib/ExportsInfoApiPlugin.js +31 -15
- package/lib/ExternalModule.js +391 -129
- package/lib/ExternalModuleFactoryPlugin.js +65 -17
- package/lib/FileSystemInfo.js +1038 -523
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +352 -349
- package/lib/FlagDependencyUsagePlugin.js +10 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +16 -8
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +11 -13
- package/lib/HotModuleReplacementPlugin.js +221 -128
- package/lib/IgnoreErrorModuleFactory.js +4 -4
- package/lib/IgnorePlugin.js +5 -4
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +39 -15
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +45 -16
- package/lib/LoaderOptionsPlugin.js +13 -3
- package/lib/MainTemplate.js +74 -21
- package/lib/Module.js +155 -34
- package/lib/ModuleBuildError.js +13 -11
- package/lib/ModuleDependencyError.js +6 -4
- package/lib/ModuleDependencyWarning.js +6 -4
- package/lib/ModuleError.js +10 -5
- package/lib/ModuleFactory.js +4 -4
- package/lib/ModuleFilenameHelpers.js +164 -54
- package/lib/ModuleGraph.js +93 -53
- package/lib/ModuleGraphConnection.js +27 -13
- package/lib/ModuleHashingError.js +29 -0
- package/lib/ModuleInfoHeaderPlugin.js +92 -33
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +17 -9
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +3 -1
- package/lib/ModuleStoreError.js +3 -2
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +168 -0
- package/lib/ModuleWarning.js +10 -5
- package/lib/MultiCompiler.js +115 -38
- package/lib/MultiStats.js +75 -33
- package/lib/MultiWatching.js +6 -2
- package/lib/NodeStuffPlugin.js +136 -37
- package/lib/NormalModule.js +437 -194
- package/lib/NormalModuleFactory.js +313 -116
- package/lib/NormalModuleReplacementPlugin.js +10 -4
- package/lib/NullFactory.js +1 -1
- package/lib/OptimizationStages.js +3 -3
- package/lib/Parser.js +1 -1
- package/lib/PlatformPlugin.js +39 -0
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +83 -28
- package/lib/ProvidePlugin.js +37 -19
- package/lib/RawModule.js +18 -5
- package/lib/RecordIdsPlugin.js +8 -8
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/ResolverFactory.js +8 -4
- package/lib/RuntimeGlobals.js +99 -65
- package/lib/RuntimeModule.js +17 -15
- package/lib/RuntimePlugin.js +116 -13
- package/lib/RuntimeTemplate.js +304 -102
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +89 -42
- package/lib/Stats.js +12 -7
- package/lib/Template.js +30 -33
- package/lib/TemplatedPathPlugin.js +102 -34
- package/lib/UseStrictPlugin.js +37 -12
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +6 -0
- package/lib/WatchIgnorePlugin.js +46 -13
- package/lib/Watching.js +139 -76
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +162 -56
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +351 -99
- package/lib/asset/AssetModulesPlugin.js +57 -33
- package/lib/asset/AssetParser.js +15 -6
- package/lib/asset/AssetSourceGenerator.js +30 -10
- package/lib/asset/AssetSourceParser.js +8 -2
- package/lib/asset/RawDataUrlModule.js +162 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +376 -420
- package/lib/cache/AddManagedPathsPlugin.js +6 -1
- package/lib/cache/IdleFileCachePlugin.js +26 -13
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
- package/lib/cache/PackFileCacheStrategy.js +172 -94
- package/lib/cache/ResolverCachePlugin.js +115 -43
- package/lib/cache/getLazyHashedEtag.js +2 -2
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +195 -110
- package/lib/config/browserslistTargetHandler.js +106 -41
- package/lib/config/defaults.js +572 -154
- package/lib/config/normalization.js +361 -322
- package/lib/config/target.js +105 -66
- package/lib/container/ContainerEntryDependency.js +2 -1
- package/lib/container/ContainerEntryModule.js +27 -11
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +18 -12
- package/lib/container/ContainerReferencePlugin.js +1 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +19 -8
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/ModuleFederationPlugin.js +2 -0
- package/lib/container/RemoteModule.js +17 -4
- package/lib/container/RemoteRuntimeModule.js +31 -17
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +203 -0
- package/lib/css/CssGenerator.js +151 -0
- package/lib/css/CssLoadingRuntimeModule.js +592 -0
- package/lib/css/CssModulesPlugin.js +888 -0
- package/lib/css/CssParser.js +1049 -0
- package/lib/css/walkCssTokens.js +775 -0
- package/lib/debug/ProfilingPlugin.js +102 -54
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
- package/lib/dependencies/AMDPlugin.js +44 -24
- package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
- package/lib/dependencies/AMDRequireDependency.js +21 -6
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +4 -4
- package/lib/dependencies/CachedConstDependency.js +22 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
- package/lib/dependencies/CommonJsExportsDependency.js +28 -5
- package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
- package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
- package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
- package/lib/dependencies/CommonJsRequireDependency.js +9 -1
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
- package/lib/dependencies/ConstDependency.js +12 -3
- package/lib/dependencies/ContextDependency.js +32 -5
- package/lib/dependencies/ContextDependencyHelpers.js +92 -62
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
- package/lib/dependencies/ContextElementDependency.js +41 -4
- package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
- package/lib/dependencies/CriticalDependencyWarning.js +4 -1
- package/lib/dependencies/CssExportDependency.js +156 -0
- package/lib/dependencies/CssImportDependency.js +125 -0
- package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
- package/lib/dependencies/CssUrlDependency.js +164 -0
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +15 -11
- package/lib/dependencies/ExportsInfoDependency.js +26 -5
- package/lib/dependencies/ExternalModuleDependency.js +109 -0
- package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
- package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
- package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
- package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +13 -7
- package/lib/dependencies/HarmonyImportDependency.js +65 -19
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
- package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -2
- package/lib/dependencies/ImportDependency.js +50 -12
- package/lib/dependencies/ImportEagerDependency.js +11 -6
- package/lib/dependencies/ImportMetaContextDependency.js +42 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
- package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +128 -59
- package/lib/dependencies/ImportParserPlugin.js +153 -83
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +11 -6
- package/lib/dependencies/JsonExportsDependency.js +38 -30
- package/lib/dependencies/LoaderDependency.js +14 -0
- package/lib/dependencies/LoaderImportDependency.js +14 -0
- package/lib/dependencies/LoaderPlugin.js +54 -40
- package/lib/dependencies/LocalModule.js +17 -1
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +22 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
- package/lib/dependencies/ModuleDependency.js +24 -7
- 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 +43 -8
- package/lib/dependencies/PureExpressionDependency.js +73 -39
- package/lib/dependencies/RequireContextDependency.js +6 -16
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
- package/lib/dependencies/RequireContextPlugin.js +20 -7
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
- 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 +6 -1
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +19 -2
- package/lib/dependencies/RequireResolveDependency.js +8 -1
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +49 -22
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +20 -13
- package/lib/dependencies/URLPlugin.js +115 -27
- 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 +6 -1
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +143 -59
- package/lib/dependencies/getFunctionExpression.js +9 -0
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
- package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
- package/lib/hmr/LazyCompilationPlugin.js +94 -41
- package/lib/hmr/lazyCompilationBackend.js +107 -44
- package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
- package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
- package/lib/ids/HashedModuleIdsPlugin.js +24 -16
- package/lib/ids/IdHelpers.js +59 -49
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +20 -12
- package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
- package/lib/ids/SyncModuleIdsPlugin.js +146 -0
- package/lib/index.js +44 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
- package/lib/javascript/BasicEvaluatedExpression.js +133 -19
- package/lib/javascript/ChunkHelpers.js +33 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
- package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
- package/lib/javascript/JavascriptGenerator.js +37 -6
- package/lib/javascript/JavascriptModulesPlugin.js +523 -295
- package/lib/javascript/JavascriptParser.js +1591 -574
- package/lib/javascript/JavascriptParserHelpers.js +58 -37
- package/lib/javascript/StartupHelpers.js +69 -47
- package/lib/json/JsonData.js +33 -0
- package/lib/json/JsonGenerator.js +29 -21
- package/lib/json/JsonModulesPlugin.js +13 -7
- package/lib/json/JsonParser.js +30 -16
- package/lib/library/AbstractLibraryPlugin.js +6 -2
- package/lib/library/AmdLibraryPlugin.js +34 -18
- package/lib/library/AssignLibraryPlugin.js +68 -32
- package/lib/library/EnableLibraryPlugin.js +39 -14
- package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
- package/lib/library/JsonpLibraryPlugin.js +4 -3
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- package/lib/library/ModuleLibraryPlugin.js +12 -7
- package/lib/library/SystemLibraryPlugin.js +6 -4
- package/lib/library/UmdLibraryPlugin.js +119 -100
- package/lib/logging/Logger.js +59 -6
- package/lib/logging/createConsoleLogger.js +25 -40
- package/lib/logging/runtime.js +8 -9
- package/lib/logging/truncateArgs.js +9 -8
- package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
- package/lib/node/NodeEnvironmentPlugin.js +14 -8
- package/lib/node/NodeTargetPlugin.js +7 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +100 -50
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
- package/lib/node/nodeConsole.js +48 -31
- package/lib/optimize/AggressiveMergingPlugin.js +10 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
- package/lib/optimize/ConcatenatedModule.js +353 -212
- package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
- package/lib/optimize/InnerGraph.js +30 -25
- package/lib/optimize/InnerGraphPlugin.js +105 -64
- package/lib/optimize/LimitChunkCountPlugin.js +32 -9
- package/lib/optimize/MangleExportsPlugin.js +7 -2
- package/lib/optimize/MinMaxSizeWarning.js +6 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
- package/lib/optimize/RealContentHashPlugin.js +99 -43
- package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
- package/lib/optimize/RuntimeChunkPlugin.js +15 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
- package/lib/optimize/SplitChunksPlugin.js +129 -78
- package/lib/performance/SizeLimitsPlugin.js +22 -8
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
- package/lib/rules/BasicEffectRulePlugin.js +7 -1
- package/lib/rules/BasicMatcherRulePlugin.js +8 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
- package/lib/rules/RuleSetCompiler.js +53 -32
- package/lib/rules/UseEffectRulePlugin.js +42 -36
- package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
- package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
- package/lib/runtime/BaseUriRuntimeModule.js +35 -0
- 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 +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
- package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +24 -0
- 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 +36 -28
- package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +336 -120
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +212 -33
- package/lib/serialization/DateObjectSerializer.js +16 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -6
- package/lib/serialization/FileMiddleware.js +187 -86
- package/lib/serialization/MapObjectSerializer.js +25 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
- package/lib/serialization/ObjectMiddleware.js +96 -66
- package/lib/serialization/PlainObjectSerializer.js +51 -14
- package/lib/serialization/RegExpObjectSerializer.js +17 -5
- package/lib/serialization/Serializer.js +23 -5
- package/lib/serialization/SerializerMiddleware.js +8 -8
- package/lib/serialization/SetObjectSerializer.js +22 -6
- package/lib/serialization/SingleItemMiddleware.js +2 -2
- package/lib/serialization/types.js +2 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +40 -17
- package/lib/sharing/ConsumeSharedPlugin.js +139 -102
- package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +19 -6
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +37 -30
- package/lib/sharing/SharePlugin.js +2 -2
- package/lib/sharing/ShareRuntimeModule.js +20 -10
- package/lib/sharing/resolveMatchedConfigs.js +6 -5
- package/lib/sharing/utils.js +338 -34
- package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
- package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
- package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
- package/lib/stats/StatsFactory.js +128 -57
- package/lib/stats/StatsPrinter.js +77 -46
- package/lib/util/ArrayHelpers.js +35 -1
- package/lib/util/ArrayQueue.js +15 -22
- package/lib/util/AsyncQueue.js +37 -16
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +11 -2
- package/lib/util/MapHelpers.js +17 -5
- package/lib/util/ParallelismFactorCalculator.js +11 -1
- package/lib/util/Queue.js +9 -3
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +19 -6
- package/lib/util/StackedCacheMap.js +33 -3
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +46 -0
- package/lib/util/TupleQueue.js +9 -3
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +8 -8
- package/lib/util/WeakTupleMap.js +70 -28
- package/lib/util/binarySearchBounds.js +51 -9
- package/lib/util/chainedImports.js +97 -0
- package/lib/util/cleverMerge.js +51 -36
- package/lib/util/comparators.js +146 -83
- package/lib/util/compileBooleanMatcher.js +35 -7
- package/lib/util/conventions.js +126 -0
- package/lib/util/create-schema-validation.js +9 -2
- package/lib/util/createHash.js +49 -14
- package/lib/util/deprecation.js +48 -15
- package/lib/util/deterministicGrouping.js +71 -39
- package/lib/util/extractUrlAndGlobal.js +3 -0
- package/lib/util/findGraphRoots.js +7 -5
- package/lib/util/fs.js +419 -94
- package/lib/util/hash/BatchedHash.js +10 -4
- package/lib/util/hash/md4.js +20 -0
- package/lib/util/hash/wasm-hash.js +163 -0
- package/lib/util/hash/xxhash64.js +7 -141
- package/lib/util/identifier.js +140 -93
- package/lib/util/internalSerializables.js +22 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +10 -10
- package/lib/util/mergeScope.js +76 -0
- package/lib/util/nonNumericOnlyHash.js +22 -0
- package/lib/util/numberHash.js +84 -34
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +7 -55
- package/lib/util/propertyName.js +77 -0
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/runtime.js +188 -133
- package/lib/util/semver.js +64 -56
- package/lib/util/serialization.js +26 -1
- package/lib/util/smartGrouping.js +10 -10
- package/lib/util/source.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
- package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +23 -9
- package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
- 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 +71 -41
- package/lib/webpack.js +43 -12
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
- package/module.d.ts +233 -0
- package/package.json +85 -139
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +679 -47
- package/schemas/plugins/BannerPlugin.check.js +1 -1
- package/schemas/plugins/BannerPlugin.json +9 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
- 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/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +12 -1
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssParserOptions.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5026 -1756
@@ -10,9 +10,13 @@ const {
|
|
10
10
|
} = require("../util/comparators");
|
11
11
|
const createSchemaValidation = require("../util/create-schema-validation");
|
12
12
|
const createHash = require("../util/createHash");
|
13
|
-
const {
|
13
|
+
const {
|
14
|
+
getUsedModuleIdsAndModules,
|
15
|
+
getFullModuleName
|
16
|
+
} = require("./IdHelpers");
|
14
17
|
|
15
18
|
/** @typedef {import("../../declarations/plugins/HashedModuleIdsPlugin").HashedModuleIdsPluginOptions} HashedModuleIdsPluginOptions */
|
19
|
+
/** @typedef {import("../Compiler")} Compiler */
|
16
20
|
|
17
21
|
const validate = createSchemaValidation(
|
18
22
|
require("../../schemas/plugins/HashedModuleIdsPlugin.check.js"),
|
@@ -32,7 +36,7 @@ class HashedModuleIdsPlugin {
|
|
32
36
|
|
33
37
|
/** @type {HashedModuleIdsPluginOptions} */
|
34
38
|
this.options = {
|
35
|
-
context:
|
39
|
+
context: undefined,
|
36
40
|
hashFunction: "md4",
|
37
41
|
hashDigest: "base64",
|
38
42
|
hashDigestLength: 4,
|
@@ -40,35 +44,39 @@ class HashedModuleIdsPlugin {
|
|
40
44
|
};
|
41
45
|
}
|
42
46
|
|
47
|
+
/**
|
48
|
+
* Apply the plugin
|
49
|
+
* @param {Compiler} compiler the compiler instance
|
50
|
+
* @returns {void}
|
51
|
+
*/
|
43
52
|
apply(compiler) {
|
44
53
|
const options = this.options;
|
45
54
|
compiler.hooks.compilation.tap("HashedModuleIdsPlugin", compilation => {
|
46
|
-
compilation.hooks.moduleIds.tap("HashedModuleIdsPlugin",
|
55
|
+
compilation.hooks.moduleIds.tap("HashedModuleIdsPlugin", () => {
|
47
56
|
const chunkGraph = compilation.chunkGraph;
|
48
57
|
const context = this.options.context
|
49
58
|
? this.options.context
|
50
59
|
: compiler.context;
|
51
60
|
|
52
|
-
const usedIds =
|
53
|
-
const modulesInNaturalOrder =
|
54
|
-
.
|
55
|
-
|
56
|
-
if (chunkGraph.getNumberOfModuleChunks(m) === 0) return false;
|
57
|
-
return chunkGraph.getModuleId(module) === null;
|
58
|
-
})
|
59
|
-
.sort(
|
60
|
-
compareModulesByPreOrderIndexOrIdentifier(compilation.moduleGraph)
|
61
|
-
);
|
61
|
+
const [usedIds, modules] = getUsedModuleIdsAndModules(compilation);
|
62
|
+
const modulesInNaturalOrder = modules.sort(
|
63
|
+
compareModulesByPreOrderIndexOrIdentifier(compilation.moduleGraph)
|
64
|
+
);
|
62
65
|
for (const module of modulesInNaturalOrder) {
|
63
66
|
const ident = getFullModuleName(module, context, compiler.root);
|
64
|
-
const hash = createHash(
|
67
|
+
const hash = createHash(
|
68
|
+
/** @type {NonNullable<HashedModuleIdsPluginOptions["hashFunction"]>} */ (
|
69
|
+
options.hashFunction
|
70
|
+
)
|
71
|
+
);
|
65
72
|
hash.update(ident || "");
|
66
73
|
const hashId = /** @type {string} */ (
|
67
74
|
hash.digest(options.hashDigest)
|
68
75
|
);
|
69
76
|
let len = options.hashDigestLength;
|
70
|
-
while (usedIds.has(hashId.
|
71
|
-
|
77
|
+
while (usedIds.has(hashId.slice(0, len)))
|
78
|
+
/** @type {number} */ (len)++;
|
79
|
+
const moduleId = hashId.slice(0, len);
|
72
80
|
chunkGraph.setModuleId(module, moduleId);
|
73
81
|
usedIds.add(moduleId);
|
74
82
|
}
|
package/lib/ids/IdHelpers.js
CHANGED
@@ -25,7 +25,7 @@ const getHash = (str, len, hashFunction) => {
|
|
25
25
|
const hash = createHash(hashFunction);
|
26
26
|
hash.update(str);
|
27
27
|
const digest = /** @type {string} */ (hash.digest("hex"));
|
28
|
-
return digest.
|
28
|
+
return digest.slice(0, len);
|
29
29
|
};
|
30
30
|
|
31
31
|
/**
|
@@ -43,7 +43,7 @@ const avoidNumber = str => {
|
|
43
43
|
} else if (firstChar > 57) {
|
44
44
|
return str;
|
45
45
|
}
|
46
|
-
if (str ===
|
46
|
+
if (str === String(Number(str))) {
|
47
47
|
return `_${str}`;
|
48
48
|
}
|
49
49
|
return str;
|
@@ -53,12 +53,9 @@ const avoidNumber = str => {
|
|
53
53
|
* @param {string} request the request
|
54
54
|
* @returns {string} id representation
|
55
55
|
*/
|
56
|
-
const requestToId = request =>
|
57
|
-
|
58
|
-
|
59
|
-
.replace(/(^[.-]|[^a-zA-Z0-9_-])+/g, "_");
|
60
|
-
};
|
61
|
-
exports.requestToId = requestToId;
|
56
|
+
const requestToId = request =>
|
57
|
+
request.replace(/^(\.\.?\/)+/, "").replace(/(^[.-]|[^a-zA-Z0-9_-])+/g, "_");
|
58
|
+
module.exports.requestToId = requestToId;
|
62
59
|
|
63
60
|
/**
|
64
61
|
* @param {string} string the string
|
@@ -78,7 +75,7 @@ const shortenLongString = (string, delimiter, hashFunction) => {
|
|
78
75
|
/**
|
79
76
|
* @param {Module} module the module
|
80
77
|
* @param {string} context context directory
|
81
|
-
* @param {
|
78
|
+
* @param {object=} associatedObjectForCache an object to which the cache will be attached
|
82
79
|
* @returns {string} short module name
|
83
80
|
*/
|
84
81
|
const getShortModuleName = (module, context, associatedObjectForCache) => {
|
@@ -91,14 +88,14 @@ const getShortModuleName = (module, context, associatedObjectForCache) => {
|
|
91
88
|
);
|
92
89
|
return "";
|
93
90
|
};
|
94
|
-
exports.getShortModuleName = getShortModuleName;
|
91
|
+
module.exports.getShortModuleName = getShortModuleName;
|
95
92
|
|
96
93
|
/**
|
97
94
|
* @param {string} shortName the short name
|
98
95
|
* @param {Module} module the module
|
99
96
|
* @param {string} context context directory
|
100
97
|
* @param {string | Hash} hashFunction hash function to use
|
101
|
-
* @param {
|
98
|
+
* @param {object=} associatedObjectForCache an object to which the cache will be attached
|
102
99
|
* @returns {string} long module name
|
103
100
|
*/
|
104
101
|
const getLongModuleName = (
|
@@ -111,22 +108,17 @@ const getLongModuleName = (
|
|
111
108
|
const fullName = getFullModuleName(module, context, associatedObjectForCache);
|
112
109
|
return `${shortName}?${getHash(fullName, 4, hashFunction)}`;
|
113
110
|
};
|
114
|
-
exports.getLongModuleName = getLongModuleName;
|
111
|
+
module.exports.getLongModuleName = getLongModuleName;
|
115
112
|
|
116
113
|
/**
|
117
114
|
* @param {Module} module the module
|
118
115
|
* @param {string} context context directory
|
119
|
-
* @param {
|
116
|
+
* @param {object=} associatedObjectForCache an object to which the cache will be attached
|
120
117
|
* @returns {string} full module name
|
121
118
|
*/
|
122
|
-
const getFullModuleName = (module, context, associatedObjectForCache) =>
|
123
|
-
|
124
|
-
|
125
|
-
module.identifier(),
|
126
|
-
associatedObjectForCache
|
127
|
-
);
|
128
|
-
};
|
129
|
-
exports.getFullModuleName = getFullModuleName;
|
119
|
+
const getFullModuleName = (module, context, associatedObjectForCache) =>
|
120
|
+
makePathsRelative(context, module.identifier(), associatedObjectForCache);
|
121
|
+
module.exports.getFullModuleName = getFullModuleName;
|
130
122
|
|
131
123
|
/**
|
132
124
|
* @param {Chunk} chunk the chunk
|
@@ -134,7 +126,7 @@ exports.getFullModuleName = getFullModuleName;
|
|
134
126
|
* @param {string} context context directory
|
135
127
|
* @param {string} delimiter delimiter for names
|
136
128
|
* @param {string | Hash} hashFunction hash function to use
|
137
|
-
* @param {
|
129
|
+
* @param {object=} associatedObjectForCache an object to which the cache will be attached
|
138
130
|
* @returns {string} short chunk name
|
139
131
|
*/
|
140
132
|
const getShortChunkName = (
|
@@ -156,7 +148,7 @@ const getShortChunkName = (
|
|
156
148
|
.join(delimiter);
|
157
149
|
return shortenLongString(chunkName, delimiter, hashFunction);
|
158
150
|
};
|
159
|
-
exports.getShortChunkName = getShortChunkName;
|
151
|
+
module.exports.getShortChunkName = getShortChunkName;
|
160
152
|
|
161
153
|
/**
|
162
154
|
* @param {Chunk} chunk the chunk
|
@@ -164,7 +156,7 @@ exports.getShortChunkName = getShortChunkName;
|
|
164
156
|
* @param {string} context context directory
|
165
157
|
* @param {string} delimiter delimiter for names
|
166
158
|
* @param {string | Hash} hashFunction hash function to use
|
167
|
-
* @param {
|
159
|
+
* @param {object=} associatedObjectForCache an object to which the cache will be attached
|
168
160
|
* @returns {string} short chunk name
|
169
161
|
*/
|
170
162
|
const getLongChunkName = (
|
@@ -191,13 +183,13 @@ const getLongChunkName = (
|
|
191
183
|
.join(delimiter);
|
192
184
|
return shortenLongString(chunkName, delimiter, hashFunction);
|
193
185
|
};
|
194
|
-
exports.getLongChunkName = getLongChunkName;
|
186
|
+
module.exports.getLongChunkName = getLongChunkName;
|
195
187
|
|
196
188
|
/**
|
197
189
|
* @param {Chunk} chunk the chunk
|
198
190
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
199
191
|
* @param {string} context context directory
|
200
|
-
* @param {
|
192
|
+
* @param {object=} associatedObjectForCache an object to which the cache will be attached
|
201
193
|
* @returns {string} full chunk name
|
202
194
|
*/
|
203
195
|
const getFullChunkName = (
|
@@ -213,7 +205,7 @@ const getFullChunkName = (
|
|
213
205
|
);
|
214
206
|
return fullModuleNames.join();
|
215
207
|
};
|
216
|
-
exports.getFullChunkName = getFullChunkName;
|
208
|
+
module.exports.getFullChunkName = getFullChunkName;
|
217
209
|
|
218
210
|
/**
|
219
211
|
* @template K
|
@@ -234,29 +226,38 @@ const addToMapOfItems = (map, key, value) => {
|
|
234
226
|
|
235
227
|
/**
|
236
228
|
* @param {Compilation} compilation the compilation
|
237
|
-
* @
|
229
|
+
* @param {function(Module): boolean=} filter filter modules
|
230
|
+
* @returns {[Set<string>, Module[]]} used module ids as strings and modules without id matching the filter
|
238
231
|
*/
|
239
|
-
const
|
232
|
+
const getUsedModuleIdsAndModules = (compilation, filter) => {
|
240
233
|
const chunkGraph = compilation.chunkGraph;
|
241
234
|
|
235
|
+
const modules = [];
|
236
|
+
|
242
237
|
/** @type {Set<string>} */
|
243
238
|
const usedIds = new Set();
|
244
239
|
if (compilation.usedModuleIds) {
|
245
240
|
for (const id of compilation.usedModuleIds) {
|
246
|
-
usedIds.add(id
|
241
|
+
usedIds.add(String(id));
|
247
242
|
}
|
248
243
|
}
|
249
244
|
|
250
245
|
for (const module of compilation.modules) {
|
246
|
+
if (!module.needId) continue;
|
251
247
|
const moduleId = chunkGraph.getModuleId(module);
|
252
248
|
if (moduleId !== null) {
|
253
|
-
usedIds.add(moduleId
|
249
|
+
usedIds.add(String(moduleId));
|
250
|
+
} else if (
|
251
|
+
(!filter || filter(module)) &&
|
252
|
+
chunkGraph.getNumberOfModuleChunks(module) !== 0
|
253
|
+
) {
|
254
|
+
modules.push(module);
|
254
255
|
}
|
255
256
|
}
|
256
257
|
|
257
|
-
return usedIds;
|
258
|
+
return [usedIds, modules];
|
258
259
|
};
|
259
|
-
exports.
|
260
|
+
module.exports.getUsedModuleIdsAndModules = getUsedModuleIdsAndModules;
|
260
261
|
|
261
262
|
/**
|
262
263
|
* @param {Compilation} compilation the compilation
|
@@ -267,20 +268,20 @@ const getUsedChunkIds = compilation => {
|
|
267
268
|
const usedIds = new Set();
|
268
269
|
if (compilation.usedChunkIds) {
|
269
270
|
for (const id of compilation.usedChunkIds) {
|
270
|
-
usedIds.add(id
|
271
|
+
usedIds.add(String(id));
|
271
272
|
}
|
272
273
|
}
|
273
274
|
|
274
275
|
for (const chunk of compilation.chunks) {
|
275
276
|
const chunkId = chunk.id;
|
276
277
|
if (chunkId !== null) {
|
277
|
-
usedIds.add(chunkId
|
278
|
+
usedIds.add(String(chunkId));
|
278
279
|
}
|
279
280
|
}
|
280
281
|
|
281
282
|
return usedIds;
|
282
283
|
};
|
283
|
-
exports.getUsedChunkIds = getUsedChunkIds;
|
284
|
+
module.exports.getUsedChunkIds = getUsedChunkIds;
|
284
285
|
|
285
286
|
/**
|
286
287
|
* @template T
|
@@ -348,7 +349,7 @@ const assignNames = (
|
|
348
349
|
unnamedItems.sort(comparator);
|
349
350
|
return unnamedItems;
|
350
351
|
};
|
351
|
-
exports.assignNames = assignNames;
|
352
|
+
module.exports.assignNames = assignNames;
|
352
353
|
|
353
354
|
/**
|
354
355
|
* @template T
|
@@ -359,6 +360,7 @@ exports.assignNames = assignNames;
|
|
359
360
|
* @param {number[]} ranges usable ranges for ids
|
360
361
|
* @param {number} expandFactor factor to create more ranges
|
361
362
|
* @param {number} extraSpace extra space to allocate, i. e. when some ids are already used
|
363
|
+
* @param {number} salt salting number to initialize hashing
|
362
364
|
* @returns {void}
|
363
365
|
*/
|
364
366
|
const assignDeterministicIds = (
|
@@ -368,13 +370,14 @@ const assignDeterministicIds = (
|
|
368
370
|
assignId,
|
369
371
|
ranges = [10],
|
370
372
|
expandFactor = 10,
|
371
|
-
extraSpace = 0
|
373
|
+
extraSpace = 0,
|
374
|
+
salt = 0
|
372
375
|
) => {
|
373
376
|
items.sort(comparator);
|
374
377
|
|
375
378
|
// max 5% fill rate
|
376
379
|
const optimalRange = Math.min(
|
377
|
-
|
380
|
+
items.length * 20 + extraSpace,
|
378
381
|
Number.MAX_SAFE_INTEGER
|
379
382
|
);
|
380
383
|
|
@@ -384,42 +387,49 @@ const assignDeterministicIds = (
|
|
384
387
|
i++;
|
385
388
|
if (i < ranges.length) {
|
386
389
|
range = Math.min(ranges[i], Number.MAX_SAFE_INTEGER);
|
387
|
-
} else {
|
390
|
+
} else if (expandFactor) {
|
388
391
|
range = Math.min(range * expandFactor, Number.MAX_SAFE_INTEGER);
|
392
|
+
} else {
|
393
|
+
break;
|
389
394
|
}
|
390
395
|
}
|
391
396
|
|
392
397
|
for (const item of items) {
|
393
398
|
const ident = getName(item);
|
394
399
|
let id;
|
395
|
-
let i =
|
400
|
+
let i = salt;
|
396
401
|
do {
|
397
402
|
id = numberHash(ident + i++, range);
|
398
403
|
} while (!assignId(item, id));
|
399
404
|
}
|
400
405
|
};
|
401
|
-
exports.assignDeterministicIds = assignDeterministicIds;
|
406
|
+
module.exports.assignDeterministicIds = assignDeterministicIds;
|
402
407
|
|
403
408
|
/**
|
409
|
+
* @param {Set<string>} usedIds used ids
|
404
410
|
* @param {Iterable<Module>} modules the modules
|
405
411
|
* @param {Compilation} compilation the compilation
|
406
412
|
* @returns {void}
|
407
413
|
*/
|
408
|
-
const assignAscendingModuleIds = (modules, compilation) => {
|
414
|
+
const assignAscendingModuleIds = (usedIds, modules, compilation) => {
|
409
415
|
const chunkGraph = compilation.chunkGraph;
|
410
416
|
|
411
|
-
const usedIds = getUsedModuleIds(compilation);
|
412
|
-
|
413
417
|
let nextId = 0;
|
414
418
|
let assignId;
|
415
419
|
if (usedIds.size > 0) {
|
420
|
+
/**
|
421
|
+
* @param {Module} module the module
|
422
|
+
*/
|
416
423
|
assignId = module => {
|
417
424
|
if (chunkGraph.getModuleId(module) === null) {
|
418
|
-
while (usedIds.has(nextId
|
425
|
+
while (usedIds.has(String(nextId))) nextId++;
|
419
426
|
chunkGraph.setModuleId(module, nextId++);
|
420
427
|
}
|
421
428
|
};
|
422
429
|
} else {
|
430
|
+
/**
|
431
|
+
* @param {Module} module the module
|
432
|
+
*/
|
423
433
|
assignId = module => {
|
424
434
|
if (chunkGraph.getModuleId(module) === null) {
|
425
435
|
chunkGraph.setModuleId(module, nextId++);
|
@@ -430,7 +440,7 @@ const assignAscendingModuleIds = (modules, compilation) => {
|
|
430
440
|
assignId(module);
|
431
441
|
}
|
432
442
|
};
|
433
|
-
exports.assignAscendingModuleIds = assignAscendingModuleIds;
|
443
|
+
module.exports.assignAscendingModuleIds = assignAscendingModuleIds;
|
434
444
|
|
435
445
|
/**
|
436
446
|
* @param {Iterable<Chunk>} chunks the chunks
|
@@ -444,7 +454,7 @@ const assignAscendingChunkIds = (chunks, compilation) => {
|
|
444
454
|
if (usedIds.size > 0) {
|
445
455
|
for (const chunk of chunks) {
|
446
456
|
if (chunk.id === null) {
|
447
|
-
while (usedIds.has(nextId
|
457
|
+
while (usedIds.has(String(nextId))) nextId++;
|
448
458
|
chunk.id = nextId;
|
449
459
|
chunk.ids = [nextId];
|
450
460
|
nextId++;
|
@@ -460,4 +470,4 @@ const assignAscendingChunkIds = (chunks, compilation) => {
|
|
460
470
|
}
|
461
471
|
}
|
462
472
|
};
|
463
|
-
exports.assignAscendingChunkIds = assignAscendingChunkIds;
|
473
|
+
module.exports.assignAscendingChunkIds = assignAscendingChunkIds;
|
@@ -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;
|
@@ -10,16 +10,25 @@ const {
|
|
10
10
|
getShortModuleName,
|
11
11
|
getLongModuleName,
|
12
12
|
assignNames,
|
13
|
-
|
13
|
+
getUsedModuleIdsAndModules,
|
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,28 +39,27 @@ class NamedModuleIdsPlugin {
|
|
30
39
|
apply(compiler) {
|
31
40
|
const { root } = compiler;
|
32
41
|
compiler.hooks.compilation.tap("NamedModuleIdsPlugin", compilation => {
|
33
|
-
const
|
34
|
-
|
42
|
+
const hashFunction =
|
43
|
+
/** @type {NonNullable<Output["hashFunction"]>} */
|
44
|
+
(compilation.outputOptions.hashFunction);
|
45
|
+
compilation.hooks.moduleIds.tap("NamedModuleIdsPlugin", () => {
|
35
46
|
const chunkGraph = compilation.chunkGraph;
|
36
47
|
const context = this.options.context
|
37
48
|
? this.options.context
|
38
49
|
: compiler.context;
|
39
50
|
|
51
|
+
const [usedIds, modules] = getUsedModuleIdsAndModules(compilation);
|
40
52
|
const unnamedModules = assignNames(
|
41
|
-
|
42
|
-
if (!module.needId) return false;
|
43
|
-
if (chunkGraph.getNumberOfModuleChunks(module) === 0) return false;
|
44
|
-
return chunkGraph.getModuleId(module) === null;
|
45
|
-
}),
|
53
|
+
modules,
|
46
54
|
m => getShortModuleName(m, context, root),
|
47
55
|
(m, shortName) =>
|
48
56
|
getLongModuleName(shortName, m, context, hashFunction, root),
|
49
57
|
compareModulesByIdentifier,
|
50
|
-
|
58
|
+
usedIds,
|
51
59
|
(m, name) => chunkGraph.setModuleId(m, name)
|
52
60
|
);
|
53
61
|
if (unnamedModules.length > 0) {
|
54
|
-
assignAscendingModuleIds(unnamedModules, compilation);
|
62
|
+
assignAscendingModuleIds(usedIds, unnamedModules, compilation);
|
55
63
|
}
|
56
64
|
});
|
57
65
|
});
|
@@ -8,7 +8,10 @@
|
|
8
8
|
const {
|
9
9
|
compareModulesByPreOrderIndexOrIdentifier
|
10
10
|
} = require("../util/comparators");
|
11
|
-
const {
|
11
|
+
const {
|
12
|
+
assignAscendingModuleIds,
|
13
|
+
getUsedModuleIdsAndModules
|
14
|
+
} = require("./IdHelpers");
|
12
15
|
|
13
16
|
/** @typedef {import("../Compiler")} Compiler */
|
14
17
|
/** @typedef {import("../Module")} Module */
|
@@ -22,18 +25,12 @@ class NaturalModuleIdsPlugin {
|
|
22
25
|
apply(compiler) {
|
23
26
|
compiler.hooks.compilation.tap("NaturalModuleIdsPlugin", compilation => {
|
24
27
|
compilation.hooks.moduleIds.tap("NaturalModuleIdsPlugin", modules => {
|
25
|
-
const
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
chunkGraph.getModuleId(m) === null
|
32
|
-
)
|
33
|
-
.sort(
|
34
|
-
compareModulesByPreOrderIndexOrIdentifier(compilation.moduleGraph)
|
35
|
-
);
|
36
|
-
assignAscendingModuleIds(modulesInNaturalOrder, compilation);
|
28
|
+
const [usedIds, modulesInNaturalOrder] =
|
29
|
+
getUsedModuleIdsAndModules(compilation);
|
30
|
+
modulesInNaturalOrder.sort(
|
31
|
+
compareModulesByPreOrderIndexOrIdentifier(compilation.moduleGraph)
|
32
|
+
);
|
33
|
+
assignAscendingModuleIds(usedIds, modulesInNaturalOrder, compilation);
|
37
34
|
});
|
38
35
|
});
|
39
36
|
}
|
@@ -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
|
}
|
@@ -9,7 +9,10 @@ const {
|
|
9
9
|
compareModulesByPreOrderIndexOrIdentifier
|
10
10
|
} = require("../util/comparators");
|
11
11
|
const createSchemaValidation = require("../util/create-schema-validation");
|
12
|
-
const {
|
12
|
+
const {
|
13
|
+
assignAscendingModuleIds,
|
14
|
+
getUsedModuleIdsAndModules
|
15
|
+
} = require("./IdHelpers");
|
13
16
|
|
14
17
|
/** @typedef {import("../../declarations/plugins/ids/OccurrenceModuleIdsPlugin").OccurrenceModuleIdsPluginOptions} OccurrenceModuleIdsPluginOptions */
|
15
18
|
/** @typedef {import("../Compiler")} Compiler */
|
@@ -44,15 +47,11 @@ class OccurrenceModuleIdsPlugin {
|
|
44
47
|
compiler.hooks.compilation.tap("OccurrenceModuleIdsPlugin", compilation => {
|
45
48
|
const moduleGraph = compilation.moduleGraph;
|
46
49
|
|
47
|
-
compilation.hooks.moduleIds.tap("OccurrenceModuleIdsPlugin",
|
50
|
+
compilation.hooks.moduleIds.tap("OccurrenceModuleIdsPlugin", () => {
|
48
51
|
const chunkGraph = compilation.chunkGraph;
|
49
52
|
|
50
|
-
const modulesInOccurrenceOrder =
|
51
|
-
|
52
|
-
m.needId &&
|
53
|
-
chunkGraph.getNumberOfModuleChunks(m) > 0 &&
|
54
|
-
chunkGraph.getModuleId(m) === null
|
55
|
-
);
|
53
|
+
const [usedIds, modulesInOccurrenceOrder] =
|
54
|
+
getUsedModuleIdsAndModules(compilation);
|
56
55
|
|
57
56
|
const occursInInitialChunksMap = new Map();
|
58
57
|
const occursInAllChunksMap = new Map();
|
@@ -82,7 +81,7 @@ class OccurrenceModuleIdsPlugin {
|
|
82
81
|
] of moduleGraph.getIncomingConnectionsByOriginModule(module)) {
|
83
82
|
if (!originModule) continue;
|
84
83
|
if (!connections.some(c => c.isTargetActive(undefined))) continue;
|
85
|
-
sum += initialChunkChunkMap.get(originModule);
|
84
|
+
sum += initialChunkChunkMap.get(originModule) || 0;
|
86
85
|
}
|
87
86
|
return sum;
|
88
87
|
};
|
@@ -121,7 +120,7 @@ class OccurrenceModuleIdsPlugin {
|
|
121
120
|
}
|
122
121
|
}
|
123
122
|
|
124
|
-
for (const m of
|
123
|
+
for (const m of modulesInOccurrenceOrder) {
|
125
124
|
const result =
|
126
125
|
countOccurs(m) +
|
127
126
|
chunkGraph.getNumberOfModuleChunks(m) +
|
@@ -147,7 +146,11 @@ class OccurrenceModuleIdsPlugin {
|
|
147
146
|
return naturalCompare(a, b);
|
148
147
|
});
|
149
148
|
|
150
|
-
assignAscendingModuleIds(
|
149
|
+
assignAscendingModuleIds(
|
150
|
+
usedIds,
|
151
|
+
modulesInOccurrenceOrder,
|
152
|
+
compilation
|
153
|
+
);
|
151
154
|
});
|
152
155
|
});
|
153
156
|
}
|