webpack 5.111.1 → 5.112.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 +1 -1
- package/bin/webpack.js +13 -7
- package/lib/Chunk.js +3 -966
- package/lib/Compilation.js +373 -163
- package/lib/Compiler.js +31 -44
- package/lib/Dependency.js +3 -551
- package/lib/DependencyTemplate.js +3 -70
- package/lib/EntryPlugin.js +3 -68
- package/lib/Entrypoint.js +3 -121
- package/lib/ExternalsPlugin.js +3 -92
- package/lib/FileSystemInfo.js +3 -4629
- package/lib/InitFragment.js +3 -204
- package/lib/LibraryTemplatePlugin.js +3 -46
- package/lib/ModuleFilenameHelpers.js +3 -400
- package/lib/ModuleNotFoundError.js +2 -2
- package/lib/MultiCompiler.js +37 -8
- package/lib/NormalModule.js +3 -2242
- package/lib/NullFactory.js +3 -22
- package/lib/ProgressPlugin.js +3 -908
- package/lib/RawModule.js +3 -197
- package/lib/RequestShortener.js +3 -37
- package/lib/SingleEntryPlugin.js +1 -1
- package/lib/WebpackError.js +2 -2
- package/lib/asset/AssetBytesGenerator.js +21 -13
- package/lib/asset/AssetBytesParser.js +12 -10
- package/lib/asset/AssetGenerator.js +71 -69
- package/lib/asset/AssetModule.js +13 -2
- package/lib/asset/AssetModulesPlugin.js +10 -12
- package/lib/asset/AssetParser.js +10 -10
- package/lib/asset/AssetSourceGenerator.js +23 -15
- package/lib/asset/AssetSourceParser.js +12 -10
- package/lib/asset/RawDataUrlModule.js +17 -10
- package/lib/asset/WebManifestGenerator.js +17 -12
- package/lib/asset/WebManifestParser.js +8 -8
- package/lib/async-modules/AsyncModuleHelpers.js +12 -5
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +9 -3
- package/lib/async-modules/isGeneratorLowered.js +3 -3
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
- package/lib/{Cache.js → cache/Cache.js} +1 -1
- package/lib/{CacheFacade.js → cache/CacheFacade.js} +6 -6
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +2 -2
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -2
- package/lib/cache/PackFileCacheStrategy.js +13 -19
- package/lib/cache/ResolverCachePlugin.js +65 -11
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
- package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
- package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +209 -212
- package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
- package/lib/config/browserslistTargetHandler.js +1 -1
- package/lib/{cli.js → config/cli.js} +14 -164
- package/lib/config/defaults.js +166 -59
- package/lib/config/getClaimedAssetTypes.js +22 -14
- package/lib/config/normalization.js +18 -7
- package/lib/config/target.js +11 -1
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +13 -11
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerExposedDependency.js +1 -1
- package/lib/container/ContainerPlugin.js +178 -5
- package/lib/container/ContainerReferencePlugin.js +75 -14
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackItemDependency.js +1 -1
- package/lib/container/FallbackModule.js +12 -10
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +10 -11
- package/lib/container/ModuleFederationPlugin.js +306 -7
- package/lib/container/RemoteModule.js +14 -10
- package/lib/container/RemoteRuntimeModule.js +5 -5
- package/lib/container/RemoteToExternalDependency.js +1 -1
- package/lib/container/moduleFederationHooks.js +1 -1
- package/lib/context/ContextModule.js +37 -26
- package/lib/context/ContextModuleFactory.js +14 -11
- package/lib/context/ContextReplacementPlugin.js +6 -12
- package/lib/css/CssGenerator.js +78 -68
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
- package/lib/css/CssLoadingRuntimeModule.js +77 -44
- package/lib/css/CssModule.js +37 -29
- package/lib/css/CssModulesPlugin.js +129 -45
- package/lib/css/CssParser.js +714 -322
- package/lib/css/CssServerStylesRuntimeModule.js +3 -3
- package/lib/{util → css}/conventions.js +1 -1
- package/lib/css/cssMinify.js +110 -37
- package/lib/css/data.js +6990 -5125
- package/lib/css/syntax-parser.js +20734 -0
- package/lib/css/syntax-printer.js +6092 -0
- package/lib/css/syntax.js +37 -18686
- package/lib/debug/ProfilingPlugin.js +106 -51
- package/lib/{DefinePlugin.js → define/DefinePlugin.js} +416 -55
- package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +19 -15
- package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +6 -4
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/ConstDependency.js +3 -120
- package/lib/dependencies/ContextElementDependency.js +5 -172
- package/lib/dependencies/NullDependency.js +3 -37
- package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
- package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -11
- package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
- package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
- package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
- package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
- package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +14 -11
- package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
- package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
- package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
- package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
- package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
- package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
- package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
- package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
- package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
- package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +166 -36
- package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
- package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +154 -92
- package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
- package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +36 -33
- package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +17 -16
- package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +48 -39
- package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
- package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
- package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +17 -16
- package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
- package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
- package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +9 -6
- package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
- package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
- package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
- package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
- package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
- package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
- package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
- package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
- package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
- package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
- package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
- package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
- package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +31 -9
- package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
- package/lib/dependencies/context/ContextElementDependency.js +198 -0
- package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +10 -11
- package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
- package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +7 -10
- package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +17 -19
- package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
- package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
- package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
- package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +21 -17
- package/lib/dependencies/core/ConstDependency.js +131 -0
- package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
- package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
- package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
- package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
- package/lib/dependencies/core/NullDependency.js +44 -0
- package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
- package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
- package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +375 -99
- package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +24 -19
- package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
- package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
- package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +25 -22
- package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
- package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
- package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
- package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +29 -21
- package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +20 -20
- package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
- package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
- package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
- package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
- package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
- package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +146 -133
- package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
- package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +78 -37
- package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -12
- package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
- package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +86 -68
- package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +104 -100
- package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +36 -51
- package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
- package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +98 -60
- package/lib/dependencies/esm/ESMLiveExportDependency.js +311 -0
- package/lib/dependencies/esm/ESMLiveExportParserPlugin.js +862 -0
- package/lib/dependencies/esm/ESMModulesPlugin.js +205 -0
- package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
- package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -18
- package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +5 -7
- package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
- package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
- package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
- package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +52 -151
- package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -15
- package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -23
- package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -18
- package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
- package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
- package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
- package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
- package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +22 -25
- package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
- package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
- package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
- package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +122 -103
- package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
- package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
- package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
- package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
- package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +28 -20
- package/lib/{url → dependencies/url}/URLParserPlugin.js +17 -19
- package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
- package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
- package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
- package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
- package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +82 -53
- package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
- package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
- package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
- package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
- package/lib/devtool/ModuleFilenameHelpers.js +413 -0
- package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
- package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +155 -27
- package/lib/{util → devtool}/generateDebugId.js +1 -1
- package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
- package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
- package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
- package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
- package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
- package/lib/dll/DelegatedModule.js +23 -21
- package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
- package/lib/dll/DelegatedPlugin.js +1 -1
- package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
- package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
- package/lib/dll/DllEntryPlugin.js +3 -3
- package/lib/dll/DllModule.js +14 -10
- package/lib/dll/DllModuleFactory.js +3 -3
- package/lib/dll/DllPlugin.js +18 -6
- package/lib/dll/DllReferencePlugin.js +103 -30
- package/lib/dll/LibManifestPlugin.js +9 -7
- package/lib/electron/ElectronTargetPlugin.js +2 -2
- package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
- package/lib/{dependencies → entry}/EntryDependency.js +11 -2
- package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
- package/lib/entry/EntryPlugin.js +75 -0
- package/lib/errors/AbstractMethodError.js +1 -1
- package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
- package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
- package/lib/errors/DeprecatedOptionWarning.js +30 -0
- package/lib/errors/DllManifestError.js +26 -0
- package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
- package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
- package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/{ErrorHelpers.js → errors/ErrorHelpers.js} +9 -6
- package/lib/errors/ExternalStarReexportError.js +2 -2
- package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
- package/lib/errors/HookWebpackError.js +6 -5
- package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/JSONParseError.js +4 -4
- package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
- package/lib/errors/ModuleBuildError.js +1 -1
- package/lib/errors/ModuleDependencyError.js +2 -2
- package/lib/errors/ModuleDependencyWarning.js +2 -2
- package/lib/errors/ModuleError.js +1 -1
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +3 -3
- package/lib/errors/ModuleParseError.js +1 -1
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/ModuleWarning.js +1 -1
- package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
- package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
- package/lib/errors/NodeStuffInWebError.js +7 -2
- package/lib/errors/PathVariableError.js +31 -0
- package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
- package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
- package/lib/errors/RuntimeModuleGenerationError.js +51 -0
- package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
- package/lib/errors/SystemImportDeprecationWarning.js +43 -0
- package/lib/errors/UnmergeableEntryExportsError.js +34 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
- package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
- package/lib/errors/WebpackError.js +13 -3
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +55 -20
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
- package/lib/{ExternalModule.js → externals/ExternalModule.js} +90 -63
- package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +42 -41
- package/lib/externals/ExternalsPlugin.js +99 -0
- package/lib/fs/FileSystemInfo.js +4642 -0
- package/lib/{util → fs}/fs.js +22 -9
- package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
- package/lib/graph/Chunk.js +985 -0
- package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +192 -80
- package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
- package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
- package/lib/graph/Dependency.js +634 -0
- package/lib/graph/Entrypoint.js +136 -0
- package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +131 -83
- package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
- package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +44 -33
- package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
- package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +169 -76
- package/lib/{util → graph}/findGraphRoots.js +15 -9
- package/lib/graph/isDependencyKind.js +23 -0
- package/lib/hmr/HotModuleReplacement.runtime.js +12 -11
- package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +51 -57
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +25 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
- package/lib/hmr/LazyCompilationPlugin.js +32 -28
- package/lib/html/HtmlGenerator.js +132 -60
- package/lib/html/HtmlModule.js +16 -2
- package/lib/html/HtmlModulesPlugin.js +184 -87
- package/lib/html/HtmlParser.js +511 -160
- package/lib/html/builtinEmbeddedRenderer.js +70 -25
- package/lib/html/data.js +44 -22
- package/lib/html/htmlMinify.js +114 -41
- package/lib/html/syntax-parser.js +15795 -0
- package/lib/html/syntax-printer.js +1033 -0
- package/lib/html/syntax.js +37 -13952
- package/lib/html/xmlMinify.js +70 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +32 -5
- package/lib/ids/IdHelpers.js +4 -4
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
- package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
- package/lib/ids/SyncModuleIdsPlugin.js +3 -3
- package/lib/{util → ids}/numberHash.js +1 -1
- package/lib/index.js +312 -105
- package/lib/{APIPlugin.js → javascript/APIPlugin.js} +31 -37
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
- package/lib/javascript/BasicEvaluatedExpression.js +9 -9
- package/lib/javascript/ChunkHelpers.js +64 -4
- package/lib/javascript/CommonJsChunkFormatPlugin.js +5 -13
- package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
- package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +75 -8
- package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
- package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
- package/lib/javascript/JavascriptGenerator.js +32 -27
- package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +8 -20
- package/lib/javascript/JavascriptModule.js +14 -3
- package/lib/javascript/JavascriptModulesPlugin.js +441 -214
- package/lib/javascript/JavascriptParser.js +318 -144
- package/lib/javascript/JavascriptParserHelpers.js +1 -1
- package/lib/javascript/MergedEntryExports.js +196 -0
- package/lib/javascript/ScopeAnalyzer.js +3924 -13
- package/lib/javascript/StartupHelpers.js +6 -6
- package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +13 -19
- package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
- package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
- package/lib/javascript/data.js +533 -122
- package/lib/javascript/jsMinify.js +272 -0
- package/lib/javascript/regexp.js +67 -32
- package/lib/javascript/syntax-parser.js +19169 -0
- package/lib/javascript/syntax-printer-data.js +1099 -0
- package/lib/javascript/syntax-printer.js +53878 -0
- package/lib/javascript/syntax.js +20 -11274
- package/lib/json/JsonData.js +1 -1
- package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
- package/lib/json/JsonGenerator.js +24 -16
- package/lib/json/JsonModule.js +13 -2
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +11 -10
- package/lib/json/jsonMinify.js +69 -0
- package/lib/library/AbstractLibraryPlugin.js +28 -15
- package/lib/library/AmdLibraryPlugin.js +4 -4
- package/lib/library/AssignLibraryPlugin.js +28 -12
- package/lib/library/EnableLibraryPlugin.js +1 -1
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
- package/lib/library/JsonpLibraryPlugin.js +2 -2
- package/lib/library/LibraryTemplatePlugin.js +53 -0
- package/lib/library/ModuleLibraryPlugin.js +557 -187
- package/lib/library/SystemLibraryPlugin.js +6 -8
- package/lib/library/UmdLibraryPlugin.js +3 -4
- package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
- package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
- package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
- package/lib/{dependencies → loaders}/LoaderPlugin.js +2 -2
- package/lib/loaders/LoaderRunner.js +94 -46
- package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
- package/lib/loaders/loadLoader.js +16 -10
- package/lib/logging/Logger.js +7 -9
- package/lib/logging/ProgressPlugin.js +957 -0
- package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
- package/lib/{Generator.js → module/Generator.js} +33 -23
- package/lib/{Module.js → module/Module.js} +121 -53
- package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
- package/lib/module/NormalModule.js +2350 -0
- package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +64 -71
- package/lib/module/NullFactory.js +29 -0
- package/lib/{Parser.js → module/Parser.js} +12 -5
- package/lib/module/RawModule.js +208 -0
- package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
- package/lib/{util → module}/extractSourceMap.js +71 -20
- package/lib/{util → module}/findCaseMismatch.js +4 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
- package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
- package/lib/{dependencies → node}/ExternalModuleInitFragment.js +7 -6
- package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
- package/lib/node/NodeEnvironmentPlugin.js +11 -1
- package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
- package/lib/node/NodeTargetPlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +58 -6
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +9 -11
- package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/nodeConsole.js +6 -7
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
- package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +14 -14
- package/lib/optimize/ConcatenatedModule.js +231 -220
- package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
- package/lib/optimize/ConstExportsPlugin.js +7 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
- package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +23 -28
- package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +44 -19
- package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
- package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
- package/lib/optimize/InlineExports.js +12 -7
- package/lib/optimize/InnerGraph.js +5 -13
- package/lib/optimize/InnerGraphPlugin.js +10 -10
- package/lib/optimize/LazyBarrels.js +620 -0
- package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
- package/lib/optimize/LimitChunkCountPlugin.js +16 -7
- package/lib/optimize/MangleExportsPlugin.js +5 -5
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
- package/lib/optimize/MinChunkSizePlugin.js +9 -6
- package/lib/optimize/ModuleConcatenationPlugin.js +28 -22
- package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
- package/lib/optimize/RealContentHashPlugin.js +18 -13
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/SideEffectsFlagPlugin.js +24 -38
- package/lib/optimize/SplitChunksPlugin.js +719 -174
- package/lib/{util → optimize}/TupleQueue.js +9 -9
- package/lib/optimize/chunkSetIntersections.js +437 -0
- package/lib/{util → optimize}/deterministicGrouping.js +17 -17
- package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
- package/lib/{CleanPlugin.js → output/CleanPlugin.js} +69 -25
- package/lib/{CopyPlugin.js → output/CopyPlugin.js} +144 -70
- package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
- package/lib/output/SSRManifestPlugin.js +349 -0
- package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
- package/lib/performance/BroadContextsPlugin.js +4 -4
- package/lib/performance/CacheEffectivenessPlugin.js +2 -3
- package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
- package/lib/performance/DuplicateModulesPlugin.js +3 -4
- package/lib/performance/DuplicatePackagesPlugin.js +3 -3
- package/lib/performance/DynamicExportsPlugin.js +2 -2
- package/lib/performance/EvalUsagePlugin.js +4 -6
- package/lib/performance/HotspotsPlugin.js +39 -14
- package/lib/performance/LargeModulesPlugin.js +2 -3
- package/lib/performance/LegacyJavascriptPlugin.js +1 -2
- package/lib/performance/MissingSideEffectsPlugin.js +2 -3
- package/lib/performance/MissingSourceMapsPlugin.js +5 -6
- package/lib/performance/PureAnnotationsPlugin.js +19 -13
- package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +11 -12
- package/lib/performance/TopLevelThisPlugin.js +22 -13
- package/lib/performance/UnsplitVendorsPlugin.js +1 -2
- package/lib/performance/UnusedAliasesPlugin.js +6 -7
- package/lib/performance/UnusedAssetsPlugin.js +5 -5
- package/lib/performance/UnusedDefinesPlugin.js +2 -2
- package/lib/performance/UnusedExternalsPlugin.js +3 -4
- package/lib/performance/UnusedFederationPlugin.js +2 -4
- package/lib/performance/UnusedModulesPlugin.js +5 -4
- package/lib/performance/getModuleSize.js +1 -1
- package/lib/performance/hasOnlyUnusedExports.js +4 -4
- package/lib/performance/isOnlyReexported.js +7 -6
- package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
- package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
- package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +66 -45
- package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
- package/lib/prefetch/parseResourceHintOptions.js +4 -3
- package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
- package/lib/{dependencies → provide}/ProvidedDependency.js +50 -17
- package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
- package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
- package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
- package/lib/resolve/getResolveOptionsKey.js +59 -0
- package/lib/rules/BasicEffectRulePlugin.js +1 -1
- package/lib/rules/RuleSetCompiler.js +42 -51
- package/lib/rules/UseEffectRulePlugin.js +1 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
- package/lib/runtime/AsyncModuleRuntimeModule.js +14 -5
- package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
- package/lib/runtime/BaseUriRuntimeModule.js +3 -3
- package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +4 -4
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
- package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
- package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +7 -11
- package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
- package/lib/runtime/GlobalRuntimeModule.js +3 -3
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
- package/lib/runtime/HelperRuntimeModule.js +16 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +80 -17
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/NonceRuntimeModule.js +2 -2
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
- package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +24 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
- package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
- package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +50 -50
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
- package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
- package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
- package/lib/runtime/SystemContextRuntimeModule.js +2 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
- package/lib/runtime/WorkerRuntimeModule.js +1 -1
- package/lib/runtime/baseUri.js +1 -1
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +68 -13
- package/lib/schemes/VirtualUrlPlugin.js +52 -16
- package/lib/serialization/AggregateErrorSerializer.js +4 -4
- package/lib/serialization/BinaryMiddleware.js +4 -1
- package/lib/serialization/ErrorObjectSerializer.js +2 -5
- package/lib/serialization/FileMiddleware.js +3 -3
- package/lib/serialization/ObjectMiddleware.js +62 -29
- package/lib/serialization/PlainObjectSerializer.js +3 -7
- package/lib/serialization/Serializer.js +21 -11
- package/lib/serialization/SerializerMiddleware.js +10 -8
- package/lib/serialization/SingleItemMiddleware.js +4 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
- package/lib/sharing/ConsumeSharedModule.js +18 -14
- package/lib/sharing/ConsumeSharedPlugin.js +148 -42
- package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
- package/lib/sharing/ProvideForSharedDependency.js +9 -1
- package/lib/sharing/ProvideSharedDependency.js +1 -1
- package/lib/sharing/ProvideSharedModule.js +11 -9
- package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
- package/lib/sharing/ProvideSharedPlugin.js +111 -20
- package/lib/sharing/SharePlugin.js +102 -9
- package/lib/sharing/ShareRuntimeModule.js +6 -6
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/{util → sharing}/semver.js +14 -16
- package/lib/sharing/utils.js +59 -2
- package/lib/stats/DefaultStatsFactoryPlugin.js +57 -54
- package/lib/stats/DefaultStatsPresetPlugin.js +3 -7
- package/lib/stats/DefaultStatsPrinterPlugin.js +15 -14
- package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
- package/lib/{Stats.js → stats/Stats.js} +4 -4
- package/lib/stats/StatsFactory.js +208 -37
- package/lib/stats/StatsPrinter.js +126 -13
- package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
- package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
- package/lib/template/DependencyTemplate.js +77 -0
- package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
- package/lib/template/InitFragment.js +223 -0
- package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
- package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
- package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
- package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +158 -95
- package/lib/{Template.js → template/Template.js} +14 -12
- package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
- package/lib/typescript/TypeScriptPlugin.js +3 -3
- package/lib/util/RequestShortener.js +44 -0
- package/lib/util/SortableSet.js +87 -22
- package/lib/util/SourceProcessor.js +439 -51
- package/lib/util/TupleSet.js +27 -27
- package/lib/util/WeakTupleMap.js +20 -16
- package/lib/util/buildDiagnostics.js +2 -2
- package/lib/util/cleverMerge.js +61 -33
- package/lib/util/comparators.js +19 -15
- package/lib/util/concatenate.js +28 -147
- package/lib/util/createMappings.js +111 -0
- package/lib/util/dataURL.js +96 -15
- package/lib/util/deprecation.js +5 -4
- package/lib/util/extractComments.js +118 -0
- package/lib/util/formatLocation.js +1 -1
- package/lib/util/globUtils.js +198 -20
- package/lib/util/haltVisitors.js +51 -0
- package/lib/util/handlerKeys.js +2 -2
- package/lib/util/identifier.js +117 -1
- package/lib/util/implicitTypeLoaderFallback.js +6 -4
- package/lib/util/internalSerializables.js +296 -102
- package/lib/util/magicComment.js +12 -7
- package/lib/util/makeSerializable.js +28 -7
- package/lib/util/memoize.js +1 -1
- package/lib/util/parseJson.js +2 -2
- package/lib/util/preloadModuleType.js +5 -2
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/removeBOM.js +1 -1
- package/lib/util/runtime.js +1 -1
- package/lib/util/serialization.js +35 -28
- package/lib/util/source.js +2 -2
- package/lib/util/terminalColors.js +161 -0
- package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmModule.js +19 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +17 -9
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +24 -15
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +14 -12
- package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
- package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +11 -13
- package/lib/wasm/wasmModuleFilename.js +2 -2
- package/lib/wasm-sync/SyncWasmModule.js +18 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +22 -16
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +28 -21
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
- package/lib/wasm-sync/WebAssemblyParser.js +15 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
- package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
- package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
- package/lib/{Watching.js → watch/Watching.js} +8 -8
- package/lib/web/FetchCompileAsyncWasmPlugin.js +12 -18
- package/lib/web/FetchCompileWasmPlugin.js +8 -10
- package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
- package/lib/web/JsonpTemplatePlugin.js +1 -1
- package/lib/webpack.js +27 -17
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
- package/package.json +57 -36
- package/schemas/WebpackOptions.check.js +4 -3
- package/schemas/WebpackOptions.d.json.ts +2 -0
- package/schemas/WebpackOptions.json +295 -75
- package/schemas/plugins/BannerPlugin.check.js +4 -3
- package/schemas/plugins/BannerPlugin.json +29 -2
- package/schemas/plugins/HtmlGeneratorOptions.check.js +4 -3
- package/schemas/plugins/HtmlParserOptions.check.js +4 -3
- package/schemas/plugins/IgnorePlugin.check.js +4 -3
- package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +4 -3
- package/schemas/plugins/ManifestPlugin.check.js +4 -3
- package/schemas/plugins/ManifestPlugin.json +3 -3
- package/schemas/plugins/ProgressPlugin.check.js +4 -3
- package/schemas/plugins/ProgressPlugin.json +2 -7
- package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
- package/schemas/plugins/SSRManifestPlugin.json +20 -0
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +4 -3
- package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
- package/schemas/plugins/WatchIgnorePlugin.check.js +4 -3
- package/schemas/plugins/WatchIgnorePlugin.json +12 -3
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetParserOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +4 -3
- package/schemas/plugins/container/ContainerPlugin.check.js +4 -3
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +4 -3
- package/schemas/plugins/container/ExternalsType.check.js +4 -3
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +4 -3
- package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +4 -3
- package/schemas/plugins/css/CssGeneratorOptions.check.js +4 -3
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +4 -3
- package/schemas/plugins/css/CssModuleParserOptions.check.js +4 -3
- package/schemas/plugins/css/CssParserOptions.check.js +4 -3
- package/schemas/plugins/debug/ProfilingPlugin.check.js +4 -3
- package/schemas/plugins/define/DotenvPluginOptions.check.js +7 -0
- package/schemas/plugins/define/DotenvPluginOptions.json +3 -0
- package/schemas/plugins/dll/DllPlugin.check.js +4 -3
- package/schemas/plugins/dll/DllReferencePlugin.check.js +4 -3
- package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +4 -3
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +4 -3
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +4 -3
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +4 -3
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +4 -3
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +4 -3
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +4 -3
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +4 -3
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +4 -3
- package/schemas/plugins/output/CleanOptions.check.js +7 -0
- package/schemas/plugins/output/CleanOptions.json +3 -0
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +4 -3
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +4 -3
- package/schemas/plugins/sharing/SharePlugin.json +32 -0
- package/types.d.ts +20780 -14174
- package/lib/LazyBarrel.js +0 -388
- package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
- package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
- package/lib/javascript/ChunkFormatHelpers.js +0 -72
- package/lib/javascript/grammar.js +0 -5546
- package/lib/javascript/parser.js +0 -1500
- package/lib/javascript/regexpData.js +0 -51
- package/lib/performance/getSourceModules.js +0 -22
- package/lib/util/Semaphore.js +0 -65
- package/lib/util/objectToMap.js +0 -15
- package/schemas/WebpackOptions.check.d.ts +0 -7
- package/schemas/_container.json +0 -155
- package/schemas/_sharing.json +0 -118
- package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
- package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
- package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
- package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
- /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
- /package/lib/{util → css}/topologicalSort.js +0 -0
- /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
- /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
- /package/lib/{util → fs}/StackedCacheMap.js +0 -0
- /package/lib/{util → javascript}/StackedMap.js +0 -0
- /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
- /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
- /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
- /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
- /package/lib/{util → optimize}/Queue.js +0 -0
- /package/lib/{util → stats}/smartGrouping.js +0 -0
|
@@ -5,27 +5,27 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
const memoize = require("./util/memoize");
|
|
8
|
+
const memoize = require("../util/memoize");
|
|
10
9
|
|
|
11
|
-
const { getEntryRuntime, mergeRuntime } = require("
|
|
10
|
+
const { getEntryRuntime, mergeRuntime } = require("../util/runtime");
|
|
11
|
+
const ModuleGraphConnection = require("./ModuleGraphConnection");
|
|
12
12
|
|
|
13
13
|
const getAsyncDependencyToInitialChunkError = memoize(() =>
|
|
14
|
-
require("
|
|
14
|
+
require("../errors/AsyncDependencyToInitialChunkError")
|
|
15
15
|
);
|
|
16
16
|
|
|
17
17
|
/** @import AsyncDependenciesBlock from "./AsyncDependenciesBlock" */
|
|
18
18
|
/** @import Chunk from "./Chunk" */
|
|
19
19
|
/** @import ChunkGroup from "./ChunkGroup" */
|
|
20
|
-
/** @import Compilation from "
|
|
20
|
+
/** @import Compilation from "../Compilation" */
|
|
21
21
|
/** @import DependenciesBlock from "./DependenciesBlock" */
|
|
22
22
|
/** @import { DependencyLocation } from "./Dependency" */
|
|
23
23
|
/** @import Entrypoint, { EntryOptions } from "./Entrypoint" */
|
|
24
|
-
/** @import Module from "
|
|
24
|
+
/** @import Module from "../module/Module" */
|
|
25
25
|
/** @import ModuleGraph from "./ModuleGraph" */
|
|
26
26
|
/** @import { ConnectionState } from "./ModuleGraphConnection" */
|
|
27
|
-
/** @import { Logger } from "
|
|
28
|
-
/** @import { RuntimeSpec } from "
|
|
27
|
+
/** @import { Logger } from "../logging/Logger" */
|
|
28
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
31
|
* Defines the queue item type used by this module.
|
|
@@ -43,13 +43,14 @@ const getAsyncDependencyToInitialChunkError = memoize(() =>
|
|
|
43
43
|
* @typedef {object} ChunkGroupInfo
|
|
44
44
|
* @property {ChunkGroup} chunkGroup the chunk group
|
|
45
45
|
* @property {RuntimeSpec} runtime the runtimes
|
|
46
|
-
* @property {boolean} initialized is this chunk group initialized
|
|
47
46
|
* @property {bigint | undefined} minAvailableModules current minimal set of modules available at this point
|
|
48
47
|
* @property {bigint[]} availableModulesToBeMerged enqueued updates to the minimal set of available modules
|
|
49
|
-
* @property {Set<Module>=} skippedItems modules that were skipped because module is already available in parent chunks (need to reconsider when minAvailableModules
|
|
48
|
+
* @property {Set<Module>=} skippedItems modules that were skipped because module is already available in parent chunks (need to reconsider when minAvailableModules changes)
|
|
50
49
|
* @property {Set<[Module, ModuleGraphConnection[]]>=} skippedModuleConnections referenced modules that where skipped because they were not active in this runtime
|
|
51
50
|
* @property {bigint | undefined} resultingAvailableModules set of modules available including modules from this chunk group
|
|
52
|
-
* @property {
|
|
51
|
+
* @property {bigint | undefined} connectedAvailableModules resultingAvailableModules last passed to children, to detect when it grows
|
|
52
|
+
* @property {Set<ChunkGroupInfo> | undefined} children set of children chunk groups, that will be revisited when resultingAvailableModules changes
|
|
53
|
+
* @property {Set<ChunkGroupInfo> | undefined} parents set of parent chunk groups, whose resultingAvailableModules intersect to minAvailableModules
|
|
53
54
|
* @property {Set<ChunkGroupInfo> | undefined} availableSources set of chunk groups that are the source for minAvailableModules
|
|
54
55
|
* @property {Set<ChunkGroupInfo> | undefined} availableChildren set of chunk groups which depend on the this chunk group as availableSource
|
|
55
56
|
* @property {number} preOrderIndex next pre order index
|
|
@@ -191,7 +192,11 @@ const extractBlockModules = (module, moduleGraph, runtime, blockModulesMap) => {
|
|
|
191
192
|
if (modules[i] === m) {
|
|
192
193
|
const merged = /** @type {ConnectionState} */ (modules[i + 1]);
|
|
193
194
|
/** @type {ModuleGraphConnection[]} */
|
|
194
|
-
(
|
|
195
|
+
(
|
|
196
|
+
/** @type {BlockModulesInFlattenTuples[number]} */ (
|
|
197
|
+
modules[i + 2]
|
|
198
|
+
)
|
|
199
|
+
).push(connection);
|
|
195
200
|
if (merged === true) continue outer;
|
|
196
201
|
modules[i + 1] = ModuleGraphConnection.addConnectionStates(
|
|
197
202
|
merged,
|
|
@@ -205,7 +210,8 @@ const extractBlockModules = (module, moduleGraph, runtime, blockModulesMap) => {
|
|
|
205
210
|
modules[length] = state;
|
|
206
211
|
length++;
|
|
207
212
|
/** @type {ModuleGraphConnection[]} */
|
|
208
|
-
(/** @type {
|
|
213
|
+
(/** @type {BlockModulesInFlattenTuples[number]} */ (modules[length])) =
|
|
214
|
+
[connection];
|
|
209
215
|
length++;
|
|
210
216
|
if (length > 30) {
|
|
211
217
|
// To avoid worse case performance, we will use an index map for
|
|
@@ -221,7 +227,11 @@ const extractBlockModules = (module, moduleGraph, runtime, blockModulesMap) => {
|
|
|
221
227
|
if (idx !== undefined) {
|
|
222
228
|
const merged = /** @type {ConnectionState} */ (modules[idx]);
|
|
223
229
|
/** @type {ModuleGraphConnection[]} */
|
|
224
|
-
(
|
|
230
|
+
(
|
|
231
|
+
/** @type {BlockModulesInFlattenTuples[number]} */ (
|
|
232
|
+
modules[idx + 1]
|
|
233
|
+
)
|
|
234
|
+
).push(connection);
|
|
225
235
|
if (merged === true) continue;
|
|
226
236
|
modules[idx] = ModuleGraphConnection.addConnectionStates(
|
|
227
237
|
merged,
|
|
@@ -235,7 +245,7 @@ const extractBlockModules = (module, moduleGraph, runtime, blockModulesMap) => {
|
|
|
235
245
|
length++;
|
|
236
246
|
/** @type {ModuleGraphConnection[]} */
|
|
237
247
|
(
|
|
238
|
-
/** @type {
|
|
248
|
+
/** @type {BlockModulesInFlattenTuples[number]} */
|
|
239
249
|
(modules[length])
|
|
240
250
|
) = [connection];
|
|
241
251
|
length++;
|
|
@@ -358,10 +368,21 @@ const visitModules = (
|
|
|
358
368
|
const module = /** @type {Module} */ (block.getRootBlock());
|
|
359
369
|
const memCache = moduleMemCaches && moduleMemCaches.get(module);
|
|
360
370
|
if (memCache !== undefined) {
|
|
371
|
+
// an optimization (e.g. side effects) can flip a connection's active
|
|
372
|
+
// state without the module changing — key the cache by the states too
|
|
373
|
+
let stateEtag = "";
|
|
374
|
+
for (const connection of moduleGraph.getOutgoingConnections(module)) {
|
|
375
|
+
if (!connection.dependency || !connection.module || connection.weak) {
|
|
376
|
+
continue;
|
|
377
|
+
}
|
|
378
|
+
const state = connection.getActiveState(runtime);
|
|
379
|
+
stateEtag += state === true ? "T" : state === false ? "F" : "O";
|
|
380
|
+
}
|
|
361
381
|
/** @type {BlockModulesMap} */
|
|
362
382
|
const map = memCache.provide(
|
|
363
383
|
"bundleChunkGraph.blockModules",
|
|
364
384
|
runtime,
|
|
385
|
+
stateEtag,
|
|
365
386
|
() => {
|
|
366
387
|
logger.time("visitModules: prepare");
|
|
367
388
|
const map = new Map();
|
|
@@ -421,7 +442,7 @@ const visitModules = (
|
|
|
421
442
|
const blockChunkGroups = new Map();
|
|
422
443
|
|
|
423
444
|
/** @type {Map<ChunkGroupInfo, Set<DependenciesBlock>>} */
|
|
424
|
-
const
|
|
445
|
+
const blocksByChunkGroupInfo = new Map();
|
|
425
446
|
|
|
426
447
|
/** @typedef {Map<string, ChunkGroupInfo>} NamedChunkGroup */
|
|
427
448
|
|
|
@@ -452,6 +473,8 @@ const visitModules = (
|
|
|
452
473
|
const queueConnect = new Map();
|
|
453
474
|
/** @type {Set<ChunkGroupInfo>} */
|
|
454
475
|
const chunkGroupsForCombining = new Set();
|
|
476
|
+
/** @type {Set<ChunkGroupInfo>} */
|
|
477
|
+
const chunkGroupsForGrowing = new Set();
|
|
455
478
|
|
|
456
479
|
// Fill queue with entrypoint modules
|
|
457
480
|
// Create ChunkGroupInfo for entrypoints
|
|
@@ -465,14 +488,15 @@ const visitModules = (
|
|
|
465
488
|
const chunkGroupInfo = {
|
|
466
489
|
depModule: null,
|
|
467
490
|
circular: false,
|
|
468
|
-
initialized: false,
|
|
469
491
|
chunkGroup,
|
|
470
492
|
runtime,
|
|
471
493
|
minAvailableModules: undefined,
|
|
472
494
|
availableModulesToBeMerged: [],
|
|
473
495
|
skippedItems: undefined,
|
|
474
496
|
resultingAvailableModules: undefined,
|
|
497
|
+
connectedAvailableModules: undefined,
|
|
475
498
|
children: undefined,
|
|
499
|
+
parents: undefined,
|
|
476
500
|
availableSources: undefined,
|
|
477
501
|
availableChildren: undefined,
|
|
478
502
|
preOrderIndex: 0,
|
|
@@ -597,7 +621,6 @@ const visitModules = (
|
|
|
597
621
|
depModule,
|
|
598
622
|
circular: b.circular,
|
|
599
623
|
chunkGroup: entrypoint,
|
|
600
|
-
initialized: false,
|
|
601
624
|
runtime:
|
|
602
625
|
entrypoint.options.runtime ||
|
|
603
626
|
/** @type {string | undefined} */ (entrypoint.name),
|
|
@@ -605,7 +628,9 @@ const visitModules = (
|
|
|
605
628
|
availableModulesToBeMerged: [],
|
|
606
629
|
skippedItems: undefined,
|
|
607
630
|
resultingAvailableModules: undefined,
|
|
631
|
+
connectedAvailableModules: undefined,
|
|
608
632
|
children: undefined,
|
|
633
|
+
parents: undefined,
|
|
609
634
|
availableSources: undefined,
|
|
610
635
|
availableChildren: undefined,
|
|
611
636
|
preOrderIndex: 0,
|
|
@@ -619,25 +644,14 @@ const visitModules = (
|
|
|
619
644
|
? entryOptions.asyncChunks
|
|
620
645
|
: chunkGroupInfo.asyncChunks
|
|
621
646
|
};
|
|
622
|
-
chunkGroupInfoMap.set(
|
|
623
|
-
entrypoint,
|
|
624
|
-
/** @type {ChunkGroupInfo} */
|
|
625
|
-
(cgi)
|
|
626
|
-
);
|
|
647
|
+
chunkGroupInfoMap.set(entrypoint, cgi);
|
|
627
648
|
|
|
628
649
|
chunkGraph.connectBlockAndChunkGroup(b, entrypoint);
|
|
629
650
|
if (chunkName) {
|
|
630
|
-
namedAsyncEntrypoints.set(
|
|
631
|
-
chunkName,
|
|
632
|
-
/** @type {ChunkGroupInfo} */
|
|
633
|
-
(cgi)
|
|
634
|
-
);
|
|
651
|
+
namedAsyncEntrypoints.set(chunkName, cgi);
|
|
635
652
|
}
|
|
636
653
|
if (!b.circular && depModule) {
|
|
637
|
-
depModuleAsyncEntrypoints.set(
|
|
638
|
-
depModule,
|
|
639
|
-
/** @type {ChunkGroupInfo} */ (cgi)
|
|
640
|
-
);
|
|
654
|
+
depModuleAsyncEntrypoints.set(depModule, cgi);
|
|
641
655
|
}
|
|
642
656
|
} else {
|
|
643
657
|
entrypoint = /** @type {Entrypoint} */ (cgi.chunkGroup);
|
|
@@ -674,7 +688,7 @@ const visitModules = (
|
|
|
674
688
|
module,
|
|
675
689
|
chunk: entrypoint.chunks[0],
|
|
676
690
|
chunkGroup: entrypoint,
|
|
677
|
-
chunkGroupInfo:
|
|
691
|
+
chunkGroupInfo: cgi
|
|
678
692
|
});
|
|
679
693
|
} else if (!chunkGroupInfo.asyncChunks || !chunkGroupInfo.chunkLoading) {
|
|
680
694
|
// Just queue the block into the current chunk group
|
|
@@ -700,14 +714,15 @@ const visitModules = (
|
|
|
700
714
|
cgi = {
|
|
701
715
|
depModule,
|
|
702
716
|
circular: b.circular,
|
|
703
|
-
initialized: false,
|
|
704
717
|
chunkGroup: c,
|
|
705
718
|
runtime: chunkGroupInfo.runtime,
|
|
706
719
|
minAvailableModules: undefined,
|
|
707
720
|
availableModulesToBeMerged: [],
|
|
708
721
|
skippedItems: undefined,
|
|
709
722
|
resultingAvailableModules: undefined,
|
|
723
|
+
connectedAvailableModules: undefined,
|
|
710
724
|
children: undefined,
|
|
725
|
+
parents: undefined,
|
|
711
726
|
availableSources: undefined,
|
|
712
727
|
availableChildren: undefined,
|
|
713
728
|
preOrderIndex: 0,
|
|
@@ -953,6 +968,12 @@ const visitModules = (
|
|
|
953
968
|
let chunkMask = /** @type {bigint} */ (maskByChunk.get(chunk));
|
|
954
969
|
chunkMask |= ONE_BIGINT << BigInt(moduleOrdinal);
|
|
955
970
|
maskByChunk.set(chunk, chunkMask);
|
|
971
|
+
if (chunkGroupInfo.resultingAvailableModules !== undefined) {
|
|
972
|
+
// A later block reached this chunk group after its children read this value,
|
|
973
|
+
// we clear it and mark outdated so the children reconnect and drop it
|
|
974
|
+
chunkGroupInfo.resultingAvailableModules = undefined;
|
|
975
|
+
outdatedChunkGroupInfo.add(chunkGroupInfo);
|
|
976
|
+
}
|
|
956
977
|
}
|
|
957
978
|
// fallthrough
|
|
958
979
|
case ENTER_MODULE: {
|
|
@@ -1009,6 +1030,19 @@ const visitModules = (
|
|
|
1009
1030
|
}
|
|
1010
1031
|
};
|
|
1011
1032
|
|
|
1033
|
+
/**
|
|
1034
|
+
* Get the modules in the chunks of a chunk group.
|
|
1035
|
+
* @param {ChunkGroupInfo} chunkGroupInfo The info object for the chunk group
|
|
1036
|
+
* @returns {bigint} The mask of modules in the chunks of the chunk group
|
|
1037
|
+
*/
|
|
1038
|
+
const getChunkGroupMask = (chunkGroupInfo) => {
|
|
1039
|
+
let mask = ZERO_BIGINT;
|
|
1040
|
+
for (const chunk of chunkGroupInfo.chunkGroup.chunks) {
|
|
1041
|
+
mask |= /** @type {bigint} */ (maskByChunk.get(chunk));
|
|
1042
|
+
}
|
|
1043
|
+
return mask;
|
|
1044
|
+
};
|
|
1045
|
+
|
|
1012
1046
|
/**
|
|
1013
1047
|
* Calculate resulting available modules.
|
|
1014
1048
|
* @param {ChunkGroupInfo} chunkGroupInfo The info object for the chunk group
|
|
@@ -1019,18 +1053,9 @@ const visitModules = (
|
|
|
1019
1053
|
return chunkGroupInfo.resultingAvailableModules;
|
|
1020
1054
|
}
|
|
1021
1055
|
|
|
1022
|
-
let resultingAvailableModules = /** @type {bigint} */ (
|
|
1023
|
-
chunkGroupInfo.minAvailableModules
|
|
1024
|
-
);
|
|
1025
|
-
|
|
1026
|
-
// add the modules from the chunk group to the set
|
|
1027
|
-
for (const chunk of chunkGroupInfo.chunkGroup.chunks) {
|
|
1028
|
-
const mask = /** @type {bigint} */ (maskByChunk.get(chunk));
|
|
1029
|
-
resultingAvailableModules |= mask;
|
|
1030
|
-
}
|
|
1031
|
-
|
|
1032
1056
|
return (chunkGroupInfo.resultingAvailableModules =
|
|
1033
|
-
|
|
1057
|
+
/** @type {bigint} */ (chunkGroupInfo.minAvailableModules) |
|
|
1058
|
+
getChunkGroupMask(chunkGroupInfo));
|
|
1034
1059
|
};
|
|
1035
1060
|
|
|
1036
1061
|
const processConnectQueue = () => {
|
|
@@ -1048,13 +1073,30 @@ const visitModules = (
|
|
|
1048
1073
|
// 2. Calculate resulting available modules
|
|
1049
1074
|
const resultingAvailableModules =
|
|
1050
1075
|
calculateResultingAvailableModules(chunkGroupInfo);
|
|
1076
|
+
const connectedAvailableModules =
|
|
1077
|
+
chunkGroupInfo.connectedAvailableModules;
|
|
1078
|
+
// Merging only intersects, so when this grew all children need the growing phase
|
|
1079
|
+
if (
|
|
1080
|
+
connectedAvailableModules !== undefined &&
|
|
1081
|
+
resultingAvailableModules !== connectedAvailableModules &&
|
|
1082
|
+
(resultingAvailableModules & ~connectedAvailableModules) !== ZERO_BIGINT
|
|
1083
|
+
) {
|
|
1084
|
+
for (const child of chunkGroupInfo.children) {
|
|
1085
|
+
if (!child.chunkGroup.isInitial()) chunkGroupsForGrowing.add(child);
|
|
1086
|
+
}
|
|
1087
|
+
}
|
|
1088
|
+
chunkGroupInfo.connectedAvailableModules = resultingAvailableModules;
|
|
1051
1089
|
|
|
1052
1090
|
const runtime = chunkGroupInfo.runtime;
|
|
1053
1091
|
|
|
1054
1092
|
// 3. Update chunk group info
|
|
1055
|
-
for (const [target,
|
|
1093
|
+
for (const [target, queueItem] of targets) {
|
|
1094
|
+
if (target.parents === undefined) {
|
|
1095
|
+
target.parents = new Set();
|
|
1096
|
+
}
|
|
1097
|
+
target.parents.add(chunkGroupInfo);
|
|
1056
1098
|
target.availableModulesToBeMerged.push(resultingAvailableModules);
|
|
1057
|
-
chunkGroupsForMerging.add([target,
|
|
1099
|
+
chunkGroupsForMerging.add([target, queueItem]);
|
|
1058
1100
|
const oldRuntime = target.runtime;
|
|
1059
1101
|
const newRuntime = mergeRuntime(oldRuntime, runtime);
|
|
1060
1102
|
if (oldRuntime !== newRuntime) {
|
|
@@ -1072,7 +1114,7 @@ const visitModules = (
|
|
|
1072
1114
|
statProcessedChunkGroupsForMerging += chunkGroupsForMerging.size;
|
|
1073
1115
|
|
|
1074
1116
|
// Execute the merge
|
|
1075
|
-
for (const [info,
|
|
1117
|
+
for (const [info, queueItem] of chunkGroupsForMerging) {
|
|
1076
1118
|
const availableModulesToBeMerged = info.availableModulesToBeMerged;
|
|
1077
1119
|
const cachedMinAvailableModules = info.minAvailableModules;
|
|
1078
1120
|
let minAvailableModules = cachedMinAvailableModules;
|
|
@@ -1099,25 +1141,17 @@ const visitModules = (
|
|
|
1099
1141
|
outdatedChunkGroupInfo.add(info);
|
|
1100
1142
|
}
|
|
1101
1143
|
|
|
1102
|
-
if (
|
|
1103
|
-
let blocks =
|
|
1104
|
-
if (
|
|
1105
|
-
|
|
1144
|
+
if (queueItem !== null) {
|
|
1145
|
+
let blocks = blocksByChunkGroupInfo.get(info);
|
|
1146
|
+
if (blocks === undefined) {
|
|
1147
|
+
blocks = new Set();
|
|
1148
|
+
blocksByChunkGroupInfo.set(info, blocks);
|
|
1106
1149
|
}
|
|
1107
1150
|
|
|
1108
|
-
//
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
if (!blocks.has(processBlock.block)) {
|
|
1113
|
-
needWalkBlock = true;
|
|
1114
|
-
blocks.add(processBlock.block);
|
|
1115
|
-
}
|
|
1116
|
-
|
|
1117
|
-
if (needWalkBlock) {
|
|
1118
|
-
info.initialized = true;
|
|
1119
|
-
queueDelayed.push(processBlock);
|
|
1120
|
-
}
|
|
1151
|
+
// A walk depends only on the block and minAvailableModules: skip it when both are seen
|
|
1152
|
+
const newBlock = !blocks.has(queueItem.block);
|
|
1153
|
+
if (newBlock) blocks.add(queueItem.block);
|
|
1154
|
+
if (newBlock || changed) queueDelayed.push(queueItem);
|
|
1121
1155
|
}
|
|
1122
1156
|
}
|
|
1123
1157
|
chunkGroupsForMerging.clear();
|
|
@@ -1152,6 +1186,47 @@ const visitModules = (
|
|
|
1152
1186
|
chunkGroupsForCombining.clear();
|
|
1153
1187
|
};
|
|
1154
1188
|
|
|
1189
|
+
const processChunkGroupsForGrowing = () => {
|
|
1190
|
+
for (const info of chunkGroupsForGrowing) {
|
|
1191
|
+
/** @type {bigint | undefined} */
|
|
1192
|
+
let availableModules;
|
|
1193
|
+
for (const parent of /** @type {Set<ChunkGroupInfo>} */ (info.parents)) {
|
|
1194
|
+
const resultingAvailableModules =
|
|
1195
|
+
calculateResultingAvailableModules(parent);
|
|
1196
|
+
availableModules =
|
|
1197
|
+
availableModules === undefined
|
|
1198
|
+
? resultingAvailableModules
|
|
1199
|
+
: availableModules & resultingAvailableModules;
|
|
1200
|
+
// Each parent covers minAvailableModules, so the intersection cannot drop below it
|
|
1201
|
+
if (availableModules === info.minAvailableModules) break;
|
|
1202
|
+
}
|
|
1203
|
+
if (availableModules === info.minAvailableModules) continue;
|
|
1204
|
+
info.minAvailableModules = availableModules;
|
|
1205
|
+
info.resultingAvailableModules = undefined;
|
|
1206
|
+
outdatedChunkGroupInfo.add(info);
|
|
1207
|
+
// Reverse of revisiting skipped items: move the own modules now available
|
|
1208
|
+
// to skippedItems, where they are added back if it shrinks again
|
|
1209
|
+
for (const chunk of info.chunkGroup.chunks) {
|
|
1210
|
+
let chunkMask = /** @type {bigint} */ (maskByChunk.get(chunk));
|
|
1211
|
+
const coveredModules =
|
|
1212
|
+
chunkMask & /** @type {bigint} */ (availableModules);
|
|
1213
|
+
if (coveredModules === ZERO_BIGINT) continue;
|
|
1214
|
+
if (info.skippedItems === undefined) {
|
|
1215
|
+
info.skippedItems = new Set();
|
|
1216
|
+
}
|
|
1217
|
+
for (const module of chunkGraph.getChunkModules(chunk)) {
|
|
1218
|
+
const ordinal = getModuleOrdinal(module);
|
|
1219
|
+
if (!isOrdinalSetInMask(coveredModules, ordinal)) continue;
|
|
1220
|
+
chunkGraph.disconnectChunkAndModule(chunk, module);
|
|
1221
|
+
chunkMask &= ~(ONE_BIGINT << BigInt(ordinal));
|
|
1222
|
+
info.skippedItems.add(module);
|
|
1223
|
+
}
|
|
1224
|
+
maskByChunk.set(chunk, chunkMask);
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
chunkGroupsForGrowing.clear();
|
|
1228
|
+
};
|
|
1229
|
+
|
|
1155
1230
|
const processOutdatedChunkGroupInfo = () => {
|
|
1156
1231
|
statChunkGroupInfoUpdated += outdatedChunkGroupInfo.size;
|
|
1157
1232
|
// Revisit skipped elements
|
|
@@ -1209,21 +1284,21 @@ const visitModules = (
|
|
|
1209
1284
|
}
|
|
1210
1285
|
}
|
|
1211
1286
|
|
|
1212
|
-
//
|
|
1213
|
-
if (info.children !== undefined) {
|
|
1287
|
+
// 3. Reconsider children chunk groups
|
|
1288
|
+
if (info.children !== undefined && info.children.size > 0) {
|
|
1214
1289
|
statChildChunkGroupsReconnected += info.children.size;
|
|
1290
|
+
let connectList = queueConnect.get(info);
|
|
1291
|
+
if (connectList === undefined) {
|
|
1292
|
+
/** @type {ConnectList} */
|
|
1293
|
+
connectList = new Set();
|
|
1294
|
+
queueConnect.set(info, connectList);
|
|
1295
|
+
}
|
|
1215
1296
|
for (const cgi of info.children) {
|
|
1216
|
-
let connectList = queueConnect.get(info);
|
|
1217
|
-
if (connectList === undefined) {
|
|
1218
|
-
/** @type {ConnectList} */
|
|
1219
|
-
connectList = new Set();
|
|
1220
|
-
queueConnect.set(info, connectList);
|
|
1221
|
-
}
|
|
1222
1297
|
connectList.add([cgi, null]);
|
|
1223
1298
|
}
|
|
1224
1299
|
}
|
|
1225
1300
|
|
|
1226
|
-
//
|
|
1301
|
+
// 4. Reconsider chunk groups for combining
|
|
1227
1302
|
if (info.availableChildren !== undefined) {
|
|
1228
1303
|
for (const cgi of info.availableChildren) {
|
|
1229
1304
|
chunkGroupsForCombining.add(cgi);
|
|
@@ -1236,7 +1311,12 @@ const visitModules = (
|
|
|
1236
1311
|
|
|
1237
1312
|
// Iterative traversal of the Module graph
|
|
1238
1313
|
// Recursive would be simpler to write but could result in Stack Overflows
|
|
1239
|
-
while (
|
|
1314
|
+
while (
|
|
1315
|
+
queue.length ||
|
|
1316
|
+
queueConnect.size ||
|
|
1317
|
+
outdatedChunkGroupInfo.size ||
|
|
1318
|
+
chunkGroupsForCombining.size
|
|
1319
|
+
) {
|
|
1240
1320
|
logger.time("visitModules: visiting");
|
|
1241
1321
|
processQueue();
|
|
1242
1322
|
logger.timeAggregateEnd("visitModules: prepare");
|
|
@@ -1274,12 +1354,25 @@ const visitModules = (
|
|
|
1274
1354
|
queue = queueDelayed.reverse();
|
|
1275
1355
|
queueDelayed = tempQueue;
|
|
1276
1356
|
}
|
|
1357
|
+
|
|
1358
|
+
// Grow only after the shrinking phase finishes, so growth
|
|
1359
|
+
// reads each parent's final `resultingAvailableModules`
|
|
1360
|
+
if (
|
|
1361
|
+
queue.length === 0 &&
|
|
1362
|
+
queueConnect.size === 0 &&
|
|
1363
|
+
chunkGroupsForCombining.size === 0 &&
|
|
1364
|
+
chunkGroupsForGrowing.size > 0
|
|
1365
|
+
) {
|
|
1366
|
+
logger.time("visitModules: growing available modules");
|
|
1367
|
+
processChunkGroupsForGrowing();
|
|
1368
|
+
logger.timeEnd("visitModules: growing available modules");
|
|
1369
|
+
}
|
|
1277
1370
|
}
|
|
1278
1371
|
|
|
1279
1372
|
for (const info of outdatedOrderIndexChunkGroups) {
|
|
1280
1373
|
const { chunkGroup, runtime } = info;
|
|
1281
1374
|
|
|
1282
|
-
const blocks =
|
|
1375
|
+
const blocks = blocksByChunkGroupInfo.get(info);
|
|
1283
1376
|
|
|
1284
1377
|
if (!blocks) {
|
|
1285
1378
|
continue;
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
const { first } = require("../util/SetHelpers");
|
|
9
|
+
|
|
8
10
|
const NO_MARKER = 0;
|
|
9
11
|
const IN_PROGRESS_MARKER = 1;
|
|
10
12
|
const DONE_MARKER = 2;
|
|
@@ -13,16 +15,16 @@ const CANDIDATE_MARKER = 3;
|
|
|
13
15
|
/**
|
|
14
16
|
* Defines the nodes type used by this module.
|
|
15
17
|
* @template T
|
|
16
|
-
* @typedef {Set<
|
|
18
|
+
* @typedef {Set<GraphNode<T>>} Nodes
|
|
17
19
|
*/
|
|
18
20
|
|
|
19
21
|
/**
|
|
20
22
|
* Represents the node runtime component.
|
|
21
23
|
* @template T
|
|
22
24
|
*/
|
|
23
|
-
class
|
|
25
|
+
class GraphNode {
|
|
24
26
|
/**
|
|
25
|
-
* Creates an instance of
|
|
27
|
+
* Creates an instance of GraphNode.
|
|
26
28
|
* @param {T} item the value of the node
|
|
27
29
|
*/
|
|
28
30
|
constructor(item) {
|
|
@@ -56,8 +58,8 @@ class SCC {
|
|
|
56
58
|
* Defines the stack entry type used by this module.
|
|
57
59
|
* @template T
|
|
58
60
|
* @typedef {object} StackEntry
|
|
59
|
-
* @property {
|
|
60
|
-
* @property {
|
|
61
|
+
* @property {GraphNode<T>} node
|
|
62
|
+
* @property {GraphNode<T>[]} openEdges
|
|
61
63
|
*/
|
|
62
64
|
|
|
63
65
|
/**
|
|
@@ -68,10 +70,10 @@ class SCC {
|
|
|
68
70
|
* @returns {Iterable<T>} graph roots of the items
|
|
69
71
|
*/
|
|
70
72
|
module.exports = (items, getDependencies) => {
|
|
71
|
-
/** @type {Map<T,
|
|
73
|
+
/** @type {Map<T, GraphNode<T>>} */
|
|
72
74
|
const itemToNode = new Map();
|
|
73
75
|
for (const item of items) {
|
|
74
|
-
const node = new
|
|
76
|
+
const node = new GraphNode(item);
|
|
75
77
|
itemToNode.set(item, node);
|
|
76
78
|
}
|
|
77
79
|
|
|
@@ -112,7 +114,7 @@ module.exports = (items, getDependencies) => {
|
|
|
112
114
|
// Process one unvisited outgoing edge if available
|
|
113
115
|
if (topOfStack.openEdges.length > 0) {
|
|
114
116
|
const dependency =
|
|
115
|
-
/** @type {
|
|
117
|
+
/** @type {GraphNode<T>} */
|
|
116
118
|
(topOfStack.openEdges.pop());
|
|
117
119
|
const depSCC = dependency.scc;
|
|
118
120
|
switch (depSCC.marker) {
|
|
@@ -148,7 +150,7 @@ module.exports = (items, getDependencies) => {
|
|
|
148
150
|
case CANDIDATE_MARKER:
|
|
149
151
|
// This finished SCC was previously considered as root SCC
|
|
150
152
|
// We just found a new incoming edge, so it is no longer a candidate
|
|
151
|
-
rootSCCs.delete(
|
|
153
|
+
rootSCCs.delete(depSCC);
|
|
152
154
|
depSCC.marker = DONE_MARKER;
|
|
153
155
|
break;
|
|
154
156
|
case DONE_MARKER:
|
|
@@ -183,6 +185,10 @@ module.exports = (items, getDependencies) => {
|
|
|
183
185
|
// For each root SCC, we select node with the most incoming edges
|
|
184
186
|
// from within the same SCC
|
|
185
187
|
for (const scc of rootSCCs) {
|
|
188
|
+
if (scc.nodes.size === 1) {
|
|
189
|
+
rootNodes.add(/** @type {GraphNode<T>} */ (first(scc.nodes)).item);
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
186
192
|
let max = 0;
|
|
187
193
|
/** @type {Nodes<T>} */
|
|
188
194
|
const nodes = new Set(scc.nodes);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
/** @import Dependency, { DependencyKinds } from "./Dependency" */
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Returns whether a dependency is of the given kind; use it wherever a plugin's dependency can reach.
|
|
12
|
+
* A dependency extending another webpack copy's `Dependency` has no `is()` and is of no kind.
|
|
13
|
+
* @template {keyof DependencyKinds} K
|
|
14
|
+
* @param {Dependency} dependency a dependency
|
|
15
|
+
* @param {K} kind a dependency kind
|
|
16
|
+
* @returns {dependency is DependencyKinds[K]} true when the dependency is of that kind
|
|
17
|
+
*/
|
|
18
|
+
const isDependencyKind = (dependency, kind) =>
|
|
19
|
+
// TODO in the next major release: remove, require plugin dependencies to extend the current
|
|
20
|
+
// `Dependency` and call `dependency.is(kind)` directly
|
|
21
|
+
typeof dependency.is === "function" && dependency.is(kind);
|
|
22
|
+
|
|
23
|
+
module.exports = isDependencyKind;
|
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
/** @typedef {string | number} ModuleId */
|
|
9
|
-
/** @typedef {
|
|
9
|
+
/** @typedef {object} HotData */
|
|
10
10
|
/** @typedef {(data: HotData) => void} DisposeHandler */
|
|
11
11
|
/** @typedef {(outdatedDependencies: ModuleId[]) => void} AcceptCallback */
|
|
12
12
|
/** @typedef {(err: Error, context: { moduleId: ModuleId, dependencyId?: ModuleId, module?: HotModule }) => void} AcceptErrorHandler */
|
|
13
13
|
/** @typedef {(status: string) => (Promise<void> | void)} StatusHandler */
|
|
14
|
-
/** @typedef {
|
|
14
|
+
/** @typedef {import("./JavascriptHotModuleReplacement.runtime").ApplyOptions} ApplyOptions */
|
|
15
15
|
/** @typedef {(reportError: (err: Error) => void) => Promise<ModuleId[]>} ApplyFn */
|
|
16
|
-
/** @typedef {(chunkId: ModuleId, fetchPriority?: string) => Promise<
|
|
17
|
-
/** @typedef {(chunkId: ModuleId, importFn: () => Promise<
|
|
16
|
+
/** @typedef {(chunkId: ModuleId, fetchPriority?: string) => Promise<void[] | void>} EnsureChunk */
|
|
17
|
+
/** @typedef {<T>(chunkId: ModuleId, importFn: () => Promise<T>) => Promise<T>} AnalyzableChunkImport */
|
|
18
18
|
/** @typedef {{ (id: ModuleId): unknown, e?: EnsureChunk, ei?: AnalyzableChunkImport, [name: string]: unknown }} WebpackRequire */
|
|
19
19
|
|
|
20
20
|
/**
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
* @property {Record<string, string>=} n the stylesheet name of each updated chunk whose name moved with its content
|
|
33
33
|
*/
|
|
34
34
|
|
|
35
|
-
/** @typedef {(chunkIds: ModuleId[], removedChunks: ModuleId[], removedModules: ModuleId[], promises: Promise<
|
|
35
|
+
/** @typedef {(chunkIds: ModuleId[], removedChunks: ModuleId[], removedModules: ModuleId[], promises: (Promise<void> | undefined)[], applyHandlers: ApplyHandler[], updatedModulesList: ModuleId[], css: CssUpdateManifest | undefined, forceLoadChunks: ModuleId[] | undefined) => void} DownloadUpdateHandler */
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
38
|
* @typedef {object} HMRManifest
|
|
@@ -56,14 +56,14 @@
|
|
|
56
56
|
* @property {Record<ModuleId, AcceptCallback>} _acceptedDependencies accept callbacks by dependency id
|
|
57
57
|
* @property {Record<ModuleId, AcceptErrorHandler | undefined>} _acceptedErrorHandlers error handlers by dependency id
|
|
58
58
|
* @property {Record<ModuleId, boolean>} _declinedDependencies declined dependency ids
|
|
59
|
-
* @property {boolean |
|
|
59
|
+
* @property {boolean | AcceptErrorHandler} _selfAccepted true or the self-accept error handler
|
|
60
60
|
* @property {boolean} _selfDeclined module declined itself
|
|
61
61
|
* @property {boolean} _selfInvalidated module invalidated itself
|
|
62
62
|
* @property {DisposeHandler[]} _disposeHandlers registered dispose handlers
|
|
63
63
|
* @property {boolean} _main module is the entry of the update
|
|
64
64
|
* @property {() => void} _requireSelf re-require the module on apply
|
|
65
65
|
* @property {boolean} active module is not disposed
|
|
66
|
-
* @property {(dep?: ModuleId | ModuleId[] |
|
|
66
|
+
* @property {(dep?: ModuleId | ModuleId[] | AcceptErrorHandler, callback?: AcceptCallback, errorHandler?: AcceptErrorHandler) => void} accept accept updates
|
|
67
67
|
* @property {(dep?: ModuleId | ModuleId[]) => void} decline decline updates
|
|
68
68
|
* @property {(callback: DisposeHandler) => void} dispose add a dispose handler
|
|
69
69
|
* @property {(callback: DisposeHandler) => void} addDisposeHandler add a dispose handler
|
|
@@ -363,8 +363,9 @@ module.exports = function () {
|
|
|
363
363
|
}
|
|
364
364
|
|
|
365
365
|
/**
|
|
366
|
-
* @
|
|
367
|
-
* @
|
|
366
|
+
* @template T
|
|
367
|
+
* @param {Promise<T>} promise blocking promise
|
|
368
|
+
* @returns {Promise<T>} the same promise
|
|
368
369
|
*/
|
|
369
370
|
function trackBlockingPromise(promise) {
|
|
370
371
|
switch (currentStatus) {
|
|
@@ -435,7 +436,7 @@ module.exports = function () {
|
|
|
435
436
|
update.f
|
|
436
437
|
);
|
|
437
438
|
return promises;
|
|
438
|
-
}, /** @type {Promise<
|
|
439
|
+
}, /** @type {(Promise<void> | undefined)[]} */ ([]))
|
|
439
440
|
).then(function () {
|
|
440
441
|
return waitForBlockingPromises(function () {
|
|
441
442
|
if (applyOnUpdate) {
|
|
@@ -479,7 +480,7 @@ module.exports = function () {
|
|
|
479
480
|
var results = /** @type {ApplyHandler[]} */ (
|
|
480
481
|
currentUpdateApplyHandlers
|
|
481
482
|
).map(function (handler) {
|
|
482
|
-
return handler(
|
|
483
|
+
return handler(options);
|
|
483
484
|
});
|
|
484
485
|
currentUpdateApplyHandlers = undefined;
|
|
485
486
|
|