webpack 5.97.1 → 5.104.1
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 +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
|
@@ -10,9 +10,16 @@ const { RawSource } = require("webpack-sources");
|
|
|
10
10
|
const ChunkGraph = require("./ChunkGraph");
|
|
11
11
|
const Compilation = require("./Compilation");
|
|
12
12
|
const HotUpdateChunk = require("./HotUpdateChunk");
|
|
13
|
+
const {
|
|
14
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
|
15
|
+
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
|
16
|
+
JAVASCRIPT_MODULE_TYPE_ESM,
|
|
17
|
+
WEBPACK_MODULE_TYPE_RUNTIME
|
|
18
|
+
} = require("./ModuleTypeConstants");
|
|
13
19
|
const NormalModule = require("./NormalModule");
|
|
14
20
|
const RuntimeGlobals = require("./RuntimeGlobals");
|
|
15
21
|
const WebpackError = require("./WebpackError");
|
|
22
|
+
const { chunkHasCss } = require("./css/CssModulesPlugin");
|
|
16
23
|
const ConstDependency = require("./dependencies/ConstDependency");
|
|
17
24
|
const ImportMetaHotAcceptDependency = require("./dependencies/ImportMetaHotAcceptDependency");
|
|
18
25
|
const ImportMetaHotDeclineDependency = require("./dependencies/ImportMetaHotDeclineDependency");
|
|
@@ -27,30 +34,24 @@ const { find, isSubset } = require("./util/SetHelpers");
|
|
|
27
34
|
const TupleSet = require("./util/TupleSet");
|
|
28
35
|
const { compareModulesById } = require("./util/comparators");
|
|
29
36
|
const {
|
|
37
|
+
forEachRuntime,
|
|
30
38
|
getRuntimeKey,
|
|
39
|
+
intersectRuntime,
|
|
31
40
|
keyToRuntime,
|
|
32
|
-
forEachRuntime,
|
|
33
41
|
mergeRuntimeOwned,
|
|
34
|
-
subtractRuntime
|
|
35
|
-
intersectRuntime
|
|
42
|
+
subtractRuntime
|
|
36
43
|
} = require("./util/runtime");
|
|
37
44
|
|
|
38
|
-
const {
|
|
39
|
-
JAVASCRIPT_MODULE_TYPE_AUTO,
|
|
40
|
-
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
|
41
|
-
JAVASCRIPT_MODULE_TYPE_ESM,
|
|
42
|
-
WEBPACK_MODULE_TYPE_RUNTIME
|
|
43
|
-
} = require("./ModuleTypeConstants");
|
|
44
|
-
|
|
45
45
|
/** @typedef {import("estree").CallExpression} CallExpression */
|
|
46
46
|
/** @typedef {import("estree").Expression} Expression */
|
|
47
47
|
/** @typedef {import("estree").SpreadElement} SpreadElement */
|
|
48
|
-
/** @typedef {import("../declarations/WebpackOptions").OutputNormalized} OutputNormalized */
|
|
49
48
|
/** @typedef {import("./Chunk")} Chunk */
|
|
50
49
|
/** @typedef {import("./Chunk").ChunkId} ChunkId */
|
|
51
50
|
/** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
|
|
52
51
|
/** @typedef {import("./Compilation").AssetInfo} AssetInfo */
|
|
52
|
+
/** @typedef {import("./Compilation").Records} Records */
|
|
53
53
|
/** @typedef {import("./Compiler")} Compiler */
|
|
54
|
+
/** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
|
|
54
55
|
/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
|
|
55
56
|
/** @typedef {import("./Module")} Module */
|
|
56
57
|
/** @typedef {import("./Module").BuildInfo} BuildInfo */
|
|
@@ -59,12 +60,21 @@ const {
|
|
|
59
60
|
/** @typedef {import("./javascript/JavascriptParserHelpers").Range} Range */
|
|
60
61
|
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
|
61
62
|
|
|
63
|
+
/** @typedef {string[]} Requests */
|
|
64
|
+
|
|
62
65
|
/**
|
|
63
66
|
* @typedef {object} HMRJavascriptParserHooks
|
|
64
|
-
* @property {SyncBailHook<[Expression | SpreadElement,
|
|
65
|
-
* @property {SyncBailHook<[CallExpression,
|
|
67
|
+
* @property {SyncBailHook<[Expression | SpreadElement, Requests], void>} hotAcceptCallback
|
|
68
|
+
* @property {SyncBailHook<[CallExpression, Requests], void>} hotAcceptWithoutCallback
|
|
66
69
|
*/
|
|
67
70
|
|
|
71
|
+
/** @typedef {number} HotIndex */
|
|
72
|
+
/** @typedef {Record<string, string>} FullHashChunkModuleHashes */
|
|
73
|
+
/** @typedef {Record<string, string>} ChunkModuleHashes */
|
|
74
|
+
/** @typedef {Record<ChunkId, string>} ChunkHashes */
|
|
75
|
+
/** @typedef {Record<ChunkId, string>} ChunkRuntime */
|
|
76
|
+
/** @typedef {Record<ChunkId, ModuleId[]>} ChunkModuleIds */
|
|
77
|
+
|
|
68
78
|
/** @typedef {{ updatedChunkIds: Set<ChunkId>, removedChunkIds: Set<ChunkId>, removedModules: Set<Module>, filename: string, assetInfo: AssetInfo }} HotUpdateMainContentByRuntimeItem */
|
|
69
79
|
/** @typedef {Map<string, HotUpdateMainContentByRuntimeItem>} HotUpdateMainContentByRuntime */
|
|
70
80
|
|
|
@@ -95,13 +105,6 @@ class HotModuleReplacementPlugin {
|
|
|
95
105
|
return hooks;
|
|
96
106
|
}
|
|
97
107
|
|
|
98
|
-
/**
|
|
99
|
-
* @param {object=} options options
|
|
100
|
-
*/
|
|
101
|
-
constructor(options) {
|
|
102
|
-
this.options = options || {};
|
|
103
|
-
}
|
|
104
|
-
|
|
105
108
|
/**
|
|
106
109
|
* Apply the plugin
|
|
107
110
|
* @param {Compiler} compiler the compiler instance
|
|
@@ -109,8 +112,9 @@ class HotModuleReplacementPlugin {
|
|
|
109
112
|
*/
|
|
110
113
|
apply(compiler) {
|
|
111
114
|
const { _backCompat: backCompat } = compiler;
|
|
112
|
-
if (compiler.options.output.strictModuleErrorHandling === undefined)
|
|
115
|
+
if (compiler.options.output.strictModuleErrorHandling === undefined) {
|
|
113
116
|
compiler.options.output.strictModuleErrorHandling = true;
|
|
117
|
+
}
|
|
114
118
|
const runtimeRequirements = [RuntimeGlobals.module];
|
|
115
119
|
|
|
116
120
|
/**
|
|
@@ -122,7 +126,7 @@ class HotModuleReplacementPlugin {
|
|
|
122
126
|
const { hotAcceptCallback, hotAcceptWithoutCallback } =
|
|
123
127
|
HotModuleReplacementPlugin.getParserHooks(parser);
|
|
124
128
|
|
|
125
|
-
return expr => {
|
|
129
|
+
return (expr) => {
|
|
126
130
|
const module = parser.state.module;
|
|
127
131
|
const dep = new ConstDependency(
|
|
128
132
|
`${module.moduleArgument}.hot.accept`,
|
|
@@ -144,9 +148,9 @@ class HotModuleReplacementPlugin {
|
|
|
144
148
|
} else if (arg.isArray()) {
|
|
145
149
|
params =
|
|
146
150
|
/** @type {BasicEvaluatedExpression[]} */
|
|
147
|
-
(arg.items).filter(param => param.isString());
|
|
151
|
+
(arg.items).filter((param) => param.isString());
|
|
148
152
|
}
|
|
149
|
-
/** @type {
|
|
153
|
+
/** @type {Requests} */
|
|
150
154
|
const requests = [];
|
|
151
155
|
if (params.length > 0) {
|
|
152
156
|
for (const [idx, param] of params.entries()) {
|
|
@@ -184,7 +188,7 @@ class HotModuleReplacementPlugin {
|
|
|
184
188
|
* @param {typeof ModuleHotDeclineDependency} ParamDependency dependency
|
|
185
189
|
* @returns {(expr: CallExpression) => boolean | undefined} callback
|
|
186
190
|
*/
|
|
187
|
-
const createDeclineHandler = (parser, ParamDependency) => expr => {
|
|
191
|
+
const createDeclineHandler = (parser, ParamDependency) => (expr) => {
|
|
188
192
|
const module = parser.state.module;
|
|
189
193
|
const dep = new ConstDependency(
|
|
190
194
|
`${module.moduleArgument}.hot.decline`,
|
|
@@ -204,7 +208,7 @@ class HotModuleReplacementPlugin {
|
|
|
204
208
|
} else if (arg.isArray()) {
|
|
205
209
|
params =
|
|
206
210
|
/** @type {BasicEvaluatedExpression[]} */
|
|
207
|
-
(arg.items).filter(param => param.isString());
|
|
211
|
+
(arg.items).filter((param) => param.isString());
|
|
208
212
|
}
|
|
209
213
|
for (const [idx, param] of params.entries()) {
|
|
210
214
|
const dep = new ParamDependency(
|
|
@@ -224,7 +228,7 @@ class HotModuleReplacementPlugin {
|
|
|
224
228
|
* @param {JavascriptParser} parser the parser
|
|
225
229
|
* @returns {(expr: Expression) => boolean | undefined} callback
|
|
226
230
|
*/
|
|
227
|
-
const createHMRExpressionHandler = parser => expr => {
|
|
231
|
+
const createHMRExpressionHandler = (parser) => (expr) => {
|
|
228
232
|
const module = parser.state.module;
|
|
229
233
|
const dep = new ConstDependency(
|
|
230
234
|
`${module.moduleArgument}.hot`,
|
|
@@ -242,13 +246,13 @@ class HotModuleReplacementPlugin {
|
|
|
242
246
|
* @param {JavascriptParser} parser the parser
|
|
243
247
|
* @returns {void}
|
|
244
248
|
*/
|
|
245
|
-
const applyModuleHot = parser => {
|
|
249
|
+
const applyModuleHot = (parser) => {
|
|
246
250
|
parser.hooks.evaluateIdentifier.for("module.hot").tap(
|
|
247
251
|
{
|
|
248
252
|
name: PLUGIN_NAME,
|
|
249
253
|
before: "NodeStuffPlugin"
|
|
250
254
|
},
|
|
251
|
-
expr =>
|
|
255
|
+
(expr) =>
|
|
252
256
|
evaluateToIdentifier(
|
|
253
257
|
"module.hot",
|
|
254
258
|
"module",
|
|
@@ -277,10 +281,10 @@ class HotModuleReplacementPlugin {
|
|
|
277
281
|
* @param {JavascriptParser} parser the parser
|
|
278
282
|
* @returns {void}
|
|
279
283
|
*/
|
|
280
|
-
const applyImportMetaHot = parser => {
|
|
284
|
+
const applyImportMetaHot = (parser) => {
|
|
281
285
|
parser.hooks.evaluateIdentifier
|
|
282
286
|
.for("import.meta.webpackHot")
|
|
283
|
-
.tap(PLUGIN_NAME, expr =>
|
|
287
|
+
.tap(PLUGIN_NAME, (expr) =>
|
|
284
288
|
evaluateToIdentifier(
|
|
285
289
|
"import.meta.webpackHot",
|
|
286
290
|
"import.meta",
|
|
@@ -350,10 +354,11 @@ class HotModuleReplacementPlugin {
|
|
|
350
354
|
);
|
|
351
355
|
// #endregion
|
|
352
356
|
|
|
357
|
+
/** @type {HotIndex} */
|
|
353
358
|
let hotIndex = 0;
|
|
354
|
-
/** @type {
|
|
359
|
+
/** @type {FullHashChunkModuleHashes} */
|
|
355
360
|
const fullHashChunkModuleHashes = {};
|
|
356
|
-
/** @type {
|
|
361
|
+
/** @type {ChunkModuleHashes} */
|
|
357
362
|
const chunkModuleHashes = {};
|
|
358
363
|
|
|
359
364
|
compilation.hooks.record.tap(PLUGIN_NAME, (compilation, records) => {
|
|
@@ -367,43 +372,42 @@ class HotModuleReplacementPlugin {
|
|
|
367
372
|
records.chunkRuntime = {};
|
|
368
373
|
for (const chunk of compilation.chunks) {
|
|
369
374
|
const chunkId = /** @type {ChunkId} */ (chunk.id);
|
|
370
|
-
records.chunkHashes[chunkId] = chunk.hash;
|
|
375
|
+
records.chunkHashes[chunkId] = /** @type {string} */ (chunk.hash);
|
|
371
376
|
records.chunkRuntime[chunkId] = getRuntimeKey(chunk.runtime);
|
|
372
377
|
}
|
|
373
378
|
records.chunkModuleIds = {};
|
|
374
379
|
for (const chunk of compilation.chunks) {
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
)
|
|
381
|
-
|
|
382
|
-
)
|
|
380
|
+
const chunkId = /** @type {ChunkId} */ (chunk.id);
|
|
381
|
+
|
|
382
|
+
records.chunkModuleIds[chunkId] = Array.from(
|
|
383
|
+
chunkGraph.getOrderedChunkModulesIterable(
|
|
384
|
+
chunk,
|
|
385
|
+
compareModulesById(chunkGraph)
|
|
386
|
+
),
|
|
387
|
+
(m) => /** @type {ModuleId} */ (chunkGraph.getModuleId(m))
|
|
388
|
+
);
|
|
383
389
|
}
|
|
384
390
|
});
|
|
385
|
-
/** @type {TupleSet<
|
|
391
|
+
/** @type {TupleSet<Module, Chunk>} */
|
|
386
392
|
const updatedModules = new TupleSet();
|
|
387
|
-
/** @type {TupleSet<
|
|
393
|
+
/** @type {TupleSet<Module, Chunk>} */
|
|
388
394
|
const fullHashModules = new TupleSet();
|
|
389
|
-
/** @type {TupleSet<
|
|
395
|
+
/** @type {TupleSet<Module, RuntimeSpec>} */
|
|
390
396
|
const nonCodeGeneratedModules = new TupleSet();
|
|
391
|
-
compilation.hooks.fullHash.tap(PLUGIN_NAME, hash => {
|
|
397
|
+
compilation.hooks.fullHash.tap(PLUGIN_NAME, (hash) => {
|
|
392
398
|
const chunkGraph = compilation.chunkGraph;
|
|
393
|
-
const records = compilation.records;
|
|
399
|
+
const records = /** @type {Records} */ (compilation.records);
|
|
394
400
|
for (const chunk of compilation.chunks) {
|
|
395
401
|
/**
|
|
396
402
|
* @param {Module} module module
|
|
397
403
|
* @returns {string} module hash
|
|
398
404
|
*/
|
|
399
|
-
const getModuleHash = module => {
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
chunk.runtime
|
|
406
|
-
);
|
|
405
|
+
const getModuleHash = (module) => {
|
|
406
|
+
const codeGenerationResults =
|
|
407
|
+
/** @type {CodeGenerationResults} */
|
|
408
|
+
(compilation.codeGenerationResults);
|
|
409
|
+
if (codeGenerationResults.has(module, chunk.runtime)) {
|
|
410
|
+
return codeGenerationResults.getHash(module, chunk.runtime);
|
|
407
411
|
}
|
|
408
412
|
nonCodeGeneratedModules.add(module, chunk.runtime);
|
|
409
413
|
return chunkGraph.getModuleHash(module, chunk.runtime);
|
|
@@ -424,10 +428,14 @@ class HotModuleReplacementPlugin {
|
|
|
424
428
|
const hash = getModuleHash(module);
|
|
425
429
|
if (
|
|
426
430
|
fullHashModulesInThisChunk.has(
|
|
427
|
-
/** @type {RuntimeModule} */
|
|
431
|
+
/** @type {RuntimeModule} */
|
|
432
|
+
(module)
|
|
428
433
|
)
|
|
429
434
|
) {
|
|
430
|
-
if (
|
|
435
|
+
if (
|
|
436
|
+
/** @type {FullHashChunkModuleHashes} */
|
|
437
|
+
(records.fullHashChunkModuleHashes)[key] !== hash
|
|
438
|
+
) {
|
|
431
439
|
updatedModules.add(module, chunk);
|
|
432
440
|
}
|
|
433
441
|
fullHashChunkModuleHashes[key] = hash;
|
|
@@ -484,7 +492,7 @@ class HotModuleReplacementPlugin {
|
|
|
484
492
|
},
|
|
485
493
|
() => {
|
|
486
494
|
const chunkGraph = compilation.chunkGraph;
|
|
487
|
-
const records = compilation.records;
|
|
495
|
+
const records = /** @type {Records} */ (compilation.records);
|
|
488
496
|
if (records.hash === compilation.hash) return;
|
|
489
497
|
if (
|
|
490
498
|
!records.chunkModuleHashes ||
|
|
@@ -493,14 +501,14 @@ class HotModuleReplacementPlugin {
|
|
|
493
501
|
) {
|
|
494
502
|
return;
|
|
495
503
|
}
|
|
504
|
+
const codeGenerationResults =
|
|
505
|
+
/** @type {CodeGenerationResults} */
|
|
506
|
+
(compilation.codeGenerationResults);
|
|
496
507
|
for (const [module, chunk] of fullHashModules) {
|
|
497
508
|
const key = `${chunk.id}|${module.identifier()}`;
|
|
498
509
|
const hash = nonCodeGeneratedModules.has(module, chunk.runtime)
|
|
499
510
|
? chunkGraph.getModuleHash(module, chunk.runtime)
|
|
500
|
-
:
|
|
501
|
-
module,
|
|
502
|
-
chunk.runtime
|
|
503
|
-
);
|
|
511
|
+
: codeGenerationResults.getHash(module, chunk.runtime);
|
|
504
512
|
if (records.chunkModuleHashes[key] !== hash) {
|
|
505
513
|
updatedModules.add(module, chunk);
|
|
506
514
|
}
|
|
@@ -510,15 +518,17 @@ class HotModuleReplacementPlugin {
|
|
|
510
518
|
/** @type {HotUpdateMainContentByRuntime} */
|
|
511
519
|
const hotUpdateMainContentByRuntime = new Map();
|
|
512
520
|
let allOldRuntime;
|
|
513
|
-
|
|
514
|
-
|
|
521
|
+
const chunkRuntime =
|
|
522
|
+
/** @type {ChunkRuntime} */
|
|
523
|
+
(records.chunkRuntime);
|
|
524
|
+
for (const key of Object.keys(chunkRuntime)) {
|
|
525
|
+
const runtime = keyToRuntime(chunkRuntime[key]);
|
|
515
526
|
allOldRuntime = mergeRuntimeOwned(allOldRuntime, runtime);
|
|
516
527
|
}
|
|
517
|
-
forEachRuntime(allOldRuntime, runtime => {
|
|
528
|
+
forEachRuntime(allOldRuntime, (runtime) => {
|
|
518
529
|
const { path: filename, info: assetInfo } =
|
|
519
530
|
compilation.getPathWithInfo(
|
|
520
|
-
|
|
521
|
-
(compilation.outputOptions.hotUpdateMainFilename),
|
|
531
|
+
compilation.outputOptions.hotUpdateMainFilename,
|
|
522
532
|
{
|
|
523
533
|
hash: records.hash,
|
|
524
534
|
runtime
|
|
@@ -538,7 +548,7 @@ class HotModuleReplacementPlugin {
|
|
|
538
548
|
if (hotUpdateMainContentByRuntime.size === 0) return;
|
|
539
549
|
|
|
540
550
|
// Create a list of all active modules to verify which modules are removed completely
|
|
541
|
-
/** @type {Map<
|
|
551
|
+
/** @type {Map<ModuleId, Module>} */
|
|
542
552
|
const allModules = new Map();
|
|
543
553
|
for (const module of compilation.modules) {
|
|
544
554
|
const id =
|
|
@@ -548,11 +558,14 @@ class HotModuleReplacementPlugin {
|
|
|
548
558
|
}
|
|
549
559
|
|
|
550
560
|
// List of completely removed modules
|
|
551
|
-
/** @type {Set<
|
|
561
|
+
/** @type {Set<ModuleId>} */
|
|
552
562
|
const completelyRemovedModules = new Set();
|
|
553
563
|
|
|
554
564
|
for (const key of Object.keys(records.chunkHashes)) {
|
|
555
|
-
const oldRuntime = keyToRuntime(
|
|
565
|
+
const oldRuntime = keyToRuntime(
|
|
566
|
+
/** @type {ChunkRuntime} */
|
|
567
|
+
(records.chunkRuntime)[key]
|
|
568
|
+
);
|
|
556
569
|
/** @type {Module[]} */
|
|
557
570
|
const remainingModules = [];
|
|
558
571
|
// Check which modules are removed
|
|
@@ -575,7 +588,7 @@ class HotModuleReplacementPlugin {
|
|
|
575
588
|
let removedFromRuntime;
|
|
576
589
|
const currentChunk = find(
|
|
577
590
|
compilation.chunks,
|
|
578
|
-
chunk => `${chunk.id}` === key
|
|
591
|
+
(chunk) => `${chunk.id}` === key
|
|
579
592
|
);
|
|
580
593
|
if (currentChunk) {
|
|
581
594
|
chunkId = currentChunk.id;
|
|
@@ -586,22 +599,22 @@ class HotModuleReplacementPlugin {
|
|
|
586
599
|
if (newRuntime === undefined) continue;
|
|
587
600
|
newModules = chunkGraph
|
|
588
601
|
.getChunkModules(currentChunk)
|
|
589
|
-
.filter(module => updatedModules.has(module, currentChunk));
|
|
590
|
-
newRuntimeModules =
|
|
591
|
-
chunkGraph.getChunkRuntimeModulesIterable(currentChunk)
|
|
592
|
-
|
|
602
|
+
.filter((module) => updatedModules.has(module, currentChunk));
|
|
603
|
+
newRuntimeModules = [
|
|
604
|
+
...chunkGraph.getChunkRuntimeModulesIterable(currentChunk)
|
|
605
|
+
].filter((module) => updatedModules.has(module, currentChunk));
|
|
593
606
|
const fullHashModules =
|
|
594
607
|
chunkGraph.getChunkFullHashModulesIterable(currentChunk);
|
|
595
608
|
newFullHashModules =
|
|
596
609
|
fullHashModules &&
|
|
597
|
-
|
|
610
|
+
[...fullHashModules].filter((module) =>
|
|
598
611
|
updatedModules.has(module, currentChunk)
|
|
599
612
|
);
|
|
600
613
|
const dependentHashModules =
|
|
601
614
|
chunkGraph.getChunkDependentHashModulesIterable(currentChunk);
|
|
602
615
|
newDependentHashModules =
|
|
603
616
|
dependentHashModules &&
|
|
604
|
-
|
|
617
|
+
[...dependentHashModules].filter((module) =>
|
|
605
618
|
updatedModules.has(module, currentChunk)
|
|
606
619
|
);
|
|
607
620
|
removedFromRuntime = subtractRuntime(oldRuntime, newRuntime);
|
|
@@ -613,7 +626,7 @@ class HotModuleReplacementPlugin {
|
|
|
613
626
|
}
|
|
614
627
|
if (removedFromRuntime) {
|
|
615
628
|
// chunk was removed from some runtimes
|
|
616
|
-
forEachRuntime(removedFromRuntime, runtime => {
|
|
629
|
+
forEachRuntime(removedFromRuntime, (runtime) => {
|
|
617
630
|
const item =
|
|
618
631
|
/** @type {HotUpdateMainContentByRuntimeItem} */
|
|
619
632
|
(
|
|
@@ -633,10 +646,7 @@ class HotModuleReplacementPlugin {
|
|
|
633
646
|
// Module is still in the same runtime combination
|
|
634
647
|
const hash = nonCodeGeneratedModules.has(module, newRuntime)
|
|
635
648
|
? chunkGraph.getModuleHash(module, newRuntime)
|
|
636
|
-
:
|
|
637
|
-
module,
|
|
638
|
-
newRuntime
|
|
639
|
-
);
|
|
649
|
+
: codeGenerationResults.getHash(module, newRuntime);
|
|
640
650
|
if (hash !== oldHash) {
|
|
641
651
|
if (module.type === WEBPACK_MODULE_TYPE_RUNTIME) {
|
|
642
652
|
newRuntimeModules = newRuntimeModules || [];
|
|
@@ -652,7 +662,7 @@ class HotModuleReplacementPlugin {
|
|
|
652
662
|
// module is no longer in this runtime combination
|
|
653
663
|
// We (incorrectly) assume that it's not in an overlapping runtime combination
|
|
654
664
|
// and dispose it from the main runtimes the chunk was removed from
|
|
655
|
-
forEachRuntime(removedFromRuntime, runtime => {
|
|
665
|
+
forEachRuntime(removedFromRuntime, (runtime) => {
|
|
656
666
|
// If the module is still used in this runtime, do not dispose it
|
|
657
667
|
// This could create a bad runtime state where the module is still loaded,
|
|
658
668
|
// but no chunk which contains it. This means we don't receive further HMR updates
|
|
@@ -664,8 +674,9 @@ class HotModuleReplacementPlugin {
|
|
|
664
674
|
} else if (
|
|
665
675
|
moduleRuntime !== undefined &&
|
|
666
676
|
moduleRuntime.has(/** @type {string} */ (runtime))
|
|
667
|
-
)
|
|
677
|
+
) {
|
|
668
678
|
return;
|
|
679
|
+
}
|
|
669
680
|
}
|
|
670
681
|
const item =
|
|
671
682
|
/** @type {HotUpdateMainContentByRuntimeItem} */ (
|
|
@@ -683,15 +694,17 @@ class HotModuleReplacementPlugin {
|
|
|
683
694
|
(newRuntimeModules && newRuntimeModules.length > 0)
|
|
684
695
|
) {
|
|
685
696
|
const hotUpdateChunk = new HotUpdateChunk();
|
|
686
|
-
if (backCompat)
|
|
697
|
+
if (backCompat) {
|
|
687
698
|
ChunkGraph.setChunkGraphForChunk(hotUpdateChunk, chunkGraph);
|
|
699
|
+
}
|
|
688
700
|
hotUpdateChunk.id = chunkId;
|
|
689
701
|
hotUpdateChunk.runtime = currentChunk
|
|
690
702
|
? currentChunk.runtime
|
|
691
703
|
: newRuntime;
|
|
692
704
|
if (currentChunk) {
|
|
693
|
-
for (const group of currentChunk.groupsIterable)
|
|
705
|
+
for (const group of currentChunk.groupsIterable) {
|
|
694
706
|
hotUpdateChunk.addGroup(group);
|
|
707
|
+
}
|
|
695
708
|
}
|
|
696
709
|
chunkGraph.attachModules(hotUpdateChunk, newModules || []);
|
|
697
710
|
chunkGraph.attachRuntimeModules(
|
|
@@ -712,12 +725,14 @@ class HotModuleReplacementPlugin {
|
|
|
712
725
|
}
|
|
713
726
|
const renderManifest = compilation.getRenderManifest({
|
|
714
727
|
chunk: hotUpdateChunk,
|
|
715
|
-
hash: records.hash,
|
|
716
|
-
fullHash: records.hash,
|
|
728
|
+
hash: /** @type {string} */ (records.hash),
|
|
729
|
+
fullHash: /** @type {string} */ (records.hash),
|
|
717
730
|
outputOptions: compilation.outputOptions,
|
|
718
731
|
moduleTemplates: compilation.moduleTemplates,
|
|
719
732
|
dependencyTemplates: compilation.dependencyTemplates,
|
|
720
|
-
codeGenerationResults:
|
|
733
|
+
codeGenerationResults: /** @type {CodeGenerationResults} */ (
|
|
734
|
+
compilation.codeGenerationResults
|
|
735
|
+
),
|
|
721
736
|
runtimeTemplate: compilation.runtimeTemplate,
|
|
722
737
|
moduleGraph: compilation.moduleGraph,
|
|
723
738
|
chunkGraph
|
|
@@ -748,7 +763,7 @@ class HotModuleReplacementPlugin {
|
|
|
748
763
|
compilation.hooks.chunkAsset.call(currentChunk, filename);
|
|
749
764
|
}
|
|
750
765
|
}
|
|
751
|
-
forEachRuntime(newRuntime, runtime => {
|
|
766
|
+
forEachRuntime(newRuntime, (runtime) => {
|
|
752
767
|
const item =
|
|
753
768
|
/** @type {HotUpdateMainContentByRuntimeItem} */ (
|
|
754
769
|
hotUpdateMainContentByRuntime.get(
|
|
@@ -759,9 +774,7 @@ class HotModuleReplacementPlugin {
|
|
|
759
774
|
});
|
|
760
775
|
}
|
|
761
776
|
}
|
|
762
|
-
const completelyRemovedModulesArray =
|
|
763
|
-
completelyRemovedModules
|
|
764
|
-
);
|
|
777
|
+
const completelyRemovedModulesArray = [...completelyRemovedModules];
|
|
765
778
|
const hotUpdateMainContentByFilename = new Map();
|
|
766
779
|
for (const {
|
|
767
780
|
removedChunkIds,
|
|
@@ -783,12 +796,15 @@ The configured output.hotUpdateMainFilename doesn't lead to unique filenames per
|
|
|
783
796
|
This might lead to incorrect runtime behavior of the applied update.
|
|
784
797
|
To fix this, make sure to include [runtime] in the output.hotUpdateMainFilename option, or use the default config.`)
|
|
785
798
|
);
|
|
786
|
-
for (const chunkId of removedChunkIds)
|
|
799
|
+
for (const chunkId of removedChunkIds) {
|
|
787
800
|
old.removedChunkIds.add(chunkId);
|
|
788
|
-
|
|
801
|
+
}
|
|
802
|
+
for (const chunkId of removedModules) {
|
|
789
803
|
old.removedModules.add(chunkId);
|
|
790
|
-
|
|
804
|
+
}
|
|
805
|
+
for (const chunkId of updatedChunkIds) {
|
|
791
806
|
old.updatedChunkIds.add(chunkId);
|
|
807
|
+
}
|
|
792
808
|
continue;
|
|
793
809
|
}
|
|
794
810
|
hotUpdateMainContentByFilename.set(filename, {
|
|
@@ -802,22 +818,47 @@ To fix this, make sure to include [runtime] in the output.hotUpdateMainFilename
|
|
|
802
818
|
filename,
|
|
803
819
|
{ removedChunkIds, removedModules, updatedChunkIds, assetInfo }
|
|
804
820
|
] of hotUpdateMainContentByFilename) {
|
|
821
|
+
/** @type {{c: ChunkId[], r: ChunkId[], m: ModuleId[], css?: {r: ChunkId[]}}} */
|
|
805
822
|
const hotUpdateMainJson = {
|
|
806
|
-
c:
|
|
807
|
-
r:
|
|
823
|
+
c: [...updatedChunkIds],
|
|
824
|
+
r: [...removedChunkIds],
|
|
808
825
|
m:
|
|
809
826
|
removedModules.size === 0
|
|
810
827
|
? completelyRemovedModulesArray
|
|
811
|
-
:
|
|
812
|
-
|
|
828
|
+
: [
|
|
829
|
+
...completelyRemovedModulesArray,
|
|
830
|
+
...Array.from(
|
|
813
831
|
removedModules,
|
|
814
|
-
m =>
|
|
832
|
+
(m) =>
|
|
815
833
|
/** @type {ModuleId} */ (chunkGraph.getModuleId(m))
|
|
816
834
|
)
|
|
817
|
-
|
|
835
|
+
]
|
|
818
836
|
};
|
|
819
837
|
|
|
820
|
-
|
|
838
|
+
// Build CSS removed chunks list (chunks in updatedChunkIds that no longer have CSS)
|
|
839
|
+
/** @type {ChunkId[]} */
|
|
840
|
+
const cssRemovedChunkIds = [];
|
|
841
|
+
if (compilation.options.experiments.css) {
|
|
842
|
+
for (const chunkId of updatedChunkIds) {
|
|
843
|
+
for (const /** @type {Chunk} */ chunk of compilation.chunks) {
|
|
844
|
+
if (chunk.id === chunkId) {
|
|
845
|
+
if (!chunkHasCss(chunk, chunkGraph)) {
|
|
846
|
+
cssRemovedChunkIds.push(chunkId);
|
|
847
|
+
}
|
|
848
|
+
break;
|
|
849
|
+
}
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
if (cssRemovedChunkIds.length > 0) {
|
|
855
|
+
hotUpdateMainJson.css = { r: cssRemovedChunkIds };
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
const source = new RawSource(
|
|
859
|
+
(filename.endsWith(".json") ? "" : "export default ") +
|
|
860
|
+
JSON.stringify(hotUpdateMainJson)
|
|
861
|
+
);
|
|
821
862
|
compilation.emitAsset(filename, source, {
|
|
822
863
|
hotModuleReplacement: true,
|
|
823
864
|
...assetInfo
|
|
@@ -842,28 +883,28 @@ To fix this, make sure to include [runtime] in the output.hotUpdateMainFilename
|
|
|
842
883
|
|
|
843
884
|
normalModuleFactory.hooks.parser
|
|
844
885
|
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
|
845
|
-
.tap(PLUGIN_NAME, parser => {
|
|
886
|
+
.tap(PLUGIN_NAME, (parser) => {
|
|
846
887
|
applyModuleHot(parser);
|
|
847
888
|
applyImportMetaHot(parser);
|
|
848
889
|
});
|
|
849
890
|
normalModuleFactory.hooks.parser
|
|
850
891
|
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
|
851
|
-
.tap(PLUGIN_NAME, parser => {
|
|
892
|
+
.tap(PLUGIN_NAME, (parser) => {
|
|
852
893
|
applyModuleHot(parser);
|
|
853
894
|
});
|
|
854
895
|
normalModuleFactory.hooks.parser
|
|
855
896
|
.for(JAVASCRIPT_MODULE_TYPE_ESM)
|
|
856
|
-
.tap(PLUGIN_NAME, parser => {
|
|
897
|
+
.tap(PLUGIN_NAME, (parser) => {
|
|
857
898
|
applyImportMetaHot(parser);
|
|
858
899
|
});
|
|
859
|
-
normalModuleFactory.hooks.module.tap(PLUGIN_NAME, module => {
|
|
900
|
+
normalModuleFactory.hooks.module.tap(PLUGIN_NAME, (module) => {
|
|
860
901
|
module.hot = true;
|
|
861
902
|
return module;
|
|
862
903
|
});
|
|
863
904
|
|
|
864
905
|
NormalModule.getCompilationHooks(compilation).loader.tap(
|
|
865
906
|
PLUGIN_NAME,
|
|
866
|
-
context => {
|
|
907
|
+
(context) => {
|
|
867
908
|
context.hot = true;
|
|
868
909
|
}
|
|
869
910
|
);
|
package/lib/HotUpdateChunk.js
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
const ModuleFactory = require("./ModuleFactory");
|
|
9
9
|
|
|
10
|
+
/** @typedef {import("./ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
|
|
10
11
|
/** @typedef {import("./ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
|
|
11
|
-
/** @typedef {import("./ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
|
|
12
12
|
/** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
|
|
13
13
|
|
|
14
14
|
/**
|
|
@@ -26,7 +26,7 @@ class IgnoreErrorModuleFactory extends ModuleFactory {
|
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* @param {ModuleFactoryCreateData} data data object
|
|
29
|
-
* @param {
|
|
29
|
+
* @param {ModuleFactoryCallback} callback callback
|
|
30
30
|
* @returns {void}
|
|
31
31
|
*/
|
|
32
32
|
create(data, callback) {
|