@depup/webpack 5.111.1-depup.2 → 5.112.0-depup.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -8
- package/changes.json +8 -16
- 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 +55 -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 +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
|
@@ -0,0 +1,584 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Haijie Xie @hai-x
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const Dependency = require("../graph/Dependency");
|
|
9
|
+
|
|
10
|
+
/** @import Compilation, { DependencyConstructor } from "../Compilation" */
|
|
11
|
+
/** @import ModuleGraph from "../graph/ModuleGraph" */
|
|
12
|
+
/** @import Module from "../module/Module" */
|
|
13
|
+
/** @import ModuleFactory from "../module/ModuleFactory" */
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Deferred dependencies sharing one request.
|
|
17
|
+
* @typedef {object} DependencyGroup
|
|
18
|
+
* @property {ModuleFactory} factory factory for the request
|
|
19
|
+
* @property {Dependency[]} dependencies deferred dependencies of the request
|
|
20
|
+
* @property {string | undefined} context request context
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* A deferred group to process now, with the barrel it belongs to.
|
|
25
|
+
* @typedef {object} UnlazyDependencyInfo
|
|
26
|
+
* @property {ModuleFactory} factory factory for the request
|
|
27
|
+
* @property {Dependency[]} dependencies deferred dependencies of the request
|
|
28
|
+
* @property {string | undefined} context request context
|
|
29
|
+
* @property {Module} originModule the lazy barrel module
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Per-module lazy barrel state.
|
|
34
|
+
* @typedef {object} LazyBarrelState
|
|
35
|
+
* @property {Set<string> | true} forwardedIds export names requested so far, true for all
|
|
36
|
+
* @property {LazyBarrelInfo | undefined} lazyBarrelInfo deferred dependencies, undefined until classified
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Result of requesting names from a lazy barrel.
|
|
41
|
+
* @typedef {object} LazyBarrelRequest
|
|
42
|
+
* @property {DependencyGroup[]} groups groups that must be processed now
|
|
43
|
+
* @property {Set<string> | true | undefined} fallbackIds names only a star re-export may provide
|
|
44
|
+
* @property {Module[] | undefined} fallbackTargets resolved star re-export targets to forward them to
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
/** @type {Set<string>} */
|
|
48
|
+
const EMPTY_REQUESTS = new Set();
|
|
49
|
+
|
|
50
|
+
/** @type {WeakMap<ModuleGraph, LazyBarrels>} */
|
|
51
|
+
const lazyBarrelsByModuleGraph = new WeakMap();
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Returns whether the module is side-effect-free.
|
|
55
|
+
* @param {Module} module the module
|
|
56
|
+
* @returns {boolean} true, when side-effect-free
|
|
57
|
+
*/
|
|
58
|
+
const isSideEffectFree = (module) => {
|
|
59
|
+
const factoryMeta = module.factoryMeta;
|
|
60
|
+
return factoryMeta !== undefined && Boolean(factoryMeta.sideEffectFree);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Returns the request key, matching the grouping of `processDependencyForResolving`.
|
|
65
|
+
* @param {Dependency} dependency the dependency
|
|
66
|
+
* @returns {string} request key
|
|
67
|
+
*/
|
|
68
|
+
const getRequestKey = (dependency) => {
|
|
69
|
+
const resourceIdent = /** @type {string} */ (
|
|
70
|
+
dependency.getResourceIdentifier()
|
|
71
|
+
);
|
|
72
|
+
const category = dependency.category;
|
|
73
|
+
return category === Dependency.ESM_CATEGORY
|
|
74
|
+
? resourceIdent
|
|
75
|
+
: `${category}${resourceIdent}`;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Returns true if names were requested and none of them is a local export.
|
|
80
|
+
* Only local exports use the import declarations, so the barrel can defer them until a local export is requested.
|
|
81
|
+
* @param {Set<string> | true | undefined} forwardedIds names requested before classification
|
|
82
|
+
* @param {Set<string>} localIds locally provided export names
|
|
83
|
+
* @returns {boolean} true, when import declarations can be deferred
|
|
84
|
+
*/
|
|
85
|
+
const canLazyImports = (forwardedIds, localIds) => {
|
|
86
|
+
if (
|
|
87
|
+
forwardedIds === undefined ||
|
|
88
|
+
forwardedIds === true ||
|
|
89
|
+
forwardedIds.size === 0
|
|
90
|
+
) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
for (const id of forwardedIds) {
|
|
94
|
+
if (localIds.has(id)) return false;
|
|
95
|
+
}
|
|
96
|
+
return true;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Merges requested names into the state and returns those not requested before.
|
|
101
|
+
* @param {LazyBarrelState} state the barrel state
|
|
102
|
+
* @param {Set<string> | true} ids requested export names, true for all
|
|
103
|
+
* @returns {Set<string> | true | undefined} new names, undefined when none
|
|
104
|
+
*/
|
|
105
|
+
const mergeForwardedIds = (state, ids) => {
|
|
106
|
+
const forwardedIds = state.forwardedIds;
|
|
107
|
+
if (forwardedIds === true) return;
|
|
108
|
+
if (ids === true) {
|
|
109
|
+
state.forwardedIds = true;
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
/** @type {Set<string>} */
|
|
113
|
+
const newIds = new Set();
|
|
114
|
+
for (const id of ids) {
|
|
115
|
+
if (forwardedIds.has(id)) continue;
|
|
116
|
+
forwardedIds.add(id);
|
|
117
|
+
newIds.add(id);
|
|
118
|
+
}
|
|
119
|
+
return newIds.size > 0 ? newIds : undefined;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Deferred dependencies of a side-effect-free barrel and the export names activating them.
|
|
124
|
+
*/
|
|
125
|
+
class LazyBarrelInfo {
|
|
126
|
+
/**
|
|
127
|
+
* @param {WeakSet<Dependency>} lazyDependencies the compilation's deferred dependencies
|
|
128
|
+
*/
|
|
129
|
+
constructor(lazyDependencies) {
|
|
130
|
+
/** @type {WeakSet<Dependency>} */
|
|
131
|
+
this._dependencies = lazyDependencies;
|
|
132
|
+
/** @type {Map<string, string | Set<string>> | undefined} export name -> request key(s) */
|
|
133
|
+
this._forwardIdToRequest = undefined;
|
|
134
|
+
/** @type {Map<string, DependencyGroup>} request key -> still-deferred group */
|
|
135
|
+
this._requestToDepGroup = new Map();
|
|
136
|
+
/** @type {Set<string> | undefined} star re-export requests */
|
|
137
|
+
this._fallbackRequests = undefined;
|
|
138
|
+
/** @type {Set<Module> | undefined} resolved star re-export targets */
|
|
139
|
+
this._fallbackTargetModules = undefined;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Records a deferred dependency under its request key.
|
|
144
|
+
* @param {string} requestKey request key
|
|
145
|
+
* @param {Dependency} dependency dependency to defer
|
|
146
|
+
* @param {ModuleFactory} factory factory for the request
|
|
147
|
+
*/
|
|
148
|
+
addLazy(requestKey, dependency, factory) {
|
|
149
|
+
let group = this._requestToDepGroup.get(requestKey);
|
|
150
|
+
if (group === undefined) {
|
|
151
|
+
group = { factory, dependencies: [], context: dependency.getContext() };
|
|
152
|
+
this._requestToDepGroup.set(requestKey, group);
|
|
153
|
+
}
|
|
154
|
+
if (!group.dependencies.includes(dependency)) {
|
|
155
|
+
group.dependencies.push(dependency);
|
|
156
|
+
}
|
|
157
|
+
this._dependencies.add(dependency);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Maps an export name to the request(s) needed to provide it.
|
|
162
|
+
* @param {string} id export name
|
|
163
|
+
* @param {string | Set<string>} requestKeys request key, or the lazy import requests of a local export
|
|
164
|
+
*/
|
|
165
|
+
addForwardId(id, requestKeys) {
|
|
166
|
+
if (this._forwardIdToRequest === undefined) {
|
|
167
|
+
this._forwardIdToRequest = new Map();
|
|
168
|
+
}
|
|
169
|
+
this._forwardIdToRequest.set(id, requestKeys);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Registers a star re-export request.
|
|
174
|
+
* @param {string} requestKey request key
|
|
175
|
+
*/
|
|
176
|
+
addFallback(requestKey) {
|
|
177
|
+
if (this._fallbackRequests === undefined) {
|
|
178
|
+
this._fallbackRequests = new Set();
|
|
179
|
+
}
|
|
180
|
+
this._fallbackRequests.add(requestKey);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Records a resolved star re-export target, so later names reach it without re-factorizing.
|
|
185
|
+
* @param {Module} module the target module
|
|
186
|
+
*/
|
|
187
|
+
addFallbackTarget(module) {
|
|
188
|
+
if (this._fallbackRequests === undefined) return;
|
|
189
|
+
if (this._fallbackTargetModules === undefined) {
|
|
190
|
+
this._fallbackTargetModules = new Set();
|
|
191
|
+
}
|
|
192
|
+
this._fallbackTargetModules.add(module);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Returns whether a local export or named re-export provides the name.
|
|
197
|
+
* @param {string} id export name
|
|
198
|
+
* @returns {boolean} true, when the name does not need a star re-export
|
|
199
|
+
*/
|
|
200
|
+
isKnownId(id) {
|
|
201
|
+
return (
|
|
202
|
+
this._forwardIdToRequest !== undefined && this._forwardIdToRequest.has(id)
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Returns whether nothing is deferred.
|
|
208
|
+
* @returns {boolean} true, when no dependency is deferred
|
|
209
|
+
*/
|
|
210
|
+
isEmpty() {
|
|
211
|
+
return this._requestToDepGroup.size === 0;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Returns the requests of the still-deferred groups.
|
|
216
|
+
* @returns {Iterable<string>} still-deferred requests
|
|
217
|
+
*/
|
|
218
|
+
getLazyRequests() {
|
|
219
|
+
return this._requestToDepGroup.keys();
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Activates the deferred groups needed to provide newly requested export names.
|
|
224
|
+
* @param {Set<string> | true} ids newly requested export names, true for all
|
|
225
|
+
* @returns {LazyBarrelRequest} activated groups and the names to forward to star targets
|
|
226
|
+
*/
|
|
227
|
+
request(ids) {
|
|
228
|
+
/** @type {DependencyGroup[]} */
|
|
229
|
+
const groups = [];
|
|
230
|
+
/** @type {Set<string> | true | undefined} */
|
|
231
|
+
let fallbackIds;
|
|
232
|
+
if (ids === true) {
|
|
233
|
+
for (const requestKey of this._requestToDepGroup.keys()) {
|
|
234
|
+
this._take(requestKey, groups);
|
|
235
|
+
}
|
|
236
|
+
fallbackIds = true;
|
|
237
|
+
} else {
|
|
238
|
+
fallbackIds = this._takeIds(ids, groups);
|
|
239
|
+
}
|
|
240
|
+
const fallbackTargets =
|
|
241
|
+
fallbackIds !== undefined && this._fallbackTargetModules !== undefined
|
|
242
|
+
? [...this._fallbackTargetModules]
|
|
243
|
+
: undefined;
|
|
244
|
+
if (
|
|
245
|
+
ids === true ||
|
|
246
|
+
(this._requestToDepGroup.size === 0 &&
|
|
247
|
+
this._fallbackRequests === undefined)
|
|
248
|
+
) {
|
|
249
|
+
this._release();
|
|
250
|
+
}
|
|
251
|
+
return { groups, fallbackIds, fallbackTargets };
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Activates the groups providing `ids` and returns the names only a star re-export may provide.
|
|
256
|
+
* @param {Set<string>} ids requested export names
|
|
257
|
+
* @param {DependencyGroup[]} groups activated groups
|
|
258
|
+
* @returns {Set<string> | undefined} names no known export provides
|
|
259
|
+
*/
|
|
260
|
+
_takeIds(ids, groups) {
|
|
261
|
+
/** @type {Set<string> | undefined} */
|
|
262
|
+
let unknownIds;
|
|
263
|
+
for (const id of ids) {
|
|
264
|
+
const requestKeys =
|
|
265
|
+
this._forwardIdToRequest === undefined
|
|
266
|
+
? undefined
|
|
267
|
+
: this._forwardIdToRequest.get(id);
|
|
268
|
+
if (typeof requestKeys === "string") {
|
|
269
|
+
this._take(requestKeys, groups);
|
|
270
|
+
} else if (requestKeys !== undefined) {
|
|
271
|
+
for (const requestKey of requestKeys) this._take(requestKey, groups);
|
|
272
|
+
} else if (this._fallbackRequests !== undefined) {
|
|
273
|
+
for (const requestKey of this._fallbackRequests) {
|
|
274
|
+
this._take(requestKey, groups);
|
|
275
|
+
}
|
|
276
|
+
if (unknownIds === undefined) unknownIds = new Set();
|
|
277
|
+
unknownIds.add(id);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
return unknownIds;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Activates a deferred group and appends it to `groups`.
|
|
285
|
+
* @param {string} requestKey request key
|
|
286
|
+
* @param {DependencyGroup[]} groups activated groups
|
|
287
|
+
*/
|
|
288
|
+
_take(requestKey, groups) {
|
|
289
|
+
const group = this._requestToDepGroup.get(requestKey);
|
|
290
|
+
if (group === undefined) return;
|
|
291
|
+
this._requestToDepGroup.delete(requestKey);
|
|
292
|
+
for (const dependency of group.dependencies) {
|
|
293
|
+
this._dependencies.delete(dependency);
|
|
294
|
+
}
|
|
295
|
+
groups.push(group);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Releases the name lookups once nothing needs forwarding.
|
|
300
|
+
*/
|
|
301
|
+
_release() {
|
|
302
|
+
this._forwardIdToRequest = undefined;
|
|
303
|
+
this._fallbackRequests = undefined;
|
|
304
|
+
this._fallbackTargetModules = undefined;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Owns the lazy barrel state of side-effect-free modules for a `Compilation`.
|
|
310
|
+
*/
|
|
311
|
+
class LazyBarrels {
|
|
312
|
+
/**
|
|
313
|
+
* @param {Compilation} compilation the owning compilation
|
|
314
|
+
*/
|
|
315
|
+
constructor(compilation) {
|
|
316
|
+
/** @type {Compilation} */
|
|
317
|
+
this._compilation = compilation;
|
|
318
|
+
/** @type {WeakMap<Module, LazyBarrelState>} */
|
|
319
|
+
this._modules = new WeakMap();
|
|
320
|
+
/** @type {WeakSet<Dependency>} */
|
|
321
|
+
this._lazyDependencies = new WeakSet();
|
|
322
|
+
lazyBarrelsByModuleGraph.set(compilation.moduleGraph, this);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* Returns whether the lazy barrel of the module graph's compilation defers the dependency.
|
|
327
|
+
* @param {ModuleGraph} moduleGraph the module graph
|
|
328
|
+
* @param {Dependency} dependency the dependency
|
|
329
|
+
* @returns {boolean} true while deferred
|
|
330
|
+
*/
|
|
331
|
+
static isLazy(moduleGraph, dependency) {
|
|
332
|
+
const lazyBarrels = lazyBarrelsByModuleGraph.get(moduleGraph);
|
|
333
|
+
return lazyBarrels !== undefined && lazyBarrels.isLazy(dependency);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Releases all state; its last readers are the dependency templates during code generation.
|
|
338
|
+
*/
|
|
339
|
+
clear() {
|
|
340
|
+
this._modules = new WeakMap();
|
|
341
|
+
this._lazyDependencies = new WeakSet();
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* Returns whether the dependency is deferred, so its target module is not created.
|
|
346
|
+
* @param {Dependency} dependency the dependency
|
|
347
|
+
* @returns {boolean} true while deferred
|
|
348
|
+
*/
|
|
349
|
+
isLazy(dependency) {
|
|
350
|
+
return this._lazyDependencies.has(dependency);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* Returns the requests `module` still defers, for `FlagDependencyExportsPlugin`'s cache key.
|
|
355
|
+
* @param {Module} module the module
|
|
356
|
+
* @returns {Iterable<string> | undefined} still-deferred requests, if any
|
|
357
|
+
*/
|
|
358
|
+
getLazyRequests(module) {
|
|
359
|
+
if (!isSideEffectFree(module)) return;
|
|
360
|
+
const state = this._modules.get(module);
|
|
361
|
+
if (state === undefined) return;
|
|
362
|
+
const info = state.lazyBarrelInfo;
|
|
363
|
+
if (info === undefined || info.isEmpty()) return;
|
|
364
|
+
return info.getLazyRequests();
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* Defers the re-export targets of a side-effect-free module, replaying names requested earlier.
|
|
369
|
+
* @param {Module} module the module whose dependencies are processed
|
|
370
|
+
* @returns {boolean} true, when some dependencies were deferred
|
|
371
|
+
*/
|
|
372
|
+
classify(module) {
|
|
373
|
+
if (!isSideEffectFree(module)) return false;
|
|
374
|
+
const modules = this._modules;
|
|
375
|
+
const state = modules.get(module);
|
|
376
|
+
const info = this._createInfo(
|
|
377
|
+
module.dependencies,
|
|
378
|
+
state === undefined ? undefined : state.forwardedIds
|
|
379
|
+
);
|
|
380
|
+
if (info === undefined) {
|
|
381
|
+
if (state !== undefined) modules.delete(module);
|
|
382
|
+
return false;
|
|
383
|
+
}
|
|
384
|
+
if (state === undefined) {
|
|
385
|
+
modules.set(module, { forwardedIds: new Set(), lazyBarrelInfo: info });
|
|
386
|
+
return true;
|
|
387
|
+
}
|
|
388
|
+
info.request(state.forwardedIds);
|
|
389
|
+
state.lazyBarrelInfo = info;
|
|
390
|
+
return !info.isEmpty();
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Requests the export names `dependencies` need from a lazy barrel.
|
|
395
|
+
* @param {Module} module the resolved module
|
|
396
|
+
* @param {Dependency[]} dependencies the dependencies that resolved to the module
|
|
397
|
+
* @returns {UnlazyDependencyInfo[] | undefined} deferred groups to process now, if any
|
|
398
|
+
*/
|
|
399
|
+
request(module, dependencies) {
|
|
400
|
+
if (!isSideEffectFree(module)) return;
|
|
401
|
+
return this._requestWithIds(
|
|
402
|
+
module,
|
|
403
|
+
this._getRequestedIds(module, dependencies),
|
|
404
|
+
undefined
|
|
405
|
+
);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* Queues the deferred groups a single dependency requests from a lazy barrel.
|
|
410
|
+
* @param {Module} module the resolved module of the dependency
|
|
411
|
+
* @param {Dependency} dependency the requesting dependency
|
|
412
|
+
* @param {{ factory: ModuleFactory, dependencies: Dependency[], context: string | undefined, originModule: Module | null }[]} sortedDependencies item list to append to
|
|
413
|
+
*/
|
|
414
|
+
unlazyForDependency(module, dependency, sortedDependencies) {
|
|
415
|
+
const unlazyItems = this.request(module, [dependency]);
|
|
416
|
+
if (unlazyItems === undefined) return;
|
|
417
|
+
for (const item of unlazyItems) sortedDependencies.push(item);
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* Collects the deferrable dependencies of a side-effect-free module.
|
|
422
|
+
* @param {Dependency[]} dependencies dependencies of the module
|
|
423
|
+
* @param {Set<string> | true | undefined} forwardedIds names requested before classification
|
|
424
|
+
* @returns {LazyBarrelInfo | undefined} deferral info, undefined when nothing is deferrable
|
|
425
|
+
*/
|
|
426
|
+
_createInfo(dependencies, forwardedIds) {
|
|
427
|
+
/** @type {LazyBarrelInfo | undefined} */
|
|
428
|
+
let info;
|
|
429
|
+
/** @type {Set<string>} */
|
|
430
|
+
const localIds = new Set();
|
|
431
|
+
let hasFallbackStarReexport = false;
|
|
432
|
+
|
|
433
|
+
// re-export starts deferred and this compilation's requests activate the ones it needs
|
|
434
|
+
for (const dep of dependencies) {
|
|
435
|
+
const role = dep.lazyRole;
|
|
436
|
+
if (role === Dependency.LAZY_LOCAL_EXPORT) {
|
|
437
|
+
const name = dep.lazyName;
|
|
438
|
+
if (typeof name === "string") localIds.add(name);
|
|
439
|
+
continue;
|
|
440
|
+
}
|
|
441
|
+
if (
|
|
442
|
+
role === undefined ||
|
|
443
|
+
role === null ||
|
|
444
|
+
role === Dependency.LAZY_IMPORT_DECLARATION
|
|
445
|
+
) {
|
|
446
|
+
continue;
|
|
447
|
+
}
|
|
448
|
+
const factory = this._getDepFactory(dep);
|
|
449
|
+
if (factory === undefined) continue;
|
|
450
|
+
const requestKey = getRequestKey(dep);
|
|
451
|
+
if (info === undefined) info = new LazyBarrelInfo(this._lazyDependencies);
|
|
452
|
+
info.addLazy(requestKey, dep, factory);
|
|
453
|
+
if (role === Dependency.LAZY_NAMED_REEXPORT) {
|
|
454
|
+
info.addForwardId(/** @type {string} */ (dep.lazyName), requestKey);
|
|
455
|
+
} else if (role === Dependency.LAZY_STAR_REEXPORT) {
|
|
456
|
+
info.addFallback(requestKey);
|
|
457
|
+
hasFallbackStarReexport = true;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
// import declarations
|
|
462
|
+
/** @type {Set<string> | undefined} */
|
|
463
|
+
let importRequests;
|
|
464
|
+
if (canLazyImports(forwardedIds, localIds)) {
|
|
465
|
+
for (const dep of dependencies) {
|
|
466
|
+
if (dep.lazyRole !== Dependency.LAZY_IMPORT_DECLARATION) continue;
|
|
467
|
+
const factory = this._getDepFactory(dep);
|
|
468
|
+
if (factory === undefined) continue;
|
|
469
|
+
const requestKey = getRequestKey(dep);
|
|
470
|
+
if (info === undefined) {
|
|
471
|
+
info = new LazyBarrelInfo(this._lazyDependencies);
|
|
472
|
+
}
|
|
473
|
+
info.addLazy(requestKey, dep, factory);
|
|
474
|
+
if (importRequests === undefined) importRequests = new Set();
|
|
475
|
+
importRequests.add(requestKey);
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
if (info === undefined) return;
|
|
480
|
+
|
|
481
|
+
// local exports: known names, so they skip the star fallback but active the deferred imports
|
|
482
|
+
if (hasFallbackStarReexport || importRequests !== undefined) {
|
|
483
|
+
const requests =
|
|
484
|
+
importRequests === undefined ? EMPTY_REQUESTS : importRequests;
|
|
485
|
+
for (const id of localIds) info.addForwardId(id, requests);
|
|
486
|
+
}
|
|
487
|
+
return info;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
/**
|
|
491
|
+
* Returns the factory of a dependency the barrel can defer.
|
|
492
|
+
* @param {Dependency} dependency the dependency
|
|
493
|
+
* @returns {ModuleFactory | undefined} factory, undefined when not deferrable
|
|
494
|
+
*/
|
|
495
|
+
_getDepFactory(dependency) {
|
|
496
|
+
if (dependency.getResourceIdentifier() === null) return;
|
|
497
|
+
return this._compilation.dependencyFactories.get(
|
|
498
|
+
/** @type {DependencyConstructor} */ (dependency.constructor)
|
|
499
|
+
);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
/**
|
|
503
|
+
* Collects the export names `dependencies` request from `module`, registering star re-export targets.
|
|
504
|
+
* @param {Module} module the module the dependencies resolved to
|
|
505
|
+
* @param {Dependency[]} dependencies the dependencies that resolved to the module
|
|
506
|
+
* @returns {Set<string> | true} requested export names, true for all
|
|
507
|
+
*/
|
|
508
|
+
_getRequestedIds(module, dependencies) {
|
|
509
|
+
/** @type {Set<string>} */
|
|
510
|
+
const ids = new Set();
|
|
511
|
+
for (const dependency of dependencies) {
|
|
512
|
+
// star re-export: take the barrel's names
|
|
513
|
+
if (dependency.lazyRole === Dependency.LAZY_STAR_REEXPORT) {
|
|
514
|
+
const parent =
|
|
515
|
+
this._compilation.moduleGraph.getParentModule(dependency);
|
|
516
|
+
const parentState =
|
|
517
|
+
parent === undefined ? undefined : this._modules.get(parent);
|
|
518
|
+
if (parentState !== undefined) {
|
|
519
|
+
const parentInfo = parentState.lazyBarrelInfo;
|
|
520
|
+
if (parentInfo !== undefined) parentInfo.addFallbackTarget(module);
|
|
521
|
+
if (parentState.forwardedIds === true) return true;
|
|
522
|
+
// a name the barrel provides itself never comes from `export *`
|
|
523
|
+
for (const id of parentState.forwardedIds) {
|
|
524
|
+
if (parentInfo !== undefined && parentInfo.isKnownId(id)) continue;
|
|
525
|
+
ids.add(id);
|
|
526
|
+
}
|
|
527
|
+
continue;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
const id = dependency.forwardId;
|
|
531
|
+
if (id === true) return true;
|
|
532
|
+
// undefined on custom dependency types not extending the base Dependency
|
|
533
|
+
if (typeof id === "string") ids.add(id);
|
|
534
|
+
}
|
|
535
|
+
return ids;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
/**
|
|
539
|
+
* Requests names from a module and collects the groups they activate, following resolved star re-exports.
|
|
540
|
+
* @param {Module} module the resolved module
|
|
541
|
+
* @param {Set<string> | true} ids requested export names, true for all
|
|
542
|
+
* @param {UnlazyDependencyInfo[] | undefined} items items collected so far
|
|
543
|
+
* @returns {UnlazyDependencyInfo[] | undefined} items to process, if any
|
|
544
|
+
*/
|
|
545
|
+
_requestWithIds(module, ids, items) {
|
|
546
|
+
if (!isSideEffectFree(module)) return items;
|
|
547
|
+
|
|
548
|
+
if (ids !== true && ids.size === 0) return items;
|
|
549
|
+
const state = this._modules.get(module);
|
|
550
|
+
if (state === undefined) {
|
|
551
|
+
// replayed by classify; copied since star re-exports pass the barrel's own set
|
|
552
|
+
this._modules.set(module, {
|
|
553
|
+
forwardedIds: ids === true ? true : new Set(ids),
|
|
554
|
+
lazyBarrelInfo: undefined
|
|
555
|
+
});
|
|
556
|
+
return items;
|
|
557
|
+
}
|
|
558
|
+
const newIds = mergeForwardedIds(state, ids);
|
|
559
|
+
const info = state.lazyBarrelInfo;
|
|
560
|
+
if (newIds === undefined || info === undefined) return items;
|
|
561
|
+
const { groups, fallbackIds, fallbackTargets } = info.request(newIds);
|
|
562
|
+
for (const group of groups) {
|
|
563
|
+
if (items === undefined) items = [];
|
|
564
|
+
items.push({
|
|
565
|
+
factory: group.factory,
|
|
566
|
+
dependencies: group.dependencies,
|
|
567
|
+
context: group.context,
|
|
568
|
+
originModule: module
|
|
569
|
+
});
|
|
570
|
+
}
|
|
571
|
+
if (fallbackTargets !== undefined) {
|
|
572
|
+
for (const target of fallbackTargets) {
|
|
573
|
+
items = this._requestWithIds(
|
|
574
|
+
target,
|
|
575
|
+
/** @type {Set<string> | true} */ (fallbackIds),
|
|
576
|
+
items
|
|
577
|
+
);
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
return items;
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
module.exports = LazyBarrels;
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const { first } = require("
|
|
9
|
-
const SortableSet = require("
|
|
8
|
+
const { first } = require("../util/SetHelpers");
|
|
9
|
+
const SortableSet = require("../util/SortableSet");
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Callback that extracts the grouping key for an item at one bucket layer.
|
|
@@ -5,17 +5,26 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const { STAGE_ADVANCED } = require("../OptimizationStages");
|
|
9
|
-
const LazyBucketSortedSet = require("../util/LazyBucketSortedSet");
|
|
10
8
|
const { compareChunks } = require("../util/comparators");
|
|
9
|
+
const LazyBucketSortedSet = require("./LazyBucketSortedSet");
|
|
10
|
+
const { STAGE_ADVANCED } = require("./OptimizationStages");
|
|
11
|
+
|
|
12
|
+
/** @import Chunk from "../graph/Chunk" */
|
|
13
|
+
/** @import Compiler from "../Compiler" */
|
|
11
14
|
|
|
12
15
|
/**
|
|
13
|
-
* @
|
|
14
|
-
*
|
|
15
|
-
* }
|
|
16
|
+
* @inline
|
|
17
|
+
* @minimum 1
|
|
18
|
+
* @typedef {number} PositiveNumber
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @schema plugins/optimize/LimitChunkCountPlugin
|
|
23
|
+
* @typedef {object} LimitChunkCountPluginOptions
|
|
24
|
+
* @property {number=} chunkOverhead Constant overhead for a chunk.
|
|
25
|
+
* @property {number=} entryChunkMultiplicator Multiplicator for initial chunks.
|
|
26
|
+
* @property {PositiveNumber} maxChunks Limit the maximum number of chunks using a value greater than or equal to 1.
|
|
16
27
|
*/
|
|
17
|
-
/** @import Chunk from "../Chunk" */
|
|
18
|
-
/** @import Compiler from "../Compiler" */
|
|
19
28
|
|
|
20
29
|
/**
|
|
21
30
|
* Defines the chunk combination type used by this module.
|
|
@@ -5,18 +5,18 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const { UsageState } = require("../ExportsInfo");
|
|
8
|
+
const { UsageState } = require("../graph/ExportsInfo");
|
|
9
|
+
const { assignDeterministicIds } = require("../ids/IdHelpers");
|
|
9
10
|
const {
|
|
10
11
|
NUMBER_OF_IDENTIFIER_CONTINUATION_CHARS,
|
|
11
12
|
NUMBER_OF_IDENTIFIER_START_CHARS,
|
|
12
13
|
numberToIdentifier
|
|
13
|
-
} = require("../Template");
|
|
14
|
-
const { assignDeterministicIds } = require("../ids/IdHelpers");
|
|
14
|
+
} = require("../template/Template");
|
|
15
15
|
const { compareSelect, compareStringsNumeric } = require("../util/comparators");
|
|
16
16
|
|
|
17
17
|
/** @import Compiler from "../Compiler" */
|
|
18
|
-
/** @import { BuildInfo } from "../Module" */
|
|
19
|
-
/** @import ExportsInfo, { ExportInfo } from "../ExportsInfo" */
|
|
18
|
+
/** @import { BuildInfo } from "../module/Module" */
|
|
19
|
+
/** @import ExportsInfo, { ExportInfo } from "../graph/ExportsInfo" */
|
|
20
20
|
/** @import { UsedNames } from "../util/concatenate" */
|
|
21
21
|
|
|
22
22
|
/**
|
|
@@ -5,16 +5,17 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const { STAGE_BASIC } = require("../OptimizationStages");
|
|
9
8
|
const { runtimeEqual } = require("../util/runtime");
|
|
9
|
+
const { STAGE_BASIC } = require("./OptimizationStages");
|
|
10
|
+
|
|
11
|
+
/** @import Compiler from "../Compiler" */
|
|
12
|
+
/** @import Chunk from "../graph/Chunk" */
|
|
10
13
|
|
|
11
14
|
/**
|
|
12
|
-
* @
|
|
13
|
-
*
|
|
14
|
-
* }
|
|
15
|
+
* @schema plugins/optimize/MergeDuplicateChunksPlugin
|
|
16
|
+
* @typedef {object} MergeDuplicateChunksPluginOptions
|
|
17
|
+
* @property {number=} stage Specifies the stage for merging duplicate chunks.
|
|
15
18
|
*/
|
|
16
|
-
/** @import Compiler from "../Compiler" */
|
|
17
|
-
/** @import Chunk from "../Chunk" */
|
|
18
19
|
|
|
19
20
|
const PLUGIN_NAME = "MergeDuplicateChunksPlugin";
|
|
20
21
|
|
|
@@ -5,15 +5,18 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const { STAGE_ADVANCED } = require("
|
|
8
|
+
const { STAGE_ADVANCED } = require("./OptimizationStages");
|
|
9
|
+
|
|
10
|
+
/** @import Chunk from "../graph/Chunk" */
|
|
11
|
+
/** @import Compiler from "../Compiler" */
|
|
9
12
|
|
|
10
13
|
/**
|
|
11
|
-
* @
|
|
12
|
-
*
|
|
13
|
-
* }
|
|
14
|
+
* @schema plugins/optimize/MinChunkSizePlugin
|
|
15
|
+
* @typedef {object} MinChunkSizePluginOptions
|
|
16
|
+
* @property {number=} chunkOverhead Constant overhead for a chunk.
|
|
17
|
+
* @property {number=} entryChunkMultiplicator Multiplicator for initial chunks.
|
|
18
|
+
* @property {number} minChunkSize Minimum number of characters.
|
|
14
19
|
*/
|
|
15
|
-
/** @import Chunk from "../Chunk" */
|
|
16
|
-
/** @import Compiler from "../Compiler" */
|
|
17
20
|
|
|
18
21
|
const PLUGIN_NAME = "MinChunkSizePlugin";
|
|
19
22
|
|