@depup/webpack 5.111.1-depup.1 → 5.112.0-depup.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 +4 -7
- package/changes.json +3 -15
- package/lib/Chunk.js +3 -966
- package/lib/Compilation.js +224 -106
- package/lib/Compiler.js +19 -19
- 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 +8 -8
- package/lib/asset/AssetBytesParser.js +3 -3
- package/lib/asset/AssetGenerator.js +36 -22
- 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 +8 -8
- 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 +2 -2
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -2
- package/lib/cache/PackFileCacheStrategy.js +8 -10
- package/lib/cache/ResolverCachePlugin.js +8 -4
- 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 +1 -1
- package/lib/{cli.js → config/cli.js} +5 -158
- package/lib/config/defaults.js +144 -48
- package/lib/config/getClaimedAssetTypes.js +21 -13
- package/lib/config/normalization.js +18 -7
- package/lib/config/target.js +10 -0
- 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 +36 -25
- package/lib/context/ContextModuleFactory.js +13 -10
- package/lib/context/ContextReplacementPlugin.js +3 -3
- package/lib/css/CssGenerator.js +38 -31
- 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 +682 -291
- package/lib/css/CssServerStylesRuntimeModule.js +3 -3
- package/lib/css/cssMinify.js +110 -37
- package/lib/css/data.js +6985 -5125
- package/lib/css/syntax-parser.js +19873 -0
- package/lib/css/syntax-printer.js +6037 -0
- package/lib/css/syntax.js +37 -18686
- package/lib/debug/ProfilingPlugin.js +52 -19
- package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
- package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +9 -9
- 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} +166 -33
- 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} +35 -30
- 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} +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} +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} +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} +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} +369 -92
- package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +23 -16
- 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} +23 -16
- 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} +19 -17
- 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} +133 -118
- package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
- package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +60 -36
- 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} +99 -84
- package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
- package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
- package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +94 -59
- 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 +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} +51 -141
- package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
- package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -19
- package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -15
- 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} +119 -98
- 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 +16 -18
- 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} +31 -33
- 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} +154 -26
- 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/{ErrorHelpers.js → errors/ErrorHelpers.js} +7 -5
- package/lib/errors/ExternalStarReexportError.js +2 -2
- package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
- package/lib/errors/HookWebpackError.js +4 -4
- 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} +79 -55
- 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} +130 -82
- package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
- package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +30 -30
- package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
- package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +152 -57
- package/lib/{util → graph}/findGraphRoots.js +14 -8
- package/lib/graph/isDependencyKind.js +23 -0
- package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
- package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +47 -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 +31 -21
- package/lib/html/HtmlGenerator.js +107 -43
- package/lib/html/HtmlModule.js +6 -2
- package/lib/html/HtmlModulesPlugin.js +172 -76
- package/lib/html/HtmlParser.js +503 -153
- package/lib/html/builtinEmbeddedRenderer.js +60 -13
- package/lib/html/data.js +2 -1
- package/lib/html/htmlMinify.js +111 -41
- package/lib/html/syntax-parser.js +15796 -0
- package/lib/html/syntax-printer.js +1034 -0
- package/lib/html/syntax.js +37 -13952
- 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 +303 -97
- package/lib/{APIPlugin.js → javascript/APIPlugin.js} +25 -25
- 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} +7 -7
- package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +74 -7
- package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
- package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
- package/lib/javascript/JavascriptGenerator.js +17 -17
- package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
- package/lib/javascript/JavascriptModule.js +4 -3
- package/lib/javascript/JavascriptModulesPlugin.js +440 -211
- package/lib/javascript/JavascriptParser.js +220 -134
- 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 -11274
- package/lib/json/JsonData.js +1 -1
- package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
- package/lib/json/JsonGenerator.js +10 -10
- 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 +160 -166
- 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 +31 -21
- 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} +16 -14
- package/lib/{Module.js → module/Module.js} +119 -51
- 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 +58 -6
- 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 +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
- package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
- package/lib/optimize/ConcatenatedModule.js +229 -214
- 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} +17 -17
- package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +17 -17
- package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
- package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
- package/lib/optimize/InlineExports.js +11 -3
- package/lib/optimize/InnerGraph.js +5 -13
- package/lib/optimize/InnerGraphPlugin.js +10 -10
- package/lib/optimize/LazyBarrels.js +584 -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 +20 -12
- 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 +18 -18
- package/lib/optimize/SplitChunksPlugin.js +713 -155
- 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} +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 +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 +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 +11 -12
- 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 +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 +65 -44
- 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 +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 +7 -4
- 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 +6 -6
- 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} +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 +1 -1
- package/lib/schemes/HttpUriPlugin.js +67 -11
- package/lib/schemes/VirtualUrlPlugin.js +50 -16
- package/lib/serialization/AggregateErrorSerializer.js +2 -2
- package/lib/serialization/FileMiddleware.js +3 -3
- package/lib/serialization/ObjectMiddleware.js +47 -16
- 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 +14 -16
- package/lib/sharing/utils.js +59 -2
- package/lib/stats/DefaultStatsFactoryPlugin.js +22 -19
- 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} +145 -63
- package/lib/{Template.js → template/Template.js} +13 -11
- 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 +349 -44
- 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 +28 -147
- package/lib/util/createMappings.js +111 -0
- package/lib/util/dataURL.js +94 -15
- 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/identifier.js +117 -1
- package/lib/util/implicitTypeLoaderFallback.js +6 -4
- package/lib/util/internalSerializables.js +294 -102
- 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 +5 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +11 -10
- 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 +8 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +9 -8
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +14 -15
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
- package/lib/wasm-sync/WebAssemblyParser.js +6 -6
- 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 +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 +49 -38
- 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 +19355 -13873
- 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}/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
|
/**
|
|
@@ -146,7 +146,7 @@ class ModuleGraphModule {
|
|
|
146
146
|
* @property {boolean=} onDemandExports generate export definitions on demand
|
|
147
147
|
*/
|
|
148
148
|
|
|
149
|
-
/** @typedef {KnownMeta & Record<CommonJsExportRequireDependencyIDsSymbol |
|
|
149
|
+
/** @typedef {KnownMeta & Record<CommonJsExportRequireDependencyIDsSymbol | ESMImportSpecifierDependencyIDsSymbol | ESMExportImportedSpecifierDependencyIDsSymbol, string[]> & Record<string, EXPECTED_ANY>} Meta */
|
|
150
150
|
|
|
151
151
|
class ModuleGraph {
|
|
152
152
|
constructor() {
|
|
@@ -346,14 +346,14 @@ class ModuleGraph {
|
|
|
346
346
|
// Specifiers of one import statement share its source order, so `a` and `b`
|
|
347
347
|
// of `import { a, b } from "lib"` both take the statement's index.
|
|
348
348
|
const currentSourceOrder =
|
|
349
|
-
/** @type {
|
|
349
|
+
/** @type {ESMImportSideEffectDependency | ESMImportSpecifierDependency} */
|
|
350
350
|
(dependency).sourceOrder;
|
|
351
351
|
|
|
352
352
|
// lib/index.js (reexport)
|
|
353
353
|
// import { a } from "lib/a" -> a = 0
|
|
354
354
|
// import { b } from "lib/b" -> b = 1
|
|
355
355
|
const originSourceOrder =
|
|
356
|
-
/** @type {
|
|
356
|
+
/** @type {ESMImportSideEffectDependency | ESMImportSpecifierDependency} */
|
|
357
357
|
(originDependency).sourceOrder;
|
|
358
358
|
if (
|
|
359
359
|
typeof currentSourceOrder === "number" &&
|
|
@@ -381,7 +381,7 @@ class ModuleGraph {
|
|
|
381
381
|
return;
|
|
382
382
|
}
|
|
383
383
|
for (const mod of this._modulesNeedingSort) {
|
|
384
|
-
// If dependencies like
|
|
384
|
+
// If dependencies like ESMImportSideEffectDependency and ESMImportSpecifierDependency have a SourceOrder,
|
|
385
385
|
// we sort based on it; otherwise, we preserve the original order.
|
|
386
386
|
sortWithSourceOrder(
|
|
387
387
|
mod.dependencies,
|
|
@@ -461,7 +461,7 @@ class ModuleGraph {
|
|
|
461
461
|
connection
|
|
462
462
|
);
|
|
463
463
|
}
|
|
464
|
-
|
|
464
|
+
mgm._unassignedConnections = undefined;
|
|
465
465
|
}
|
|
466
466
|
|
|
467
467
|
/**
|
|
@@ -739,7 +739,7 @@ class ModuleGraph {
|
|
|
739
739
|
foundConnection = connection;
|
|
740
740
|
}
|
|
741
741
|
}
|
|
742
|
-
mgm._unassignedConnections
|
|
742
|
+
mgm._unassignedConnections = undefined;
|
|
743
743
|
if (foundConnection !== undefined) {
|
|
744
744
|
return foundConnection;
|
|
745
745
|
}
|
|
@@ -1087,7 +1087,7 @@ class ModuleGraph {
|
|
|
1087
1087
|
for (const connection of connections) {
|
|
1088
1088
|
if (
|
|
1089
1089
|
!connection.dependency ||
|
|
1090
|
-
!(connection.dependency
|
|
1090
|
+
!isDependencyKind(connection.dependency, "esm-import")
|
|
1091
1091
|
) {
|
|
1092
1092
|
continue;
|
|
1093
1093
|
}
|
|
@@ -1194,7 +1194,7 @@ class ModuleGraph {
|
|
|
1194
1194
|
);
|
|
1195
1195
|
}
|
|
1196
1196
|
|
|
1197
|
-
// TODO
|
|
1197
|
+
// TODO in the next major release: remove
|
|
1198
1198
|
/**
|
|
1199
1199
|
* Gets module graph for module.
|
|
1200
1200
|
* @deprecated
|
|
@@ -1228,7 +1228,7 @@ class ModuleGraph {
|
|
|
1228
1228
|
return newFn(module);
|
|
1229
1229
|
}
|
|
1230
1230
|
|
|
1231
|
-
// TODO
|
|
1231
|
+
// TODO in the next major release: remove
|
|
1232
1232
|
/**
|
|
1233
1233
|
* Sets module graph for module.
|
|
1234
1234
|
* @deprecated
|
|
@@ -1240,7 +1240,7 @@ class ModuleGraph {
|
|
|
1240
1240
|
moduleGraphForModuleMap.set(module, moduleGraph);
|
|
1241
1241
|
}
|
|
1242
1242
|
|
|
1243
|
-
// TODO
|
|
1243
|
+
// TODO in the next major release: remove
|
|
1244
1244
|
/**
|
|
1245
1245
|
* Clear module graph for module.
|
|
1246
1246
|
* @deprecated
|
|
@@ -1252,11 +1252,11 @@ class ModuleGraph {
|
|
|
1252
1252
|
}
|
|
1253
1253
|
}
|
|
1254
1254
|
|
|
1255
|
-
// TODO
|
|
1255
|
+
// TODO in the next major release: remove
|
|
1256
1256
|
/** @type {WeakMap<Module, ModuleGraph>} */
|
|
1257
1257
|
const moduleGraphForModuleMap = new WeakMap();
|
|
1258
1258
|
|
|
1259
|
-
// TODO
|
|
1259
|
+
// TODO in the next major release: remove
|
|
1260
1260
|
/** @type {Map<string, (module: Module) => ModuleGraph>} */
|
|
1261
1261
|
const deprecateMap = new Map();
|
|
1262
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,
|
|
@@ -700,14 +716,15 @@ const visitModules = (
|
|
|
700
716
|
cgi = {
|
|
701
717
|
depModule,
|
|
702
718
|
circular: b.circular,
|
|
703
|
-
initialized: false,
|
|
704
719
|
chunkGroup: c,
|
|
705
720
|
runtime: chunkGroupInfo.runtime,
|
|
706
721
|
minAvailableModules: undefined,
|
|
707
722
|
availableModulesToBeMerged: [],
|
|
708
723
|
skippedItems: undefined,
|
|
709
724
|
resultingAvailableModules: undefined,
|
|
725
|
+
connectedAvailableModules: undefined,
|
|
710
726
|
children: undefined,
|
|
727
|
+
parents: undefined,
|
|
711
728
|
availableSources: undefined,
|
|
712
729
|
availableChildren: undefined,
|
|
713
730
|
preOrderIndex: 0,
|
|
@@ -953,6 +970,12 @@ const visitModules = (
|
|
|
953
970
|
let chunkMask = /** @type {bigint} */ (maskByChunk.get(chunk));
|
|
954
971
|
chunkMask |= ONE_BIGINT << BigInt(moduleOrdinal);
|
|
955
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
|
+
}
|
|
956
979
|
}
|
|
957
980
|
// fallthrough
|
|
958
981
|
case ENTER_MODULE: {
|
|
@@ -1009,6 +1032,19 @@ const visitModules = (
|
|
|
1009
1032
|
}
|
|
1010
1033
|
};
|
|
1011
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
|
+
|
|
1012
1048
|
/**
|
|
1013
1049
|
* Calculate resulting available modules.
|
|
1014
1050
|
* @param {ChunkGroupInfo} chunkGroupInfo The info object for the chunk group
|
|
@@ -1019,18 +1055,9 @@ const visitModules = (
|
|
|
1019
1055
|
return chunkGroupInfo.resultingAvailableModules;
|
|
1020
1056
|
}
|
|
1021
1057
|
|
|
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
1058
|
return (chunkGroupInfo.resultingAvailableModules =
|
|
1033
|
-
|
|
1059
|
+
/** @type {bigint} */ (chunkGroupInfo.minAvailableModules) |
|
|
1060
|
+
getChunkGroupMask(chunkGroupInfo));
|
|
1034
1061
|
};
|
|
1035
1062
|
|
|
1036
1063
|
const processConnectQueue = () => {
|
|
@@ -1048,13 +1075,30 @@ const visitModules = (
|
|
|
1048
1075
|
// 2. Calculate resulting available modules
|
|
1049
1076
|
const resultingAvailableModules =
|
|
1050
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;
|
|
1051
1091
|
|
|
1052
1092
|
const runtime = chunkGroupInfo.runtime;
|
|
1053
1093
|
|
|
1054
1094
|
// 3. Update chunk group info
|
|
1055
|
-
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);
|
|
1056
1100
|
target.availableModulesToBeMerged.push(resultingAvailableModules);
|
|
1057
|
-
chunkGroupsForMerging.add([target,
|
|
1101
|
+
chunkGroupsForMerging.add([target, queueItem]);
|
|
1058
1102
|
const oldRuntime = target.runtime;
|
|
1059
1103
|
const newRuntime = mergeRuntime(oldRuntime, runtime);
|
|
1060
1104
|
if (oldRuntime !== newRuntime) {
|
|
@@ -1072,7 +1116,7 @@ const visitModules = (
|
|
|
1072
1116
|
statProcessedChunkGroupsForMerging += chunkGroupsForMerging.size;
|
|
1073
1117
|
|
|
1074
1118
|
// Execute the merge
|
|
1075
|
-
for (const [info,
|
|
1119
|
+
for (const [info, queueItem] of chunkGroupsForMerging) {
|
|
1076
1120
|
const availableModulesToBeMerged = info.availableModulesToBeMerged;
|
|
1077
1121
|
const cachedMinAvailableModules = info.minAvailableModules;
|
|
1078
1122
|
let minAvailableModules = cachedMinAvailableModules;
|
|
@@ -1099,25 +1143,17 @@ const visitModules = (
|
|
|
1099
1143
|
outdatedChunkGroupInfo.add(info);
|
|
1100
1144
|
}
|
|
1101
1145
|
|
|
1102
|
-
if (
|
|
1103
|
-
let blocks =
|
|
1104
|
-
if (
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
// Whether to walk block depends on minAvailableModules and input block.
|
|
1109
|
-
// We can treat creating chunk group as a function with 2 input, entry block and minAvailableModules
|
|
1110
|
-
// If input is the same, we can skip re-walk
|
|
1111
|
-
let needWalkBlock = !info.initialized || changed;
|
|
1112
|
-
if (!blocks.has(processBlock.block)) {
|
|
1113
|
-
needWalkBlock = true;
|
|
1114
|
-
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);
|
|
1115
1151
|
}
|
|
1116
1152
|
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
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);
|
|
1121
1157
|
}
|
|
1122
1158
|
}
|
|
1123
1159
|
chunkGroupsForMerging.clear();
|
|
@@ -1152,6 +1188,47 @@ const visitModules = (
|
|
|
1152
1188
|
chunkGroupsForCombining.clear();
|
|
1153
1189
|
};
|
|
1154
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
|
+
|
|
1155
1232
|
const processOutdatedChunkGroupInfo = () => {
|
|
1156
1233
|
statChunkGroupInfoUpdated += outdatedChunkGroupInfo.size;
|
|
1157
1234
|
// Revisit skipped elements
|
|
@@ -1209,21 +1286,21 @@ const visitModules = (
|
|
|
1209
1286
|
}
|
|
1210
1287
|
}
|
|
1211
1288
|
|
|
1212
|
-
//
|
|
1213
|
-
if (info.children !== undefined) {
|
|
1289
|
+
// 3. Reconsider children chunk groups
|
|
1290
|
+
if (info.children !== undefined && info.children.size > 0) {
|
|
1214
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
|
+
}
|
|
1215
1298
|
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
1299
|
connectList.add([cgi, null]);
|
|
1223
1300
|
}
|
|
1224
1301
|
}
|
|
1225
1302
|
|
|
1226
|
-
//
|
|
1303
|
+
// 4. Reconsider chunk groups for combining
|
|
1227
1304
|
if (info.availableChildren !== undefined) {
|
|
1228
1305
|
for (const cgi of info.availableChildren) {
|
|
1229
1306
|
chunkGroupsForCombining.add(cgi);
|
|
@@ -1236,7 +1313,12 @@ const visitModules = (
|
|
|
1236
1313
|
|
|
1237
1314
|
// Iterative traversal of the Module graph
|
|
1238
1315
|
// Recursive would be simpler to write but could result in Stack Overflows
|
|
1239
|
-
while (
|
|
1316
|
+
while (
|
|
1317
|
+
queue.length ||
|
|
1318
|
+
queueConnect.size ||
|
|
1319
|
+
outdatedChunkGroupInfo.size ||
|
|
1320
|
+
chunkGroupsForCombining.size
|
|
1321
|
+
) {
|
|
1240
1322
|
logger.time("visitModules: visiting");
|
|
1241
1323
|
processQueue();
|
|
1242
1324
|
logger.timeAggregateEnd("visitModules: prepare");
|
|
@@ -1274,12 +1356,25 @@ const visitModules = (
|
|
|
1274
1356
|
queue = queueDelayed.reverse();
|
|
1275
1357
|
queueDelayed = tempQueue;
|
|
1276
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
|
+
}
|
|
1277
1372
|
}
|
|
1278
1373
|
|
|
1279
1374
|
for (const info of outdatedOrderIndexChunkGroups) {
|
|
1280
1375
|
const { chunkGroup, runtime } = info;
|
|
1281
1376
|
|
|
1282
|
-
const blocks =
|
|
1377
|
+
const blocks = blocksByChunkGroupInfo.get(info);
|
|
1283
1378
|
|
|
1284
1379
|
if (!blocks) {
|
|
1285
1380
|
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) {
|
|
@@ -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;
|
|
@@ -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
|