webpack 5.111.0 → 5.112.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/Chunk.js +3 -966
- package/lib/Compilation.js +237 -138
- package/lib/Compiler.js +23 -24
- package/lib/Dependency.js +3 -551
- package/lib/DependencyTemplate.js +3 -69
- 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 +43 -24
- package/lib/NormalModule.js +3 -2190
- 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 +15 -9
- package/lib/asset/AssetBytesParser.js +3 -3
- package/lib/asset/AssetGenerator.js +61 -38
- package/lib/asset/AssetModule.js +2 -2
- package/lib/asset/AssetModulesPlugin.js +6 -9
- package/lib/asset/AssetParser.js +3 -3
- package/lib/asset/AssetSourceGenerator.js +15 -9
- package/lib/asset/AssetSourceParser.js +3 -3
- package/lib/asset/RawDataUrlModule.js +17 -10
- package/lib/asset/WebManifestGenerator.js +7 -7
- package/lib/asset/WebManifestParser.js +5 -5
- package/lib/async-modules/AsyncModuleHelpers.js +6 -5
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +4 -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} +5 -5
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +6 -6
- package/lib/cache/MemoryWithGcCachePlugin.js +9 -10
- package/lib/cache/PackFileCacheStrategy.js +11 -28
- package/lib/cache/ResolverCachePlugin.js +8 -4
- package/lib/cache/getLazyHashedEtag.js +3 -5
- 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} +217 -200
- package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
- package/lib/config/browserslistTargetHandler.js +3 -9
- package/lib/{cli.js → config/cli.js} +5 -158
- package/lib/config/defaults.js +192 -122
- package/lib/config/getClaimedAssetTypes.js +28 -21
- package/lib/config/normalization.js +18 -7
- package/lib/config/target.js +13 -4
- 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/{ContextExclusionPlugin.js → context/ContextExclusionPlugin.js} +1 -1
- package/lib/{ContextModule.js → context/ContextModule.js} +50 -36
- package/lib/{ContextModuleFactory.js → context/ContextModuleFactory.js} +25 -24
- package/lib/{ContextReplacementPlugin.js → context/ContextReplacementPlugin.js} +4 -4
- package/lib/css/CssGenerator.js +57 -42
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
- package/lib/css/CssLoadingRuntimeModule.js +77 -44
- package/lib/css/CssModule.js +27 -29
- package/lib/css/CssModulesPlugin.js +128 -44
- package/lib/css/CssParser.js +700 -311
- package/lib/css/CssServerStylesRuntimeModule.js +3 -3
- package/lib/css/cssMinify.js +130 -54
- package/lib/css/data.js +7017 -4648
- package/lib/css/syntax-parser.js +19873 -0
- package/lib/css/syntax-printer.js +6037 -0
- package/lib/css/syntax.js +37 -17370
- package/lib/debug/ProfilingPlugin.js +55 -23
- package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
- package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +25 -29
- package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
- 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 -10
- 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} +10 -10
- 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} +176 -44
- package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
- package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
- package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
- package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +39 -35
- package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
- package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
- 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} +19 -20
- 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} +5 -5
- 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} +34 -18
- 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} +9 -9
- 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} +4 -4
- package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
- 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} +12 -11
- 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 -100
- package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +26 -22
- 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} +26 -21
- 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} +40 -41
- package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +22 -21
- package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
- package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +62 -93
- package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +83 -49
- 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} +136 -122
- package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +68 -43
- package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +68 -65
- package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
- package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
- package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
- package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +199 -97
- package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
- package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +86 -43
- package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +110 -61
- package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
- package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
- package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
- package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
- package/lib/{util → dependencies/helpers}/chainedImports.js +8 -9
- 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} +125 -243
- package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
- package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +72 -23
- package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +53 -19
- 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} +20 -20
- 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} +126 -107
- 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} +34 -25
- package/lib/{url → dependencies/url}/URLParserPlugin.js +22 -26
- 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} +46 -54
- package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +28 -20
- package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +25 -27
- 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} +207 -129
- 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 +20 -18
- 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 +11 -9
- package/lib/dll/DllModuleFactory.js +3 -3
- package/lib/dll/DllPlugin.js +18 -6
- package/lib/dll/DllReferencePlugin.js +102 -26
- 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/{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/errors/ErrorHelpers.js +222 -0
- 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/{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 +12 -3
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
- package/lib/{ExternalModule.js → externals/ExternalModule.js} +85 -63
- package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
- 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} +187 -80
- package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
- package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
- package/lib/graph/Dependency.js +628 -0
- package/lib/graph/Entrypoint.js +136 -0
- package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +151 -99
- package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
- package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +36 -39
- package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
- package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +163 -72
- package/lib/{util → graph}/findGraphRoots.js +20 -21
- package/lib/graph/isDependencyKind.js +23 -0
- package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
- package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +49 -47
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
- package/lib/hmr/LazyCompilationPlugin.js +34 -26
- package/lib/html/HtmlGenerator.js +168 -125
- package/lib/html/HtmlModule.js +6 -2
- package/lib/html/HtmlModulesPlugin.js +260 -215
- package/lib/html/HtmlParser.js +598 -292
- package/lib/html/builtinEmbeddedRenderer.js +60 -13
- package/lib/html/data.js +23 -1
- package/lib/html/htmlMinify.js +120 -51
- package/lib/html/syntax-parser.js +15796 -0
- package/lib/html/syntax-printer.js +1034 -0
- package/lib/html/syntax.js +37 -14062
- package/lib/html/xmlMinify.js +67 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +31 -4
- 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 +348 -99
- package/lib/{APIPlugin.js → javascript/APIPlugin.js} +29 -30
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
- package/lib/javascript/BasicEvaluatedExpression.js +4 -4
- package/lib/javascript/ChunkHelpers.js +64 -4
- package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
- package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +10 -11
- package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +90 -139
- package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
- package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
- package/lib/javascript/JavascriptGenerator.js +25 -18
- package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
- package/lib/javascript/JavascriptModule.js +4 -3
- package/lib/javascript/JavascriptModulesPlugin.js +458 -256
- package/lib/javascript/JavascriptParser.js +916 -287
- package/lib/javascript/JavascriptParserHelpers.js +1 -1
- package/lib/javascript/MergedEntryExports.js +196 -0
- package/lib/javascript/ScopeAnalyzer.js +3840 -5
- package/lib/javascript/StartupHelpers.js +6 -6
- package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
- 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 +18561 -0
- package/lib/javascript/syntax-printer-data.js +933 -0
- package/lib/javascript/syntax-printer.js +47106 -0
- package/lib/javascript/syntax.js +20 -10946
- package/lib/json/JsonData.js +1 -1
- package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
- package/lib/json/JsonGenerator.js +17 -11
- package/lib/json/JsonModule.js +2 -2
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -5
- 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 +27 -11
- package/lib/library/EnableLibraryPlugin.js +1 -1
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
- package/lib/library/JsonpLibraryPlugin.js +1 -1
- package/lib/library/LibraryTemplatePlugin.js +53 -0
- package/lib/library/ModuleLibraryPlugin.js +207 -285
- 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 +27 -2
- package/lib/loaders/LoaderRunner.js +160 -22
- package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
- 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} +38 -14
- package/lib/{Module.js → module/Module.js} +122 -54
- package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
- package/lib/module/NormalModule.js +2348 -0
- package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
- package/lib/module/NullFactory.js +29 -0
- package/lib/{Parser.js → module/Parser.js} +3 -3
- package/lib/module/RawModule.js +208 -0
- package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
- package/lib/{util → module}/extractSourceMap.js +2 -2
- package/lib/{util → module}/findCaseMismatch.js +2 -2
- package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
- package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
- package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
- 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 +61 -15
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
- package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
- package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +5 -7
- package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
- package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
- package/lib/optimize/ConcatenatedModule.js +305 -309
- 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} +25 -30
- package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +26 -30
- package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
- package/lib/optimize/FlagIncludedChunksPlugin.js +5 -13
- package/lib/optimize/InlineExports.js +11 -3
- package/lib/optimize/InnerGraph.js +5 -13
- package/lib/optimize/InnerGraphPlugin.js +17 -23
- package/lib/optimize/LazyBarrels.js +584 -0
- package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
- package/lib/optimize/LimitChunkCountPlugin.js +21 -15
- package/lib/optimize/MangleExportsPlugin.js +8 -9
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
- package/lib/optimize/MinChunkSizePlugin.js +9 -6
- package/lib/optimize/ModuleConcatenationPlugin.js +23 -16
- package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
- package/lib/optimize/RealContentHashPlugin.js +16 -7
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/SideEffectsFlagPlugin.js +25 -37
- package/lib/optimize/SplitChunksPlugin.js +715 -159
- package/lib/{util → optimize}/TupleQueue.js +9 -9
- package/lib/optimize/chunkSetIntersections.js +437 -0
- package/lib/{util → optimize}/deterministicGrouping.js +25 -30
- package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
- package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
- package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
- 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 +5 -7
- 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 +3 -3
- package/lib/performance/HotspotsPlugin.js +11 -10
- 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 +3 -3
- package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +13 -16
- package/lib/performance/TopLevelThisPlugin.js +8 -7
- 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 +7 -9
- 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 +82 -65
- package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -13
- package/lib/prefetch/parseResourceHintOptions.js +4 -3
- package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
- package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
- 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/RuleSetCompiler.js +27 -46
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
- package/lib/runtime/AsyncModuleRuntimeModule.js +10 -9
- 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 +9 -10
- 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 +5 -7
- 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 +135 -102
- 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} +18 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
- package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
- package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -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 +4 -7
- package/lib/schemes/HttpUriPlugin.js +67 -11
- package/lib/schemes/VirtualUrlPlugin.js +50 -16
- package/lib/serialization/AggregateErrorSerializer.js +2 -2
- package/lib/serialization/BinaryMiddleware.js +9 -9
- package/lib/serialization/FileMiddleware.js +19 -19
- package/lib/serialization/ObjectMiddleware.js +77 -49
- package/lib/serialization/SerializerMiddleware.js +2 -2
- 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 +19 -19
- package/lib/sharing/utils.js +59 -2
- package/lib/stats/DefaultStatsFactoryPlugin.js +25 -23
- package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
- package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
- package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
- package/lib/{Stats.js → stats/Stats.js} +4 -4
- package/lib/stats/StatsFactory.js +14 -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} +178 -106
- package/lib/{Template.js → template/Template.js} +13 -11
- package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +35 -82
- package/lib/typescript/TypeScriptPlugin.js +5 -6
- package/lib/util/LocConverter.js +4 -7
- package/lib/util/RequestShortener.js +44 -0
- package/lib/util/SortableSet.js +87 -22
- package/lib/util/SourceProcessor.js +364 -66
- package/lib/util/TupleSet.js +27 -27
- package/lib/util/WeakTupleMap.js +10 -12
- package/lib/util/buildDiagnostics.js +2 -2
- package/lib/util/comparators.js +10 -10
- package/lib/util/concatenate.js +32 -151
- package/lib/util/createHooksRegistry.js +1 -2
- package/lib/util/createMappings.js +111 -0
- package/lib/util/dataURL.js +96 -18
- package/lib/util/deprecation.js +1 -1
- package/lib/util/extractComments.js +118 -0
- package/lib/util/formatLocation.js +1 -1
- package/lib/util/globUtils.js +197 -16
- package/lib/util/haltVisitors.js +51 -0
- package/lib/util/handlerKeys.js +2 -2
- package/lib/util/hash/wasm-hash.js +3 -4
- package/lib/util/identifier.js +117 -1
- package/lib/util/implicitTypeLoaderFallback.js +6 -4
- package/lib/util/internalSerializables.js +295 -103
- package/lib/util/magicComment.js +12 -7
- package/lib/util/makeSerializable.js +23 -4
- package/lib/util/parseJson.js +1 -1
- 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 +4 -1
- 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 +9 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +11 -6
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +16 -11
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
- package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
- package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
- package/lib/wasm/wasmModuleFilename.js +2 -2
- package/lib/wasm-sync/SyncWasmModule.js +3 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +11 -12
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +15 -9
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +19 -16
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
- package/lib/wasm-sync/WebAssemblyParser.js +6 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +8 -9
- 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 +8 -6
- package/lib/web/FetchCompileWasmPlugin.js +6 -4
- 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 +70 -40
- package/schemas/WebpackOptions.check.js +2 -1
- package/schemas/WebpackOptions.d.json.ts +2 -0
- package/schemas/WebpackOptions.json +294 -74
- package/schemas/plugins/BannerPlugin.check.js +2 -1
- package/schemas/plugins/BannerPlugin.json +29 -2
- package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
- package/schemas/plugins/HtmlParserOptions.check.js +2 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -0
- package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
- package/schemas/plugins/ManifestPlugin.check.js +1 -0
- package/schemas/plugins/ManifestPlugin.json +3 -3
- package/schemas/plugins/ProgressPlugin.check.js +2 -1
- 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 +2 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
- package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
- package/schemas/plugins/WatchIgnorePlugin.json +12 -3
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
- package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
- package/schemas/plugins/css/CssParserOptions.check.js +1 -0
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
- package/schemas/plugins/dll/DllPlugin.check.js +1 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
- package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
- package/schemas/plugins/sharing/SharePlugin.json +32 -0
- package/types.d.ts +13915 -8414
- package/lib/ErrorHelpers.js +0 -107
- 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 -71
- package/lib/javascript/grammar.js +0 -5546
- package/lib/javascript/parser.js +0 -1494
- 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}/conventions.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
|
@@ -6,29 +6,29 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const util = require("util");
|
|
9
|
+
const { ImportPhaseUtils } = require("../dependencies/core/ImportPhase");
|
|
10
|
+
const SortableSet = require("../util/SortableSet");
|
|
11
|
+
const WeakTupleMap = require("../util/WeakTupleMap");
|
|
12
|
+
const { sortWithSourceOrder } = require("../util/comparators");
|
|
9
13
|
const ExportsInfo = require("./ExportsInfo");
|
|
10
14
|
const ModuleGraphConnection = require("./ModuleGraphConnection");
|
|
11
|
-
const
|
|
12
|
-
const { ImportPhaseUtils } = require("./dependencies/ImportPhase");
|
|
13
|
-
const SortableSet = require("./util/SortableSet");
|
|
14
|
-
const WeakTupleMap = require("./util/WeakTupleMap");
|
|
15
|
-
const { sortWithSourceOrder } = require("./util/comparators");
|
|
15
|
+
const isDependencyKind = require("./isDependencyKind");
|
|
16
16
|
|
|
17
|
-
/** @import { ModuleMemCaches } from "
|
|
17
|
+
/** @import { ModuleMemCaches } from "../Compilation" */
|
|
18
18
|
/** @import DependenciesBlock from "./DependenciesBlock" */
|
|
19
19
|
/** @import Dependency, { ExportInfoName } from "./Dependency" */
|
|
20
20
|
/** @import { ExportInfo } from "./ExportsInfo" */
|
|
21
|
-
/** @import Module from "
|
|
22
|
-
/** @import ModuleProfile from "
|
|
23
|
-
/** @import RequestShortener from "
|
|
24
|
-
/** @import { RuntimeSpec } from "
|
|
25
|
-
/** @import
|
|
21
|
+
/** @import Module from "../module/Module" */
|
|
22
|
+
/** @import ModuleProfile from "../module/ModuleProfile" */
|
|
23
|
+
/** @import RequestShortener from "../util/RequestShortener" */
|
|
24
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
25
|
+
/** @import ESMImportSideEffectDependency from "../dependencies/esm/ESMImportSideEffectDependency" */
|
|
26
26
|
/**
|
|
27
|
-
* @import
|
|
28
|
-
* idsSymbol as
|
|
29
|
-
* } from "
|
|
27
|
+
* @import ESMImportSpecifierDependency, {
|
|
28
|
+
* idsSymbol as ESMImportSpecifierDependencyIDsSymbol
|
|
29
|
+
* } from "../dependencies/esm/ESMImportSpecifierDependency"
|
|
30
30
|
*/
|
|
31
|
-
/** @import { DependencySourceOrder } from "
|
|
31
|
+
/** @import { DependencySourceOrder } from "../util/comparators" */
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
* Defines the optimization bailout function callback.
|
|
@@ -130,12 +130,12 @@ class ModuleGraphModule {
|
|
|
130
130
|
/**
|
|
131
131
|
* @import {
|
|
132
132
|
* idsSymbol as CommonJsExportRequireDependencyIDsSymbol
|
|
133
|
-
* } from "
|
|
133
|
+
* } from "../dependencies/commonjs/CommonJsExportRequireDependency"
|
|
134
134
|
*/
|
|
135
135
|
/**
|
|
136
136
|
* @import {
|
|
137
|
-
* idsSymbol as
|
|
138
|
-
* } from "
|
|
137
|
+
* idsSymbol as ESMExportImportedSpecifierDependencyIDsSymbol
|
|
138
|
+
* } from "../dependencies/esm/ESMExportImportedSpecifierDependency"
|
|
139
139
|
*/
|
|
140
140
|
|
|
141
141
|
/**
|
|
@@ -143,9 +143,10 @@ class ModuleGraphModule {
|
|
|
143
143
|
* @typedef {object} KnownMeta
|
|
144
144
|
* @property {Map<Module, string>=} importVarMap
|
|
145
145
|
* @property {Map<Module, string>=} deferredImportVarMap
|
|
146
|
+
* @property {boolean=} onDemandExports generate export definitions on demand
|
|
146
147
|
*/
|
|
147
148
|
|
|
148
|
-
/** @typedef {KnownMeta & Record<CommonJsExportRequireDependencyIDsSymbol |
|
|
149
|
+
/** @typedef {KnownMeta & Record<CommonJsExportRequireDependencyIDsSymbol | ESMImportSpecifierDependencyIDsSymbol | ESMExportImportedSpecifierDependencyIDsSymbol, string[]> & Record<string, EXPECTED_ANY>} Meta */
|
|
149
150
|
|
|
150
151
|
class ModuleGraph {
|
|
151
152
|
constructor() {
|
|
@@ -342,29 +343,25 @@ class ModuleGraph {
|
|
|
342
343
|
}
|
|
343
344
|
const originDependency = connection.dependency;
|
|
344
345
|
|
|
345
|
-
//
|
|
346
|
-
// import {
|
|
347
|
-
// import { a, b } from "lib" -> a and b have the same source order -> a = b = 1
|
|
348
|
-
// import { d } from "lib/d" -> d = 2
|
|
346
|
+
// Specifiers of one import statement share its source order, so `a` and `b`
|
|
347
|
+
// of `import { a, b } from "lib"` both take the statement's index.
|
|
349
348
|
const currentSourceOrder =
|
|
350
|
-
/** @type {
|
|
349
|
+
/** @type {ESMImportSideEffectDependency | ESMImportSpecifierDependency} */
|
|
351
350
|
(dependency).sourceOrder;
|
|
352
351
|
|
|
353
352
|
// lib/index.js (reexport)
|
|
354
353
|
// import { a } from "lib/a" -> a = 0
|
|
355
354
|
// import { b } from "lib/b" -> b = 1
|
|
356
355
|
const originSourceOrder =
|
|
357
|
-
/** @type {
|
|
356
|
+
/** @type {ESMImportSideEffectDependency | ESMImportSpecifierDependency} */
|
|
358
357
|
(originDependency).sourceOrder;
|
|
359
358
|
if (
|
|
360
359
|
typeof currentSourceOrder === "number" &&
|
|
361
360
|
typeof originSourceOrder === "number"
|
|
362
361
|
) {
|
|
363
|
-
//
|
|
364
|
-
//
|
|
365
|
-
//
|
|
366
|
-
// import { b } from "lib/b" -> b = 1.1 = 1(main) + 0.1(sub)
|
|
367
|
-
// import { d } from "lib/d" -> d = 2
|
|
362
|
+
// A re-exported specifier keeps the importing statement's order as `main`
|
|
363
|
+
// and its own position as `sub`, so the pair orders it within that
|
|
364
|
+
// statement without disturbing the statements around it.
|
|
368
365
|
this._dependencySourceOrderMap.set(dependency, {
|
|
369
366
|
main: currentSourceOrder,
|
|
370
367
|
sub: originSourceOrder
|
|
@@ -384,7 +381,7 @@ class ModuleGraph {
|
|
|
384
381
|
return;
|
|
385
382
|
}
|
|
386
383
|
for (const mod of this._modulesNeedingSort) {
|
|
387
|
-
// If dependencies like
|
|
384
|
+
// If dependencies like ESMImportSideEffectDependency and ESMImportSpecifierDependency have a SourceOrder,
|
|
388
385
|
// we sort based on it; otherwise, we preserve the original order.
|
|
389
386
|
sortWithSourceOrder(
|
|
390
387
|
mod.dependencies,
|
|
@@ -464,7 +461,7 @@ class ModuleGraph {
|
|
|
464
461
|
connection
|
|
465
462
|
);
|
|
466
463
|
}
|
|
467
|
-
|
|
464
|
+
mgm._unassignedConnections = undefined;
|
|
468
465
|
}
|
|
469
466
|
|
|
470
467
|
/**
|
|
@@ -742,7 +739,7 @@ class ModuleGraph {
|
|
|
742
739
|
foundConnection = connection;
|
|
743
740
|
}
|
|
744
741
|
}
|
|
745
|
-
mgm._unassignedConnections
|
|
742
|
+
mgm._unassignedConnections = undefined;
|
|
746
743
|
if (foundConnection !== undefined) {
|
|
747
744
|
return foundConnection;
|
|
748
745
|
}
|
|
@@ -1090,7 +1087,7 @@ class ModuleGraph {
|
|
|
1090
1087
|
for (const connection of connections) {
|
|
1091
1088
|
if (
|
|
1092
1089
|
!connection.dependency ||
|
|
1093
|
-
!(connection.dependency
|
|
1090
|
+
!isDependencyKind(connection.dependency, "esm-import")
|
|
1094
1091
|
) {
|
|
1095
1092
|
continue;
|
|
1096
1093
|
}
|
|
@@ -1197,7 +1194,7 @@ class ModuleGraph {
|
|
|
1197
1194
|
);
|
|
1198
1195
|
}
|
|
1199
1196
|
|
|
1200
|
-
// TODO
|
|
1197
|
+
// TODO in the next major release: remove
|
|
1201
1198
|
/**
|
|
1202
1199
|
* Gets module graph for module.
|
|
1203
1200
|
* @deprecated
|
|
@@ -1231,7 +1228,7 @@ class ModuleGraph {
|
|
|
1231
1228
|
return newFn(module);
|
|
1232
1229
|
}
|
|
1233
1230
|
|
|
1234
|
-
// TODO
|
|
1231
|
+
// TODO in the next major release: remove
|
|
1235
1232
|
/**
|
|
1236
1233
|
* Sets module graph for module.
|
|
1237
1234
|
* @deprecated
|
|
@@ -1243,7 +1240,7 @@ class ModuleGraph {
|
|
|
1243
1240
|
moduleGraphForModuleMap.set(module, moduleGraph);
|
|
1244
1241
|
}
|
|
1245
1242
|
|
|
1246
|
-
// TODO
|
|
1243
|
+
// TODO in the next major release: remove
|
|
1247
1244
|
/**
|
|
1248
1245
|
* Clear module graph for module.
|
|
1249
1246
|
* @deprecated
|
|
@@ -1255,11 +1252,11 @@ class ModuleGraph {
|
|
|
1255
1252
|
}
|
|
1256
1253
|
}
|
|
1257
1254
|
|
|
1258
|
-
// TODO
|
|
1255
|
+
// TODO in the next major release: remove
|
|
1259
1256
|
/** @type {WeakMap<Module, ModuleGraph>} */
|
|
1260
1257
|
const moduleGraphForModuleMap = new WeakMap();
|
|
1261
1258
|
|
|
1262
|
-
// TODO
|
|
1259
|
+
// TODO in the next major release: remove
|
|
1263
1260
|
/** @type {Map<string, (module: Module) => ModuleGraph>} */
|
|
1264
1261
|
const deprecateMap = new Map();
|
|
1265
1262
|
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
/** @import Dependency, { GetConditionFn } from "./Dependency" */
|
|
9
|
-
/** @import Module from "
|
|
10
|
-
/** @import { RuntimeSpec } from "
|
|
9
|
+
/** @import Module from "../module/Module" */
|
|
10
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Module itself is not connected, but transitive modules are connected transitively.
|
|
@@ -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
|
|
@@ -358,10 +359,21 @@ const visitModules = (
|
|
|
358
359
|
const module = /** @type {Module} */ (block.getRootBlock());
|
|
359
360
|
const memCache = moduleMemCaches && moduleMemCaches.get(module);
|
|
360
361
|
if (memCache !== undefined) {
|
|
362
|
+
// an optimization (e.g. side effects) can flip a connection's active
|
|
363
|
+
// state without the module changing — key the cache by the states too
|
|
364
|
+
let stateEtag = "";
|
|
365
|
+
for (const connection of moduleGraph.getOutgoingConnections(module)) {
|
|
366
|
+
if (!connection.dependency || !connection.module || connection.weak) {
|
|
367
|
+
continue;
|
|
368
|
+
}
|
|
369
|
+
const state = connection.getActiveState(runtime);
|
|
370
|
+
stateEtag += state === true ? "T" : state === false ? "F" : "O";
|
|
371
|
+
}
|
|
361
372
|
/** @type {BlockModulesMap} */
|
|
362
373
|
const map = memCache.provide(
|
|
363
374
|
"bundleChunkGraph.blockModules",
|
|
364
375
|
runtime,
|
|
376
|
+
stateEtag,
|
|
365
377
|
() => {
|
|
366
378
|
logger.time("visitModules: prepare");
|
|
367
379
|
const map = new Map();
|
|
@@ -421,7 +433,7 @@ const visitModules = (
|
|
|
421
433
|
const blockChunkGroups = new Map();
|
|
422
434
|
|
|
423
435
|
/** @type {Map<ChunkGroupInfo, Set<DependenciesBlock>>} */
|
|
424
|
-
const
|
|
436
|
+
const blocksByChunkGroupInfo = new Map();
|
|
425
437
|
|
|
426
438
|
/** @typedef {Map<string, ChunkGroupInfo>} NamedChunkGroup */
|
|
427
439
|
|
|
@@ -452,6 +464,8 @@ const visitModules = (
|
|
|
452
464
|
const queueConnect = new Map();
|
|
453
465
|
/** @type {Set<ChunkGroupInfo>} */
|
|
454
466
|
const chunkGroupsForCombining = new Set();
|
|
467
|
+
/** @type {Set<ChunkGroupInfo>} */
|
|
468
|
+
const chunkGroupsForGrowing = new Set();
|
|
455
469
|
|
|
456
470
|
// Fill queue with entrypoint modules
|
|
457
471
|
// Create ChunkGroupInfo for entrypoints
|
|
@@ -465,14 +479,15 @@ const visitModules = (
|
|
|
465
479
|
const chunkGroupInfo = {
|
|
466
480
|
depModule: null,
|
|
467
481
|
circular: false,
|
|
468
|
-
initialized: false,
|
|
469
482
|
chunkGroup,
|
|
470
483
|
runtime,
|
|
471
484
|
minAvailableModules: undefined,
|
|
472
485
|
availableModulesToBeMerged: [],
|
|
473
486
|
skippedItems: undefined,
|
|
474
487
|
resultingAvailableModules: undefined,
|
|
488
|
+
connectedAvailableModules: undefined,
|
|
475
489
|
children: undefined,
|
|
490
|
+
parents: undefined,
|
|
476
491
|
availableSources: undefined,
|
|
477
492
|
availableChildren: undefined,
|
|
478
493
|
preOrderIndex: 0,
|
|
@@ -597,7 +612,6 @@ const visitModules = (
|
|
|
597
612
|
depModule,
|
|
598
613
|
circular: b.circular,
|
|
599
614
|
chunkGroup: entrypoint,
|
|
600
|
-
initialized: false,
|
|
601
615
|
runtime:
|
|
602
616
|
entrypoint.options.runtime ||
|
|
603
617
|
/** @type {string | undefined} */ (entrypoint.name),
|
|
@@ -605,7 +619,9 @@ const visitModules = (
|
|
|
605
619
|
availableModulesToBeMerged: [],
|
|
606
620
|
skippedItems: undefined,
|
|
607
621
|
resultingAvailableModules: undefined,
|
|
622
|
+
connectedAvailableModules: undefined,
|
|
608
623
|
children: undefined,
|
|
624
|
+
parents: undefined,
|
|
609
625
|
availableSources: undefined,
|
|
610
626
|
availableChildren: undefined,
|
|
611
627
|
preOrderIndex: 0,
|
|
@@ -641,16 +657,13 @@ const visitModules = (
|
|
|
641
657
|
}
|
|
642
658
|
} else {
|
|
643
659
|
entrypoint = /** @type {Entrypoint} */ (cgi.chunkGroup);
|
|
644
|
-
// Fill in
|
|
645
|
-
//
|
|
646
|
-
//
|
|
647
|
-
|
|
648
|
-
//
|
|
649
|
-
//
|
|
650
|
-
//
|
|
651
|
-
// from a block that deduped in via its module would leave
|
|
652
|
-
// `entrypoint.name` out of sync and make module codegen
|
|
653
|
-
// order-dependent, which breaks persistent caching.
|
|
660
|
+
// Fill in only the options still unset: blocks deduping to one
|
|
661
|
+
// entrypoint may carry different values, so the first to create it
|
|
662
|
+
// wins.
|
|
663
|
+
|
|
664
|
+
// `name` is excluded, being the entrypoint's identity and fixed at
|
|
665
|
+
// creation. Back-filling it would make codegen order-dependent, which
|
|
666
|
+
// breaks persistent caching.
|
|
654
667
|
const existingOptions = entrypoint.options;
|
|
655
668
|
for (const key_ of Object.keys(entryOptions)) {
|
|
656
669
|
const key =
|
|
@@ -703,14 +716,15 @@ const visitModules = (
|
|
|
703
716
|
cgi = {
|
|
704
717
|
depModule,
|
|
705
718
|
circular: b.circular,
|
|
706
|
-
initialized: false,
|
|
707
719
|
chunkGroup: c,
|
|
708
720
|
runtime: chunkGroupInfo.runtime,
|
|
709
721
|
minAvailableModules: undefined,
|
|
710
722
|
availableModulesToBeMerged: [],
|
|
711
723
|
skippedItems: undefined,
|
|
712
724
|
resultingAvailableModules: undefined,
|
|
725
|
+
connectedAvailableModules: undefined,
|
|
713
726
|
children: undefined,
|
|
727
|
+
parents: undefined,
|
|
714
728
|
availableSources: undefined,
|
|
715
729
|
availableChildren: undefined,
|
|
716
730
|
preOrderIndex: 0,
|
|
@@ -956,6 +970,12 @@ const visitModules = (
|
|
|
956
970
|
let chunkMask = /** @type {bigint} */ (maskByChunk.get(chunk));
|
|
957
971
|
chunkMask |= ONE_BIGINT << BigInt(moduleOrdinal);
|
|
958
972
|
maskByChunk.set(chunk, chunkMask);
|
|
973
|
+
if (chunkGroupInfo.resultingAvailableModules !== undefined) {
|
|
974
|
+
// A later block reached this chunk group after its children read this value,
|
|
975
|
+
// we clear it and mark outdated so the children reconnect and drop it
|
|
976
|
+
chunkGroupInfo.resultingAvailableModules = undefined;
|
|
977
|
+
outdatedChunkGroupInfo.add(chunkGroupInfo);
|
|
978
|
+
}
|
|
959
979
|
}
|
|
960
980
|
// fallthrough
|
|
961
981
|
case ENTER_MODULE: {
|
|
@@ -1012,6 +1032,19 @@ const visitModules = (
|
|
|
1012
1032
|
}
|
|
1013
1033
|
};
|
|
1014
1034
|
|
|
1035
|
+
/**
|
|
1036
|
+
* Get the modules in the chunks of a chunk group.
|
|
1037
|
+
* @param {ChunkGroupInfo} chunkGroupInfo The info object for the chunk group
|
|
1038
|
+
* @returns {bigint} The mask of modules in the chunks of the chunk group
|
|
1039
|
+
*/
|
|
1040
|
+
const getChunkGroupMask = (chunkGroupInfo) => {
|
|
1041
|
+
let mask = ZERO_BIGINT;
|
|
1042
|
+
for (const chunk of chunkGroupInfo.chunkGroup.chunks) {
|
|
1043
|
+
mask |= /** @type {bigint} */ (maskByChunk.get(chunk));
|
|
1044
|
+
}
|
|
1045
|
+
return mask;
|
|
1046
|
+
};
|
|
1047
|
+
|
|
1015
1048
|
/**
|
|
1016
1049
|
* Calculate resulting available modules.
|
|
1017
1050
|
* @param {ChunkGroupInfo} chunkGroupInfo The info object for the chunk group
|
|
@@ -1022,18 +1055,9 @@ const visitModules = (
|
|
|
1022
1055
|
return chunkGroupInfo.resultingAvailableModules;
|
|
1023
1056
|
}
|
|
1024
1057
|
|
|
1025
|
-
let resultingAvailableModules = /** @type {bigint} */ (
|
|
1026
|
-
chunkGroupInfo.minAvailableModules
|
|
1027
|
-
);
|
|
1028
|
-
|
|
1029
|
-
// add the modules from the chunk group to the set
|
|
1030
|
-
for (const chunk of chunkGroupInfo.chunkGroup.chunks) {
|
|
1031
|
-
const mask = /** @type {bigint} */ (maskByChunk.get(chunk));
|
|
1032
|
-
resultingAvailableModules |= mask;
|
|
1033
|
-
}
|
|
1034
|
-
|
|
1035
1058
|
return (chunkGroupInfo.resultingAvailableModules =
|
|
1036
|
-
|
|
1059
|
+
/** @type {bigint} */ (chunkGroupInfo.minAvailableModules) |
|
|
1060
|
+
getChunkGroupMask(chunkGroupInfo));
|
|
1037
1061
|
};
|
|
1038
1062
|
|
|
1039
1063
|
const processConnectQueue = () => {
|
|
@@ -1051,13 +1075,30 @@ const visitModules = (
|
|
|
1051
1075
|
// 2. Calculate resulting available modules
|
|
1052
1076
|
const resultingAvailableModules =
|
|
1053
1077
|
calculateResultingAvailableModules(chunkGroupInfo);
|
|
1078
|
+
const connectedAvailableModules =
|
|
1079
|
+
chunkGroupInfo.connectedAvailableModules;
|
|
1080
|
+
// Merging only intersects, so when this grew all children need the growing phase
|
|
1081
|
+
if (
|
|
1082
|
+
connectedAvailableModules !== undefined &&
|
|
1083
|
+
resultingAvailableModules !== connectedAvailableModules &&
|
|
1084
|
+
(resultingAvailableModules & ~connectedAvailableModules) !== ZERO_BIGINT
|
|
1085
|
+
) {
|
|
1086
|
+
for (const child of chunkGroupInfo.children) {
|
|
1087
|
+
if (!child.chunkGroup.isInitial()) chunkGroupsForGrowing.add(child);
|
|
1088
|
+
}
|
|
1089
|
+
}
|
|
1090
|
+
chunkGroupInfo.connectedAvailableModules = resultingAvailableModules;
|
|
1054
1091
|
|
|
1055
1092
|
const runtime = chunkGroupInfo.runtime;
|
|
1056
1093
|
|
|
1057
1094
|
// 3. Update chunk group info
|
|
1058
|
-
for (const [target,
|
|
1095
|
+
for (const [target, queueItem] of targets) {
|
|
1096
|
+
if (target.parents === undefined) {
|
|
1097
|
+
target.parents = new Set();
|
|
1098
|
+
}
|
|
1099
|
+
target.parents.add(chunkGroupInfo);
|
|
1059
1100
|
target.availableModulesToBeMerged.push(resultingAvailableModules);
|
|
1060
|
-
chunkGroupsForMerging.add([target,
|
|
1101
|
+
chunkGroupsForMerging.add([target, queueItem]);
|
|
1061
1102
|
const oldRuntime = target.runtime;
|
|
1062
1103
|
const newRuntime = mergeRuntime(oldRuntime, runtime);
|
|
1063
1104
|
if (oldRuntime !== newRuntime) {
|
|
@@ -1075,7 +1116,7 @@ const visitModules = (
|
|
|
1075
1116
|
statProcessedChunkGroupsForMerging += chunkGroupsForMerging.size;
|
|
1076
1117
|
|
|
1077
1118
|
// Execute the merge
|
|
1078
|
-
for (const [info,
|
|
1119
|
+
for (const [info, queueItem] of chunkGroupsForMerging) {
|
|
1079
1120
|
const availableModulesToBeMerged = info.availableModulesToBeMerged;
|
|
1080
1121
|
const cachedMinAvailableModules = info.minAvailableModules;
|
|
1081
1122
|
let minAvailableModules = cachedMinAvailableModules;
|
|
@@ -1102,25 +1143,17 @@ const visitModules = (
|
|
|
1102
1143
|
outdatedChunkGroupInfo.add(info);
|
|
1103
1144
|
}
|
|
1104
1145
|
|
|
1105
|
-
if (
|
|
1106
|
-
let blocks =
|
|
1107
|
-
if (
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
// Whether to walk block depends on minAvailableModules and input block.
|
|
1112
|
-
// We can treat creating chunk group as a function with 2 input, entry block and minAvailableModules
|
|
1113
|
-
// If input is the same, we can skip re-walk
|
|
1114
|
-
let needWalkBlock = !info.initialized || changed;
|
|
1115
|
-
if (!blocks.has(processBlock.block)) {
|
|
1116
|
-
needWalkBlock = true;
|
|
1117
|
-
blocks.add(processBlock.block);
|
|
1146
|
+
if (queueItem !== null) {
|
|
1147
|
+
let blocks = blocksByChunkGroupInfo.get(info);
|
|
1148
|
+
if (blocks === undefined) {
|
|
1149
|
+
blocks = new Set();
|
|
1150
|
+
blocksByChunkGroupInfo.set(info, blocks);
|
|
1118
1151
|
}
|
|
1119
1152
|
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1153
|
+
// A walk depends only on the block and minAvailableModules: skip it when both are seen
|
|
1154
|
+
const newBlock = !blocks.has(queueItem.block);
|
|
1155
|
+
if (newBlock) blocks.add(queueItem.block);
|
|
1156
|
+
if (newBlock || changed) queueDelayed.push(queueItem);
|
|
1124
1157
|
}
|
|
1125
1158
|
}
|
|
1126
1159
|
chunkGroupsForMerging.clear();
|
|
@@ -1155,6 +1188,47 @@ const visitModules = (
|
|
|
1155
1188
|
chunkGroupsForCombining.clear();
|
|
1156
1189
|
};
|
|
1157
1190
|
|
|
1191
|
+
const processChunkGroupsForGrowing = () => {
|
|
1192
|
+
for (const info of chunkGroupsForGrowing) {
|
|
1193
|
+
/** @type {bigint | undefined} */
|
|
1194
|
+
let availableModules;
|
|
1195
|
+
for (const parent of /** @type {Set<ChunkGroupInfo>} */ (info.parents)) {
|
|
1196
|
+
const resultingAvailableModules =
|
|
1197
|
+
calculateResultingAvailableModules(parent);
|
|
1198
|
+
availableModules =
|
|
1199
|
+
availableModules === undefined
|
|
1200
|
+
? resultingAvailableModules
|
|
1201
|
+
: availableModules & resultingAvailableModules;
|
|
1202
|
+
// Each parent covers minAvailableModules, so the intersection cannot drop below it
|
|
1203
|
+
if (availableModules === info.minAvailableModules) break;
|
|
1204
|
+
}
|
|
1205
|
+
if (availableModules === info.minAvailableModules) continue;
|
|
1206
|
+
info.minAvailableModules = availableModules;
|
|
1207
|
+
info.resultingAvailableModules = undefined;
|
|
1208
|
+
outdatedChunkGroupInfo.add(info);
|
|
1209
|
+
// Reverse of revisiting skipped items: move the own modules now available
|
|
1210
|
+
// to skippedItems, where they are added back if it shrinks again
|
|
1211
|
+
for (const chunk of info.chunkGroup.chunks) {
|
|
1212
|
+
let chunkMask = /** @type {bigint} */ (maskByChunk.get(chunk));
|
|
1213
|
+
const coveredModules =
|
|
1214
|
+
chunkMask & /** @type {bigint} */ (availableModules);
|
|
1215
|
+
if (coveredModules === ZERO_BIGINT) continue;
|
|
1216
|
+
if (info.skippedItems === undefined) {
|
|
1217
|
+
info.skippedItems = new Set();
|
|
1218
|
+
}
|
|
1219
|
+
for (const module of chunkGraph.getChunkModules(chunk)) {
|
|
1220
|
+
const ordinal = getModuleOrdinal(module);
|
|
1221
|
+
if (!isOrdinalSetInMask(coveredModules, ordinal)) continue;
|
|
1222
|
+
chunkGraph.disconnectChunkAndModule(chunk, module);
|
|
1223
|
+
chunkMask &= ~(ONE_BIGINT << BigInt(ordinal));
|
|
1224
|
+
info.skippedItems.add(module);
|
|
1225
|
+
}
|
|
1226
|
+
maskByChunk.set(chunk, chunkMask);
|
|
1227
|
+
}
|
|
1228
|
+
}
|
|
1229
|
+
chunkGroupsForGrowing.clear();
|
|
1230
|
+
};
|
|
1231
|
+
|
|
1158
1232
|
const processOutdatedChunkGroupInfo = () => {
|
|
1159
1233
|
statChunkGroupInfoUpdated += outdatedChunkGroupInfo.size;
|
|
1160
1234
|
// Revisit skipped elements
|
|
@@ -1212,21 +1286,21 @@ const visitModules = (
|
|
|
1212
1286
|
}
|
|
1213
1287
|
}
|
|
1214
1288
|
|
|
1215
|
-
//
|
|
1216
|
-
if (info.children !== undefined) {
|
|
1289
|
+
// 3. Reconsider children chunk groups
|
|
1290
|
+
if (info.children !== undefined && info.children.size > 0) {
|
|
1217
1291
|
statChildChunkGroupsReconnected += info.children.size;
|
|
1292
|
+
let connectList = queueConnect.get(info);
|
|
1293
|
+
if (connectList === undefined) {
|
|
1294
|
+
/** @type {ConnectList} */
|
|
1295
|
+
connectList = new Set();
|
|
1296
|
+
queueConnect.set(info, connectList);
|
|
1297
|
+
}
|
|
1218
1298
|
for (const cgi of info.children) {
|
|
1219
|
-
let connectList = queueConnect.get(info);
|
|
1220
|
-
if (connectList === undefined) {
|
|
1221
|
-
/** @type {ConnectList} */
|
|
1222
|
-
connectList = new Set();
|
|
1223
|
-
queueConnect.set(info, connectList);
|
|
1224
|
-
}
|
|
1225
1299
|
connectList.add([cgi, null]);
|
|
1226
1300
|
}
|
|
1227
1301
|
}
|
|
1228
1302
|
|
|
1229
|
-
//
|
|
1303
|
+
// 4. Reconsider chunk groups for combining
|
|
1230
1304
|
if (info.availableChildren !== undefined) {
|
|
1231
1305
|
for (const cgi of info.availableChildren) {
|
|
1232
1306
|
chunkGroupsForCombining.add(cgi);
|
|
@@ -1239,7 +1313,12 @@ const visitModules = (
|
|
|
1239
1313
|
|
|
1240
1314
|
// Iterative traversal of the Module graph
|
|
1241
1315
|
// Recursive would be simpler to write but could result in Stack Overflows
|
|
1242
|
-
while (
|
|
1316
|
+
while (
|
|
1317
|
+
queue.length ||
|
|
1318
|
+
queueConnect.size ||
|
|
1319
|
+
outdatedChunkGroupInfo.size ||
|
|
1320
|
+
chunkGroupsForCombining.size
|
|
1321
|
+
) {
|
|
1243
1322
|
logger.time("visitModules: visiting");
|
|
1244
1323
|
processQueue();
|
|
1245
1324
|
logger.timeAggregateEnd("visitModules: prepare");
|
|
@@ -1277,12 +1356,25 @@ const visitModules = (
|
|
|
1277
1356
|
queue = queueDelayed.reverse();
|
|
1278
1357
|
queueDelayed = tempQueue;
|
|
1279
1358
|
}
|
|
1359
|
+
|
|
1360
|
+
// Grow only after the shrinking phase finishes, so growth
|
|
1361
|
+
// reads each parent's final `resultingAvailableModules`
|
|
1362
|
+
if (
|
|
1363
|
+
queue.length === 0 &&
|
|
1364
|
+
queueConnect.size === 0 &&
|
|
1365
|
+
chunkGroupsForCombining.size === 0 &&
|
|
1366
|
+
chunkGroupsForGrowing.size > 0
|
|
1367
|
+
) {
|
|
1368
|
+
logger.time("visitModules: growing available modules");
|
|
1369
|
+
processChunkGroupsForGrowing();
|
|
1370
|
+
logger.timeEnd("visitModules: growing available modules");
|
|
1371
|
+
}
|
|
1280
1372
|
}
|
|
1281
1373
|
|
|
1282
1374
|
for (const info of outdatedOrderIndexChunkGroups) {
|
|
1283
1375
|
const { chunkGroup, runtime } = info;
|
|
1284
1376
|
|
|
1285
|
-
const blocks =
|
|
1377
|
+
const blocks = blocksByChunkGroupInfo.get(info);
|
|
1286
1378
|
|
|
1287
1379
|
if (!blocks) {
|
|
1288
1380
|
continue;
|
|
@@ -1370,11 +1462,10 @@ const connectChunkGroups = (
|
|
|
1370
1462
|
|
|
1371
1463
|
// For each edge in the basic chunk graph
|
|
1372
1464
|
for (const [block, connections] of blockConnections) {
|
|
1373
|
-
//
|
|
1374
|
-
//
|
|
1375
|
-
//
|
|
1376
|
-
|
|
1377
|
-
// connections and modules can only create one version
|
|
1465
|
+
// Skip the whole set when no dependency needs connecting. They cannot be
|
|
1466
|
+
// filtered one by one without inconsistent connections, since a module can
|
|
1467
|
+
// only carry one version.
|
|
1468
|
+
|
|
1378
1469
|
// TODO maybe decide this per runtime
|
|
1379
1470
|
if (
|
|
1380
1471
|
// Blocks with nested blocks must stay connected — skipping orphans the
|