webpack 5.111.0 → 5.112.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/Chunk.js +3 -966
- package/lib/Compilation.js +237 -138
- package/lib/Compiler.js +23 -24
- package/lib/Dependency.js +3 -551
- package/lib/DependencyTemplate.js +3 -69
- package/lib/EntryPlugin.js +3 -68
- package/lib/Entrypoint.js +3 -121
- package/lib/ExternalsPlugin.js +3 -92
- package/lib/FileSystemInfo.js +3 -4629
- package/lib/InitFragment.js +3 -204
- package/lib/LibraryTemplatePlugin.js +3 -46
- package/lib/ModuleFilenameHelpers.js +3 -400
- package/lib/ModuleNotFoundError.js +2 -2
- package/lib/MultiCompiler.js +43 -24
- package/lib/NormalModule.js +3 -2190
- package/lib/NullFactory.js +3 -22
- package/lib/ProgressPlugin.js +3 -908
- package/lib/RawModule.js +3 -197
- package/lib/RequestShortener.js +3 -37
- package/lib/SingleEntryPlugin.js +1 -1
- package/lib/WebpackError.js +2 -2
- package/lib/asset/AssetBytesGenerator.js +15 -9
- package/lib/asset/AssetBytesParser.js +3 -3
- package/lib/asset/AssetGenerator.js +61 -38
- package/lib/asset/AssetModule.js +2 -2
- package/lib/asset/AssetModulesPlugin.js +6 -9
- package/lib/asset/AssetParser.js +3 -3
- package/lib/asset/AssetSourceGenerator.js +15 -9
- package/lib/asset/AssetSourceParser.js +3 -3
- package/lib/asset/RawDataUrlModule.js +17 -10
- package/lib/asset/WebManifestGenerator.js +7 -7
- package/lib/asset/WebManifestParser.js +5 -5
- package/lib/async-modules/AsyncModuleHelpers.js +6 -5
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +4 -3
- package/lib/async-modules/isGeneratorLowered.js +3 -3
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
- package/lib/{Cache.js → cache/Cache.js} +1 -1
- package/lib/{CacheFacade.js → cache/CacheFacade.js} +5 -5
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +6 -6
- package/lib/cache/MemoryWithGcCachePlugin.js +9 -10
- package/lib/cache/PackFileCacheStrategy.js +11 -28
- package/lib/cache/ResolverCachePlugin.js +8 -4
- package/lib/cache/getLazyHashedEtag.js +3 -5
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
- package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
- package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +217 -200
- package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
- package/lib/config/browserslistTargetHandler.js +3 -9
- package/lib/{cli.js → config/cli.js} +5 -158
- package/lib/config/defaults.js +192 -122
- package/lib/config/getClaimedAssetTypes.js +28 -21
- package/lib/config/normalization.js +18 -7
- package/lib/config/target.js +13 -4
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +13 -11
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerExposedDependency.js +1 -1
- package/lib/container/ContainerPlugin.js +178 -5
- package/lib/container/ContainerReferencePlugin.js +75 -14
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackItemDependency.js +1 -1
- package/lib/container/FallbackModule.js +12 -10
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +10 -11
- package/lib/container/ModuleFederationPlugin.js +306 -7
- package/lib/container/RemoteModule.js +14 -10
- package/lib/container/RemoteRuntimeModule.js +5 -5
- package/lib/container/RemoteToExternalDependency.js +1 -1
- package/lib/container/moduleFederationHooks.js +1 -1
- package/lib/{ContextExclusionPlugin.js → context/ContextExclusionPlugin.js} +1 -1
- package/lib/{ContextModule.js → context/ContextModule.js} +50 -36
- package/lib/{ContextModuleFactory.js → context/ContextModuleFactory.js} +25 -24
- package/lib/{ContextReplacementPlugin.js → context/ContextReplacementPlugin.js} +4 -4
- package/lib/css/CssGenerator.js +57 -42
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
- package/lib/css/CssLoadingRuntimeModule.js +77 -44
- package/lib/css/CssModule.js +27 -29
- package/lib/css/CssModulesPlugin.js +128 -44
- package/lib/css/CssParser.js +700 -311
- package/lib/css/CssServerStylesRuntimeModule.js +3 -3
- package/lib/css/cssMinify.js +130 -54
- package/lib/css/data.js +7017 -4648
- package/lib/css/syntax-parser.js +19873 -0
- package/lib/css/syntax-printer.js +6037 -0
- package/lib/css/syntax.js +37 -17370
- package/lib/debug/ProfilingPlugin.js +55 -23
- package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
- package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +25 -29
- package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/ConstDependency.js +3 -120
- package/lib/dependencies/ContextElementDependency.js +5 -172
- package/lib/dependencies/NullDependency.js +3 -37
- package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
- package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -10
- package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
- package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
- package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
- package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
- package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +10 -10
- package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
- package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
- package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
- package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
- package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
- package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
- package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
- package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
- package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
- package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +176 -44
- package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
- package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
- package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
- package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +39 -35
- package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
- package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
- package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
- package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
- package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +19 -20
- package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
- package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
- package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +5 -5
- package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
- package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
- package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
- package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
- package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
- package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
- package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
- package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
- package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
- package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
- package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
- package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
- package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +34 -18
- package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
- package/lib/dependencies/context/ContextElementDependency.js +198 -0
- package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +9 -9
- package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
- package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +4 -4
- package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
- package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
- package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
- package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
- package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +12 -11
- package/lib/dependencies/core/ConstDependency.js +131 -0
- package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
- package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
- package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
- package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
- package/lib/dependencies/core/NullDependency.js +44 -0
- package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
- package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
- package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +375 -100
- package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +26 -22
- package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
- package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
- package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +26 -21
- package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
- package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
- package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
- package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +40 -41
- package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +22 -21
- package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
- package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +62 -93
- package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +83 -49
- package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
- package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
- package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +136 -122
- package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +68 -43
- package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +68 -65
- package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
- package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
- package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
- package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +199 -97
- package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
- package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +86 -43
- package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +110 -61
- package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
- package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
- package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
- package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
- package/lib/{util → dependencies/helpers}/chainedImports.js +8 -9
- package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
- package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
- package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +125 -243
- package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
- package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +72 -23
- package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +53 -19
- package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
- package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
- package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
- package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
- package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +20 -20
- package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
- package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
- package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
- package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +126 -107
- package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
- package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
- package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
- package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
- package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +34 -25
- package/lib/{url → dependencies/url}/URLParserPlugin.js +22 -26
- package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
- package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
- package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
- package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
- package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +46 -54
- package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +28 -20
- package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +25 -27
- package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
- package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
- package/lib/devtool/ModuleFilenameHelpers.js +413 -0
- package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
- package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +207 -129
- package/lib/{util → devtool}/generateDebugId.js +1 -1
- package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
- package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
- package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
- package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
- package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
- package/lib/dll/DelegatedModule.js +20 -18
- package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
- package/lib/dll/DelegatedPlugin.js +1 -1
- package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
- package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
- package/lib/dll/DllEntryPlugin.js +3 -3
- package/lib/dll/DllModule.js +11 -9
- package/lib/dll/DllModuleFactory.js +3 -3
- package/lib/dll/DllPlugin.js +18 -6
- package/lib/dll/DllReferencePlugin.js +102 -26
- package/lib/dll/LibManifestPlugin.js +9 -7
- package/lib/electron/ElectronTargetPlugin.js +2 -2
- package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
- package/lib/{dependencies → entry}/EntryDependency.js +11 -2
- package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
- package/lib/entry/EntryPlugin.js +75 -0
- package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
- package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
- package/lib/errors/DeprecatedOptionWarning.js +30 -0
- package/lib/errors/DllManifestError.js +26 -0
- package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
- package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
- package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/ErrorHelpers.js +222 -0
- package/lib/errors/ExternalStarReexportError.js +2 -2
- package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
- package/lib/errors/HookWebpackError.js +6 -5
- package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
- package/lib/errors/ModuleBuildError.js +1 -1
- package/lib/errors/ModuleDependencyError.js +2 -2
- package/lib/errors/ModuleDependencyWarning.js +2 -2
- package/lib/errors/ModuleError.js +1 -1
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +3 -3
- package/lib/errors/ModuleParseError.js +1 -1
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/ModuleWarning.js +1 -1
- package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
- package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
- package/lib/errors/NodeStuffInWebError.js +7 -2
- package/lib/errors/PathVariableError.js +31 -0
- package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
- package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
- package/lib/errors/RuntimeModuleGenerationError.js +51 -0
- package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
- package/lib/errors/SystemImportDeprecationWarning.js +43 -0
- package/lib/errors/UnmergeableEntryExportsError.js +34 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
- package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
- package/lib/errors/WebpackError.js +12 -3
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
- package/lib/{ExternalModule.js → externals/ExternalModule.js} +85 -63
- package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
- package/lib/externals/ExternalsPlugin.js +99 -0
- package/lib/fs/FileSystemInfo.js +4642 -0
- package/lib/{util → fs}/fs.js +22 -9
- package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
- package/lib/graph/Chunk.js +985 -0
- package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +187 -80
- package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
- package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
- package/lib/graph/Dependency.js +628 -0
- package/lib/graph/Entrypoint.js +136 -0
- package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +151 -99
- package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
- package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +36 -39
- package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
- package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +163 -72
- package/lib/{util → graph}/findGraphRoots.js +20 -21
- package/lib/graph/isDependencyKind.js +23 -0
- package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
- package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +49 -47
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
- package/lib/hmr/LazyCompilationPlugin.js +34 -26
- package/lib/html/HtmlGenerator.js +168 -125
- package/lib/html/HtmlModule.js +6 -2
- package/lib/html/HtmlModulesPlugin.js +260 -215
- package/lib/html/HtmlParser.js +598 -292
- package/lib/html/builtinEmbeddedRenderer.js +60 -13
- package/lib/html/data.js +23 -1
- package/lib/html/htmlMinify.js +120 -51
- package/lib/html/syntax-parser.js +15796 -0
- package/lib/html/syntax-printer.js +1034 -0
- package/lib/html/syntax.js +37 -14062
- package/lib/html/xmlMinify.js +67 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +31 -4
- package/lib/ids/IdHelpers.js +4 -4
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
- package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
- package/lib/ids/SyncModuleIdsPlugin.js +3 -3
- package/lib/{util → ids}/numberHash.js +1 -1
- package/lib/index.js +348 -99
- package/lib/{APIPlugin.js → javascript/APIPlugin.js} +29 -30
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
- package/lib/javascript/BasicEvaluatedExpression.js +4 -4
- package/lib/javascript/ChunkHelpers.js +64 -4
- package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
- package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +10 -11
- package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +90 -139
- package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
- package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
- package/lib/javascript/JavascriptGenerator.js +25 -18
- package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
- package/lib/javascript/JavascriptModule.js +4 -3
- package/lib/javascript/JavascriptModulesPlugin.js +458 -256
- package/lib/javascript/JavascriptParser.js +916 -287
- package/lib/javascript/JavascriptParserHelpers.js +1 -1
- package/lib/javascript/MergedEntryExports.js +196 -0
- package/lib/javascript/ScopeAnalyzer.js +3840 -5
- package/lib/javascript/StartupHelpers.js +6 -6
- package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
- package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
- package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
- package/lib/javascript/data.js +533 -122
- package/lib/javascript/jsMinify.js +272 -0
- package/lib/javascript/regexp.js +67 -32
- package/lib/javascript/syntax-parser.js +18561 -0
- package/lib/javascript/syntax-printer-data.js +933 -0
- package/lib/javascript/syntax-printer.js +47106 -0
- package/lib/javascript/syntax.js +20 -10946
- package/lib/json/JsonData.js +1 -1
- package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
- package/lib/json/JsonGenerator.js +17 -11
- package/lib/json/JsonModule.js +2 -2
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -5
- package/lib/json/jsonMinify.js +69 -0
- package/lib/library/AbstractLibraryPlugin.js +28 -15
- package/lib/library/AmdLibraryPlugin.js +4 -4
- package/lib/library/AssignLibraryPlugin.js +27 -11
- package/lib/library/EnableLibraryPlugin.js +1 -1
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
- package/lib/library/JsonpLibraryPlugin.js +1 -1
- package/lib/library/LibraryTemplatePlugin.js +53 -0
- package/lib/library/ModuleLibraryPlugin.js +207 -285
- package/lib/library/SystemLibraryPlugin.js +6 -8
- package/lib/library/UmdLibraryPlugin.js +3 -4
- package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
- package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
- package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
- package/lib/{dependencies → loaders}/LoaderPlugin.js +27 -2
- package/lib/loaders/LoaderRunner.js +160 -22
- package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
- package/lib/logging/Logger.js +7 -9
- package/lib/logging/ProgressPlugin.js +957 -0
- package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
- package/lib/{Generator.js → module/Generator.js} +38 -14
- package/lib/{Module.js → module/Module.js} +122 -54
- package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
- package/lib/module/NormalModule.js +2348 -0
- package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
- package/lib/module/NullFactory.js +29 -0
- package/lib/{Parser.js → module/Parser.js} +3 -3
- package/lib/module/RawModule.js +208 -0
- package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
- package/lib/{util → module}/extractSourceMap.js +2 -2
- package/lib/{util → module}/findCaseMismatch.js +2 -2
- package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
- package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
- package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
- package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
- package/lib/node/NodeEnvironmentPlugin.js +11 -1
- package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
- package/lib/node/NodeTargetPlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +61 -15
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
- package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
- package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +5 -7
- package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
- package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
- package/lib/optimize/ConcatenatedModule.js +305 -309
- package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
- package/lib/optimize/ConstExportsPlugin.js +7 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
- package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +25 -30
- package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +26 -30
- package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
- package/lib/optimize/FlagIncludedChunksPlugin.js +5 -13
- package/lib/optimize/InlineExports.js +11 -3
- package/lib/optimize/InnerGraph.js +5 -13
- package/lib/optimize/InnerGraphPlugin.js +17 -23
- package/lib/optimize/LazyBarrels.js +584 -0
- package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
- package/lib/optimize/LimitChunkCountPlugin.js +21 -15
- package/lib/optimize/MangleExportsPlugin.js +8 -9
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
- package/lib/optimize/MinChunkSizePlugin.js +9 -6
- package/lib/optimize/ModuleConcatenationPlugin.js +23 -16
- package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
- package/lib/optimize/RealContentHashPlugin.js +16 -7
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/SideEffectsFlagPlugin.js +25 -37
- package/lib/optimize/SplitChunksPlugin.js +715 -159
- package/lib/{util → optimize}/TupleQueue.js +9 -9
- package/lib/optimize/chunkSetIntersections.js +437 -0
- package/lib/{util → optimize}/deterministicGrouping.js +25 -30
- package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
- package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
- package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
- package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
- package/lib/output/SSRManifestPlugin.js +349 -0
- package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
- package/lib/performance/BroadContextsPlugin.js +4 -4
- package/lib/performance/CacheEffectivenessPlugin.js +5 -7
- package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
- package/lib/performance/DuplicateModulesPlugin.js +3 -4
- package/lib/performance/DuplicatePackagesPlugin.js +3 -3
- package/lib/performance/DynamicExportsPlugin.js +2 -2
- package/lib/performance/EvalUsagePlugin.js +3 -3
- package/lib/performance/HotspotsPlugin.js +11 -10
- package/lib/performance/LargeModulesPlugin.js +2 -3
- package/lib/performance/LegacyJavascriptPlugin.js +1 -2
- package/lib/performance/MissingSideEffectsPlugin.js +2 -3
- package/lib/performance/MissingSourceMapsPlugin.js +5 -6
- package/lib/performance/PureAnnotationsPlugin.js +3 -3
- package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +13 -16
- package/lib/performance/TopLevelThisPlugin.js +8 -7
- package/lib/performance/UnsplitVendorsPlugin.js +1 -2
- package/lib/performance/UnusedAliasesPlugin.js +6 -7
- package/lib/performance/UnusedAssetsPlugin.js +5 -5
- package/lib/performance/UnusedDefinesPlugin.js +2 -2
- package/lib/performance/UnusedExternalsPlugin.js +3 -4
- package/lib/performance/UnusedFederationPlugin.js +2 -4
- package/lib/performance/UnusedModulesPlugin.js +5 -4
- package/lib/performance/getModuleSize.js +1 -1
- package/lib/performance/hasOnlyUnusedExports.js +4 -4
- package/lib/performance/isOnlyReexported.js +7 -6
- package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +7 -9
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
- package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
- package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +82 -65
- package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -13
- package/lib/prefetch/parseResourceHintOptions.js +4 -3
- package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
- package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
- package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
- package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
- package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
- package/lib/resolve/getResolveOptionsKey.js +59 -0
- package/lib/rules/RuleSetCompiler.js +27 -46
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
- package/lib/runtime/AsyncModuleRuntimeModule.js +10 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
- package/lib/runtime/BaseUriRuntimeModule.js +3 -3
- package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +4 -4
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
- package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
- package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +9 -10
- package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
- package/lib/runtime/GlobalRuntimeModule.js +5 -7
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
- package/lib/runtime/HelperRuntimeModule.js +16 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +135 -102
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/NonceRuntimeModule.js +2 -2
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
- package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +18 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
- package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
- package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -50
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
- package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
- package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
- package/lib/runtime/SystemContextRuntimeModule.js +2 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
- package/lib/runtime/WorkerRuntimeModule.js +1 -1
- package/lib/runtime/baseUri.js +1 -1
- package/lib/schemes/DataUriPlugin.js +4 -7
- package/lib/schemes/HttpUriPlugin.js +67 -11
- package/lib/schemes/VirtualUrlPlugin.js +50 -16
- package/lib/serialization/AggregateErrorSerializer.js +2 -2
- package/lib/serialization/BinaryMiddleware.js +9 -9
- package/lib/serialization/FileMiddleware.js +19 -19
- package/lib/serialization/ObjectMiddleware.js +77 -49
- package/lib/serialization/SerializerMiddleware.js +2 -2
- package/lib/serialization/SingleItemMiddleware.js +4 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
- package/lib/sharing/ConsumeSharedModule.js +18 -14
- package/lib/sharing/ConsumeSharedPlugin.js +148 -42
- package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
- package/lib/sharing/ProvideForSharedDependency.js +9 -1
- package/lib/sharing/ProvideSharedDependency.js +1 -1
- package/lib/sharing/ProvideSharedModule.js +11 -9
- package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
- package/lib/sharing/ProvideSharedPlugin.js +111 -20
- package/lib/sharing/SharePlugin.js +102 -9
- package/lib/sharing/ShareRuntimeModule.js +6 -6
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/{util → sharing}/semver.js +19 -19
- package/lib/sharing/utils.js +59 -2
- package/lib/stats/DefaultStatsFactoryPlugin.js +25 -23
- package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
- package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
- package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
- package/lib/{Stats.js → stats/Stats.js} +4 -4
- package/lib/stats/StatsFactory.js +14 -13
- package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
- package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
- package/lib/template/DependencyTemplate.js +77 -0
- package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
- package/lib/template/InitFragment.js +223 -0
- package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
- package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
- package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
- package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +178 -106
- package/lib/{Template.js → template/Template.js} +13 -11
- package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +35 -82
- package/lib/typescript/TypeScriptPlugin.js +5 -6
- package/lib/util/LocConverter.js +4 -7
- package/lib/util/RequestShortener.js +44 -0
- package/lib/util/SortableSet.js +87 -22
- package/lib/util/SourceProcessor.js +364 -66
- package/lib/util/TupleSet.js +27 -27
- package/lib/util/WeakTupleMap.js +10 -12
- package/lib/util/buildDiagnostics.js +2 -2
- package/lib/util/comparators.js +10 -10
- package/lib/util/concatenate.js +32 -151
- package/lib/util/createHooksRegistry.js +1 -2
- package/lib/util/createMappings.js +111 -0
- package/lib/util/dataURL.js +96 -18
- package/lib/util/deprecation.js +1 -1
- package/lib/util/extractComments.js +118 -0
- package/lib/util/formatLocation.js +1 -1
- package/lib/util/globUtils.js +197 -16
- package/lib/util/haltVisitors.js +51 -0
- package/lib/util/handlerKeys.js +2 -2
- package/lib/util/hash/wasm-hash.js +3 -4
- package/lib/util/identifier.js +117 -1
- package/lib/util/implicitTypeLoaderFallback.js +6 -4
- package/lib/util/internalSerializables.js +295 -103
- package/lib/util/magicComment.js +12 -7
- package/lib/util/makeSerializable.js +23 -4
- package/lib/util/parseJson.js +1 -1
- package/lib/util/preloadModuleType.js +5 -2
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/removeBOM.js +1 -1
- package/lib/util/runtime.js +1 -1
- package/lib/util/serialization.js +4 -1
- package/lib/util/source.js +2 -2
- package/lib/util/terminalColors.js +161 -0
- package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmModule.js +9 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +11 -6
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +16 -11
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
- package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
- package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
- package/lib/wasm/wasmModuleFilename.js +2 -2
- package/lib/wasm-sync/SyncWasmModule.js +3 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +11 -12
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +15 -9
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +19 -16
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
- package/lib/wasm-sync/WebAssemblyParser.js +6 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +8 -9
- package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
- package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
- package/lib/{Watching.js → watch/Watching.js} +8 -8
- package/lib/web/FetchCompileAsyncWasmPlugin.js +8 -6
- package/lib/web/FetchCompileWasmPlugin.js +6 -4
- package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
- package/lib/web/JsonpTemplatePlugin.js +1 -1
- package/lib/webpack.js +27 -17
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
- package/package.json +70 -40
- package/schemas/WebpackOptions.check.js +2 -1
- package/schemas/WebpackOptions.d.json.ts +2 -0
- package/schemas/WebpackOptions.json +294 -74
- package/schemas/plugins/BannerPlugin.check.js +2 -1
- package/schemas/plugins/BannerPlugin.json +29 -2
- package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
- package/schemas/plugins/HtmlParserOptions.check.js +2 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -0
- package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
- package/schemas/plugins/ManifestPlugin.check.js +1 -0
- package/schemas/plugins/ManifestPlugin.json +3 -3
- package/schemas/plugins/ProgressPlugin.check.js +2 -1
- package/schemas/plugins/ProgressPlugin.json +2 -7
- package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
- package/schemas/plugins/SSRManifestPlugin.json +20 -0
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
- package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
- package/schemas/plugins/WatchIgnorePlugin.json +12 -3
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
- package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
- package/schemas/plugins/css/CssParserOptions.check.js +1 -0
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
- package/schemas/plugins/dll/DllPlugin.check.js +1 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
- package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
- package/schemas/plugins/sharing/SharePlugin.json +32 -0
- package/types.d.ts +13915 -8414
- package/lib/ErrorHelpers.js +0 -107
- package/lib/LazyBarrel.js +0 -388
- package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
- package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
- package/lib/javascript/ChunkFormatHelpers.js +0 -71
- package/lib/javascript/grammar.js +0 -5546
- package/lib/javascript/parser.js +0 -1494
- package/lib/javascript/regexpData.js +0 -51
- package/lib/performance/getSourceModules.js +0 -22
- package/lib/util/Semaphore.js +0 -65
- package/lib/util/objectToMap.js +0 -15
- package/schemas/WebpackOptions.check.d.ts +0 -7
- package/schemas/_container.json +0 -155
- package/schemas/_sharing.json +0 -118
- package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
- package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
- package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
- package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
- /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
- /package/lib/{util → css}/conventions.js +0 -0
- /package/lib/{util → css}/topologicalSort.js +0 -0
- /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
- /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
- /package/lib/{util → fs}/StackedCacheMap.js +0 -0
- /package/lib/{util → javascript}/StackedMap.js +0 -0
- /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
- /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
- /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
- /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
- /package/lib/{util → optimize}/Queue.js +0 -0
- /package/lib/{util → stats}/smartGrouping.js +0 -0
|
@@ -22,19 +22,20 @@ const {
|
|
|
22
22
|
* WebpackRequire
|
|
23
23
|
* } from "../Compilation"
|
|
24
24
|
*/
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
const
|
|
25
|
+
const ConflictingEntryExportsWarning = require("../errors/ConflictingEntryExportsWarning");
|
|
26
|
+
const { tryRunOrWebpackError } = require("../errors/HookWebpackError");
|
|
27
|
+
const UnmergeableEntryExportsError = require("../errors/UnmergeableEntryExportsError");
|
|
28
|
+
const { JAVASCRIPT_TYPE } = require("../module/ModuleSourceTypeConstants");
|
|
28
29
|
const {
|
|
29
30
|
JAVASCRIPT_MODULE_TYPE_AUTO,
|
|
30
31
|
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
|
31
32
|
JAVASCRIPT_MODULE_TYPE_ESM,
|
|
32
33
|
WEBPACK_MODULE_TYPE_RUNTIME
|
|
33
|
-
} = require("../ModuleTypeConstants");
|
|
34
|
-
const NormalModule = require("../NormalModule");
|
|
35
|
-
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
36
|
-
const
|
|
37
|
-
const
|
|
34
|
+
} = require("../module/ModuleTypeConstants");
|
|
35
|
+
const NormalModule = require("../module/NormalModule");
|
|
36
|
+
const RuntimeGlobals = require("../runtime/RuntimeGlobals");
|
|
37
|
+
const InitFragment = require("../template/InitFragment");
|
|
38
|
+
const Template = require("../template/Template");
|
|
38
39
|
const { last, someInIterable } = require("../util/IterableHelpers");
|
|
39
40
|
const StringXor = require("../util/StringXor");
|
|
40
41
|
const { compareModulesByFullName } = require("../util/comparators");
|
|
@@ -44,43 +45,46 @@ const {
|
|
|
44
45
|
addScopeSymbols,
|
|
45
46
|
findNewName,
|
|
46
47
|
getAllReferences,
|
|
47
|
-
getPathInAst,
|
|
48
48
|
getUsedNamesInScopeInfo
|
|
49
49
|
} = require("../util/concatenate");
|
|
50
50
|
const createHash = require("../util/createHash");
|
|
51
51
|
const createHooksRegistry = require("../util/createHooksRegistry");
|
|
52
52
|
const { digestNonNumericOnlyWithFull } = require("../util/nonNumericOnlyHash");
|
|
53
|
+
const { propertyAccess } = require("../util/property");
|
|
53
54
|
const { removeBOMFromResult } = require("../util/removeBOM");
|
|
54
55
|
const { intersectRuntime } = require("../util/runtime");
|
|
55
56
|
const { getAllChunks } = require("./ChunkHelpers");
|
|
56
57
|
const JavascriptGenerator = require("./JavascriptGenerator");
|
|
57
58
|
const JavascriptModule = require("./JavascriptModule");
|
|
58
59
|
const JavascriptParser = require("./JavascriptParser");
|
|
60
|
+
const {
|
|
61
|
+
compilationMergesEntryExports,
|
|
62
|
+
getMergedExports,
|
|
63
|
+
mergedEntryModules,
|
|
64
|
+
mergedEntryModulesOfLibrary
|
|
65
|
+
} = require("./MergedEntryExports");
|
|
59
66
|
const analyzeScope = require("./ScopeAnalyzer");
|
|
60
|
-
const {
|
|
61
|
-
|
|
67
|
+
const {
|
|
68
|
+
entryStartupAwaitsChunks,
|
|
69
|
+
renderAwaitedEntries
|
|
70
|
+
} = require("./StartupHelpers");
|
|
71
|
+
const { releaseParserCaches } = require("./syntax-parser");
|
|
62
72
|
|
|
63
|
-
/**
|
|
64
|
-
* @import {
|
|
65
|
-
* Program
|
|
66
|
-
* } from "estree"
|
|
67
|
-
*/
|
|
68
73
|
/** @import { Source } from "webpack-sources" */
|
|
69
74
|
/**
|
|
70
75
|
* @import {
|
|
71
76
|
* OutputNormalizedWithDefaults as OutputOptions
|
|
72
77
|
* } from "../config/defaults"
|
|
73
78
|
*/
|
|
74
|
-
/** @import Chunk, { ChunkFilenameTemplate } from "../Chunk" */
|
|
75
|
-
/** @import ChunkGraph, { EntryModuleWithChunkGroup } from "../ChunkGraph" */
|
|
76
|
-
/** @import CodeGenerationResults from "../CodeGenerationResults" */
|
|
79
|
+
/** @import Chunk, { ChunkFilenameTemplate } from "../graph/Chunk" */
|
|
80
|
+
/** @import ChunkGraph, { EntryModuleWithChunkGroup } from "../graph/ChunkGraph" */
|
|
81
|
+
/** @import CodeGenerationResults from "../module/CodeGenerationResults" */
|
|
77
82
|
/** @import Compiler from "../Compiler" */
|
|
78
|
-
/** @import DependencyTemplates from "../DependencyTemplates" */
|
|
79
|
-
/** @import Entrypoint from "../Entrypoint" */
|
|
80
|
-
/** @import Module, { BuildInfo, CodeGenerationResultData } from "../Module" */
|
|
81
|
-
/** @import
|
|
82
|
-
/** @import
|
|
83
|
-
/** @import RuntimeTemplate from "../RuntimeTemplate" */
|
|
83
|
+
/** @import DependencyTemplates from "../template/DependencyTemplates" */
|
|
84
|
+
/** @import Entrypoint from "../graph/Entrypoint" */
|
|
85
|
+
/** @import Module, { BuildInfo, CodeGenerationResultData } from "../module/Module" */
|
|
86
|
+
/** @import ModuleGraph from "../graph/ModuleGraph" */
|
|
87
|
+
/** @import RuntimeTemplate from "../template/RuntimeTemplate" */
|
|
84
88
|
/** @import WebpackError from "../errors/WebpackError" */
|
|
85
89
|
/** @import { Range } from "../javascript/JavascriptParser" */
|
|
86
90
|
/** @import Hash from "../util/Hash" */
|
|
@@ -254,6 +258,8 @@ const printGeneratedCodeForStack = (module, code) => {
|
|
|
254
258
|
* @property {boolean=} inlined inlined
|
|
255
259
|
* @property {boolean=} inlinedInIIFE the inlined entry module is wrapped in an IIFE
|
|
256
260
|
* @property {boolean=} needExportsDeclaration whether the top-level exports declaration needs to be generated
|
|
261
|
+
* @property {Map<string, string>=} renamedDeclarations the inlined entry's top-level declarations renamed to avoid a collision, original to new name
|
|
262
|
+
* @property {boolean=} exportsAwaited the startup already awaited the last entry, so `__webpack_exports__` holds its settled exports
|
|
257
263
|
*/
|
|
258
264
|
|
|
259
265
|
/**
|
|
@@ -332,18 +338,6 @@ const createCompilationHooks = () => ({
|
|
|
332
338
|
* @since 5.22.0
|
|
333
339
|
*/
|
|
334
340
|
inlineInRuntimeBailout: new SyncBailHook(["module", "renderContext"]),
|
|
335
|
-
/**
|
|
336
|
-
* Offers a module's rendered export-definition call to a consumer that can place
|
|
337
|
-
* it better — a library whose entry exports the same bindings natively takes it
|
|
338
|
-
* over and emits it only where the module is wrapped. Return true to take it.
|
|
339
|
-
* @type {SyncBailHook<[Module, RuntimeSpec, string, boolean], boolean | void>}
|
|
340
|
-
*/
|
|
341
|
-
onDemandExportsGeneration: new SyncBailHook([
|
|
342
|
-
"module",
|
|
343
|
-
"runtime",
|
|
344
|
-
"source",
|
|
345
|
-
"placeAtEnd"
|
|
346
|
-
]),
|
|
347
341
|
/**
|
|
348
342
|
* @type {SyncBailHook<[Module, RenderContext], string | void>}
|
|
349
343
|
* @since 5.22.0
|
|
@@ -375,20 +369,22 @@ const createCompilationHooks = () => ({
|
|
|
375
369
|
* in `allUsedNames`. Lets inlined modules be emitted without a per-entry/per-chunk
|
|
376
370
|
* IIFE by resolving name collisions instead of isolating each module.
|
|
377
371
|
* @param {InstanceType<typeof import("webpack-sources").ReplaceSource>} source the module source to edit
|
|
378
|
-
* @param {
|
|
372
|
+
* @param {Set<number>} shorthandIdentifierStarts where each shorthand property's identifier starts
|
|
379
373
|
* @param {Variable} variable the top-level variable to check/rename
|
|
380
374
|
* @param {string} moduleIdentifier the module identifier (for scope caching)
|
|
381
375
|
* @param {string} readableIdentifier the readable module identifier (for new names)
|
|
382
376
|
* @param {Set<string>} allUsedNames names already used in the shared scope (mutated)
|
|
377
|
+
* @param {Map<string, string>} renamedDeclarations the declarations renamed so far, original to new name (mutated)
|
|
383
378
|
* @returns {void}
|
|
384
379
|
*/
|
|
385
380
|
const renameInlinedModuleVariable = (
|
|
386
381
|
source,
|
|
387
|
-
|
|
382
|
+
shorthandIdentifierStarts,
|
|
388
383
|
variable,
|
|
389
384
|
moduleIdentifier,
|
|
390
385
|
readableIdentifier,
|
|
391
|
-
allUsedNames
|
|
386
|
+
allUsedNames,
|
|
387
|
+
renamedDeclarations
|
|
392
388
|
) => {
|
|
393
389
|
/** @type {UsedNamesInScopeInfo} */
|
|
394
390
|
const usedNamesInScopeInfo = new Map();
|
|
@@ -419,18 +415,12 @@ const renameInlinedModuleVariable = (
|
|
|
419
415
|
readableIdentifier
|
|
420
416
|
);
|
|
421
417
|
allUsedNames.add(newName);
|
|
418
|
+
renamedDeclarations.set(name, newName);
|
|
422
419
|
for (const identifier of allIdentifiers) {
|
|
423
420
|
const r = /** @type {Range} */ (identifier.range);
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
path[1].type === "AssignmentPattern" && path[1].left === path[0]
|
|
428
|
-
? path[2]
|
|
429
|
-
: path[1];
|
|
430
|
-
if (maybeProperty.type === "Property" && maybeProperty.shorthand) {
|
|
431
|
-
source.insert(r[1], `: ${newName}`);
|
|
432
|
-
continue;
|
|
433
|
-
}
|
|
421
|
+
if (shorthandIdentifierStarts.has(r[0])) {
|
|
422
|
+
source.insert(r[1], `: ${newName}`);
|
|
423
|
+
continue;
|
|
434
424
|
}
|
|
435
425
|
source.replace(r[0], r[1] - 1, newName);
|
|
436
426
|
}
|
|
@@ -440,13 +430,28 @@ const renameInlinedModuleVariable = (
|
|
|
440
430
|
|
|
441
431
|
const PLUGIN_NAME = "JavascriptModulesPlugin";
|
|
442
432
|
|
|
443
|
-
|
|
433
|
+
// Drops the redundant string/buffer copy of a source, keeping its map: a
|
|
434
|
+
// parsed map is far more expensive to rebuild than a `toString`.
|
|
435
|
+
const CLEAR_SOURCE_COPIES = { maps: false, source: true };
|
|
436
|
+
|
|
437
|
+
/** @typedef {{ header: string[], beforeStartup: string[], startup: string[], afterStartup: string[], allowInlineStartup: boolean, exportsAwaited: boolean }} Bootstrap */
|
|
438
|
+
/** @typedef {{ source: Source, needModule: boolean, needExports: boolean, needRequire: boolean, needThisAsExports: boolean, needStrict: boolean | undefined, renderShorthand: boolean, next: ModuleFactoryCacheEntry | undefined }} ModuleFactoryCacheEntry */
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* @typedef {object} RenamedInlinedModules
|
|
442
|
+
* @property {Map<Module, Source>} sources each inlined module's rendered source, renamed where it collided
|
|
443
|
+
* @property {Map<Module, Map<string, string>>} renamedDeclarations each renamed module's declarations, original to new name
|
|
444
|
+
*/
|
|
444
445
|
|
|
445
446
|
class JavascriptModulesPlugin {
|
|
446
447
|
constructor(options = {}) {
|
|
447
448
|
this.options = options;
|
|
448
|
-
/** @type {WeakMap<Source,
|
|
449
|
+
/** @type {WeakMap<Source, ModuleFactoryCacheEntry>} */
|
|
449
450
|
this._moduleFactoryCache = new WeakMap();
|
|
451
|
+
/** @type {WeakMap<Source, Set<string>>} */
|
|
452
|
+
this._renderedFreeNamesCache = new WeakMap();
|
|
453
|
+
/** @type {WeakMap<CodeGenerationResults, Set<Source>>} */
|
|
454
|
+
this._renderedModuleFactorySources = new WeakMap();
|
|
450
455
|
}
|
|
451
456
|
|
|
452
457
|
/**
|
|
@@ -459,6 +464,9 @@ class JavascriptModulesPlugin {
|
|
|
459
464
|
// drop them when the build ends so an idle process retains no parser state
|
|
460
465
|
compiler.hooks.done.tap(PLUGIN_NAME, releaseParserCaches);
|
|
461
466
|
compiler.hooks.failed.tap(PLUGIN_NAME, releaseParserCaches);
|
|
467
|
+
compiler.hooks.afterEmit.tap(PLUGIN_NAME, (compilation) => {
|
|
468
|
+
this._releaseRenderedModuleFactorySources(compilation);
|
|
469
|
+
});
|
|
462
470
|
compiler.hooks.compilation.tap(
|
|
463
471
|
PLUGIN_NAME,
|
|
464
472
|
(compilation, { normalModuleFactory }) => {
|
|
@@ -534,7 +542,7 @@ class JavascriptModulesPlugin {
|
|
|
534
542
|
codeGenerationResults
|
|
535
543
|
} = options;
|
|
536
544
|
|
|
537
|
-
const hotUpdateChunk = chunk
|
|
545
|
+
const hotUpdateChunk = chunk.isHotUpdate() ? chunk : null;
|
|
538
546
|
const filenameTemplate =
|
|
539
547
|
JavascriptModulesPlugin.getChunkFilenameTemplate(
|
|
540
548
|
chunk,
|
|
@@ -703,16 +711,93 @@ class JavascriptModulesPlugin {
|
|
|
703
711
|
compilation.hooks.additionalTreeRuntimeRequirements.tap(
|
|
704
712
|
PLUGIN_NAME,
|
|
705
713
|
(chunk, set, { chunkGraph }) => {
|
|
706
|
-
if (
|
|
707
|
-
|
|
708
|
-
chunkGraph.hasChunkEntryDependentChunks(chunk)
|
|
709
|
-
) {
|
|
714
|
+
if (set.has(RuntimeGlobals.startupNoDefault)) return;
|
|
715
|
+
if (chunkGraph.hasChunkEntryDependentChunks(chunk)) {
|
|
710
716
|
set.add(RuntimeGlobals.onChunksLoaded);
|
|
711
717
|
set.add(RuntimeGlobals.exports);
|
|
712
718
|
set.add(RuntimeGlobals.require);
|
|
719
|
+
return;
|
|
720
|
+
}
|
|
721
|
+
const merged = mergedEntryModules(chunk, chunkGraph, compilation);
|
|
722
|
+
if (merged === undefined) return;
|
|
723
|
+
const { exports, namespace } = getMergedExports(
|
|
724
|
+
merged,
|
|
725
|
+
compilation.moduleGraph,
|
|
726
|
+
chunk.runtime
|
|
727
|
+
);
|
|
728
|
+
set.add(RuntimeGlobals.exports);
|
|
729
|
+
if (namespace) set.add(RuntimeGlobals.makeNamespaceObject);
|
|
730
|
+
if (exports.length > 0) {
|
|
731
|
+
set.add(RuntimeGlobals.definePropertyGetters);
|
|
732
|
+
set.add(RuntimeGlobals.definePropertyGettersFromArray);
|
|
713
733
|
}
|
|
714
734
|
}
|
|
715
735
|
);
|
|
736
|
+
compilation.hooks.afterChunks.tap(PLUGIN_NAME, (chunks) => {
|
|
737
|
+
if (!compilationMergesEntryExports(compilation)) return;
|
|
738
|
+
const { chunkGraph, moduleGraph, runtimeTemplate } = compilation;
|
|
739
|
+
for (const chunk of chunks) {
|
|
740
|
+
const merged = mergedEntryModules(chunk, chunkGraph, compilation);
|
|
741
|
+
if (merged === undefined) continue;
|
|
742
|
+
// Merging reads each entry back right after it ran, which
|
|
743
|
+
// only the bootstrap of the runtime-carrying chunk can do.
|
|
744
|
+
if (
|
|
745
|
+
!chunk.hasRuntime() ||
|
|
746
|
+
chunkGraph.hasChunkEntryDependentChunks(chunk) ||
|
|
747
|
+
entryStartupAwaitsChunks(chunkGraph, chunk)
|
|
748
|
+
) {
|
|
749
|
+
compilation.errors.push(
|
|
750
|
+
new UnmergeableEntryExportsError(
|
|
751
|
+
chunk,
|
|
752
|
+
"they don't all run when this chunk starts up"
|
|
753
|
+
)
|
|
754
|
+
);
|
|
755
|
+
continue;
|
|
756
|
+
}
|
|
757
|
+
// An async entry hands back a promise the merged object would
|
|
758
|
+
// read names off, so it has to be awaited before the merge.
|
|
759
|
+
if (
|
|
760
|
+
!(
|
|
761
|
+
runtimeTemplate.isModule() &&
|
|
762
|
+
runtimeTemplate.supportsTopLevelAwait()
|
|
763
|
+
) &&
|
|
764
|
+
merged.some((module) => moduleGraph.isAsync(module))
|
|
765
|
+
) {
|
|
766
|
+
compilation.errors.push(
|
|
767
|
+
new UnmergeableEntryExportsError(
|
|
768
|
+
chunk,
|
|
769
|
+
"one of them is async and this output can't await it at the top level (see 'output.environment.topLevelAwait')"
|
|
770
|
+
)
|
|
771
|
+
);
|
|
772
|
+
continue;
|
|
773
|
+
}
|
|
774
|
+
const { conflicting, unknownExports } = getMergedExports(
|
|
775
|
+
merged,
|
|
776
|
+
moduleGraph,
|
|
777
|
+
chunk.runtime
|
|
778
|
+
);
|
|
779
|
+
if (unknownExports.length > 0) {
|
|
780
|
+
compilation.errors.push(
|
|
781
|
+
new UnmergeableEntryExportsError(
|
|
782
|
+
chunk,
|
|
783
|
+
`webpack can't tell what ${unknownExports
|
|
784
|
+
.map((module) =>
|
|
785
|
+
module.readableIdentifier(
|
|
786
|
+
runtimeTemplate.requestShortener
|
|
787
|
+
)
|
|
788
|
+
)
|
|
789
|
+
.join(", ")} exports`
|
|
790
|
+
)
|
|
791
|
+
);
|
|
792
|
+
continue;
|
|
793
|
+
}
|
|
794
|
+
if (conflicting.length > 0) {
|
|
795
|
+
compilation.warnings.push(
|
|
796
|
+
new ConflictingEntryExportsWarning(chunk, conflicting)
|
|
797
|
+
);
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
});
|
|
716
801
|
compilation.hooks.executeModule.tap(PLUGIN_NAME, (options, context) => {
|
|
717
802
|
const source =
|
|
718
803
|
options.codeGenerationResult.sources.get(JAVASCRIPT_TYPE);
|
|
@@ -790,7 +875,7 @@ class JavascriptModulesPlugin {
|
|
|
790
875
|
static getChunkFilenameTemplate(chunk, outputOptions) {
|
|
791
876
|
if (chunk.filenameTemplate) {
|
|
792
877
|
return chunk.filenameTemplate;
|
|
793
|
-
} else if (chunk
|
|
878
|
+
} else if (chunk.isHotUpdate()) {
|
|
794
879
|
return outputOptions.hotUpdateChunkFilename;
|
|
795
880
|
}
|
|
796
881
|
const entryOptions = chunk.getEntryOptions();
|
|
@@ -804,6 +889,39 @@ class JavascriptModulesPlugin {
|
|
|
804
889
|
return outputOptions.chunkFilename;
|
|
805
890
|
}
|
|
806
891
|
|
|
892
|
+
/**
|
|
893
|
+
* Releases the flattened text the module factory sources memoized while the
|
|
894
|
+
* chunk assets were read. Clearing is only a hint, so a later read re-renders.
|
|
895
|
+
* @param {Compilation} compilation the compilation that emitted its assets
|
|
896
|
+
* @returns {void}
|
|
897
|
+
*/
|
|
898
|
+
_releaseRenderedModuleFactorySources(compilation) {
|
|
899
|
+
// A child compiler never inherits `afterEmit` and its assets are copied
|
|
900
|
+
// into this compilation, which keeps the child reachable through
|
|
901
|
+
// `children`, so the parent's emit is where its sources are released too.
|
|
902
|
+
for (const child of compilation.children) {
|
|
903
|
+
this._releaseRenderedModuleFactorySources(child);
|
|
904
|
+
}
|
|
905
|
+
const { codeGenerationResults } = compilation;
|
|
906
|
+
if (codeGenerationResults === undefined) return;
|
|
907
|
+
const renderedSources = this._renderedModuleFactorySources.get(
|
|
908
|
+
codeGenerationResults
|
|
909
|
+
);
|
|
910
|
+
if (renderedSources === undefined) return;
|
|
911
|
+
this._renderedModuleFactorySources.delete(codeGenerationResults);
|
|
912
|
+
// WHY: the factory sources wrap the code generation ones, so one walk with
|
|
913
|
+
// a shared `visited` clears both layers and reaches a source shared by
|
|
914
|
+
// several chunks once. Feature-detected, since `clearCache` landed in
|
|
915
|
+
// webpack-sources 3.5 and a plugin may hand us an older `Source`.
|
|
916
|
+
/** @type {WeakSet<Source>} */
|
|
917
|
+
const visited = new WeakSet();
|
|
918
|
+
for (const source of renderedSources) {
|
|
919
|
+
if (typeof source.clearCache === "function") {
|
|
920
|
+
source.clearCache(CLEAR_SOURCE_COPIES, visited);
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
}
|
|
924
|
+
|
|
807
925
|
/**
|
|
808
926
|
* Renders the newly generated source from rendering.
|
|
809
927
|
* @param {Module} module the rendered module
|
|
@@ -856,54 +974,41 @@ class JavascriptModulesPlugin {
|
|
|
856
974
|
const needStrict =
|
|
857
975
|
/** @type {BuildInfo} */
|
|
858
976
|
(module.buildInfo).strict && !strictMode;
|
|
977
|
+
const renderShorthand =
|
|
978
|
+
renderInObject === true && runtimeTemplate.supportsMethodShorthand();
|
|
859
979
|
const cacheEntry = this._moduleFactoryCache.get(
|
|
860
980
|
moduleSourcePostContent
|
|
861
981
|
);
|
|
862
|
-
|
|
863
|
-
renderInObject === true && runtimeTemplate.supportsMethodShorthand();
|
|
864
|
-
/** @type {Source} */
|
|
982
|
+
/** @type {Source | undefined} */
|
|
865
983
|
let source;
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
} else {
|
|
877
|
-
const factorySource = new ConcatSource();
|
|
878
|
-
/** @type {string[]} */
|
|
879
|
-
const args = [];
|
|
880
|
-
if (needExports || needRequire || needModule) {
|
|
881
|
-
args.push(
|
|
882
|
-
needModule
|
|
883
|
-
? module.moduleArgument
|
|
884
|
-
: `__unused_webpack_${module.moduleArgument}`
|
|
885
|
-
);
|
|
886
|
-
}
|
|
887
|
-
if (needExports || needRequire) {
|
|
888
|
-
args.push(
|
|
889
|
-
needExports
|
|
890
|
-
? module.exportsArgument
|
|
891
|
-
: `__unused_webpack_${module.exportsArgument}`
|
|
892
|
-
);
|
|
893
|
-
}
|
|
894
|
-
if (needRequire) args.push(RuntimeGlobals.require);
|
|
895
|
-
|
|
896
|
-
if (renderShorthand) {
|
|
897
|
-
// we can optimize function to methodShorthand if render module factory in object
|
|
898
|
-
factorySource.add(`(${args.join(", ")}) {\n\n`);
|
|
899
|
-
} else if (
|
|
900
|
-
!needThisAsExports &&
|
|
901
|
-
runtimeTemplate.supportsArrowFunction()
|
|
984
|
+
// The chunk renders a method shorthand where the entry-IIFE rename
|
|
985
|
+
// needs a standalone function, so a source can have both shapes.
|
|
986
|
+
for (let entry = cacheEntry; entry; entry = entry.next) {
|
|
987
|
+
if (
|
|
988
|
+
entry.needModule === needModule &&
|
|
989
|
+
entry.needExports === needExports &&
|
|
990
|
+
entry.needRequire === needRequire &&
|
|
991
|
+
entry.needThisAsExports === needThisAsExports &&
|
|
992
|
+
entry.needStrict === needStrict &&
|
|
993
|
+
entry.renderShorthand === renderShorthand
|
|
902
994
|
) {
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
factorySource.add(`/***/ (function(${args.join(", ")}) {\n\n`);
|
|
995
|
+
source = entry.source;
|
|
996
|
+
break;
|
|
906
997
|
}
|
|
998
|
+
}
|
|
999
|
+
if (source === undefined) {
|
|
1000
|
+
const factorySource = new ConcatSource();
|
|
1001
|
+
const header = runtimeTemplate.moduleFactoryFnHeader({
|
|
1002
|
+
module,
|
|
1003
|
+
needModule,
|
|
1004
|
+
needExports,
|
|
1005
|
+
needRequire,
|
|
1006
|
+
needThisAsExports,
|
|
1007
|
+
shorthand: renderShorthand
|
|
1008
|
+
});
|
|
1009
|
+
factorySource.add(
|
|
1010
|
+
renderShorthand ? `${header}\n\n` : `/***/ (${header}\n\n`
|
|
1011
|
+
);
|
|
907
1012
|
|
|
908
1013
|
if (needStrict) {
|
|
909
1014
|
factorySource.add('"use strict";\n');
|
|
@@ -918,9 +1023,23 @@ class JavascriptModulesPlugin {
|
|
|
918
1023
|
needRequire,
|
|
919
1024
|
needThisAsExports,
|
|
920
1025
|
needStrict,
|
|
921
|
-
renderShorthand
|
|
1026
|
+
renderShorthand,
|
|
1027
|
+
next: cacheEntry
|
|
922
1028
|
});
|
|
923
1029
|
}
|
|
1030
|
+
// Also on a cache hit: this compilation reads the assets again, so it
|
|
1031
|
+
// memoizes into a source an earlier one already released.
|
|
1032
|
+
let renderedSources = this._renderedModuleFactorySources.get(
|
|
1033
|
+
codeGenerationResults
|
|
1034
|
+
);
|
|
1035
|
+
if (renderedSources === undefined) {
|
|
1036
|
+
renderedSources = new Set();
|
|
1037
|
+
this._renderedModuleFactorySources.set(
|
|
1038
|
+
codeGenerationResults,
|
|
1039
|
+
renderedSources
|
|
1040
|
+
);
|
|
1041
|
+
}
|
|
1042
|
+
renderedSources.add(source);
|
|
924
1043
|
moduleSourcePostContainer = tryRunOrWebpackError(
|
|
925
1044
|
() => hooks.renderModuleContainer.call(source, module, renderContext),
|
|
926
1045
|
"JavascriptModulesPlugin.getCompilationHooks().renderModuleContainer"
|
|
@@ -980,10 +1099,8 @@ class JavascriptModulesPlugin {
|
|
|
980
1099
|
// ESM entry chunk whose runtime lives in a separate chunk: inline the
|
|
981
1100
|
// single entry module at the top level (instead of the module registry)
|
|
982
1101
|
// so its own top-level declarations stay live ESM bindings for consumers.
|
|
983
|
-
const inlinedEntryModule =
|
|
984
|
-
renderContext
|
|
985
|
-
allModules
|
|
986
|
-
);
|
|
1102
|
+
const inlinedEntryModule =
|
|
1103
|
+
JavascriptModulesPlugin._getEsmEntryModuleToInline(renderContext);
|
|
987
1104
|
let registryModules = allModules;
|
|
988
1105
|
if (inlinedEntryModule) {
|
|
989
1106
|
const inlinedEntrySource = this.renderModule(
|
|
@@ -1049,18 +1166,20 @@ class JavascriptModulesPlugin {
|
|
|
1049
1166
|
* its exports as live ESM bindings. Only a self-contained ESM entry whose
|
|
1050
1167
|
* top-level declarations can be lifted into the chunk scope qualifies;
|
|
1051
1168
|
* otherwise `undefined` is returned and the registry path is used.
|
|
1052
|
-
*
|
|
1053
|
-
*
|
|
1169
|
+
*
|
|
1170
|
+
* Static so that a plugin can decide before the chunk is rendered what it may
|
|
1171
|
+
* leave out of the inlined entry's source and put back in the registry.
|
|
1172
|
+
* @param {Pick<RenderContext, "chunk" | "chunkGraph" | "moduleGraph" | "runtimeTemplate" | "codeGenerationResults">} context chunk, graphs and code generation results
|
|
1054
1173
|
* @returns {Module | undefined} the entry module to inline, if any
|
|
1055
1174
|
*/
|
|
1056
|
-
_getEsmEntryModuleToInline(
|
|
1175
|
+
static _getEsmEntryModuleToInline(context) {
|
|
1057
1176
|
const {
|
|
1058
1177
|
chunk,
|
|
1059
1178
|
chunkGraph,
|
|
1060
1179
|
moduleGraph,
|
|
1061
1180
|
runtimeTemplate,
|
|
1062
1181
|
codeGenerationResults
|
|
1063
|
-
} =
|
|
1182
|
+
} = context;
|
|
1064
1183
|
|
|
1065
1184
|
// Only a single ESM entry whose runtime lives in a separate chunk.
|
|
1066
1185
|
if (
|
|
@@ -1285,7 +1404,7 @@ class JavascriptModulesPlugin {
|
|
|
1285
1404
|
const startupSource = new ConcatSource();
|
|
1286
1405
|
|
|
1287
1406
|
const avoidEntryIife = compilation.options.optimization.avoidEntryIife;
|
|
1288
|
-
/** @type {
|
|
1407
|
+
/** @type {RenamedInlinedModules | false} */
|
|
1289
1408
|
let renamedInlinedModule = false;
|
|
1290
1409
|
let inlinedInIIFE = false;
|
|
1291
1410
|
|
|
@@ -1329,7 +1448,7 @@ class JavascriptModulesPlugin {
|
|
|
1329
1448
|
}
|
|
1330
1449
|
|
|
1331
1450
|
const renderedModule = renamedInlinedModule
|
|
1332
|
-
? renamedInlinedModule.get(m)
|
|
1451
|
+
? renamedInlinedModule.sources.get(m)
|
|
1333
1452
|
: this.renderModule(
|
|
1334
1453
|
m,
|
|
1335
1454
|
{
|
|
@@ -1386,7 +1505,10 @@ class JavascriptModulesPlugin {
|
|
|
1386
1505
|
...renderContext,
|
|
1387
1506
|
inlined: true,
|
|
1388
1507
|
inlinedInIIFE,
|
|
1389
|
-
needExportsDeclaration: runtimeRequirements.has(RuntimeGlobals.exports)
|
|
1508
|
+
needExportsDeclaration: runtimeRequirements.has(RuntimeGlobals.exports),
|
|
1509
|
+
renamedDeclarations: renamedInlinedModule
|
|
1510
|
+
? renamedInlinedModule.renamedDeclarations.get(lastInlinedModule)
|
|
1511
|
+
: undefined
|
|
1390
1512
|
};
|
|
1391
1513
|
let renderedStartup = hooks.renderStartup.call(
|
|
1392
1514
|
startupSource,
|
|
@@ -1448,7 +1570,8 @@ class JavascriptModulesPlugin {
|
|
|
1448
1570
|
{
|
|
1449
1571
|
...renderContext,
|
|
1450
1572
|
inlined: false,
|
|
1451
|
-
needExportsDeclaration: true
|
|
1573
|
+
needExportsDeclaration: true,
|
|
1574
|
+
exportsAwaited: bootstrap.exportsAwaited
|
|
1452
1575
|
}
|
|
1453
1576
|
),
|
|
1454
1577
|
toSource(bootstrap.afterStartup, "webpack/after-startup"),
|
|
@@ -1560,14 +1683,15 @@ class JavascriptModulesPlugin {
|
|
|
1560
1683
|
requireFunction || interceptModuleExecution || moduleUsed;
|
|
1561
1684
|
|
|
1562
1685
|
/**
|
|
1563
|
-
* @type {
|
|
1686
|
+
* @type {Bootstrap}
|
|
1564
1687
|
*/
|
|
1565
1688
|
const result = {
|
|
1566
1689
|
header: [],
|
|
1567
1690
|
beforeStartup: [],
|
|
1568
1691
|
startup: [],
|
|
1569
1692
|
afterStartup: [],
|
|
1570
|
-
allowInlineStartup: true
|
|
1693
|
+
allowInlineStartup: true,
|
|
1694
|
+
exportsAwaited: false
|
|
1571
1695
|
};
|
|
1572
1696
|
|
|
1573
1697
|
const { header: buf, startup, beforeStartup, afterStartup } = result;
|
|
@@ -1597,17 +1721,14 @@ class JavascriptModulesPlugin {
|
|
|
1597
1721
|
}
|
|
1598
1722
|
|
|
1599
1723
|
if (runtimeRequirements.has(RuntimeGlobals.makeDeferredNamespaceObject)) {
|
|
1600
|
-
//
|
|
1601
|
-
//
|
|
1602
|
-
//
|
|
1603
|
-
// is evaluated.
|
|
1724
|
+
// The deferred namespace drops its proxy handlers once the module has
|
|
1725
|
+
// initialized, which needs every deferred import of it to reach the exports
|
|
1726
|
+
// object before evaluation.
|
|
1604
1727
|
buf.push("// The deferred module cache");
|
|
1605
1728
|
buf.push(`${bootstrapCst} __webpack_module_deferred_exports__ = {};`);
|
|
1606
|
-
//
|
|
1607
|
-
//
|
|
1608
|
-
//
|
|
1609
|
-
// Cache the deferred namespace proxy here so calls from different
|
|
1610
|
-
// files share identity.
|
|
1729
|
+
// Every defer-import site for one module must yield the same Deferred
|
|
1730
|
+
// Module Namespace, distinct from any eager one, so the proxy is cached
|
|
1731
|
+
// here for call sites in different files to share.
|
|
1611
1732
|
buf.push("// The deferred namespace cache");
|
|
1612
1733
|
buf.push(
|
|
1613
1734
|
`${bootstrapCst} __webpack_module_deferred_namespace_cache__ = {};`
|
|
@@ -1674,22 +1795,32 @@ class JavascriptModulesPlugin {
|
|
|
1674
1795
|
entryOptions && entryOptions.library !== undefined
|
|
1675
1796
|
? entryOptions.library
|
|
1676
1797
|
: runtimeTemplate.outputOptions.library;
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1798
|
+
const mergedModules = mergedEntryModulesOfLibrary(
|
|
1799
|
+
library,
|
|
1800
|
+
chunk,
|
|
1801
|
+
chunkGraph
|
|
1802
|
+
);
|
|
1803
|
+
const merge = mergedModules !== undefined;
|
|
1680
1804
|
// `await` is legal only at an ESM chunk's top level, never in the
|
|
1681
1805
|
// startup function below, and only where the target parses it.
|
|
1682
1806
|
const canAwaitEntry =
|
|
1683
1807
|
runtimeTemplate.isModule() &&
|
|
1684
1808
|
runtimeTemplate.supportsTopLevelAwait() &&
|
|
1685
|
-
!awaitedByLibrary &&
|
|
1686
1809
|
!runtimeRequirements.has(RuntimeGlobals.startup) &&
|
|
1687
1810
|
!(
|
|
1688
1811
|
runtimeRequirements.has(RuntimeGlobals.startupOnlyBefore) &&
|
|
1689
1812
|
runtimeRequirements.has(RuntimeGlobals.startupOnlyAfter)
|
|
1690
1813
|
);
|
|
1814
|
+
if (merge && result.allowInlineStartup) {
|
|
1815
|
+
buf2.push(
|
|
1816
|
+
"// The exports of the entry modules are merged so they can't be inlined"
|
|
1817
|
+
);
|
|
1818
|
+
result.allowInlineStartup = false;
|
|
1819
|
+
}
|
|
1691
1820
|
/** @type {string[]} */
|
|
1692
1821
|
const awaitedEntries = [];
|
|
1822
|
+
/** @type {Map<Module, string>} */
|
|
1823
|
+
const mergedTargets = new Map();
|
|
1693
1824
|
let i = jsEntries.length;
|
|
1694
1825
|
for (const [entryModule, entrypoint] of jsEntries) {
|
|
1695
1826
|
const chunks =
|
|
@@ -1718,6 +1849,12 @@ class JavascriptModulesPlugin {
|
|
|
1718
1849
|
buf2.push(
|
|
1719
1850
|
"// This entry module is referenced by other modules so it can't be inlined"
|
|
1720
1851
|
);
|
|
1852
|
+
// Its exports are then read off the exports object, and a property
|
|
1853
|
+
// read is not something a consumer of the bundle can drop.
|
|
1854
|
+
runtimeTemplate.analyzableBailout(
|
|
1855
|
+
entryModule,
|
|
1856
|
+
"the entry is referenced by other modules, so its exports are read off the exports object and a consumer cannot drop them"
|
|
1857
|
+
);
|
|
1721
1858
|
result.allowInlineStartup = false;
|
|
1722
1859
|
}
|
|
1723
1860
|
|
|
@@ -1797,32 +1934,36 @@ class JavascriptModulesPlugin {
|
|
|
1797
1934
|
result.allowInlineStartup = false;
|
|
1798
1935
|
}
|
|
1799
1936
|
|
|
1800
|
-
// `__webpack_exports__` may be reassigned later
|
|
1801
|
-
// `onChunksLoaded` wrapper
|
|
1802
|
-
//
|
|
1803
|
-
// bridge reassigns `__webpack_exports__` to the awaited
|
|
1804
|
-
// value), or by other downstream codegen. Always declare
|
|
1805
|
-
// with `let` (or `var` if `let` is unsupported) so
|
|
1806
|
-
// reassignment is allowed.
|
|
1937
|
+
// `__webpack_exports__` may be reassigned later, by the
|
|
1938
|
+
// `onChunksLoaded` wrapper, a top-level `await` bridge or other
|
|
1939
|
+
// codegen, so it is never declared as a constant.
|
|
1807
1940
|
const exportsDecl = runtimeTemplate.renderLet();
|
|
1941
|
+
// Merging reads every entry back, so each one needs a variable of
|
|
1942
|
+
// its own; without it only the last entry (`i === 0`) is exported.
|
|
1943
|
+
const target =
|
|
1944
|
+
i === 0 && !merge
|
|
1945
|
+
? RuntimeGlobals.exports
|
|
1946
|
+
: `${RuntimeGlobals.exports}_${i}`;
|
|
1947
|
+
if (merge) mergedTargets.set(entryModule, target);
|
|
1808
1948
|
if (chunks.length > 0) {
|
|
1809
1949
|
const awaitEntry =
|
|
1810
1950
|
canAwaitEntry && moduleGraph.isAsync(entryModule);
|
|
1811
|
-
const target =
|
|
1812
|
-
i === 0
|
|
1813
|
-
? RuntimeGlobals.exports
|
|
1814
|
-
: `${RuntimeGlobals.exports}_${i}`;
|
|
1815
1951
|
// The wrapper hands back nothing until the flush below runs the
|
|
1816
|
-
// entry, so
|
|
1817
|
-
|
|
1952
|
+
// entry, so a captured one is caught by the entry call itself.
|
|
1953
|
+
const capture = awaitEntry || merge;
|
|
1954
|
+
if (capture && target !== RuntimeGlobals.exports) {
|
|
1955
|
+
buf2.push(`${exportsDecl} ${target};`);
|
|
1956
|
+
}
|
|
1818
1957
|
const entryCall = `${RuntimeGlobals.require}(${moduleIdExpr})`;
|
|
1819
1958
|
buf2.push(
|
|
1820
|
-
`${
|
|
1821
|
-
|
|
1822
|
-
|
|
1959
|
+
`${
|
|
1960
|
+
i === 0 && !merge
|
|
1961
|
+
? `${exportsDecl} ${RuntimeGlobals.exports} = `
|
|
1962
|
+
: ""
|
|
1963
|
+
}${RuntimeGlobals.onChunksLoaded}(undefined, ${JSON.stringify(
|
|
1823
1964
|
chunks.map((c) => c.id)
|
|
1824
1965
|
)}, ${runtimeTemplate.returningFunction(
|
|
1825
|
-
|
|
1966
|
+
capture ? `(${target} = ${entryCall})` : entryCall
|
|
1826
1967
|
)})`
|
|
1827
1968
|
);
|
|
1828
1969
|
if (awaitEntry) awaitedEntries.push(target);
|
|
@@ -1831,18 +1972,14 @@ class JavascriptModulesPlugin {
|
|
|
1831
1972
|
// which orphans its rejection.
|
|
1832
1973
|
const awaitEntry =
|
|
1833
1974
|
canAwaitEntry && moduleGraph.isAsync(entryModule);
|
|
1834
|
-
const
|
|
1835
|
-
i === 0
|
|
1836
|
-
? RuntimeGlobals.exports
|
|
1837
|
-
: `${RuntimeGlobals.exports}_${i}`;
|
|
1838
|
-
const needsDecl = i === 0 || awaitEntry;
|
|
1975
|
+
const needsDecl = i === 0 || awaitEntry || merge;
|
|
1839
1976
|
buf2.push(
|
|
1840
1977
|
`${needsDecl ? `${exportsDecl} ${target} = ` : ""}${RuntimeGlobals.require}(${moduleIdExpr});`
|
|
1841
1978
|
);
|
|
1842
1979
|
if (awaitEntry) awaitedEntries.push(target);
|
|
1843
1980
|
} else {
|
|
1844
|
-
if (i === 0) {
|
|
1845
|
-
buf2.push(`${exportsDecl} ${
|
|
1981
|
+
if (i === 0 || merge) {
|
|
1982
|
+
buf2.push(`${exportsDecl} ${target} = {};`);
|
|
1846
1983
|
}
|
|
1847
1984
|
const needThisAsExports = entryRuntimeRequirements.has(
|
|
1848
1985
|
RuntimeGlobals.thisAsExports
|
|
@@ -1854,7 +1991,7 @@ class JavascriptModulesPlugin {
|
|
|
1854
1991
|
requireScopeUsed ||
|
|
1855
1992
|
entryRuntimeRequirements.has(RuntimeGlobals.exports)
|
|
1856
1993
|
) {
|
|
1857
|
-
const exportsArg = i === 0 ?
|
|
1994
|
+
const exportsArg = i === 0 || merge ? target : "{}";
|
|
1858
1995
|
args.push("0", exportsArg);
|
|
1859
1996
|
if (requireScopeUsed) {
|
|
1860
1997
|
args.push(RuntimeGlobals.require);
|
|
@@ -1866,7 +2003,7 @@ class JavascriptModulesPlugin {
|
|
|
1866
2003
|
if (needThisAsExports) {
|
|
1867
2004
|
const comma = args.length ? "," : "";
|
|
1868
2005
|
return `__webpack_modules__[${moduleIdExpr}].call(${
|
|
1869
|
-
RuntimeGlobals.exports
|
|
2006
|
+
merge ? target : RuntimeGlobals.exports
|
|
1870
2007
|
}${comma}${args.join(",")});`;
|
|
1871
2008
|
}
|
|
1872
2009
|
return `__webpack_modules__[${moduleIdExpr}](${args.join(
|
|
@@ -1879,10 +2016,43 @@ class JavascriptModulesPlugin {
|
|
|
1879
2016
|
}
|
|
1880
2017
|
if (runtimeRequirements.has(RuntimeGlobals.onChunksLoaded)) {
|
|
1881
2018
|
buf2.push(
|
|
1882
|
-
|
|
2019
|
+
merge
|
|
2020
|
+
? `${RuntimeGlobals.onChunksLoaded}();`
|
|
2021
|
+
: `${RuntimeGlobals.exports} = ${RuntimeGlobals.onChunksLoaded}(${RuntimeGlobals.exports});`
|
|
1883
2022
|
);
|
|
1884
2023
|
}
|
|
1885
2024
|
buf2.push(...renderAwaitedEntries(awaitedEntries));
|
|
2025
|
+
result.exportsAwaited = awaitedEntries.includes(RuntimeGlobals.exports);
|
|
2026
|
+
// Every entry has run by now, and the getters below read through to
|
|
2027
|
+
// whichever one provides each name.
|
|
2028
|
+
if (merge) {
|
|
2029
|
+
const { exports, namespace } = getMergedExports(
|
|
2030
|
+
/** @type {Module[]} */ (mergedModules),
|
|
2031
|
+
moduleGraph,
|
|
2032
|
+
chunk.runtime
|
|
2033
|
+
);
|
|
2034
|
+
buf2.push(
|
|
2035
|
+
`${runtimeTemplate.renderLet()} ${RuntimeGlobals.exports} = {};`
|
|
2036
|
+
);
|
|
2037
|
+
if (namespace) {
|
|
2038
|
+
buf2.push(
|
|
2039
|
+
`${RuntimeGlobals.makeNamespaceObject}(${RuntimeGlobals.exports});`
|
|
2040
|
+
);
|
|
2041
|
+
}
|
|
2042
|
+
if (exports.length > 0) {
|
|
2043
|
+
const bindings = exports.map(
|
|
2044
|
+
({ name, module, usedName }) =>
|
|
2045
|
+
`${JSON.stringify(name)}, ${runtimeTemplate.returningFunction(
|
|
2046
|
+
`${mergedTargets.get(module)}${propertyAccess([usedName])}`
|
|
2047
|
+
)}`
|
|
2048
|
+
);
|
|
2049
|
+
buf2.push(
|
|
2050
|
+
`${RuntimeGlobals.definePropertyGetters}(${
|
|
2051
|
+
RuntimeGlobals.exports
|
|
2052
|
+
}, [${bindings.join(", ")}]);`
|
|
2053
|
+
);
|
|
2054
|
+
}
|
|
2055
|
+
}
|
|
1886
2056
|
if (
|
|
1887
2057
|
runtimeRequirements.has(RuntimeGlobals.startup) ||
|
|
1888
2058
|
(runtimeRequirements.has(RuntimeGlobals.startupOnlyBefore) &&
|
|
@@ -2012,11 +2182,9 @@ class JavascriptModulesPlugin {
|
|
|
2012
2182
|
const needModuleDefer = runtimeRequirements.has(
|
|
2013
2183
|
RuntimeGlobals.makeDeferredNamespaceObject
|
|
2014
2184
|
);
|
|
2015
|
-
// Both deferred-namespace runtimes re-invoke `__webpack_require__` on
|
|
2016
|
-
//
|
|
2017
|
-
//
|
|
2018
|
-
// does not use `__webpack_module_deferred_exports__`, so it is tracked
|
|
2019
|
-
// separately from `needModuleDefer`.
|
|
2185
|
+
// Both deferred-namespace runtimes re-invoke `__webpack_require__` on access,
|
|
2186
|
+
// so an evaluation error must be retained and re-thrown. The optimized one
|
|
2187
|
+
// skips the deferred exports object, hence the separate flag.
|
|
2020
2188
|
const needModuleDeferAny =
|
|
2021
2189
|
needModuleDefer ||
|
|
2022
2190
|
runtimeRequirements.has(
|
|
@@ -2127,7 +2295,7 @@ class JavascriptModulesPlugin {
|
|
|
2127
2295
|
* @param {CompilationHooks} hooks hooks
|
|
2128
2296
|
* @param {boolean | undefined} allStrict allStrict
|
|
2129
2297
|
* @param {boolean} hasChunkModules hasChunkModules
|
|
2130
|
-
* @returns {
|
|
2298
|
+
* @returns {RenamedInlinedModules | false} renamed inlined modules
|
|
2131
2299
|
*/
|
|
2132
2300
|
_getRenamedInlineModule(
|
|
2133
2301
|
compilation,
|
|
@@ -2144,28 +2312,31 @@ class JavascriptModulesPlugin {
|
|
|
2144
2312
|
allModules.every((m) => /** @type {BuildInfo} */ (m.buildInfo).strict);
|
|
2145
2313
|
const isMultipleEntries = inlinedModules.size > 1;
|
|
2146
2314
|
const singleEntryWithModules = inlinedModules.size === 1 && hasChunkModules;
|
|
2147
|
-
//
|
|
2148
|
-
//
|
|
2149
|
-
//
|
|
2150
|
-
// ('it uses a non-standard name for the exports') is not handled here.
|
|
2315
|
+
// Runs before the IIFE reason is calculated, and only for the cases whose
|
|
2316
|
+
// reason it can remove: several inlined entries, or one beside other chunk
|
|
2317
|
+
// modules. A non-standard exports name is not handled here.
|
|
2151
2318
|
if (innerStrict || (!isMultipleEntries && !singleEntryWithModules)) {
|
|
2152
2319
|
return false;
|
|
2153
2320
|
}
|
|
2154
2321
|
|
|
2155
2322
|
/** @type {Map<Module, Source>} */
|
|
2156
2323
|
const renamedInlinedModules = new Map();
|
|
2324
|
+
/** @type {Map<Module, Map<string, string>>} */
|
|
2325
|
+
const renamedDeclarations = new Map();
|
|
2157
2326
|
const { runtimeTemplate } = renderContext;
|
|
2158
2327
|
|
|
2159
|
-
/** @typedef {{ source: Source, module: Module,
|
|
2328
|
+
/** @typedef {{ source: Source, module: Module, shorthandIdentifierStarts: Set<number>, variables: Set<Variable>, through: Set<Reference>, usedInNonInlined: Set<Variable>, moduleScope: Scope }} Info */
|
|
2160
2329
|
/** @type {Map<Module, Info>} */
|
|
2161
2330
|
const inlinedModulesToInfo = new Map();
|
|
2162
2331
|
/** @type {Set<string>} */
|
|
2163
2332
|
const nonInlinedModuleThroughIdentifiers = new Set();
|
|
2164
2333
|
/** @type {Map<Module, Source>} */
|
|
2165
2334
|
const inlinedModuleSources = new Map();
|
|
2335
|
+
const { codeGenerationResults, chunk } = renderContext;
|
|
2166
2336
|
|
|
2167
2337
|
for (const m of allModules) {
|
|
2168
2338
|
const isInlinedModule = inlinedModules && inlinedModules.has(m);
|
|
2339
|
+
|
|
2169
2340
|
const moduleSource = this.renderModule(
|
|
2170
2341
|
m,
|
|
2171
2342
|
{
|
|
@@ -2183,6 +2354,47 @@ class JavascriptModulesPlugin {
|
|
|
2183
2354
|
inlinedModuleSources.set(m, moduleSource);
|
|
2184
2355
|
continue;
|
|
2185
2356
|
}
|
|
2357
|
+
// The render hooks add free names, so only the source they left behind
|
|
2358
|
+
// can be analysed; keying on it lets a rebuild skip the parse.
|
|
2359
|
+
let freeNames = this._renderedFreeNamesCache.get(moduleSource);
|
|
2360
|
+
|
|
2361
|
+
if (freeNames === undefined) {
|
|
2362
|
+
const code = /** @type {string} */ (moduleSource.source());
|
|
2363
|
+
|
|
2364
|
+
const { experiments } = compilation.options;
|
|
2365
|
+
const { ast } = JavascriptParser._parse(
|
|
2366
|
+
code,
|
|
2367
|
+
{
|
|
2368
|
+
sourceType: "auto",
|
|
2369
|
+
ranges: true,
|
|
2370
|
+
// generated code contains phase imports when the experiments are on
|
|
2371
|
+
importPhases: Boolean(
|
|
2372
|
+
experiments.deferImport || experiments.sourceImport
|
|
2373
|
+
)
|
|
2374
|
+
},
|
|
2375
|
+
JavascriptParser._getModuleParseFunction(compilation, m)
|
|
2376
|
+
);
|
|
2377
|
+
|
|
2378
|
+
const analysis = analyzeScope(ast);
|
|
2379
|
+
|
|
2380
|
+
freeNames = new Set();
|
|
2381
|
+
for (const ref of analysis.unresolvedReferences) {
|
|
2382
|
+
freeNames.add(ref.identifier.name);
|
|
2383
|
+
}
|
|
2384
|
+
this._renderedFreeNamesCache.set(moduleSource, freeNames);
|
|
2385
|
+
}
|
|
2386
|
+
|
|
2387
|
+
for (const name of freeNames) {
|
|
2388
|
+
nonInlinedModuleThroughIdentifiers.add(name);
|
|
2389
|
+
}
|
|
2390
|
+
}
|
|
2391
|
+
|
|
2392
|
+
/**
|
|
2393
|
+
* @param {Module} module the inlined entry
|
|
2394
|
+
* @param {Source} moduleSource its rendered source
|
|
2395
|
+
* @returns {Info} scope information for renaming
|
|
2396
|
+
*/
|
|
2397
|
+
const getModuleInfo = (module, moduleSource) => {
|
|
2186
2398
|
const code = /** @type {string} */ (moduleSource.source());
|
|
2187
2399
|
|
|
2188
2400
|
const { experiments } = compilation.options;
|
|
@@ -2196,37 +2408,71 @@ class JavascriptModulesPlugin {
|
|
|
2196
2408
|
experiments.deferImport || experiments.sourceImport
|
|
2197
2409
|
)
|
|
2198
2410
|
},
|
|
2199
|
-
JavascriptParser._getModuleParseFunction(compilation,
|
|
2411
|
+
JavascriptParser._getModuleParseFunction(compilation, module)
|
|
2200
2412
|
);
|
|
2201
2413
|
|
|
2202
2414
|
const analysis = analyzeScope(ast);
|
|
2203
2415
|
|
|
2204
|
-
|
|
2205
|
-
|
|
2416
|
+
const moduleScope = analysis.moduleScope;
|
|
2417
|
+
return {
|
|
2418
|
+
source: moduleSource,
|
|
2419
|
+
shorthandIdentifierStarts: analysis.shorthandIdentifierStarts,
|
|
2420
|
+
module,
|
|
2421
|
+
variables: new Set(moduleScope.variables),
|
|
2422
|
+
through: new Set(analysis.unresolvedReferences),
|
|
2423
|
+
usedInNonInlined: new Set(),
|
|
2424
|
+
moduleScope
|
|
2425
|
+
};
|
|
2426
|
+
};
|
|
2427
|
+
|
|
2428
|
+
/**
|
|
2429
|
+
* @param {Info} info scope information for the entry
|
|
2430
|
+
* @param {Set<string>} usedNames names unavailable to its declarations
|
|
2431
|
+
* @returns {void}
|
|
2432
|
+
*/
|
|
2433
|
+
const renameModule = (info, usedNames) => {
|
|
2434
|
+
const source = new ReplaceSource(info.source);
|
|
2435
|
+
/** @type {Map<string, string>} */
|
|
2436
|
+
const renamed = new Map();
|
|
2437
|
+
for (const variable of info.variables) {
|
|
2438
|
+
renameInlinedModuleVariable(
|
|
2439
|
+
source,
|
|
2440
|
+
info.shorthandIdentifierStarts,
|
|
2441
|
+
variable,
|
|
2442
|
+
info.module.identifier(),
|
|
2443
|
+
info.module.readableIdentifier(runtimeTemplate.requestShortener),
|
|
2444
|
+
usedNames,
|
|
2445
|
+
renamed
|
|
2446
|
+
);
|
|
2206
2447
|
}
|
|
2207
|
-
|
|
2448
|
+
renamedInlinedModules.set(info.module, source);
|
|
2449
|
+
if (renamed.size > 0) renamedDeclarations.set(info.module, renamed);
|
|
2450
|
+
};
|
|
2208
2451
|
|
|
2209
|
-
//
|
|
2210
|
-
//
|
|
2211
|
-
// collides with a free name of any other module, another entry's
|
|
2212
|
-
// declarations, or a reserved name, no renaming is needed and the entries
|
|
2213
|
-
// don't have to be parsed at all.
|
|
2452
|
+
// Codegen reports declarations and free names; only entries whose names
|
|
2453
|
+
// collide need parsing to locate their declarations and references.
|
|
2214
2454
|
fastPath: {
|
|
2215
|
-
const { codeGenerationResults, chunk } = renderContext;
|
|
2216
2455
|
/** @type {Set<string>} */
|
|
2217
2456
|
const usedNames = new Set(nonInlinedModuleThroughIdentifiers);
|
|
2218
2457
|
for (const name of RESERVED_NAMES) usedNames.add(name);
|
|
2219
|
-
/** @type {Set<string
|
|
2220
|
-
const
|
|
2221
|
-
|
|
2458
|
+
/** @type {Map<Module, Set<string>>} */
|
|
2459
|
+
const declarationsByModule = new Map();
|
|
2460
|
+
let canRenameSelectively = isMultipleEntries;
|
|
2461
|
+
for (const [m, moduleSource] of inlinedModuleSources) {
|
|
2222
2462
|
if (!codeGenerationResults.has(m, chunk.runtime)) break fastPath;
|
|
2223
2463
|
const result = codeGenerationResults.get(m, chunk.runtime);
|
|
2224
2464
|
const data = result.data;
|
|
2225
2465
|
if (!data) break fastPath;
|
|
2226
2466
|
const declarations = data.get("topLevelDeclarations");
|
|
2227
2467
|
if (!declarations) break fastPath;
|
|
2228
|
-
|
|
2468
|
+
declarationsByModule.set(m, declarations);
|
|
2229
2469
|
if (!isMultipleEntries) continue;
|
|
2470
|
+
// Mixing cached names with fresh scope analysis requires unchanged
|
|
2471
|
+
// sources and the same parser that produced the cached names.
|
|
2472
|
+
canRenameSelectively =
|
|
2473
|
+
canRenameSelectively &&
|
|
2474
|
+
result.sources.get(JAVASCRIPT_TYPE) === moduleSource &&
|
|
2475
|
+
!JavascriptParser._getModuleParseFunction(compilation, m);
|
|
2230
2476
|
// Entries share the startup scope: an entry's free names and runtime
|
|
2231
2477
|
// globals must not be shadowed by another entry's declarations.
|
|
2232
2478
|
const freeNames = data.get("freeNames");
|
|
@@ -2239,49 +2485,26 @@ class JavascriptModulesPlugin {
|
|
|
2239
2485
|
}
|
|
2240
2486
|
}
|
|
2241
2487
|
}
|
|
2242
|
-
for (const declarations of
|
|
2243
|
-
|
|
2244
|
-
|
|
2488
|
+
for (const [m, declarations] of declarationsByModule) {
|
|
2489
|
+
const moduleSource = /** @type {Source} */ (
|
|
2490
|
+
inlinedModuleSources.get(m)
|
|
2491
|
+
);
|
|
2492
|
+
if (someInIterable(declarations, (name) => usedNames.has(name))) {
|
|
2493
|
+
if (!canRenameSelectively) break fastPath;
|
|
2494
|
+
renameModule(getModuleInfo(m, moduleSource), usedNames);
|
|
2495
|
+
} else {
|
|
2496
|
+
for (const name of declarations) usedNames.add(name);
|
|
2497
|
+
renamedInlinedModules.set(m, moduleSource);
|
|
2245
2498
|
}
|
|
2246
|
-
// earlier entries' declarations join the used set so later entries
|
|
2247
|
-
// are checked against them
|
|
2248
|
-
for (const name of declarations) usedNames.add(name);
|
|
2249
2499
|
}
|
|
2250
|
-
|
|
2251
|
-
renamedInlinedModules
|
|
2252
|
-
|
|
2253
|
-
|
|
2500
|
+
return {
|
|
2501
|
+
sources: renamedInlinedModules,
|
|
2502
|
+
renamedDeclarations
|
|
2503
|
+
};
|
|
2254
2504
|
}
|
|
2255
2505
|
|
|
2256
2506
|
for (const [m, moduleSource] of inlinedModuleSources) {
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
const { experiments } = compilation.options;
|
|
2260
|
-
const { ast } = JavascriptParser._parse(
|
|
2261
|
-
code,
|
|
2262
|
-
{
|
|
2263
|
-
sourceType: "auto",
|
|
2264
|
-
ranges: true,
|
|
2265
|
-
// generated code contains phase imports when the experiments are on
|
|
2266
|
-
importPhases: Boolean(
|
|
2267
|
-
experiments.deferImport || experiments.sourceImport
|
|
2268
|
-
)
|
|
2269
|
-
},
|
|
2270
|
-
JavascriptParser._getModuleParseFunction(compilation, m)
|
|
2271
|
-
);
|
|
2272
|
-
|
|
2273
|
-
const analysis = analyzeScope(ast);
|
|
2274
|
-
|
|
2275
|
-
const moduleScope = analysis.moduleScope;
|
|
2276
|
-
inlinedModulesToInfo.set(m, {
|
|
2277
|
-
source: moduleSource,
|
|
2278
|
-
ast,
|
|
2279
|
-
module: m,
|
|
2280
|
-
variables: new Set(moduleScope.variables),
|
|
2281
|
-
through: new Set(analysis.unresolvedReferences),
|
|
2282
|
-
usedInNonInlined: new Set(),
|
|
2283
|
-
moduleScope
|
|
2284
|
-
});
|
|
2507
|
+
inlinedModulesToInfo.set(m, getModuleInfo(m, moduleSource));
|
|
2285
2508
|
}
|
|
2286
2509
|
|
|
2287
2510
|
for (const [, { variables, usedInNonInlined }] of inlinedModulesToInfo) {
|
|
@@ -2295,11 +2518,9 @@ class JavascriptModulesPlugin {
|
|
|
2295
2518
|
}
|
|
2296
2519
|
}
|
|
2297
2520
|
|
|
2298
|
-
//
|
|
2299
|
-
//
|
|
2300
|
-
//
|
|
2301
|
-
// reference, or with a reserved name, so the modules can be emitted without a
|
|
2302
|
-
// per-entry IIFE.
|
|
2521
|
+
// Several inlined entries share the chunk's startup scope, so any top-level
|
|
2522
|
+
// declaration colliding with another's declaration, any module's free
|
|
2523
|
+
// reference or a reserved name is renamed, sparing them a per-entry IIFE.
|
|
2303
2524
|
if (isMultipleEntries) {
|
|
2304
2525
|
/** @type {Set<string>} */
|
|
2305
2526
|
const allUsedNames = new Set(nonInlinedModuleThroughIdentifiers);
|
|
@@ -2307,56 +2528,37 @@ class JavascriptModulesPlugin {
|
|
|
2307
2528
|
for (const { through } of inlinedModulesToInfo.values()) {
|
|
2308
2529
|
for (const ref of through) allUsedNames.add(ref.identifier.name);
|
|
2309
2530
|
}
|
|
2310
|
-
for (const
|
|
2311
|
-
|
|
2312
|
-
const source = new ReplaceSource(_source);
|
|
2313
|
-
for (const variable of moduleInfo.variables) {
|
|
2314
|
-
renameInlinedModuleVariable(
|
|
2315
|
-
source,
|
|
2316
|
-
ast,
|
|
2317
|
-
variable,
|
|
2318
|
-
moduleInfo.module.identifier(),
|
|
2319
|
-
m.readableIdentifier(runtimeTemplate.requestShortener),
|
|
2320
|
-
allUsedNames
|
|
2321
|
-
);
|
|
2322
|
-
}
|
|
2323
|
-
renamedInlinedModules.set(m, source);
|
|
2531
|
+
for (const moduleInfo of inlinedModulesToInfo.values()) {
|
|
2532
|
+
renameModule(moduleInfo, allUsedNames);
|
|
2324
2533
|
}
|
|
2325
|
-
return
|
|
2534
|
+
return {
|
|
2535
|
+
sources: renamedInlinedModules,
|
|
2536
|
+
renamedDeclarations
|
|
2537
|
+
};
|
|
2326
2538
|
}
|
|
2327
2539
|
|
|
2328
2540
|
for (const [m, moduleInfo] of inlinedModulesToInfo) {
|
|
2329
|
-
const {
|
|
2330
|
-
const source = new ReplaceSource(_source);
|
|
2541
|
+
const { usedInNonInlined } = moduleInfo;
|
|
2331
2542
|
if (usedInNonInlined.size === 0) {
|
|
2332
|
-
renamedInlinedModules.set(m, source);
|
|
2543
|
+
renamedInlinedModules.set(m, new ReplaceSource(moduleInfo.source));
|
|
2333
2544
|
continue;
|
|
2334
2545
|
}
|
|
2335
2546
|
|
|
2336
|
-
const info = /** @type {Info} */ (inlinedModulesToInfo.get(m));
|
|
2337
2547
|
const allUsedNames = new Set(
|
|
2338
|
-
Array.from(
|
|
2548
|
+
Array.from(moduleInfo.through, (v) => v.identifier.name)
|
|
2339
2549
|
);
|
|
2340
2550
|
|
|
2341
2551
|
for (const variable of usedInNonInlined) {
|
|
2342
2552
|
allUsedNames.add(variable.name);
|
|
2343
2553
|
}
|
|
2344
2554
|
|
|
2345
|
-
|
|
2346
|
-
renameInlinedModuleVariable(
|
|
2347
|
-
source,
|
|
2348
|
-
ast,
|
|
2349
|
-
variable,
|
|
2350
|
-
info.module.identifier(),
|
|
2351
|
-
m.readableIdentifier(runtimeTemplate.requestShortener),
|
|
2352
|
-
allUsedNames
|
|
2353
|
-
);
|
|
2354
|
-
}
|
|
2355
|
-
|
|
2356
|
-
renamedInlinedModules.set(m, source);
|
|
2555
|
+
renameModule(moduleInfo, allUsedNames);
|
|
2357
2556
|
}
|
|
2358
2557
|
|
|
2359
|
-
return
|
|
2558
|
+
return {
|
|
2559
|
+
sources: renamedInlinedModules,
|
|
2560
|
+
renamedDeclarations
|
|
2561
|
+
};
|
|
2360
2562
|
}
|
|
2361
2563
|
}
|
|
2362
2564
|
|