webpack 5.111.1 → 5.112.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/webpack.js +13 -7
- package/lib/Chunk.js +3 -966
- package/lib/Compilation.js +373 -163
- package/lib/Compiler.js +31 -44
- package/lib/Dependency.js +3 -551
- package/lib/DependencyTemplate.js +3 -70
- package/lib/EntryPlugin.js +3 -68
- package/lib/Entrypoint.js +3 -121
- package/lib/ExternalsPlugin.js +3 -92
- package/lib/FileSystemInfo.js +3 -4629
- package/lib/InitFragment.js +3 -204
- package/lib/LibraryTemplatePlugin.js +3 -46
- package/lib/ModuleFilenameHelpers.js +3 -400
- package/lib/ModuleNotFoundError.js +2 -2
- package/lib/MultiCompiler.js +37 -8
- package/lib/NormalModule.js +3 -2242
- package/lib/NullFactory.js +3 -22
- package/lib/ProgressPlugin.js +3 -908
- package/lib/RawModule.js +3 -197
- package/lib/RequestShortener.js +3 -37
- package/lib/SingleEntryPlugin.js +1 -1
- package/lib/WebpackError.js +2 -2
- package/lib/asset/AssetBytesGenerator.js +21 -13
- package/lib/asset/AssetBytesParser.js +12 -10
- package/lib/asset/AssetGenerator.js +71 -69
- package/lib/asset/AssetModule.js +13 -2
- package/lib/asset/AssetModulesPlugin.js +10 -12
- package/lib/asset/AssetParser.js +10 -10
- package/lib/asset/AssetSourceGenerator.js +23 -15
- package/lib/asset/AssetSourceParser.js +12 -10
- package/lib/asset/RawDataUrlModule.js +17 -10
- package/lib/asset/WebManifestGenerator.js +17 -12
- package/lib/asset/WebManifestParser.js +8 -8
- package/lib/async-modules/AsyncModuleHelpers.js +12 -5
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +9 -3
- package/lib/async-modules/isGeneratorLowered.js +3 -3
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
- package/lib/{Cache.js → cache/Cache.js} +1 -1
- package/lib/{CacheFacade.js → cache/CacheFacade.js} +6 -6
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +2 -2
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -2
- package/lib/cache/PackFileCacheStrategy.js +13 -19
- package/lib/cache/ResolverCachePlugin.js +65 -11
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
- package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
- package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +209 -212
- package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
- package/lib/config/browserslistTargetHandler.js +1 -1
- package/lib/{cli.js → config/cli.js} +14 -164
- package/lib/config/defaults.js +166 -59
- package/lib/config/getClaimedAssetTypes.js +22 -14
- package/lib/config/normalization.js +18 -7
- package/lib/config/target.js +11 -1
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +13 -11
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerExposedDependency.js +1 -1
- package/lib/container/ContainerPlugin.js +178 -5
- package/lib/container/ContainerReferencePlugin.js +75 -14
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackItemDependency.js +1 -1
- package/lib/container/FallbackModule.js +12 -10
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +10 -11
- package/lib/container/ModuleFederationPlugin.js +306 -7
- package/lib/container/RemoteModule.js +14 -10
- package/lib/container/RemoteRuntimeModule.js +5 -5
- package/lib/container/RemoteToExternalDependency.js +1 -1
- package/lib/container/moduleFederationHooks.js +1 -1
- package/lib/context/ContextModule.js +37 -26
- package/lib/context/ContextModuleFactory.js +14 -11
- package/lib/context/ContextReplacementPlugin.js +6 -12
- package/lib/css/CssGenerator.js +78 -68
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
- package/lib/css/CssLoadingRuntimeModule.js +77 -44
- package/lib/css/CssModule.js +37 -29
- package/lib/css/CssModulesPlugin.js +129 -45
- package/lib/css/CssParser.js +714 -322
- package/lib/css/CssServerStylesRuntimeModule.js +3 -3
- package/lib/{util → css}/conventions.js +1 -1
- package/lib/css/cssMinify.js +110 -37
- package/lib/css/data.js +6990 -5125
- package/lib/css/syntax-parser.js +20734 -0
- package/lib/css/syntax-printer.js +6092 -0
- package/lib/css/syntax.js +37 -18686
- package/lib/debug/ProfilingPlugin.js +106 -51
- package/lib/{DefinePlugin.js → define/DefinePlugin.js} +416 -55
- package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +19 -15
- package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +6 -4
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/ConstDependency.js +3 -120
- package/lib/dependencies/ContextElementDependency.js +5 -172
- package/lib/dependencies/NullDependency.js +3 -37
- package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
- package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -11
- package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
- package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
- package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
- package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
- package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +14 -11
- package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
- package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
- package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
- package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
- package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
- package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
- package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
- package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
- package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
- package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +166 -36
- package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
- package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +154 -92
- package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
- package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +36 -33
- package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +17 -16
- package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +48 -39
- package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
- package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
- package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +17 -16
- package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
- package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
- package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +9 -6
- package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
- package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
- package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
- package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
- package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
- package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
- package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
- package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
- package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
- package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
- package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
- package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
- package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +31 -9
- package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
- package/lib/dependencies/context/ContextElementDependency.js +198 -0
- package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +10 -11
- package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
- package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +7 -10
- package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +17 -19
- package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
- package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
- package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
- package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +21 -17
- package/lib/dependencies/core/ConstDependency.js +131 -0
- package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
- package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
- package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
- package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
- package/lib/dependencies/core/NullDependency.js +44 -0
- package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
- package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
- package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +375 -99
- package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +24 -19
- package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
- package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
- package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +25 -22
- package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
- package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
- package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
- package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +29 -21
- package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +20 -20
- package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
- package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
- package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
- package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
- package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
- package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +146 -133
- package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
- package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +78 -37
- package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -12
- package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
- package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +86 -68
- package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +104 -100
- package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +36 -51
- package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
- package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +98 -60
- package/lib/dependencies/esm/ESMLiveExportDependency.js +311 -0
- package/lib/dependencies/esm/ESMLiveExportParserPlugin.js +862 -0
- package/lib/dependencies/esm/ESMModulesPlugin.js +205 -0
- package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
- package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -18
- package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +5 -7
- package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
- package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
- package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
- package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +52 -151
- package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -15
- package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -23
- package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -18
- package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
- package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
- package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
- package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
- package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +22 -25
- package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
- package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
- package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
- package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +122 -103
- package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
- package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
- package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
- package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
- package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +28 -20
- package/lib/{url → dependencies/url}/URLParserPlugin.js +17 -19
- package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
- package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
- package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
- package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
- package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +82 -53
- package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
- package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
- package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
- package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
- package/lib/devtool/ModuleFilenameHelpers.js +413 -0
- package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
- package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +155 -27
- package/lib/{util → devtool}/generateDebugId.js +1 -1
- package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
- package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
- package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
- package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
- package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
- package/lib/dll/DelegatedModule.js +23 -21
- package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
- package/lib/dll/DelegatedPlugin.js +1 -1
- package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
- package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
- package/lib/dll/DllEntryPlugin.js +3 -3
- package/lib/dll/DllModule.js +14 -10
- package/lib/dll/DllModuleFactory.js +3 -3
- package/lib/dll/DllPlugin.js +18 -6
- package/lib/dll/DllReferencePlugin.js +103 -30
- package/lib/dll/LibManifestPlugin.js +9 -7
- package/lib/electron/ElectronTargetPlugin.js +2 -2
- package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
- package/lib/{dependencies → entry}/EntryDependency.js +11 -2
- package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
- package/lib/entry/EntryPlugin.js +75 -0
- package/lib/errors/AbstractMethodError.js +1 -1
- package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
- package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
- package/lib/errors/DeprecatedOptionWarning.js +30 -0
- package/lib/errors/DllManifestError.js +26 -0
- package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
- package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
- package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/{ErrorHelpers.js → errors/ErrorHelpers.js} +9 -6
- package/lib/errors/ExternalStarReexportError.js +2 -2
- package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
- package/lib/errors/HookWebpackError.js +6 -5
- package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/JSONParseError.js +4 -4
- package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
- package/lib/errors/ModuleBuildError.js +1 -1
- package/lib/errors/ModuleDependencyError.js +2 -2
- package/lib/errors/ModuleDependencyWarning.js +2 -2
- package/lib/errors/ModuleError.js +1 -1
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +3 -3
- package/lib/errors/ModuleParseError.js +1 -1
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/ModuleWarning.js +1 -1
- package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
- package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
- package/lib/errors/NodeStuffInWebError.js +7 -2
- package/lib/errors/PathVariableError.js +31 -0
- package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
- package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
- package/lib/errors/RuntimeModuleGenerationError.js +51 -0
- package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
- package/lib/errors/SystemImportDeprecationWarning.js +43 -0
- package/lib/errors/UnmergeableEntryExportsError.js +34 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
- package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
- package/lib/errors/WebpackError.js +13 -3
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +55 -20
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
- package/lib/{ExternalModule.js → externals/ExternalModule.js} +90 -63
- package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +42 -41
- package/lib/externals/ExternalsPlugin.js +99 -0
- package/lib/fs/FileSystemInfo.js +4642 -0
- package/lib/{util → fs}/fs.js +22 -9
- package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
- package/lib/graph/Chunk.js +985 -0
- package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +192 -80
- package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
- package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
- package/lib/graph/Dependency.js +634 -0
- package/lib/graph/Entrypoint.js +136 -0
- package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +131 -83
- package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
- package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +44 -33
- package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
- package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +169 -76
- package/lib/{util → graph}/findGraphRoots.js +15 -9
- package/lib/graph/isDependencyKind.js +23 -0
- package/lib/hmr/HotModuleReplacement.runtime.js +12 -11
- package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +51 -57
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +25 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
- package/lib/hmr/LazyCompilationPlugin.js +32 -28
- package/lib/html/HtmlGenerator.js +132 -60
- package/lib/html/HtmlModule.js +16 -2
- package/lib/html/HtmlModulesPlugin.js +184 -87
- package/lib/html/HtmlParser.js +511 -160
- package/lib/html/builtinEmbeddedRenderer.js +70 -25
- package/lib/html/data.js +44 -22
- package/lib/html/htmlMinify.js +114 -41
- package/lib/html/syntax-parser.js +15795 -0
- package/lib/html/syntax-printer.js +1033 -0
- package/lib/html/syntax.js +37 -13952
- package/lib/html/xmlMinify.js +70 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +32 -5
- package/lib/ids/IdHelpers.js +4 -4
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
- package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
- package/lib/ids/SyncModuleIdsPlugin.js +3 -3
- package/lib/{util → ids}/numberHash.js +1 -1
- package/lib/index.js +312 -105
- package/lib/{APIPlugin.js → javascript/APIPlugin.js} +31 -37
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
- package/lib/javascript/BasicEvaluatedExpression.js +9 -9
- package/lib/javascript/ChunkHelpers.js +64 -4
- package/lib/javascript/CommonJsChunkFormatPlugin.js +5 -13
- package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
- package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +75 -8
- package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
- package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
- package/lib/javascript/JavascriptGenerator.js +32 -27
- package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +8 -20
- package/lib/javascript/JavascriptModule.js +14 -3
- package/lib/javascript/JavascriptModulesPlugin.js +441 -214
- package/lib/javascript/JavascriptParser.js +318 -144
- package/lib/javascript/JavascriptParserHelpers.js +1 -1
- package/lib/javascript/MergedEntryExports.js +196 -0
- package/lib/javascript/ScopeAnalyzer.js +3924 -13
- package/lib/javascript/StartupHelpers.js +6 -6
- package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +13 -19
- package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
- package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
- package/lib/javascript/data.js +533 -122
- package/lib/javascript/jsMinify.js +272 -0
- package/lib/javascript/regexp.js +67 -32
- package/lib/javascript/syntax-parser.js +19169 -0
- package/lib/javascript/syntax-printer-data.js +1099 -0
- package/lib/javascript/syntax-printer.js +53878 -0
- package/lib/javascript/syntax.js +20 -11274
- package/lib/json/JsonData.js +1 -1
- package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
- package/lib/json/JsonGenerator.js +24 -16
- package/lib/json/JsonModule.js +13 -2
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +11 -10
- package/lib/json/jsonMinify.js +69 -0
- package/lib/library/AbstractLibraryPlugin.js +28 -15
- package/lib/library/AmdLibraryPlugin.js +4 -4
- package/lib/library/AssignLibraryPlugin.js +28 -12
- package/lib/library/EnableLibraryPlugin.js +1 -1
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
- package/lib/library/JsonpLibraryPlugin.js +2 -2
- package/lib/library/LibraryTemplatePlugin.js +53 -0
- package/lib/library/ModuleLibraryPlugin.js +557 -187
- package/lib/library/SystemLibraryPlugin.js +6 -8
- package/lib/library/UmdLibraryPlugin.js +3 -4
- package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
- package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
- package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
- package/lib/{dependencies → loaders}/LoaderPlugin.js +2 -2
- package/lib/loaders/LoaderRunner.js +94 -46
- package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
- package/lib/loaders/loadLoader.js +16 -10
- package/lib/logging/Logger.js +7 -9
- package/lib/logging/ProgressPlugin.js +957 -0
- package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
- package/lib/{Generator.js → module/Generator.js} +33 -23
- package/lib/{Module.js → module/Module.js} +121 -53
- package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
- package/lib/module/NormalModule.js +2350 -0
- package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +64 -71
- package/lib/module/NullFactory.js +29 -0
- package/lib/{Parser.js → module/Parser.js} +12 -5
- package/lib/module/RawModule.js +208 -0
- package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
- package/lib/{util → module}/extractSourceMap.js +71 -20
- package/lib/{util → module}/findCaseMismatch.js +4 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
- package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
- package/lib/{dependencies → node}/ExternalModuleInitFragment.js +7 -6
- package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
- package/lib/node/NodeEnvironmentPlugin.js +11 -1
- package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
- package/lib/node/NodeTargetPlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +58 -6
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +9 -11
- package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/nodeConsole.js +6 -7
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
- package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +14 -14
- package/lib/optimize/ConcatenatedModule.js +231 -220
- package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
- package/lib/optimize/ConstExportsPlugin.js +7 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
- package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +23 -28
- package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +44 -19
- package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
- package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
- package/lib/optimize/InlineExports.js +12 -7
- package/lib/optimize/InnerGraph.js +5 -13
- package/lib/optimize/InnerGraphPlugin.js +10 -10
- package/lib/optimize/LazyBarrels.js +620 -0
- package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
- package/lib/optimize/LimitChunkCountPlugin.js +16 -7
- package/lib/optimize/MangleExportsPlugin.js +5 -5
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
- package/lib/optimize/MinChunkSizePlugin.js +9 -6
- package/lib/optimize/ModuleConcatenationPlugin.js +28 -22
- package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
- package/lib/optimize/RealContentHashPlugin.js +18 -13
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/SideEffectsFlagPlugin.js +24 -38
- package/lib/optimize/SplitChunksPlugin.js +719 -174
- package/lib/{util → optimize}/TupleQueue.js +9 -9
- package/lib/optimize/chunkSetIntersections.js +437 -0
- package/lib/{util → optimize}/deterministicGrouping.js +17 -17
- package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
- package/lib/{CleanPlugin.js → output/CleanPlugin.js} +69 -25
- package/lib/{CopyPlugin.js → output/CopyPlugin.js} +144 -70
- package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
- package/lib/output/SSRManifestPlugin.js +349 -0
- package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
- package/lib/performance/BroadContextsPlugin.js +4 -4
- package/lib/performance/CacheEffectivenessPlugin.js +2 -3
- package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
- package/lib/performance/DuplicateModulesPlugin.js +3 -4
- package/lib/performance/DuplicatePackagesPlugin.js +3 -3
- package/lib/performance/DynamicExportsPlugin.js +2 -2
- package/lib/performance/EvalUsagePlugin.js +4 -6
- package/lib/performance/HotspotsPlugin.js +39 -14
- package/lib/performance/LargeModulesPlugin.js +2 -3
- package/lib/performance/LegacyJavascriptPlugin.js +1 -2
- package/lib/performance/MissingSideEffectsPlugin.js +2 -3
- package/lib/performance/MissingSourceMapsPlugin.js +5 -6
- package/lib/performance/PureAnnotationsPlugin.js +19 -13
- package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +11 -12
- package/lib/performance/TopLevelThisPlugin.js +22 -13
- package/lib/performance/UnsplitVendorsPlugin.js +1 -2
- package/lib/performance/UnusedAliasesPlugin.js +6 -7
- package/lib/performance/UnusedAssetsPlugin.js +5 -5
- package/lib/performance/UnusedDefinesPlugin.js +2 -2
- package/lib/performance/UnusedExternalsPlugin.js +3 -4
- package/lib/performance/UnusedFederationPlugin.js +2 -4
- package/lib/performance/UnusedModulesPlugin.js +5 -4
- package/lib/performance/getModuleSize.js +1 -1
- package/lib/performance/hasOnlyUnusedExports.js +4 -4
- package/lib/performance/isOnlyReexported.js +7 -6
- package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
- package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
- package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +66 -45
- package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
- package/lib/prefetch/parseResourceHintOptions.js +4 -3
- package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
- package/lib/{dependencies → provide}/ProvidedDependency.js +50 -17
- package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
- package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
- package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
- package/lib/resolve/getResolveOptionsKey.js +59 -0
- package/lib/rules/BasicEffectRulePlugin.js +1 -1
- package/lib/rules/RuleSetCompiler.js +42 -51
- package/lib/rules/UseEffectRulePlugin.js +1 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
- package/lib/runtime/AsyncModuleRuntimeModule.js +14 -5
- package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
- package/lib/runtime/BaseUriRuntimeModule.js +3 -3
- package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +4 -4
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
- package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
- package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +7 -11
- package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
- package/lib/runtime/GlobalRuntimeModule.js +3 -3
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
- package/lib/runtime/HelperRuntimeModule.js +16 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +80 -17
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/NonceRuntimeModule.js +2 -2
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
- package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +24 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
- package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
- package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +50 -50
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
- package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
- package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
- package/lib/runtime/SystemContextRuntimeModule.js +2 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
- package/lib/runtime/WorkerRuntimeModule.js +1 -1
- package/lib/runtime/baseUri.js +1 -1
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +68 -13
- package/lib/schemes/VirtualUrlPlugin.js +52 -16
- package/lib/serialization/AggregateErrorSerializer.js +4 -4
- package/lib/serialization/BinaryMiddleware.js +4 -1
- package/lib/serialization/ErrorObjectSerializer.js +2 -5
- package/lib/serialization/FileMiddleware.js +3 -3
- package/lib/serialization/ObjectMiddleware.js +62 -29
- package/lib/serialization/PlainObjectSerializer.js +3 -7
- package/lib/serialization/Serializer.js +21 -11
- package/lib/serialization/SerializerMiddleware.js +10 -8
- package/lib/serialization/SingleItemMiddleware.js +4 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
- package/lib/sharing/ConsumeSharedModule.js +18 -14
- package/lib/sharing/ConsumeSharedPlugin.js +148 -42
- package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
- package/lib/sharing/ProvideForSharedDependency.js +9 -1
- package/lib/sharing/ProvideSharedDependency.js +1 -1
- package/lib/sharing/ProvideSharedModule.js +11 -9
- package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
- package/lib/sharing/ProvideSharedPlugin.js +111 -20
- package/lib/sharing/SharePlugin.js +102 -9
- package/lib/sharing/ShareRuntimeModule.js +6 -6
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/{util → sharing}/semver.js +14 -16
- package/lib/sharing/utils.js +59 -2
- package/lib/stats/DefaultStatsFactoryPlugin.js +57 -54
- package/lib/stats/DefaultStatsPresetPlugin.js +3 -7
- package/lib/stats/DefaultStatsPrinterPlugin.js +15 -14
- package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
- package/lib/{Stats.js → stats/Stats.js} +4 -4
- package/lib/stats/StatsFactory.js +208 -37
- package/lib/stats/StatsPrinter.js +126 -13
- package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
- package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
- package/lib/template/DependencyTemplate.js +77 -0
- package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
- package/lib/template/InitFragment.js +223 -0
- package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
- package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
- package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
- package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +158 -95
- package/lib/{Template.js → template/Template.js} +14 -12
- package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
- package/lib/typescript/TypeScriptPlugin.js +3 -3
- package/lib/util/RequestShortener.js +44 -0
- package/lib/util/SortableSet.js +87 -22
- package/lib/util/SourceProcessor.js +439 -51
- package/lib/util/TupleSet.js +27 -27
- package/lib/util/WeakTupleMap.js +20 -16
- package/lib/util/buildDiagnostics.js +2 -2
- package/lib/util/cleverMerge.js +61 -33
- package/lib/util/comparators.js +19 -15
- package/lib/util/concatenate.js +28 -147
- package/lib/util/createMappings.js +111 -0
- package/lib/util/dataURL.js +96 -15
- package/lib/util/deprecation.js +5 -4
- package/lib/util/extractComments.js +118 -0
- package/lib/util/formatLocation.js +1 -1
- package/lib/util/globUtils.js +198 -20
- package/lib/util/haltVisitors.js +51 -0
- package/lib/util/handlerKeys.js +2 -2
- package/lib/util/identifier.js +117 -1
- package/lib/util/implicitTypeLoaderFallback.js +6 -4
- package/lib/util/internalSerializables.js +296 -102
- package/lib/util/magicComment.js +12 -7
- package/lib/util/makeSerializable.js +28 -7
- package/lib/util/memoize.js +1 -1
- package/lib/util/parseJson.js +2 -2
- package/lib/util/preloadModuleType.js +5 -2
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/removeBOM.js +1 -1
- package/lib/util/runtime.js +1 -1
- package/lib/util/serialization.js +35 -28
- package/lib/util/source.js +2 -2
- package/lib/util/terminalColors.js +161 -0
- package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmModule.js +19 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +17 -9
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +24 -15
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +14 -12
- package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
- package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +11 -13
- package/lib/wasm/wasmModuleFilename.js +2 -2
- package/lib/wasm-sync/SyncWasmModule.js +18 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +22 -16
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +28 -21
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
- package/lib/wasm-sync/WebAssemblyParser.js +15 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
- package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
- package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
- package/lib/{Watching.js → watch/Watching.js} +8 -8
- package/lib/web/FetchCompileAsyncWasmPlugin.js +12 -18
- package/lib/web/FetchCompileWasmPlugin.js +8 -10
- package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
- package/lib/web/JsonpTemplatePlugin.js +1 -1
- package/lib/webpack.js +27 -17
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
- package/package.json +57 -36
- package/schemas/WebpackOptions.check.js +4 -3
- package/schemas/WebpackOptions.d.json.ts +2 -0
- package/schemas/WebpackOptions.json +295 -75
- package/schemas/plugins/BannerPlugin.check.js +4 -3
- package/schemas/plugins/BannerPlugin.json +29 -2
- package/schemas/plugins/HtmlGeneratorOptions.check.js +4 -3
- package/schemas/plugins/HtmlParserOptions.check.js +4 -3
- package/schemas/plugins/IgnorePlugin.check.js +4 -3
- package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +4 -3
- package/schemas/plugins/ManifestPlugin.check.js +4 -3
- package/schemas/plugins/ManifestPlugin.json +3 -3
- package/schemas/plugins/ProgressPlugin.check.js +4 -3
- package/schemas/plugins/ProgressPlugin.json +2 -7
- package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
- package/schemas/plugins/SSRManifestPlugin.json +20 -0
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +4 -3
- package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
- package/schemas/plugins/WatchIgnorePlugin.check.js +4 -3
- package/schemas/plugins/WatchIgnorePlugin.json +12 -3
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetParserOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +4 -3
- package/schemas/plugins/container/ContainerPlugin.check.js +4 -3
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +4 -3
- package/schemas/plugins/container/ExternalsType.check.js +4 -3
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +4 -3
- package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +4 -3
- package/schemas/plugins/css/CssGeneratorOptions.check.js +4 -3
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +4 -3
- package/schemas/plugins/css/CssModuleParserOptions.check.js +4 -3
- package/schemas/plugins/css/CssParserOptions.check.js +4 -3
- package/schemas/plugins/debug/ProfilingPlugin.check.js +4 -3
- package/schemas/plugins/define/DotenvPluginOptions.check.js +7 -0
- package/schemas/plugins/define/DotenvPluginOptions.json +3 -0
- package/schemas/plugins/dll/DllPlugin.check.js +4 -3
- package/schemas/plugins/dll/DllReferencePlugin.check.js +4 -3
- package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +4 -3
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +4 -3
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +4 -3
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +4 -3
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +4 -3
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +4 -3
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +4 -3
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +4 -3
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +4 -3
- package/schemas/plugins/output/CleanOptions.check.js +7 -0
- package/schemas/plugins/output/CleanOptions.json +3 -0
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +4 -3
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +4 -3
- package/schemas/plugins/sharing/SharePlugin.json +32 -0
- package/types.d.ts +20780 -14174
- package/lib/LazyBarrel.js +0 -388
- package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
- package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
- package/lib/javascript/ChunkFormatHelpers.js +0 -72
- package/lib/javascript/grammar.js +0 -5546
- package/lib/javascript/parser.js +0 -1500
- package/lib/javascript/regexpData.js +0 -51
- package/lib/performance/getSourceModules.js +0 -22
- package/lib/util/Semaphore.js +0 -65
- package/lib/util/objectToMap.js +0 -15
- package/schemas/WebpackOptions.check.d.ts +0 -7
- package/schemas/_container.json +0 -155
- package/schemas/_sharing.json +0 -118
- package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
- package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
- package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
- package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
- /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
- /package/lib/{util → css}/topologicalSort.js +0 -0
- /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
- /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
- /package/lib/{util → fs}/StackedCacheMap.js +0 -0
- /package/lib/{util → javascript}/StackedMap.js +0 -0
- /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
- /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
- /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
- /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
- /package/lib/{util → optimize}/Queue.js +0 -0
- /package/lib/{util → stats}/smartGrouping.js +0 -0
|
@@ -6,27 +6,40 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const { ConcatSource } = require("webpack-sources");
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const { JAVASCRIPT_TYPE } = require("../ModuleSourceTypeConstants");
|
|
12
|
-
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
13
|
-
const Template = require("../Template");
|
|
14
|
-
const HarmonyExportExpressionDependency = require("../dependencies/HarmonyExportExpressionDependency");
|
|
15
|
-
const HarmonyExportImportedSpecifierDependency = require("../dependencies/HarmonyExportImportedSpecifierDependency");
|
|
16
|
-
const HarmonyExportSpecifierDependency = require("../dependencies/HarmonyExportSpecifierDependency");
|
|
9
|
+
const ESMLiveExportDependency = require("../dependencies/esm/ESMLiveExportDependency");
|
|
10
|
+
const ESMLiveExportParserPlugin = require("../dependencies/esm/ESMLiveExportParserPlugin");
|
|
17
11
|
const ExternalStarReexportError = require("../errors/ExternalStarReexportError");
|
|
12
|
+
const { UsageState } = require("../graph/ExportsInfo");
|
|
13
|
+
const isDependencyKind = require("../graph/isDependencyKind");
|
|
18
14
|
const JavascriptModulesPlugin = require("../javascript/JavascriptModulesPlugin");
|
|
19
|
-
const ConcatenatedModule = require("../optimize/ConcatenatedModule");
|
|
20
|
-
const { InlinedUsedName } = require("../optimize/InlineExports");
|
|
21
|
-
const { toJsStringLiteral } = require("../util/identifier");
|
|
22
15
|
const {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
} = require("../
|
|
27
|
-
const {
|
|
16
|
+
getMergedExports,
|
|
17
|
+
mergedEntryModules
|
|
18
|
+
} = require("../javascript/MergedEntryExports");
|
|
19
|
+
const { JAVASCRIPT_TYPE } = require("../module/ModuleSourceTypeConstants");
|
|
20
|
+
const {
|
|
21
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
|
22
|
+
JAVASCRIPT_MODULE_TYPE_ESM
|
|
23
|
+
} = require("../module/ModuleTypeConstants");
|
|
24
|
+
const { isInlinedUsedName } = require("../optimize/InlineExports");
|
|
25
|
+
const RuntimeGlobals = require("../runtime/RuntimeGlobals");
|
|
26
|
+
const Template = require("../template/Template");
|
|
27
|
+
const { someInIterable } = require("../util/IterableHelpers");
|
|
28
|
+
const { renameIdentifiers } = require("../util/concatenate");
|
|
29
|
+
const { SAFE_IDENTIFIER, propertyAccess } = require("../util/property");
|
|
30
|
+
const {
|
|
31
|
+
getEntryRuntime,
|
|
32
|
+
getRuntimeKey,
|
|
33
|
+
intersectRuntime
|
|
34
|
+
} = require("../util/runtime");
|
|
28
35
|
const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
29
36
|
|
|
37
|
+
/** @import ExternalModule from "../externals/ExternalModule" */
|
|
38
|
+
/** @import { ExportInfo } from "../graph/ExportsInfo" */
|
|
39
|
+
/** @import Chunk from "../graph/Chunk" */
|
|
40
|
+
/** @import ESMExportSpecifierDependency from "../dependencies/esm/ESMExportSpecifierDependency" */
|
|
41
|
+
/** @import NormalModuleFactory from "../module/NormalModuleFactory" */
|
|
42
|
+
/** @import { InlinedUsedName } from "../optimize/InlineExports" */
|
|
30
43
|
/** @import { Source } from "webpack-sources" */
|
|
31
44
|
/**
|
|
32
45
|
* @import {
|
|
@@ -35,18 +48,19 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
|
35
48
|
* LibraryExport
|
|
36
49
|
* } from "../../declarations/WebpackOptions"
|
|
37
50
|
*/
|
|
38
|
-
/** @import
|
|
51
|
+
/** @import CodeGenerationResults from "../module/CodeGenerationResults" */
|
|
39
52
|
/** @import Compilation from "../Compilation" */
|
|
40
53
|
/** @import Compiler from "../Compiler" */
|
|
41
|
-
/** @import ModuleGraph from "../ModuleGraph" */
|
|
42
|
-
/** @import Module from "../Module" */
|
|
54
|
+
/** @import ModuleGraph, { LiveBinding } from "../graph/ModuleGraph" */
|
|
55
|
+
/** @import Module from "../module/Module" */
|
|
56
|
+
/** @import ChunkGraph from "../graph/ChunkGraph" */
|
|
57
|
+
/** @import RuntimeTemplate from "../template/RuntimeTemplate" */
|
|
43
58
|
/**
|
|
44
59
|
* @import {
|
|
45
60
|
* StartupRenderContext,
|
|
46
61
|
* ModuleRenderContext
|
|
47
62
|
* } from "../javascript/JavascriptModulesPlugin"
|
|
48
63
|
*/
|
|
49
|
-
/** @import { ImportAttributes } from "../javascript/JavascriptParser" */
|
|
50
64
|
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
51
65
|
/**
|
|
52
66
|
* @import {
|
|
@@ -83,37 +97,115 @@ const PLUGIN_NAME = "ModuleLibraryPlugin";
|
|
|
83
97
|
const libraryEntryModules = new WeakMap();
|
|
84
98
|
|
|
85
99
|
/**
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
100
|
+
* @typedef {object} ChunkLiveExports
|
|
101
|
+
* @property {string[]} names the names the chunk's scope declares
|
|
102
|
+
* @property {Map<InstanceType<ExportInfo>, string>} exports the name each live export binds to
|
|
103
|
+
* @property {[string, string, string, string | false, boolean][]} setters the module id, local name, declared name, used export name and async status of each binding a module writes through a setter
|
|
104
|
+
* @property {boolean} hasAsync whether any setter belongs to an async module
|
|
105
|
+
*/
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* @typedef {object} LiveExportCandidate
|
|
109
|
+
* @property {Module} module the module declaring the binding
|
|
110
|
+
* @property {ESMLiveExportDependency} declaration its declaration
|
|
111
|
+
* @property {InstanceType<ExportInfo>} exportInfo the library's export of it
|
|
112
|
+
* @property {string} localName the local name the export binds to
|
|
113
|
+
* @property {boolean} mirrored whether the module keeps its declaration and mirrors each write
|
|
114
|
+
*/
|
|
115
|
+
|
|
116
|
+
/** @type {WeakMap<Chunk, ChunkLiveExports>} */
|
|
117
|
+
const chunkLiveExports = new WeakMap();
|
|
118
|
+
|
|
119
|
+
/** @type {WeakSet<NormalModuleFactory>} */
|
|
120
|
+
const liveExportFactories = new WeakSet();
|
|
121
|
+
|
|
122
|
+
/** @type {WeakMap<Compilation, Set<string>>} */
|
|
123
|
+
const hoistedNames = new WeakMap();
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* @typedef {object} ModuleLocalExports
|
|
127
|
+
* @property {Map<string, ESMExportSpecifierDependency>} specifiers each local export by its name
|
|
128
|
+
* @property {Map<string, ESMLiveExportDependency>} declarations each live `let` by a name it declares
|
|
129
|
+
*/
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Indexes the local exports and live `let` declarations of a module, once per module.
|
|
133
|
+
* @param {Module} module the module
|
|
134
|
+
* @param {Map<Module, ModuleLocalExports>} cache the indexes built so far
|
|
135
|
+
* @returns {ModuleLocalExports} the module's index
|
|
136
|
+
*/
|
|
137
|
+
const getModuleLocalExports = (module, cache) => {
|
|
138
|
+
let result = cache.get(module);
|
|
139
|
+
if (result !== undefined) return result;
|
|
140
|
+
result = { specifiers: new Map(), declarations: new Map() };
|
|
141
|
+
for (const dependency of module.dependencies) {
|
|
142
|
+
if (isDependencyKind(dependency, "esm-export-specifier")) {
|
|
143
|
+
result.specifiers.set(dependency.name, dependency);
|
|
144
|
+
} else if (isDependencyKind(dependency, "esm-live-export")) {
|
|
145
|
+
for (const name of dependency.names) {
|
|
146
|
+
result.declarations.set(name, dependency);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
cache.set(module, result);
|
|
151
|
+
return result;
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Why a module's exported module-level bindings cannot move to the chunk's scope.
|
|
156
|
+
* @param {Module} module the module declaring them
|
|
157
|
+
* @param {Module} entry the entry module exporting them
|
|
158
|
+
* @param {ESMLiveExportDependency} declaration one of its declarations
|
|
159
|
+
* @returns {string | null} the reason they stay and mirror, empty where they are live already, null where they can move
|
|
160
|
+
*/
|
|
161
|
+
const getHoistRefusal = (module, entry, declaration) => {
|
|
162
|
+
// A concatenation puts its modules' bindings in one scope already.
|
|
163
|
+
if (
|
|
164
|
+
module.is("concatenated") ||
|
|
165
|
+
(entry !== module &&
|
|
166
|
+
someInIterable(entry.getSourceModules(), (source) => source === module))
|
|
167
|
+
) {
|
|
168
|
+
return "";
|
|
169
|
+
}
|
|
170
|
+
if (declaration.readByEval) {
|
|
171
|
+
return "the module calls eval(), and a function it creates may write a binding later";
|
|
172
|
+
}
|
|
173
|
+
return null;
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Whether a module's code runs where the chunk's scope is not: in a hot update, or in
|
|
178
|
+
* another chunk of the runtime, so it can reach the declared names only through setters.
|
|
179
|
+
* @param {Module} module the module declaring them
|
|
180
|
+
* @param {ESMLiveExportDependency} declaration one of its declarations
|
|
181
|
+
* @param {Chunk} chunk the library's chunk
|
|
182
|
+
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
183
|
+
* @returns {boolean} true when the module needs the setters
|
|
184
|
+
*/
|
|
185
|
+
const needsSetters = (module, declaration, chunk, chunkGraph) =>
|
|
186
|
+
declaration.hot ||
|
|
187
|
+
!chunkGraph.isModuleInChunk(module, chunk) ||
|
|
188
|
+
someInIterable(
|
|
189
|
+
chunkGraph.getModuleChunksIterable(module),
|
|
190
|
+
(other) =>
|
|
191
|
+
other !== chunk &&
|
|
192
|
+
intersectRuntime(other.runtime, chunk.runtime) !== undefined
|
|
193
|
+
);
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Whether the library reads every export of the entry off its exports object, never
|
|
197
|
+
* binding one to a declaration of the inlined body, so no definition can be left out.
|
|
90
198
|
* @param {Module} module the entry module
|
|
91
199
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
92
|
-
* @returns {boolean} true when the
|
|
200
|
+
* @returns {boolean} true when the entry has no export the library exposes natively
|
|
93
201
|
*/
|
|
94
|
-
const
|
|
202
|
+
const noNativeExports = (module, moduleGraph) => {
|
|
95
203
|
const buildMeta = /** @type {JavascriptModuleBuildMeta} */ (module.buildMeta);
|
|
96
|
-
if (buildMeta && buildMeta.treatAsCommonJs) return
|
|
204
|
+
if (buildMeta && buildMeta.treatAsCommonJs) return true;
|
|
97
205
|
// A top-level `await` wraps the body in `__webpack_require__.a`, and the
|
|
98
206
|
// definitions read declarations inside that wrapper — re-emitting them after the
|
|
99
207
|
// module would put them out of scope.
|
|
100
|
-
|
|
101
|
-
const topLevelDeclarations =
|
|
102
|
-
module.buildInfo && module.buildInfo.topLevelDeclarations;
|
|
103
|
-
if (!topLevelDeclarations) return false;
|
|
104
|
-
for (const dep of module.dependencies) {
|
|
105
|
-
// A re-export or an `export default` has no declaration of its own to bind to,
|
|
106
|
-
// so `renderStartup` reads its value back off the exports object.
|
|
107
|
-
if (
|
|
108
|
-
dep instanceof HarmonyExportImportedSpecifierDependency ||
|
|
109
|
-
dep instanceof HarmonyExportExpressionDependency
|
|
110
|
-
) {
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
if (!(dep instanceof HarmonyExportSpecifierDependency)) continue;
|
|
114
|
-
if (!topLevelDeclarations.has(dep.id)) return false;
|
|
115
|
-
}
|
|
116
|
-
return true;
|
|
208
|
+
return moduleGraph.isAsync(module);
|
|
117
209
|
};
|
|
118
210
|
|
|
119
211
|
/**
|
|
@@ -125,26 +217,6 @@ const definesOnlyNativeExports = (module, moduleGraph) => {
|
|
|
125
217
|
const toExportName = (name) =>
|
|
126
218
|
SAFE_IDENTIFIER.test(name) ? name : JSON.stringify(name);
|
|
127
219
|
|
|
128
|
-
/**
|
|
129
|
-
* Renders the import attributes of a reexport in the syntax the author wrote,
|
|
130
|
-
* since a legacy `assert` clause and a `with` clause are not interchangeable.
|
|
131
|
-
* @param {ImportAttributes | undefined} attributes the import attributes
|
|
132
|
-
* @returns {string} the attributes clause, empty when there are none
|
|
133
|
-
*/
|
|
134
|
-
const toAttributesClause = (attributes) => {
|
|
135
|
-
if (!attributes) return "";
|
|
136
|
-
const { _isLegacyAssert: isLegacyAssert, ...values } = attributes;
|
|
137
|
-
return ` ${isLegacyAssert ? "assert" : "with"} ${JSON.stringify(values)}`;
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Whether the export name can also be used as the declared binding name.
|
|
142
|
-
* @param {string} name export name
|
|
143
|
-
* @returns {boolean} true, when the name can be declared
|
|
144
|
-
*/
|
|
145
|
-
const isDeclarableExportName = (name) =>
|
|
146
|
-
SAFE_IDENTIFIER.test(name) && !RESERVED_IDENTIFIER.has(name);
|
|
147
|
-
|
|
148
220
|
/**
|
|
149
221
|
* Represents the module library plugin runtime component.
|
|
150
222
|
* @typedef {ModuleLibraryPluginParsed} T
|
|
@@ -170,10 +242,34 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
170
242
|
apply(compiler) {
|
|
171
243
|
super.apply(compiler);
|
|
172
244
|
|
|
245
|
+
// Both library types apply this plugin, and one parser tap records everything.
|
|
246
|
+
compiler.hooks.normalModuleFactory.tap(
|
|
247
|
+
PLUGIN_NAME,
|
|
248
|
+
(normalModuleFactory) => {
|
|
249
|
+
if (liveExportFactories.has(normalModuleFactory)) return;
|
|
250
|
+
liveExportFactories.add(normalModuleFactory);
|
|
251
|
+
for (const type of [
|
|
252
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
|
253
|
+
JAVASCRIPT_MODULE_TYPE_ESM
|
|
254
|
+
]) {
|
|
255
|
+
normalModuleFactory.hooks.parser
|
|
256
|
+
.for(type)
|
|
257
|
+
.tap(PLUGIN_NAME, (parser) => {
|
|
258
|
+
new ESMLiveExportParserPlugin().apply(parser);
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
);
|
|
263
|
+
|
|
173
264
|
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
|
|
174
265
|
const javascriptHooks =
|
|
175
266
|
JavascriptModulesPlugin.getCompilationHooks(compilation);
|
|
176
267
|
|
|
268
|
+
compilation.dependencyTemplates.set(
|
|
269
|
+
ESMLiveExportDependency,
|
|
270
|
+
new ESMLiveExportDependency.Template()
|
|
271
|
+
);
|
|
272
|
+
|
|
177
273
|
compilation.hooks.beforeCodeGeneration.tap(PLUGIN_NAME, () => {
|
|
178
274
|
const entries = libraryEntryModules.get(compilation);
|
|
179
275
|
if (entries === undefined) return;
|
|
@@ -182,13 +278,9 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
182
278
|
for (const dep of dependencies) {
|
|
183
279
|
const module = dep && moduleGraph.getModule(dep);
|
|
184
280
|
if (!module) continue;
|
|
185
|
-
const root =
|
|
186
|
-
module instanceof ConcatenatedModule ? module.rootModule : module;
|
|
281
|
+
const root = module.getRootModule();
|
|
187
282
|
if (!entries.has(root)) continue;
|
|
188
|
-
if (
|
|
189
|
-
root === module &&
|
|
190
|
-
!definesOnlyNativeExports(module, moduleGraph)
|
|
191
|
-
) {
|
|
283
|
+
if (root === module && noNativeExports(module, moduleGraph)) {
|
|
192
284
|
continue;
|
|
193
285
|
}
|
|
194
286
|
moduleGraph.getMeta(module).onDemandExports = true;
|
|
@@ -196,11 +288,218 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
196
288
|
}
|
|
197
289
|
});
|
|
198
290
|
|
|
291
|
+
// An exported module-level `let` or `var` of a module the chunk runs as a function
|
|
292
|
+
// moves to the chunk's scope under a reserved name, which the library then
|
|
293
|
+
// exports itself; decided before hashing, as the module's code changes.
|
|
294
|
+
compilation.hooks.beforeModuleHash.tap(PLUGIN_NAME, () => {
|
|
295
|
+
const entries = libraryEntryModules.get(compilation);
|
|
296
|
+
if (entries === undefined) return;
|
|
297
|
+
const { chunkGraph, moduleGraph } = compilation;
|
|
298
|
+
/** @type {Map<Module, ModuleLocalExports>} */
|
|
299
|
+
const localExports = new Map();
|
|
300
|
+
// Both library types name bindings in one compilation, so they share it.
|
|
301
|
+
let usedNames = hoistedNames.get(compilation);
|
|
302
|
+
if (usedNames === undefined) {
|
|
303
|
+
usedNames = new Set();
|
|
304
|
+
hoistedNames.set(compilation, usedNames);
|
|
305
|
+
}
|
|
306
|
+
/** @type {Map<Module, Set<string>>} */
|
|
307
|
+
const registeredRuntimes = new Map();
|
|
308
|
+
/** @type {{ chunk: Chunk, runtimeKey: string, candidates: LiveExportCandidate[] }[]} */
|
|
309
|
+
const chunkCandidates = [];
|
|
310
|
+
for (const chunk of compilation.chunks) {
|
|
311
|
+
if (chunkGraph.getNumberOfEntryModules(chunk) === 0) continue;
|
|
312
|
+
const entryOptions = chunk.getEntryOptions();
|
|
313
|
+
const library =
|
|
314
|
+
entryOptions && entryOptions.library !== undefined
|
|
315
|
+
? entryOptions.library
|
|
316
|
+
: compilation.outputOptions.library;
|
|
317
|
+
if (this._parseOptionsCached(library) === false) continue;
|
|
318
|
+
const runtimeKey = getRuntimeKey(chunk.runtime);
|
|
319
|
+
/** @type {LiveExportCandidate[]} */
|
|
320
|
+
const candidates = [];
|
|
321
|
+
// why each module keeps its bindings, null where they move
|
|
322
|
+
/** @type {Map<Module, string | null>} */
|
|
323
|
+
const refusals = new Map();
|
|
324
|
+
for (const entry of chunkGraph.getChunkEntryModulesIterable(chunk)) {
|
|
325
|
+
if (!entries.has(entry.getRootModule())) continue;
|
|
326
|
+
for (const exportInfo of moduleGraph.getExportsInfo(entry)
|
|
327
|
+
.orderedExports) {
|
|
328
|
+
if (!exportInfo.provided) continue;
|
|
329
|
+
const target = exportInfo.getTarget(moduleGraph);
|
|
330
|
+
if (target && (!target.export || target.export.length !== 1)) {
|
|
331
|
+
continue;
|
|
332
|
+
}
|
|
333
|
+
const module = target ? target.module : entry;
|
|
334
|
+
const { specifiers, declarations } = getModuleLocalExports(
|
|
335
|
+
module,
|
|
336
|
+
localExports
|
|
337
|
+
);
|
|
338
|
+
const local = specifiers.get(
|
|
339
|
+
target
|
|
340
|
+
? /** @type {string[]} */ (target.export)[0]
|
|
341
|
+
: exportInfo.name
|
|
342
|
+
);
|
|
343
|
+
const declaration = local && declarations.get(local.id);
|
|
344
|
+
if (!declaration) continue;
|
|
345
|
+
let refusal = refusals.get(module);
|
|
346
|
+
if (refusal === undefined) {
|
|
347
|
+
refusal = getHoistRefusal(module, entry, declaration);
|
|
348
|
+
refusals.set(module, refusal);
|
|
349
|
+
if (refusal) {
|
|
350
|
+
compilation.runtimeTemplate.analyzableBailout(
|
|
351
|
+
module,
|
|
352
|
+
`a module library may export a stale binding, since ${refusal}`
|
|
353
|
+
);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
if (refusal === "") continue;
|
|
357
|
+
candidates.push({
|
|
358
|
+
module,
|
|
359
|
+
declaration,
|
|
360
|
+
exportInfo,
|
|
361
|
+
localName: local.id,
|
|
362
|
+
mirrored: declaration.earlyUse || refusal !== null
|
|
363
|
+
});
|
|
364
|
+
// A module runs once per runtime, so one library of it needing the
|
|
365
|
+
// setters makes every library of that runtime register them.
|
|
366
|
+
if (needsSetters(module, declaration, chunk, chunkGraph)) {
|
|
367
|
+
let runtimes = registeredRuntimes.get(module);
|
|
368
|
+
if (runtimes === undefined) {
|
|
369
|
+
runtimes = new Set();
|
|
370
|
+
registeredRuntimes.set(module, runtimes);
|
|
371
|
+
}
|
|
372
|
+
runtimes.add(runtimeKey);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
if (candidates.length > 0) {
|
|
377
|
+
chunkCandidates.push({ chunk, runtimeKey, candidates });
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
for (const { chunk, runtimeKey, candidates } of chunkCandidates) {
|
|
381
|
+
/** @type {string[]} */
|
|
382
|
+
const names = [];
|
|
383
|
+
/** @type {Set<LiveBinding>} */
|
|
384
|
+
const declared = new Set();
|
|
385
|
+
/** @type {ChunkLiveExports["exports"]} */
|
|
386
|
+
const exports = new Map();
|
|
387
|
+
/** @type {ChunkLiveExports["setters"]} */
|
|
388
|
+
const setters = [];
|
|
389
|
+
/** @type {Map<Module, { runtimeKeys: string[], usedExports: Map<string, string> }>} */
|
|
390
|
+
const moduleRuntimeInfo = new Map();
|
|
391
|
+
let hasAsync = false;
|
|
392
|
+
for (const {
|
|
393
|
+
module,
|
|
394
|
+
declaration,
|
|
395
|
+
exportInfo,
|
|
396
|
+
localName,
|
|
397
|
+
mirrored
|
|
398
|
+
} of candidates) {
|
|
399
|
+
const runtimes = registeredRuntimes.get(module);
|
|
400
|
+
const registered =
|
|
401
|
+
runtimes !== undefined && runtimes.has(runtimeKey);
|
|
402
|
+
const isAsync = registered && moduleGraph.isAsync(module);
|
|
403
|
+
const meta = moduleGraph.getMeta(module);
|
|
404
|
+
// Renaming takes the module's own declaration, which an early use needs in
|
|
405
|
+
// order to throw and eval() to read, so such a module mirrors each write.
|
|
406
|
+
const bindings =
|
|
407
|
+
registered || mirrored
|
|
408
|
+
? meta.liveSetters || (meta.liveSetters = new Map())
|
|
409
|
+
: meta.liveBindings || (meta.liveBindings = new Map());
|
|
410
|
+
for (const name of declaration.names) {
|
|
411
|
+
let binding = bindings.get(name);
|
|
412
|
+
if (binding === undefined) {
|
|
413
|
+
let hoisted = `__webpack_live_${name}__`;
|
|
414
|
+
for (let i = 1; usedNames.has(hoisted); i++) {
|
|
415
|
+
hoisted = `__webpack_live_${name}_${i}__`;
|
|
416
|
+
}
|
|
417
|
+
usedNames.add(hoisted);
|
|
418
|
+
binding = {
|
|
419
|
+
name: hoisted,
|
|
420
|
+
runtimes: new Set(),
|
|
421
|
+
registered: new Set()
|
|
422
|
+
};
|
|
423
|
+
bindings.set(name, binding);
|
|
424
|
+
}
|
|
425
|
+
if (declared.has(binding)) continue;
|
|
426
|
+
declared.add(binding);
|
|
427
|
+
binding.runtimes.add(runtimeKey);
|
|
428
|
+
names.push(binding.name);
|
|
429
|
+
if (!registered) continue;
|
|
430
|
+
binding.registered.add(runtimeKey);
|
|
431
|
+
let runtimeInfo = moduleRuntimeInfo.get(module);
|
|
432
|
+
if (runtimeInfo === undefined) {
|
|
433
|
+
runtimeInfo = { runtimeKeys: [], usedExports: new Map() };
|
|
434
|
+
// Shared chunks generate the module for a union of runtimes;
|
|
435
|
+
// guarded setters apply when any of them registers this binding.
|
|
436
|
+
for (const runtime of chunkGraph.getModuleRuntimes(module)) {
|
|
437
|
+
if (intersectRuntime(runtime, chunk.runtime) === undefined) {
|
|
438
|
+
continue;
|
|
439
|
+
}
|
|
440
|
+
runtimeInfo.runtimeKeys.push(getRuntimeKey(runtime));
|
|
441
|
+
}
|
|
442
|
+
const exportsInfo = moduleGraph.getExportsInfo(module);
|
|
443
|
+
for (const [exportName, specifier] of getModuleLocalExports(
|
|
444
|
+
module,
|
|
445
|
+
localExports
|
|
446
|
+
).specifiers) {
|
|
447
|
+
// A module that already ran seeds the binding from its first used alias.
|
|
448
|
+
if (runtimeInfo.usedExports.has(specifier.id)) continue;
|
|
449
|
+
const usedName = exportsInfo.getUsedName(
|
|
450
|
+
exportName,
|
|
451
|
+
chunk.runtime
|
|
452
|
+
);
|
|
453
|
+
if (typeof usedName === "string") {
|
|
454
|
+
runtimeInfo.usedExports.set(specifier.id, usedName);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
moduleRuntimeInfo.set(module, runtimeInfo);
|
|
458
|
+
}
|
|
459
|
+
for (const key of runtimeInfo.runtimeKeys) {
|
|
460
|
+
binding.runtimes.add(key);
|
|
461
|
+
binding.registered.add(key);
|
|
462
|
+
}
|
|
463
|
+
const used = runtimeInfo.usedExports.get(name);
|
|
464
|
+
hasAsync = hasAsync || isAsync;
|
|
465
|
+
setters.push([
|
|
466
|
+
JSON.stringify(chunkGraph.getModuleId(module)),
|
|
467
|
+
name,
|
|
468
|
+
binding.name,
|
|
469
|
+
used === undefined ? false : used,
|
|
470
|
+
isAsync
|
|
471
|
+
]);
|
|
472
|
+
}
|
|
473
|
+
exports.set(
|
|
474
|
+
exportInfo,
|
|
475
|
+
/** @type {LiveBinding} */ (bindings.get(localName)).name
|
|
476
|
+
);
|
|
477
|
+
}
|
|
478
|
+
if (names.length > 0) {
|
|
479
|
+
chunkLiveExports.set(chunk, { names, exports, setters, hasAsync });
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
});
|
|
483
|
+
|
|
199
484
|
// The stashed exports source is re-emitted only where the entry is wrapped;
|
|
200
485
|
// inlined directly, the helpers it pulled in have no reader and can go.
|
|
486
|
+
compilation.hooks.additionalChunkRuntimeRequirements.tap(
|
|
487
|
+
PLUGIN_NAME,
|
|
488
|
+
(chunk, set) => {
|
|
489
|
+
const live = chunkLiveExports.get(chunk);
|
|
490
|
+
if (live && live.setters.length > 0) {
|
|
491
|
+
set.add(RuntimeGlobals.moduleCache);
|
|
492
|
+
if (live.hasAsync) {
|
|
493
|
+
set.add(RuntimeGlobals.asyncModuleExportSymbol);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
);
|
|
498
|
+
|
|
201
499
|
compilation.hooks.additionalChunkRuntimeRequirements.tap(
|
|
202
500
|
PLUGIN_NAME,
|
|
203
501
|
(chunk, set, { chunkGraph, codeGenerationResults }) => {
|
|
502
|
+
const { moduleGraph, runtimeTemplate } = compilation;
|
|
204
503
|
if (!set.has(RuntimeGlobals.definePropertyGetters)) return;
|
|
205
504
|
if (chunkGraph.getNumberOfEntryModules(chunk) !== 1) return;
|
|
206
505
|
if (
|
|
@@ -215,6 +514,48 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
215
514
|
if (javascriptHooks.inlineInRuntimeBailout.isUsed()) return;
|
|
216
515
|
|
|
217
516
|
const [module] = chunkGraph.getChunkEntryModulesIterable(chunk);
|
|
517
|
+
if (chunk.hasRuntime()) {
|
|
518
|
+
// The startup inlines the entry only where nothing else loads with
|
|
519
|
+
// it: another chunk of the entrypoint delays the execution, and a
|
|
520
|
+
// module reading the entry needs it in the registry.
|
|
521
|
+
for (const [
|
|
522
|
+
,
|
|
523
|
+
entrypoint
|
|
524
|
+
] of chunkGraph.getChunkEntryModulesWithChunkGroupIterable(chunk)) {
|
|
525
|
+
if (entrypoint && entrypoint.chunks.some((c) => c !== chunk)) {
|
|
526
|
+
return;
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
if (
|
|
530
|
+
someInIterable(
|
|
531
|
+
moduleGraph.getIncomingConnectionsByOriginModule(module),
|
|
532
|
+
([originModule, connections]) =>
|
|
533
|
+
originModule &&
|
|
534
|
+
originModule !== module &&
|
|
535
|
+
connections.some((c) => c.isTargetActive(chunk.runtime)) &&
|
|
536
|
+
someInIterable(
|
|
537
|
+
chunkGraph.getModuleRuntimes(originModule),
|
|
538
|
+
(runtime) =>
|
|
539
|
+
intersectRuntime(runtime, chunk.runtime) !== undefined
|
|
540
|
+
)
|
|
541
|
+
)
|
|
542
|
+
) {
|
|
543
|
+
return;
|
|
544
|
+
}
|
|
545
|
+
} else if (
|
|
546
|
+
// A chunk whose runtime is elsewhere lifts its entry to the top
|
|
547
|
+
// level under the same conditions, and renders it into the module
|
|
548
|
+
// registry otherwise.
|
|
549
|
+
JavascriptModulesPlugin._getEsmEntryModuleToInline({
|
|
550
|
+
chunk,
|
|
551
|
+
chunkGraph,
|
|
552
|
+
moduleGraph,
|
|
553
|
+
runtimeTemplate,
|
|
554
|
+
codeGenerationResults
|
|
555
|
+
}) !== module
|
|
556
|
+
) {
|
|
557
|
+
return;
|
|
558
|
+
}
|
|
218
559
|
const codeGenResult = codeGenerationResults.get(
|
|
219
560
|
module,
|
|
220
561
|
chunk.runtime
|
|
@@ -243,45 +584,32 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
243
584
|
}
|
|
244
585
|
}
|
|
245
586
|
|
|
246
|
-
// The
|
|
247
|
-
//
|
|
248
|
-
// runtime chunk, and whatever `splitChunks` moved out of the entry.
|
|
249
|
-
/** @type {Set<Chunk>} */
|
|
250
|
-
const siblings = new Set([chunk]);
|
|
251
|
-
for (const [
|
|
252
|
-
,
|
|
253
|
-
entrypoint
|
|
254
|
-
] of chunkGraph.getChunkEntryModulesWithChunkGroupIterable(chunk)) {
|
|
255
|
-
if (!entrypoint) continue;
|
|
256
|
-
for (const sibling of entrypoint.chunks) siblings.add(sibling);
|
|
257
|
-
}
|
|
258
|
-
|
|
587
|
+
// The entrypoint loads as this chunk alone, so what still needs the
|
|
588
|
+
// helpers is whatever else it holds beside the entry.
|
|
259
589
|
let otherNeedsDefine = false;
|
|
260
590
|
let otherNeedsNamespaceObject = false;
|
|
261
591
|
let otherNeedsExports = false;
|
|
262
592
|
let otherNeedsRequireScope = false;
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
otherNeedsExports = true;
|
|
279
|
-
}
|
|
280
|
-
if (requirements.has(RuntimeGlobals.requireScope)) {
|
|
281
|
-
otherNeedsRequireScope = true;
|
|
282
|
-
}
|
|
283
|
-
if (otherNeedsDefine) break outer;
|
|
593
|
+
for (const m of chunkGraph.getChunkModulesIterable(chunk)) {
|
|
594
|
+
if (m === module) continue;
|
|
595
|
+
const requirements = chunkGraph.getModuleRuntimeRequirements(
|
|
596
|
+
m,
|
|
597
|
+
chunk.runtime
|
|
598
|
+
);
|
|
599
|
+
if (!requirements) continue;
|
|
600
|
+
if (requirements.has(RuntimeGlobals.definePropertyGetters)) {
|
|
601
|
+
otherNeedsDefine = true;
|
|
602
|
+
}
|
|
603
|
+
if (requirements.has(RuntimeGlobals.makeNamespaceObject)) {
|
|
604
|
+
otherNeedsNamespaceObject = true;
|
|
605
|
+
}
|
|
606
|
+
if (requirements.has(RuntimeGlobals.exports)) {
|
|
607
|
+
otherNeedsExports = true;
|
|
284
608
|
}
|
|
609
|
+
if (requirements.has(RuntimeGlobals.requireScope)) {
|
|
610
|
+
otherNeedsRequireScope = true;
|
|
611
|
+
}
|
|
612
|
+
if (otherNeedsDefine) break;
|
|
285
613
|
}
|
|
286
614
|
|
|
287
615
|
if (otherNeedsDefine) return;
|
|
@@ -368,7 +696,8 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
368
696
|
|
|
369
697
|
// Only handle star-reexport statement
|
|
370
698
|
if (
|
|
371
|
-
|
|
699
|
+
dep === null ||
|
|
700
|
+
!isDependencyKind(dep, "esm-reexport") ||
|
|
372
701
|
dep.name !== null
|
|
373
702
|
) {
|
|
374
703
|
continue;
|
|
@@ -382,7 +711,7 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
382
711
|
) {
|
|
383
712
|
continue;
|
|
384
713
|
}
|
|
385
|
-
if (importedModule
|
|
714
|
+
if (importedModule.is("external")) {
|
|
386
715
|
const request = importedModule.getResolvedRequest();
|
|
387
716
|
if (Array.isArray(request) && request.length > 1) {
|
|
388
717
|
unsupportedExternals.add(importedModule);
|
|
@@ -426,6 +755,7 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
426
755
|
* @param {Module} module module
|
|
427
756
|
* @param {ModuleGraph} moduleGraph moduleGraph
|
|
428
757
|
* @param {RuntimeSpec} runtime chunk runtime
|
|
758
|
+
* @param {CodeGenerationResults} codeGenerationResults the code generation results
|
|
429
759
|
* @param {[string, string][]} exports exports
|
|
430
760
|
* @param {Set<string>} alreadyRenderedExports already rendered exports
|
|
431
761
|
* @returns {ConcatSource} source with null provided exports
|
|
@@ -435,6 +765,7 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
435
765
|
module,
|
|
436
766
|
moduleGraph,
|
|
437
767
|
runtime,
|
|
768
|
+
codeGenerationResults,
|
|
438
769
|
exports,
|
|
439
770
|
alreadyRenderedExports
|
|
440
771
|
) {
|
|
@@ -458,7 +789,8 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
458
789
|
|
|
459
790
|
// Only handle star-reexport statement
|
|
460
791
|
if (
|
|
461
|
-
dep
|
|
792
|
+
dep !== null &&
|
|
793
|
+
isDependencyKind(dep, "esm-reexport") &&
|
|
462
794
|
dep.name === null
|
|
463
795
|
) {
|
|
464
796
|
const importedModule = connection.resolvedModule;
|
|
@@ -472,21 +804,15 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
472
804
|
importedModuleExportsInfo._otherExportsInfo.provided === null
|
|
473
805
|
) {
|
|
474
806
|
// Handle export * from 'external'
|
|
475
|
-
if (importedModule
|
|
476
|
-
const
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
: undefined;
|
|
485
|
-
if (specifier !== undefined) {
|
|
486
|
-
externalReexports.add(
|
|
487
|
-
`export * from ${toJsStringLiteral(specifier)}${toAttributesClause(dep.attributes)};\n`
|
|
488
|
-
);
|
|
489
|
-
}
|
|
807
|
+
if (importedModule.is("external")) {
|
|
808
|
+
const from = codeGenerationResults.has(importedModule, runtime)
|
|
809
|
+
? codeGenerationResults.getData(
|
|
810
|
+
importedModule,
|
|
811
|
+
runtime,
|
|
812
|
+
"externalReexport"
|
|
813
|
+
)
|
|
814
|
+
: undefined;
|
|
815
|
+
if (from) externalReexports.add(`export * ${from};\n`);
|
|
490
816
|
} else if (!visitedReexportModules.has(importedModule)) {
|
|
491
817
|
visitedReexportModules.add(importedModule);
|
|
492
818
|
resolveDynamicStarReexport(importedModule, true);
|
|
@@ -522,7 +848,7 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
522
848
|
for (const [origin, used] of unknownProvidedExports) {
|
|
523
849
|
exports.push([
|
|
524
850
|
origin,
|
|
525
|
-
used
|
|
851
|
+
isInlinedUsedName(used)
|
|
526
852
|
? used.render(
|
|
527
853
|
Template.toNormalComment(
|
|
528
854
|
`inlined export ${propertyAccess([origin])}`
|
|
@@ -547,12 +873,26 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
547
873
|
const {
|
|
548
874
|
moduleGraph,
|
|
549
875
|
chunk,
|
|
876
|
+
chunkGraph,
|
|
550
877
|
codeGenerationResults,
|
|
551
878
|
inlined,
|
|
552
879
|
inlinedInIIFE,
|
|
880
|
+
exportsAwaited,
|
|
553
881
|
runtimeTemplate
|
|
554
882
|
} = renderContext;
|
|
555
|
-
|
|
883
|
+
const live = chunkLiveExports.get(chunk);
|
|
884
|
+
// Declared before the startup runs the module functions assigning them
|
|
885
|
+
let result = live
|
|
886
|
+
? new ConcatSource(
|
|
887
|
+
`${runtimeTemplate.renderLet()} ${live.names.join(", ")};\n`,
|
|
888
|
+
this._renderLiveExportSetters(live, runtimeTemplate),
|
|
889
|
+
source
|
|
890
|
+
)
|
|
891
|
+
: new ConcatSource(source);
|
|
892
|
+
// A merged entry exposes what its modules expose together, so the ESM
|
|
893
|
+
// export list is theirs rather than the last module's alone.
|
|
894
|
+
const mergedModules = mergedEntryModules(chunk, chunkGraph, compilation);
|
|
895
|
+
const exportedModules = mergedModules || [module];
|
|
556
896
|
const exportInfos = options.export
|
|
557
897
|
? [
|
|
558
898
|
moduleGraph.getExportInfo(
|
|
@@ -560,15 +900,36 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
560
900
|
Array.isArray(options.export) ? options.export[0] : options.export
|
|
561
901
|
)
|
|
562
902
|
]
|
|
563
|
-
:
|
|
903
|
+
: mergedModules
|
|
904
|
+
? getMergedExports(
|
|
905
|
+
mergedModules,
|
|
906
|
+
moduleGraph,
|
|
907
|
+
chunk.runtime
|
|
908
|
+
).exports.map(({ name, module: from }) =>
|
|
909
|
+
moduleGraph.getExportInfo(from, name)
|
|
910
|
+
)
|
|
911
|
+
: moduleGraph.getExportsInfo(module).orderedExports;
|
|
564
912
|
|
|
565
913
|
const { data } = codeGenerationResults.get(module, chunk.runtime);
|
|
566
914
|
|
|
567
915
|
const isInlinedEntryWithoutIIFE = inlined && !inlinedInIIFE;
|
|
568
|
-
//
|
|
916
|
+
// The binding each export left out on demand reads, exported directly
|
|
569
917
|
/** @type {Record<string, string>} */
|
|
570
|
-
|
|
918
|
+
let definitions =
|
|
571
919
|
(isInlinedEntryWithoutIIFE && data && data.get("exportsFinalName")) || {};
|
|
920
|
+
// Inlined beside other modules, the entry's colliding declarations were renamed
|
|
921
|
+
const { renamedDeclarations } = renderContext;
|
|
922
|
+
if (renamedDeclarations) {
|
|
923
|
+
/** @type {Record<string, string>} */
|
|
924
|
+
const renamed = {};
|
|
925
|
+
for (const usedName of Object.keys(definitions)) {
|
|
926
|
+
renamed[usedName] = renameIdentifiers(
|
|
927
|
+
definitions[usedName],
|
|
928
|
+
renamedDeclarations
|
|
929
|
+
);
|
|
930
|
+
}
|
|
931
|
+
definitions = renamed;
|
|
932
|
+
}
|
|
572
933
|
|
|
573
934
|
/** @type {string[]} */
|
|
574
935
|
const shortHandedExports = [];
|
|
@@ -594,40 +955,17 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
594
955
|
return name;
|
|
595
956
|
};
|
|
596
957
|
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
const treatAsCommonJs =
|
|
600
|
-
module.buildMeta &&
|
|
601
|
-
/** @type {JavascriptModuleBuildMeta} */ (module.buildMeta)
|
|
602
|
-
.treatAsCommonJs;
|
|
603
|
-
const skipRenderDefaultExport = Boolean(treatAsCommonJs);
|
|
604
|
-
|
|
605
|
-
// A single inlined entry renders at the top level, so its declarations are
|
|
606
|
-
// bindings that can be exported directly, keeping ESM live bindings rather
|
|
607
|
-
// than snapshotting them into a `const`.
|
|
608
|
-
/** @type {Map<string, string> | undefined} */
|
|
609
|
-
let directBindings;
|
|
610
|
-
if (isInlinedEntryWithoutIIFE && !treatAsCommonJs) {
|
|
611
|
-
const topLevelDeclarations =
|
|
612
|
-
(data && data.get("topLevelDeclarations")) ||
|
|
613
|
-
(module.buildInfo && module.buildInfo.topLevelDeclarations);
|
|
614
|
-
if (topLevelDeclarations) {
|
|
615
|
-
for (const dep of module.dependencies) {
|
|
616
|
-
if (
|
|
617
|
-
dep instanceof HarmonyExportSpecifierDependency &&
|
|
618
|
-
topLevelDeclarations.has(dep.id)
|
|
619
|
-
) {
|
|
620
|
-
(directBindings || (directBindings = new Map())).set(
|
|
621
|
-
dep.name,
|
|
622
|
-
dep.id
|
|
623
|
-
);
|
|
624
|
-
}
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
}
|
|
958
|
+
// A merged entry is awaited in the bootstrap, so the object here is settled.
|
|
959
|
+
const isAsync = !mergedModules && moduleGraph.isAsync(module);
|
|
628
960
|
|
|
629
|
-
|
|
630
|
-
|
|
961
|
+
// One ES module among the merged ones still provides a real `default`, and
|
|
962
|
+
// the synthetic one below would then be a second export of that name.
|
|
963
|
+
const treatAsCommonJs = exportedModules.every((m) =>
|
|
964
|
+
Boolean(
|
|
965
|
+
m.buildMeta &&
|
|
966
|
+
/** @type {JavascriptModuleBuildMeta} */ (m.buildMeta).treatAsCommonJs
|
|
967
|
+
)
|
|
968
|
+
);
|
|
631
969
|
|
|
632
970
|
const moduleExportsInfo = moduleGraph.getExportsInfo(module);
|
|
633
971
|
|
|
@@ -642,7 +980,8 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
642
980
|
let needExportsDeclaration =
|
|
643
981
|
!isInlinedEntryWithoutIIFE || isAsync || needHarmonyCompatibilityFlag;
|
|
644
982
|
|
|
645
|
-
|
|
983
|
+
// The startup awaits the entry wherever top-level `await` reaches it.
|
|
984
|
+
if (isAsync && !exportsAwaited) {
|
|
646
985
|
result.add(
|
|
647
986
|
`${RuntimeGlobals.exports} = await ${RuntimeGlobals.exports};\n`
|
|
648
987
|
);
|
|
@@ -654,7 +993,7 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
654
993
|
|
|
655
994
|
const originalName = exportInfo.name;
|
|
656
995
|
// Skip rendering the default export in some cases
|
|
657
|
-
if (
|
|
996
|
+
if (treatAsCommonJs && originalName === "default") continue;
|
|
658
997
|
|
|
659
998
|
// Try to find all exports from the reexported modules
|
|
660
999
|
const target = exportInfo.getTarget(moduleGraph);
|
|
@@ -674,7 +1013,7 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
674
1013
|
|
|
675
1014
|
if (
|
|
676
1015
|
target &&
|
|
677
|
-
target.module
|
|
1016
|
+
target.module.is("external") &&
|
|
678
1017
|
target.export &&
|
|
679
1018
|
target.export.length === 1 &&
|
|
680
1019
|
codeGenerationResults.has(target.module, chunk.runtime)
|
|
@@ -685,7 +1024,8 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
685
1024
|
"externalReexport"
|
|
686
1025
|
);
|
|
687
1026
|
if (reexport) {
|
|
688
|
-
|
|
1027
|
+
// The getter stays in the body, written into the object
|
|
1028
|
+
needExportsDeclaration = true;
|
|
689
1029
|
result.add(
|
|
690
1030
|
`export { ${toExportName(target.export[0])} as ${toExportName(originalName)} } ${reexport};\n`
|
|
691
1031
|
);
|
|
@@ -694,28 +1034,25 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
694
1034
|
}
|
|
695
1035
|
}
|
|
696
1036
|
|
|
697
|
-
// The exports of entry module are never inlined
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
1037
|
+
// The exports of entry module are never inlined, and a merged exports
|
|
1038
|
+
// object is keyed by the original names rather than the mangled ones.
|
|
1039
|
+
const usedName = mergedModules
|
|
1040
|
+
? originalName
|
|
1041
|
+
: /** @type {string} */
|
|
1042
|
+
(exportInfo.getUsedName(originalName, chunk.runtime));
|
|
701
1043
|
/** @type {string | undefined} */
|
|
702
1044
|
const definition = definitions[usedName];
|
|
703
1045
|
/** @type {string | undefined} */
|
|
704
|
-
const directLocal =
|
|
705
|
-
definition === undefined && directBindings
|
|
706
|
-
? directBindings.get(originalName)
|
|
707
|
-
: undefined;
|
|
708
|
-
/** @type {string | undefined} */
|
|
709
1046
|
let finalName;
|
|
710
1047
|
|
|
711
|
-
|
|
1048
|
+
const liveName = live && live.exports.get(exportInfo);
|
|
1049
|
+
|
|
1050
|
+
if (liveName) {
|
|
1051
|
+
finalName = liveName;
|
|
1052
|
+
// the body still defines an export it does not leave out on the object
|
|
1053
|
+
if (!definition) needExportsDeclaration = true;
|
|
1054
|
+
} else if (definition) {
|
|
712
1055
|
finalName = definition;
|
|
713
|
-
} else if (directLocal !== undefined) {
|
|
714
|
-
// Live binding to the inlined entry's own top-level declaration
|
|
715
|
-
finalName = directLocal;
|
|
716
|
-
// The declaration is only there for the definitions written into it; with
|
|
717
|
-
// those taken over (and not re-emitted here) nothing reads the object.
|
|
718
|
-
if (!bindingsTakenOver) needExportsDeclaration = true;
|
|
719
1056
|
} else {
|
|
720
1057
|
// Fallback to `__webpack_exports__` property access
|
|
721
1058
|
// when no direct export binding was found
|
|
@@ -778,18 +1115,14 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
778
1115
|
module,
|
|
779
1116
|
moduleGraph,
|
|
780
1117
|
chunk.runtime,
|
|
1118
|
+
codeGenerationResults,
|
|
781
1119
|
exports,
|
|
782
1120
|
alreadyRenderedExports
|
|
783
1121
|
);
|
|
784
1122
|
|
|
785
1123
|
for (const [exportName, final] of exports) {
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
`export ${runtimeTemplate.renderConst()} ${exportName} = ${final};\n`
|
|
789
|
-
);
|
|
790
|
-
continue;
|
|
791
|
-
}
|
|
792
|
-
// Bind to a generated name, the export name can't be declared
|
|
1124
|
+
// A declaration under the export's own name would shadow a global of that
|
|
1125
|
+
// name every module of the chunk may read, so a generated name binds it.
|
|
793
1126
|
const name = toLocalName(exportName);
|
|
794
1127
|
result.add(
|
|
795
1128
|
`${runtimeTemplate.renderConst()} ${name} = ${final};\nexport { ${name} as ${toExportName(exportName)} };\n`
|
|
@@ -803,6 +1136,43 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
803
1136
|
return result;
|
|
804
1137
|
}
|
|
805
1138
|
|
|
1139
|
+
/**
|
|
1140
|
+
* Renders the setters through which hot modules, an update included, write the
|
|
1141
|
+
* bindings the chunk's scope declares; a list per name, as several libraries may.
|
|
1142
|
+
* A module that ran before the chunk loaded hands over its value through its exports.
|
|
1143
|
+
* @param {ChunkLiveExports} live the chunk's live bindings
|
|
1144
|
+
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
1145
|
+
* @returns {string} the registrations
|
|
1146
|
+
*/
|
|
1147
|
+
_renderLiveExportSetters({ setters, hasAsync }, runtimeTemplate) {
|
|
1148
|
+
if (setters.length === 0) return "";
|
|
1149
|
+
const exports = hasAsync
|
|
1150
|
+
? `(isAsync ? module.exports[${RuntimeGlobals.asyncModuleExportSymbol}] : module.exports)`
|
|
1151
|
+
: "module.exports";
|
|
1152
|
+
const register = "__webpack_live_register__";
|
|
1153
|
+
return Template.asString([
|
|
1154
|
+
`var ${register} = ${runtimeTemplate.basicFunction(
|
|
1155
|
+
hasAsync ? "id, name, set, key, isAsync" : "id, name, set, key",
|
|
1156
|
+
[
|
|
1157
|
+
`var setters = ${RuntimeGlobals.liveExportSetters} = ${RuntimeGlobals.liveExportSetters} || {};`,
|
|
1158
|
+
"setters = setters[id] = setters[id] || {};",
|
|
1159
|
+
"(setters[name] = setters[name] || []).push(set);",
|
|
1160
|
+
`var module = ${RuntimeGlobals.moduleCache}[id];`,
|
|
1161
|
+
// A module still before its declaration throws, and hands the value over later.
|
|
1162
|
+
`if (module && key) try { set(${exports}[key]); } catch (e) {}`
|
|
1163
|
+
]
|
|
1164
|
+
)};`,
|
|
1165
|
+
...setters.map(
|
|
1166
|
+
([id, name, hoisted, used, isAsync]) =>
|
|
1167
|
+
`${register}(${id}, ${JSON.stringify(name)}, ${runtimeTemplate.basicFunction(
|
|
1168
|
+
"value",
|
|
1169
|
+
`${hoisted} = value;`
|
|
1170
|
+
)}${used ? `, ${JSON.stringify(used)}${isAsync ? ", 1" : ""}` : ""});`
|
|
1171
|
+
),
|
|
1172
|
+
""
|
|
1173
|
+
]);
|
|
1174
|
+
}
|
|
1175
|
+
|
|
806
1176
|
/**
|
|
807
1177
|
* Renders module content.
|
|
808
1178
|
* @param {Source} source source
|