webpack 5.111.1 → 5.112.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/webpack.js +13 -7
- package/lib/Chunk.js +3 -966
- package/lib/Compilation.js +373 -163
- package/lib/Compiler.js +31 -44
- package/lib/Dependency.js +3 -551
- package/lib/DependencyTemplate.js +3 -70
- package/lib/EntryPlugin.js +3 -68
- package/lib/Entrypoint.js +3 -121
- package/lib/ExternalsPlugin.js +3 -92
- package/lib/FileSystemInfo.js +3 -4629
- package/lib/InitFragment.js +3 -204
- package/lib/LibraryTemplatePlugin.js +3 -46
- package/lib/ModuleFilenameHelpers.js +3 -400
- package/lib/ModuleNotFoundError.js +2 -2
- package/lib/MultiCompiler.js +37 -8
- package/lib/NormalModule.js +3 -2242
- package/lib/NullFactory.js +3 -22
- package/lib/ProgressPlugin.js +3 -908
- package/lib/RawModule.js +3 -197
- package/lib/RequestShortener.js +3 -37
- package/lib/SingleEntryPlugin.js +1 -1
- package/lib/WebpackError.js +2 -2
- package/lib/asset/AssetBytesGenerator.js +21 -13
- package/lib/asset/AssetBytesParser.js +12 -10
- package/lib/asset/AssetGenerator.js +71 -69
- package/lib/asset/AssetModule.js +13 -2
- package/lib/asset/AssetModulesPlugin.js +10 -12
- package/lib/asset/AssetParser.js +10 -10
- package/lib/asset/AssetSourceGenerator.js +23 -15
- package/lib/asset/AssetSourceParser.js +12 -10
- package/lib/asset/RawDataUrlModule.js +17 -10
- package/lib/asset/WebManifestGenerator.js +17 -12
- package/lib/asset/WebManifestParser.js +8 -8
- package/lib/async-modules/AsyncModuleHelpers.js +12 -5
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +9 -3
- package/lib/async-modules/isGeneratorLowered.js +3 -3
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
- package/lib/{Cache.js → cache/Cache.js} +1 -1
- package/lib/{CacheFacade.js → cache/CacheFacade.js} +6 -6
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +2 -2
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -2
- package/lib/cache/PackFileCacheStrategy.js +13 -19
- package/lib/cache/ResolverCachePlugin.js +65 -11
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
- package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
- package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +209 -212
- package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
- package/lib/config/browserslistTargetHandler.js +1 -1
- package/lib/{cli.js → config/cli.js} +14 -164
- package/lib/config/defaults.js +166 -59
- package/lib/config/getClaimedAssetTypes.js +22 -14
- package/lib/config/normalization.js +18 -7
- package/lib/config/target.js +11 -1
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +13 -11
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerExposedDependency.js +1 -1
- package/lib/container/ContainerPlugin.js +178 -5
- package/lib/container/ContainerReferencePlugin.js +75 -14
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackItemDependency.js +1 -1
- package/lib/container/FallbackModule.js +12 -10
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +10 -11
- package/lib/container/ModuleFederationPlugin.js +306 -7
- package/lib/container/RemoteModule.js +14 -10
- package/lib/container/RemoteRuntimeModule.js +5 -5
- package/lib/container/RemoteToExternalDependency.js +1 -1
- package/lib/container/moduleFederationHooks.js +1 -1
- package/lib/context/ContextModule.js +37 -26
- package/lib/context/ContextModuleFactory.js +14 -11
- package/lib/context/ContextReplacementPlugin.js +6 -12
- package/lib/css/CssGenerator.js +78 -68
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
- package/lib/css/CssLoadingRuntimeModule.js +77 -44
- package/lib/css/CssModule.js +37 -29
- package/lib/css/CssModulesPlugin.js +129 -45
- package/lib/css/CssParser.js +714 -322
- package/lib/css/CssServerStylesRuntimeModule.js +3 -3
- package/lib/{util → css}/conventions.js +1 -1
- package/lib/css/cssMinify.js +110 -37
- package/lib/css/data.js +6990 -5125
- package/lib/css/syntax-parser.js +20734 -0
- package/lib/css/syntax-printer.js +6092 -0
- package/lib/css/syntax.js +37 -18686
- package/lib/debug/ProfilingPlugin.js +106 -51
- package/lib/{DefinePlugin.js → define/DefinePlugin.js} +416 -55
- package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +19 -15
- package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +6 -4
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/ConstDependency.js +3 -120
- package/lib/dependencies/ContextElementDependency.js +5 -172
- package/lib/dependencies/NullDependency.js +3 -37
- package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
- package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -11
- package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
- package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
- package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
- package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
- package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +14 -11
- package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
- package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
- package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
- package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
- package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
- package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
- package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
- package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
- package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
- package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +166 -36
- package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
- package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +154 -92
- package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
- package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +36 -33
- package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +17 -16
- package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +48 -39
- package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
- package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
- package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +17 -16
- package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
- package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
- package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +9 -6
- package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
- package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
- package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
- package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
- package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
- package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
- package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
- package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
- package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
- package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
- package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
- package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
- package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +31 -9
- package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
- package/lib/dependencies/context/ContextElementDependency.js +198 -0
- package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +10 -11
- package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
- package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +7 -10
- package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +17 -19
- package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
- package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
- package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
- package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +21 -17
- package/lib/dependencies/core/ConstDependency.js +131 -0
- package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
- package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
- package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
- package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
- package/lib/dependencies/core/NullDependency.js +44 -0
- package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
- package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
- package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +375 -99
- package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +24 -19
- package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
- package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
- package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +25 -22
- package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
- package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
- package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
- package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +29 -21
- package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +20 -20
- package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
- package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
- package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
- package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
- package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
- package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +146 -133
- package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
- package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +78 -37
- package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -12
- package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
- package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +86 -68
- package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +104 -100
- package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +36 -51
- package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
- package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +98 -60
- package/lib/dependencies/esm/ESMLiveExportDependency.js +311 -0
- package/lib/dependencies/esm/ESMLiveExportParserPlugin.js +862 -0
- package/lib/dependencies/esm/ESMModulesPlugin.js +205 -0
- package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
- package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -18
- package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +5 -7
- package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
- package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
- package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
- package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +52 -151
- package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -15
- package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -23
- package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -18
- package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
- package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
- package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
- package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
- package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +22 -25
- package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
- package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
- package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
- package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +122 -103
- package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
- package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
- package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
- package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
- package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +28 -20
- package/lib/{url → dependencies/url}/URLParserPlugin.js +17 -19
- package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
- package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
- package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
- package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
- package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +82 -53
- package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
- package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
- package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
- package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
- package/lib/devtool/ModuleFilenameHelpers.js +413 -0
- package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
- package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +155 -27
- package/lib/{util → devtool}/generateDebugId.js +1 -1
- package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
- package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
- package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
- package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
- package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
- package/lib/dll/DelegatedModule.js +23 -21
- package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
- package/lib/dll/DelegatedPlugin.js +1 -1
- package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
- package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
- package/lib/dll/DllEntryPlugin.js +3 -3
- package/lib/dll/DllModule.js +14 -10
- package/lib/dll/DllModuleFactory.js +3 -3
- package/lib/dll/DllPlugin.js +18 -6
- package/lib/dll/DllReferencePlugin.js +103 -30
- package/lib/dll/LibManifestPlugin.js +9 -7
- package/lib/electron/ElectronTargetPlugin.js +2 -2
- package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
- package/lib/{dependencies → entry}/EntryDependency.js +11 -2
- package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
- package/lib/entry/EntryPlugin.js +75 -0
- package/lib/errors/AbstractMethodError.js +1 -1
- package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
- package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
- package/lib/errors/DeprecatedOptionWarning.js +30 -0
- package/lib/errors/DllManifestError.js +26 -0
- package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
- package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
- package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/{ErrorHelpers.js → errors/ErrorHelpers.js} +9 -6
- package/lib/errors/ExternalStarReexportError.js +2 -2
- package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
- package/lib/errors/HookWebpackError.js +6 -5
- package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/JSONParseError.js +4 -4
- package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
- package/lib/errors/ModuleBuildError.js +1 -1
- package/lib/errors/ModuleDependencyError.js +2 -2
- package/lib/errors/ModuleDependencyWarning.js +2 -2
- package/lib/errors/ModuleError.js +1 -1
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +3 -3
- package/lib/errors/ModuleParseError.js +1 -1
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/ModuleWarning.js +1 -1
- package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
- package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
- package/lib/errors/NodeStuffInWebError.js +7 -2
- package/lib/errors/PathVariableError.js +31 -0
- package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
- package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
- package/lib/errors/RuntimeModuleGenerationError.js +51 -0
- package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
- package/lib/errors/SystemImportDeprecationWarning.js +43 -0
- package/lib/errors/UnmergeableEntryExportsError.js +34 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
- package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
- package/lib/errors/WebpackError.js +13 -3
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +55 -20
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
- package/lib/{ExternalModule.js → externals/ExternalModule.js} +90 -63
- package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +42 -41
- package/lib/externals/ExternalsPlugin.js +99 -0
- package/lib/fs/FileSystemInfo.js +4642 -0
- package/lib/{util → fs}/fs.js +22 -9
- package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
- package/lib/graph/Chunk.js +985 -0
- package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +192 -80
- package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
- package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
- package/lib/graph/Dependency.js +634 -0
- package/lib/graph/Entrypoint.js +136 -0
- package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +131 -83
- package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
- package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +44 -33
- package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
- package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +169 -76
- package/lib/{util → graph}/findGraphRoots.js +15 -9
- package/lib/graph/isDependencyKind.js +23 -0
- package/lib/hmr/HotModuleReplacement.runtime.js +12 -11
- package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +51 -57
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +25 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
- package/lib/hmr/LazyCompilationPlugin.js +32 -28
- package/lib/html/HtmlGenerator.js +132 -60
- package/lib/html/HtmlModule.js +16 -2
- package/lib/html/HtmlModulesPlugin.js +184 -87
- package/lib/html/HtmlParser.js +511 -160
- package/lib/html/builtinEmbeddedRenderer.js +70 -25
- package/lib/html/data.js +44 -22
- package/lib/html/htmlMinify.js +114 -41
- package/lib/html/syntax-parser.js +15795 -0
- package/lib/html/syntax-printer.js +1033 -0
- package/lib/html/syntax.js +37 -13952
- package/lib/html/xmlMinify.js +70 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +32 -5
- package/lib/ids/IdHelpers.js +4 -4
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
- package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
- package/lib/ids/SyncModuleIdsPlugin.js +3 -3
- package/lib/{util → ids}/numberHash.js +1 -1
- package/lib/index.js +312 -105
- package/lib/{APIPlugin.js → javascript/APIPlugin.js} +31 -37
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
- package/lib/javascript/BasicEvaluatedExpression.js +9 -9
- package/lib/javascript/ChunkHelpers.js +64 -4
- package/lib/javascript/CommonJsChunkFormatPlugin.js +5 -13
- package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
- package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +75 -8
- package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
- package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
- package/lib/javascript/JavascriptGenerator.js +32 -27
- package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +8 -20
- package/lib/javascript/JavascriptModule.js +14 -3
- package/lib/javascript/JavascriptModulesPlugin.js +441 -214
- package/lib/javascript/JavascriptParser.js +318 -144
- package/lib/javascript/JavascriptParserHelpers.js +1 -1
- package/lib/javascript/MergedEntryExports.js +196 -0
- package/lib/javascript/ScopeAnalyzer.js +3924 -13
- package/lib/javascript/StartupHelpers.js +6 -6
- package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +13 -19
- package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
- package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
- package/lib/javascript/data.js +533 -122
- package/lib/javascript/jsMinify.js +272 -0
- package/lib/javascript/regexp.js +67 -32
- package/lib/javascript/syntax-parser.js +19169 -0
- package/lib/javascript/syntax-printer-data.js +1099 -0
- package/lib/javascript/syntax-printer.js +53878 -0
- package/lib/javascript/syntax.js +20 -11274
- package/lib/json/JsonData.js +1 -1
- package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
- package/lib/json/JsonGenerator.js +24 -16
- package/lib/json/JsonModule.js +13 -2
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +11 -10
- package/lib/json/jsonMinify.js +69 -0
- package/lib/library/AbstractLibraryPlugin.js +28 -15
- package/lib/library/AmdLibraryPlugin.js +4 -4
- package/lib/library/AssignLibraryPlugin.js +28 -12
- package/lib/library/EnableLibraryPlugin.js +1 -1
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
- package/lib/library/JsonpLibraryPlugin.js +2 -2
- package/lib/library/LibraryTemplatePlugin.js +53 -0
- package/lib/library/ModuleLibraryPlugin.js +557 -187
- package/lib/library/SystemLibraryPlugin.js +6 -8
- package/lib/library/UmdLibraryPlugin.js +3 -4
- package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
- package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
- package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
- package/lib/{dependencies → loaders}/LoaderPlugin.js +2 -2
- package/lib/loaders/LoaderRunner.js +94 -46
- package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
- package/lib/loaders/loadLoader.js +16 -10
- package/lib/logging/Logger.js +7 -9
- package/lib/logging/ProgressPlugin.js +957 -0
- package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
- package/lib/{Generator.js → module/Generator.js} +33 -23
- package/lib/{Module.js → module/Module.js} +121 -53
- package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
- package/lib/module/NormalModule.js +2350 -0
- package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +64 -71
- package/lib/module/NullFactory.js +29 -0
- package/lib/{Parser.js → module/Parser.js} +12 -5
- package/lib/module/RawModule.js +208 -0
- package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
- package/lib/{util → module}/extractSourceMap.js +71 -20
- package/lib/{util → module}/findCaseMismatch.js +4 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
- package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
- package/lib/{dependencies → node}/ExternalModuleInitFragment.js +7 -6
- package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
- package/lib/node/NodeEnvironmentPlugin.js +11 -1
- package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
- package/lib/node/NodeTargetPlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +58 -6
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +9 -11
- package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/nodeConsole.js +6 -7
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
- package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +14 -14
- package/lib/optimize/ConcatenatedModule.js +231 -220
- package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
- package/lib/optimize/ConstExportsPlugin.js +7 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
- package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +23 -28
- package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +44 -19
- package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
- package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
- package/lib/optimize/InlineExports.js +12 -7
- package/lib/optimize/InnerGraph.js +5 -13
- package/lib/optimize/InnerGraphPlugin.js +10 -10
- package/lib/optimize/LazyBarrels.js +620 -0
- package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
- package/lib/optimize/LimitChunkCountPlugin.js +16 -7
- package/lib/optimize/MangleExportsPlugin.js +5 -5
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
- package/lib/optimize/MinChunkSizePlugin.js +9 -6
- package/lib/optimize/ModuleConcatenationPlugin.js +28 -22
- package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
- package/lib/optimize/RealContentHashPlugin.js +18 -13
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/SideEffectsFlagPlugin.js +24 -38
- package/lib/optimize/SplitChunksPlugin.js +719 -174
- package/lib/{util → optimize}/TupleQueue.js +9 -9
- package/lib/optimize/chunkSetIntersections.js +437 -0
- package/lib/{util → optimize}/deterministicGrouping.js +17 -17
- package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
- package/lib/{CleanPlugin.js → output/CleanPlugin.js} +69 -25
- package/lib/{CopyPlugin.js → output/CopyPlugin.js} +144 -70
- package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
- package/lib/output/SSRManifestPlugin.js +349 -0
- package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
- package/lib/performance/BroadContextsPlugin.js +4 -4
- package/lib/performance/CacheEffectivenessPlugin.js +2 -3
- package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
- package/lib/performance/DuplicateModulesPlugin.js +3 -4
- package/lib/performance/DuplicatePackagesPlugin.js +3 -3
- package/lib/performance/DynamicExportsPlugin.js +2 -2
- package/lib/performance/EvalUsagePlugin.js +4 -6
- package/lib/performance/HotspotsPlugin.js +39 -14
- package/lib/performance/LargeModulesPlugin.js +2 -3
- package/lib/performance/LegacyJavascriptPlugin.js +1 -2
- package/lib/performance/MissingSideEffectsPlugin.js +2 -3
- package/lib/performance/MissingSourceMapsPlugin.js +5 -6
- package/lib/performance/PureAnnotationsPlugin.js +19 -13
- package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +11 -12
- package/lib/performance/TopLevelThisPlugin.js +22 -13
- package/lib/performance/UnsplitVendorsPlugin.js +1 -2
- package/lib/performance/UnusedAliasesPlugin.js +6 -7
- package/lib/performance/UnusedAssetsPlugin.js +5 -5
- package/lib/performance/UnusedDefinesPlugin.js +2 -2
- package/lib/performance/UnusedExternalsPlugin.js +3 -4
- package/lib/performance/UnusedFederationPlugin.js +2 -4
- package/lib/performance/UnusedModulesPlugin.js +5 -4
- package/lib/performance/getModuleSize.js +1 -1
- package/lib/performance/hasOnlyUnusedExports.js +4 -4
- package/lib/performance/isOnlyReexported.js +7 -6
- package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
- package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
- package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +66 -45
- package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
- package/lib/prefetch/parseResourceHintOptions.js +4 -3
- package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
- package/lib/{dependencies → provide}/ProvidedDependency.js +50 -17
- package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
- package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
- package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
- package/lib/resolve/getResolveOptionsKey.js +59 -0
- package/lib/rules/BasicEffectRulePlugin.js +1 -1
- package/lib/rules/RuleSetCompiler.js +42 -51
- package/lib/rules/UseEffectRulePlugin.js +1 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
- package/lib/runtime/AsyncModuleRuntimeModule.js +14 -5
- package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
- package/lib/runtime/BaseUriRuntimeModule.js +3 -3
- package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +4 -4
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
- package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
- package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +7 -11
- package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
- package/lib/runtime/GlobalRuntimeModule.js +3 -3
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
- package/lib/runtime/HelperRuntimeModule.js +16 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +80 -17
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/NonceRuntimeModule.js +2 -2
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
- package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +24 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
- package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
- package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +50 -50
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
- package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
- package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
- package/lib/runtime/SystemContextRuntimeModule.js +2 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
- package/lib/runtime/WorkerRuntimeModule.js +1 -1
- package/lib/runtime/baseUri.js +1 -1
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +68 -13
- package/lib/schemes/VirtualUrlPlugin.js +52 -16
- package/lib/serialization/AggregateErrorSerializer.js +4 -4
- package/lib/serialization/BinaryMiddleware.js +4 -1
- package/lib/serialization/ErrorObjectSerializer.js +2 -5
- package/lib/serialization/FileMiddleware.js +3 -3
- package/lib/serialization/ObjectMiddleware.js +62 -29
- package/lib/serialization/PlainObjectSerializer.js +3 -7
- package/lib/serialization/Serializer.js +21 -11
- package/lib/serialization/SerializerMiddleware.js +10 -8
- package/lib/serialization/SingleItemMiddleware.js +4 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
- package/lib/sharing/ConsumeSharedModule.js +18 -14
- package/lib/sharing/ConsumeSharedPlugin.js +148 -42
- package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
- package/lib/sharing/ProvideForSharedDependency.js +9 -1
- package/lib/sharing/ProvideSharedDependency.js +1 -1
- package/lib/sharing/ProvideSharedModule.js +11 -9
- package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
- package/lib/sharing/ProvideSharedPlugin.js +111 -20
- package/lib/sharing/SharePlugin.js +102 -9
- package/lib/sharing/ShareRuntimeModule.js +6 -6
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/{util → sharing}/semver.js +14 -16
- package/lib/sharing/utils.js +59 -2
- package/lib/stats/DefaultStatsFactoryPlugin.js +57 -54
- package/lib/stats/DefaultStatsPresetPlugin.js +3 -7
- package/lib/stats/DefaultStatsPrinterPlugin.js +15 -14
- package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
- package/lib/{Stats.js → stats/Stats.js} +4 -4
- package/lib/stats/StatsFactory.js +208 -37
- package/lib/stats/StatsPrinter.js +126 -13
- package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
- package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
- package/lib/template/DependencyTemplate.js +77 -0
- package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
- package/lib/template/InitFragment.js +223 -0
- package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
- package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
- package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
- package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +158 -95
- package/lib/{Template.js → template/Template.js} +14 -12
- package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
- package/lib/typescript/TypeScriptPlugin.js +3 -3
- package/lib/util/RequestShortener.js +44 -0
- package/lib/util/SortableSet.js +87 -22
- package/lib/util/SourceProcessor.js +439 -51
- package/lib/util/TupleSet.js +27 -27
- package/lib/util/WeakTupleMap.js +20 -16
- package/lib/util/buildDiagnostics.js +2 -2
- package/lib/util/cleverMerge.js +61 -33
- package/lib/util/comparators.js +19 -15
- package/lib/util/concatenate.js +28 -147
- package/lib/util/createMappings.js +111 -0
- package/lib/util/dataURL.js +96 -15
- package/lib/util/deprecation.js +5 -4
- package/lib/util/extractComments.js +118 -0
- package/lib/util/formatLocation.js +1 -1
- package/lib/util/globUtils.js +198 -20
- package/lib/util/haltVisitors.js +51 -0
- package/lib/util/handlerKeys.js +2 -2
- package/lib/util/identifier.js +117 -1
- package/lib/util/implicitTypeLoaderFallback.js +6 -4
- package/lib/util/internalSerializables.js +296 -102
- package/lib/util/magicComment.js +12 -7
- package/lib/util/makeSerializable.js +28 -7
- package/lib/util/memoize.js +1 -1
- package/lib/util/parseJson.js +2 -2
- package/lib/util/preloadModuleType.js +5 -2
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/removeBOM.js +1 -1
- package/lib/util/runtime.js +1 -1
- package/lib/util/serialization.js +35 -28
- package/lib/util/source.js +2 -2
- package/lib/util/terminalColors.js +161 -0
- package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmModule.js +19 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +17 -9
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +24 -15
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +14 -12
- package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
- package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +11 -13
- package/lib/wasm/wasmModuleFilename.js +2 -2
- package/lib/wasm-sync/SyncWasmModule.js +18 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +22 -16
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +28 -21
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
- package/lib/wasm-sync/WebAssemblyParser.js +15 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
- package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
- package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
- package/lib/{Watching.js → watch/Watching.js} +8 -8
- package/lib/web/FetchCompileAsyncWasmPlugin.js +12 -18
- package/lib/web/FetchCompileWasmPlugin.js +8 -10
- package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
- package/lib/web/JsonpTemplatePlugin.js +1 -1
- package/lib/webpack.js +27 -17
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
- package/package.json +57 -36
- package/schemas/WebpackOptions.check.js +4 -3
- package/schemas/WebpackOptions.d.json.ts +2 -0
- package/schemas/WebpackOptions.json +295 -75
- package/schemas/plugins/BannerPlugin.check.js +4 -3
- package/schemas/plugins/BannerPlugin.json +29 -2
- package/schemas/plugins/HtmlGeneratorOptions.check.js +4 -3
- package/schemas/plugins/HtmlParserOptions.check.js +4 -3
- package/schemas/plugins/IgnorePlugin.check.js +4 -3
- package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +4 -3
- package/schemas/plugins/ManifestPlugin.check.js +4 -3
- package/schemas/plugins/ManifestPlugin.json +3 -3
- package/schemas/plugins/ProgressPlugin.check.js +4 -3
- package/schemas/plugins/ProgressPlugin.json +2 -7
- package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
- package/schemas/plugins/SSRManifestPlugin.json +20 -0
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +4 -3
- package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
- package/schemas/plugins/WatchIgnorePlugin.check.js +4 -3
- package/schemas/plugins/WatchIgnorePlugin.json +12 -3
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetParserOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +4 -3
- package/schemas/plugins/container/ContainerPlugin.check.js +4 -3
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +4 -3
- package/schemas/plugins/container/ExternalsType.check.js +4 -3
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +4 -3
- package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +4 -3
- package/schemas/plugins/css/CssGeneratorOptions.check.js +4 -3
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +4 -3
- package/schemas/plugins/css/CssModuleParserOptions.check.js +4 -3
- package/schemas/plugins/css/CssParserOptions.check.js +4 -3
- package/schemas/plugins/debug/ProfilingPlugin.check.js +4 -3
- package/schemas/plugins/define/DotenvPluginOptions.check.js +7 -0
- package/schemas/plugins/define/DotenvPluginOptions.json +3 -0
- package/schemas/plugins/dll/DllPlugin.check.js +4 -3
- package/schemas/plugins/dll/DllReferencePlugin.check.js +4 -3
- package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +4 -3
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +4 -3
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +4 -3
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +4 -3
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +4 -3
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +4 -3
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +4 -3
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +4 -3
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +4 -3
- package/schemas/plugins/output/CleanOptions.check.js +7 -0
- package/schemas/plugins/output/CleanOptions.json +3 -0
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +4 -3
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +4 -3
- package/schemas/plugins/sharing/SharePlugin.json +32 -0
- package/types.d.ts +20780 -14174
- package/lib/LazyBarrel.js +0 -388
- package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
- package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
- package/lib/javascript/ChunkFormatHelpers.js +0 -72
- package/lib/javascript/grammar.js +0 -5546
- package/lib/javascript/parser.js +0 -1500
- package/lib/javascript/regexpData.js +0 -51
- package/lib/performance/getSourceModules.js +0 -22
- package/lib/util/Semaphore.js +0 -65
- package/lib/util/objectToMap.js +0 -15
- package/schemas/WebpackOptions.check.d.ts +0 -7
- package/schemas/_container.json +0 -155
- package/schemas/_sharing.json +0 -118
- package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
- package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
- package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
- package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
- /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
- /package/lib/{util → css}/topologicalSort.js +0 -0
- /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
- /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
- /package/lib/{util → fs}/StackedCacheMap.js +0 -0
- /package/lib/{util → javascript}/StackedMap.js +0 -0
- /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
- /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
- /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
- /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
- /package/lib/{util → optimize}/Queue.js +0 -0
- /package/lib/{util → stats}/smartGrouping.js +0 -0
|
@@ -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,42 +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 ModuleGraph from "../ModuleGraph" */
|
|
82
|
-
/** @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" */
|
|
83
88
|
/** @import WebpackError from "../errors/WebpackError" */
|
|
84
89
|
/** @import { Range } from "../javascript/JavascriptParser" */
|
|
85
90
|
/** @import Hash from "../util/Hash" */
|
|
@@ -253,6 +258,8 @@ const printGeneratedCodeForStack = (module, code) => {
|
|
|
253
258
|
* @property {boolean=} inlined inlined
|
|
254
259
|
* @property {boolean=} inlinedInIIFE the inlined entry module is wrapped in an IIFE
|
|
255
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
|
|
256
263
|
*/
|
|
257
264
|
|
|
258
265
|
/**
|
|
@@ -362,20 +369,22 @@ const createCompilationHooks = () => ({
|
|
|
362
369
|
* in `allUsedNames`. Lets inlined modules be emitted without a per-entry/per-chunk
|
|
363
370
|
* IIFE by resolving name collisions instead of isolating each module.
|
|
364
371
|
* @param {InstanceType<typeof import("webpack-sources").ReplaceSource>} source the module source to edit
|
|
365
|
-
* @param {
|
|
372
|
+
* @param {Set<number>} shorthandIdentifierStarts where each shorthand property's identifier starts
|
|
366
373
|
* @param {Variable} variable the top-level variable to check/rename
|
|
367
374
|
* @param {string} moduleIdentifier the module identifier (for scope caching)
|
|
368
375
|
* @param {string} readableIdentifier the readable module identifier (for new names)
|
|
369
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)
|
|
370
378
|
* @returns {void}
|
|
371
379
|
*/
|
|
372
380
|
const renameInlinedModuleVariable = (
|
|
373
381
|
source,
|
|
374
|
-
|
|
382
|
+
shorthandIdentifierStarts,
|
|
375
383
|
variable,
|
|
376
384
|
moduleIdentifier,
|
|
377
385
|
readableIdentifier,
|
|
378
|
-
allUsedNames
|
|
386
|
+
allUsedNames,
|
|
387
|
+
renamedDeclarations
|
|
379
388
|
) => {
|
|
380
389
|
/** @type {UsedNamesInScopeInfo} */
|
|
381
390
|
const usedNamesInScopeInfo = new Map();
|
|
@@ -406,18 +415,12 @@ const renameInlinedModuleVariable = (
|
|
|
406
415
|
readableIdentifier
|
|
407
416
|
);
|
|
408
417
|
allUsedNames.add(newName);
|
|
418
|
+
renamedDeclarations.set(name, newName);
|
|
409
419
|
for (const identifier of allIdentifiers) {
|
|
410
420
|
const r = /** @type {Range} */ (identifier.range);
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
path[1].type === "AssignmentPattern" && path[1].left === path[0]
|
|
415
|
-
? path[2]
|
|
416
|
-
: path[1];
|
|
417
|
-
if (maybeProperty.type === "Property" && maybeProperty.shorthand) {
|
|
418
|
-
source.insert(r[1], `: ${newName}`);
|
|
419
|
-
continue;
|
|
420
|
-
}
|
|
421
|
+
if (shorthandIdentifierStarts.has(r[0])) {
|
|
422
|
+
source.insert(r[1], `: ${newName}`);
|
|
423
|
+
continue;
|
|
421
424
|
}
|
|
422
425
|
source.replace(r[0], r[1] - 1, newName);
|
|
423
426
|
}
|
|
@@ -427,13 +430,28 @@ const renameInlinedModuleVariable = (
|
|
|
427
430
|
|
|
428
431
|
const PLUGIN_NAME = "JavascriptModulesPlugin";
|
|
429
432
|
|
|
430
|
-
|
|
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
|
+
*/
|
|
431
445
|
|
|
432
446
|
class JavascriptModulesPlugin {
|
|
433
447
|
constructor(options = {}) {
|
|
434
448
|
this.options = options;
|
|
435
|
-
/** @type {WeakMap<Source,
|
|
449
|
+
/** @type {WeakMap<Source, ModuleFactoryCacheEntry>} */
|
|
436
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();
|
|
437
455
|
}
|
|
438
456
|
|
|
439
457
|
/**
|
|
@@ -446,6 +464,9 @@ class JavascriptModulesPlugin {
|
|
|
446
464
|
// drop them when the build ends so an idle process retains no parser state
|
|
447
465
|
compiler.hooks.done.tap(PLUGIN_NAME, releaseParserCaches);
|
|
448
466
|
compiler.hooks.failed.tap(PLUGIN_NAME, releaseParserCaches);
|
|
467
|
+
compiler.hooks.afterEmit.tap(PLUGIN_NAME, (compilation) => {
|
|
468
|
+
this._releaseRenderedModuleFactorySources(compilation);
|
|
469
|
+
});
|
|
449
470
|
compiler.hooks.compilation.tap(
|
|
450
471
|
PLUGIN_NAME,
|
|
451
472
|
(compilation, { normalModuleFactory }) => {
|
|
@@ -521,7 +542,7 @@ class JavascriptModulesPlugin {
|
|
|
521
542
|
codeGenerationResults
|
|
522
543
|
} = options;
|
|
523
544
|
|
|
524
|
-
const hotUpdateChunk = chunk
|
|
545
|
+
const hotUpdateChunk = chunk.isHotUpdate() ? chunk : null;
|
|
525
546
|
const filenameTemplate =
|
|
526
547
|
JavascriptModulesPlugin.getChunkFilenameTemplate(
|
|
527
548
|
chunk,
|
|
@@ -690,16 +711,93 @@ class JavascriptModulesPlugin {
|
|
|
690
711
|
compilation.hooks.additionalTreeRuntimeRequirements.tap(
|
|
691
712
|
PLUGIN_NAME,
|
|
692
713
|
(chunk, set, { chunkGraph }) => {
|
|
693
|
-
if (
|
|
694
|
-
|
|
695
|
-
chunkGraph.hasChunkEntryDependentChunks(chunk)
|
|
696
|
-
) {
|
|
714
|
+
if (set.has(RuntimeGlobals.startupNoDefault)) return;
|
|
715
|
+
if (chunkGraph.hasChunkEntryDependentChunks(chunk)) {
|
|
697
716
|
set.add(RuntimeGlobals.onChunksLoaded);
|
|
698
717
|
set.add(RuntimeGlobals.exports);
|
|
699
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);
|
|
700
733
|
}
|
|
701
734
|
}
|
|
702
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
|
+
});
|
|
703
801
|
compilation.hooks.executeModule.tap(PLUGIN_NAME, (options, context) => {
|
|
704
802
|
const source =
|
|
705
803
|
options.codeGenerationResult.sources.get(JAVASCRIPT_TYPE);
|
|
@@ -777,7 +875,7 @@ class JavascriptModulesPlugin {
|
|
|
777
875
|
static getChunkFilenameTemplate(chunk, outputOptions) {
|
|
778
876
|
if (chunk.filenameTemplate) {
|
|
779
877
|
return chunk.filenameTemplate;
|
|
780
|
-
} else if (chunk
|
|
878
|
+
} else if (chunk.isHotUpdate()) {
|
|
781
879
|
return outputOptions.hotUpdateChunkFilename;
|
|
782
880
|
}
|
|
783
881
|
const entryOptions = chunk.getEntryOptions();
|
|
@@ -791,6 +889,39 @@ class JavascriptModulesPlugin {
|
|
|
791
889
|
return outputOptions.chunkFilename;
|
|
792
890
|
}
|
|
793
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
|
+
|
|
794
925
|
/**
|
|
795
926
|
* Renders the newly generated source from rendering.
|
|
796
927
|
* @param {Module} module the rendered module
|
|
@@ -843,54 +974,41 @@ class JavascriptModulesPlugin {
|
|
|
843
974
|
const needStrict =
|
|
844
975
|
/** @type {BuildInfo} */
|
|
845
976
|
(module.buildInfo).strict && !strictMode;
|
|
977
|
+
const renderShorthand =
|
|
978
|
+
renderInObject === true && runtimeTemplate.supportsMethodShorthand();
|
|
846
979
|
const cacheEntry = this._moduleFactoryCache.get(
|
|
847
980
|
moduleSourcePostContent
|
|
848
981
|
);
|
|
849
|
-
|
|
850
|
-
renderInObject === true && runtimeTemplate.supportsMethodShorthand();
|
|
851
|
-
/** @type {Source} */
|
|
982
|
+
/** @type {Source | undefined} */
|
|
852
983
|
let source;
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
} else {
|
|
864
|
-
const factorySource = new ConcatSource();
|
|
865
|
-
/** @type {string[]} */
|
|
866
|
-
const args = [];
|
|
867
|
-
if (needExports || needRequire || needModule) {
|
|
868
|
-
args.push(
|
|
869
|
-
needModule
|
|
870
|
-
? module.moduleArgument
|
|
871
|
-
: `__unused_webpack_${module.moduleArgument}`
|
|
872
|
-
);
|
|
873
|
-
}
|
|
874
|
-
if (needExports || needRequire) {
|
|
875
|
-
args.push(
|
|
876
|
-
needExports
|
|
877
|
-
? module.exportsArgument
|
|
878
|
-
: `__unused_webpack_${module.exportsArgument}`
|
|
879
|
-
);
|
|
880
|
-
}
|
|
881
|
-
if (needRequire) args.push(RuntimeGlobals.require);
|
|
882
|
-
|
|
883
|
-
if (renderShorthand) {
|
|
884
|
-
// we can optimize function to methodShorthand if render module factory in object
|
|
885
|
-
factorySource.add(`(${args.join(", ")}) {\n\n`);
|
|
886
|
-
} else if (
|
|
887
|
-
!needThisAsExports &&
|
|
888
|
-
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
|
|
889
994
|
) {
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
factorySource.add(`/***/ (function(${args.join(", ")}) {\n\n`);
|
|
995
|
+
source = entry.source;
|
|
996
|
+
break;
|
|
893
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
|
+
);
|
|
894
1012
|
|
|
895
1013
|
if (needStrict) {
|
|
896
1014
|
factorySource.add('"use strict";\n');
|
|
@@ -905,9 +1023,23 @@ class JavascriptModulesPlugin {
|
|
|
905
1023
|
needRequire,
|
|
906
1024
|
needThisAsExports,
|
|
907
1025
|
needStrict,
|
|
908
|
-
renderShorthand
|
|
1026
|
+
renderShorthand,
|
|
1027
|
+
next: cacheEntry
|
|
909
1028
|
});
|
|
910
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);
|
|
911
1043
|
moduleSourcePostContainer = tryRunOrWebpackError(
|
|
912
1044
|
() => hooks.renderModuleContainer.call(source, module, renderContext),
|
|
913
1045
|
"JavascriptModulesPlugin.getCompilationHooks().renderModuleContainer"
|
|
@@ -967,10 +1099,8 @@ class JavascriptModulesPlugin {
|
|
|
967
1099
|
// ESM entry chunk whose runtime lives in a separate chunk: inline the
|
|
968
1100
|
// single entry module at the top level (instead of the module registry)
|
|
969
1101
|
// so its own top-level declarations stay live ESM bindings for consumers.
|
|
970
|
-
const inlinedEntryModule =
|
|
971
|
-
renderContext
|
|
972
|
-
allModules
|
|
973
|
-
);
|
|
1102
|
+
const inlinedEntryModule =
|
|
1103
|
+
JavascriptModulesPlugin._getEsmEntryModuleToInline(renderContext);
|
|
974
1104
|
let registryModules = allModules;
|
|
975
1105
|
if (inlinedEntryModule) {
|
|
976
1106
|
const inlinedEntrySource = this.renderModule(
|
|
@@ -1036,18 +1166,20 @@ class JavascriptModulesPlugin {
|
|
|
1036
1166
|
* its exports as live ESM bindings. Only a self-contained ESM entry whose
|
|
1037
1167
|
* top-level declarations can be lifted into the chunk scope qualifies;
|
|
1038
1168
|
* otherwise `undefined` is returned and the registry path is used.
|
|
1039
|
-
*
|
|
1040
|
-
*
|
|
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
|
|
1041
1173
|
* @returns {Module | undefined} the entry module to inline, if any
|
|
1042
1174
|
*/
|
|
1043
|
-
_getEsmEntryModuleToInline(
|
|
1175
|
+
static _getEsmEntryModuleToInline(context) {
|
|
1044
1176
|
const {
|
|
1045
1177
|
chunk,
|
|
1046
1178
|
chunkGraph,
|
|
1047
1179
|
moduleGraph,
|
|
1048
1180
|
runtimeTemplate,
|
|
1049
1181
|
codeGenerationResults
|
|
1050
|
-
} =
|
|
1182
|
+
} = context;
|
|
1051
1183
|
|
|
1052
1184
|
// Only a single ESM entry whose runtime lives in a separate chunk.
|
|
1053
1185
|
if (
|
|
@@ -1197,9 +1329,7 @@ class JavascriptModulesPlugin {
|
|
|
1197
1329
|
const chunkModules = Template.renderChunkModules(
|
|
1198
1330
|
chunkRenderContext,
|
|
1199
1331
|
inlinedModules
|
|
1200
|
-
? allModules.filter(
|
|
1201
|
-
(m) => !(/** @type {Set<Module>} */ (inlinedModules).has(m))
|
|
1202
|
-
)
|
|
1332
|
+
? allModules.filter((m) => !inlinedModules.has(m))
|
|
1203
1333
|
: allModules,
|
|
1204
1334
|
(module, renderInObject) =>
|
|
1205
1335
|
this.renderModule(
|
|
@@ -1272,7 +1402,7 @@ class JavascriptModulesPlugin {
|
|
|
1272
1402
|
const startupSource = new ConcatSource();
|
|
1273
1403
|
|
|
1274
1404
|
const avoidEntryIife = compilation.options.optimization.avoidEntryIife;
|
|
1275
|
-
/** @type {
|
|
1405
|
+
/** @type {RenamedInlinedModules | false} */
|
|
1276
1406
|
let renamedInlinedModule = false;
|
|
1277
1407
|
let inlinedInIIFE = false;
|
|
1278
1408
|
|
|
@@ -1316,7 +1446,7 @@ class JavascriptModulesPlugin {
|
|
|
1316
1446
|
}
|
|
1317
1447
|
|
|
1318
1448
|
const renderedModule = renamedInlinedModule
|
|
1319
|
-
? renamedInlinedModule.get(m)
|
|
1449
|
+
? renamedInlinedModule.sources.get(m)
|
|
1320
1450
|
: this.renderModule(
|
|
1321
1451
|
m,
|
|
1322
1452
|
{
|
|
@@ -1373,7 +1503,10 @@ class JavascriptModulesPlugin {
|
|
|
1373
1503
|
...renderContext,
|
|
1374
1504
|
inlined: true,
|
|
1375
1505
|
inlinedInIIFE,
|
|
1376
|
-
needExportsDeclaration: runtimeRequirements.has(RuntimeGlobals.exports)
|
|
1506
|
+
needExportsDeclaration: runtimeRequirements.has(RuntimeGlobals.exports),
|
|
1507
|
+
renamedDeclarations: renamedInlinedModule
|
|
1508
|
+
? renamedInlinedModule.renamedDeclarations.get(lastInlinedModule)
|
|
1509
|
+
: undefined
|
|
1377
1510
|
};
|
|
1378
1511
|
let renderedStartup = hooks.renderStartup.call(
|
|
1379
1512
|
startupSource,
|
|
@@ -1435,7 +1568,8 @@ class JavascriptModulesPlugin {
|
|
|
1435
1568
|
{
|
|
1436
1569
|
...renderContext,
|
|
1437
1570
|
inlined: false,
|
|
1438
|
-
needExportsDeclaration: true
|
|
1571
|
+
needExportsDeclaration: true,
|
|
1572
|
+
exportsAwaited: bootstrap.exportsAwaited
|
|
1439
1573
|
}
|
|
1440
1574
|
),
|
|
1441
1575
|
toSource(bootstrap.afterStartup, "webpack/after-startup"),
|
|
@@ -1547,14 +1681,15 @@ class JavascriptModulesPlugin {
|
|
|
1547
1681
|
requireFunction || interceptModuleExecution || moduleUsed;
|
|
1548
1682
|
|
|
1549
1683
|
/**
|
|
1550
|
-
* @type {
|
|
1684
|
+
* @type {Bootstrap}
|
|
1551
1685
|
*/
|
|
1552
1686
|
const result = {
|
|
1553
1687
|
header: [],
|
|
1554
1688
|
beforeStartup: [],
|
|
1555
1689
|
startup: [],
|
|
1556
1690
|
afterStartup: [],
|
|
1557
|
-
allowInlineStartup: true
|
|
1691
|
+
allowInlineStartup: true,
|
|
1692
|
+
exportsAwaited: false
|
|
1558
1693
|
};
|
|
1559
1694
|
|
|
1560
1695
|
const { header: buf, startup, beforeStartup, afterStartup } = result;
|
|
@@ -1658,22 +1793,32 @@ class JavascriptModulesPlugin {
|
|
|
1658
1793
|
entryOptions && entryOptions.library !== undefined
|
|
1659
1794
|
? entryOptions.library
|
|
1660
1795
|
: runtimeTemplate.outputOptions.library;
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1796
|
+
const mergedModules = mergedEntryModulesOfLibrary(
|
|
1797
|
+
library,
|
|
1798
|
+
chunk,
|
|
1799
|
+
chunkGraph
|
|
1800
|
+
);
|
|
1801
|
+
const merge = mergedModules !== undefined;
|
|
1664
1802
|
// `await` is legal only at an ESM chunk's top level, never in the
|
|
1665
1803
|
// startup function below, and only where the target parses it.
|
|
1666
1804
|
const canAwaitEntry =
|
|
1667
1805
|
runtimeTemplate.isModule() &&
|
|
1668
1806
|
runtimeTemplate.supportsTopLevelAwait() &&
|
|
1669
|
-
!awaitedByLibrary &&
|
|
1670
1807
|
!runtimeRequirements.has(RuntimeGlobals.startup) &&
|
|
1671
1808
|
!(
|
|
1672
1809
|
runtimeRequirements.has(RuntimeGlobals.startupOnlyBefore) &&
|
|
1673
1810
|
runtimeRequirements.has(RuntimeGlobals.startupOnlyAfter)
|
|
1674
1811
|
);
|
|
1812
|
+
if (merge && result.allowInlineStartup) {
|
|
1813
|
+
buf2.push(
|
|
1814
|
+
"// The exports of the entry modules are merged so they can't be inlined"
|
|
1815
|
+
);
|
|
1816
|
+
result.allowInlineStartup = false;
|
|
1817
|
+
}
|
|
1675
1818
|
/** @type {string[]} */
|
|
1676
1819
|
const awaitedEntries = [];
|
|
1820
|
+
/** @type {Map<Module, string>} */
|
|
1821
|
+
const mergedTargets = new Map();
|
|
1677
1822
|
let i = jsEntries.length;
|
|
1678
1823
|
for (const [entryModule, entrypoint] of jsEntries) {
|
|
1679
1824
|
const chunks =
|
|
@@ -1702,6 +1847,12 @@ class JavascriptModulesPlugin {
|
|
|
1702
1847
|
buf2.push(
|
|
1703
1848
|
"// This entry module is referenced by other modules so it can't be inlined"
|
|
1704
1849
|
);
|
|
1850
|
+
// Its exports are then read off the exports object, and a property
|
|
1851
|
+
// read is not something a consumer of the bundle can drop.
|
|
1852
|
+
runtimeTemplate.analyzableBailout(
|
|
1853
|
+
entryModule,
|
|
1854
|
+
"the entry is referenced by other modules, so its exports are read off the exports object and a consumer cannot drop them"
|
|
1855
|
+
);
|
|
1705
1856
|
result.allowInlineStartup = false;
|
|
1706
1857
|
}
|
|
1707
1858
|
|
|
@@ -1785,24 +1936,32 @@ class JavascriptModulesPlugin {
|
|
|
1785
1936
|
// `onChunksLoaded` wrapper, a top-level `await` bridge or other
|
|
1786
1937
|
// codegen, so it is never declared as a constant.
|
|
1787
1938
|
const exportsDecl = runtimeTemplate.renderLet();
|
|
1939
|
+
// Merging reads every entry back, so each one needs a variable of
|
|
1940
|
+
// its own; without it only the last entry (`i === 0`) is exported.
|
|
1941
|
+
const target =
|
|
1942
|
+
i === 0 && !merge
|
|
1943
|
+
? RuntimeGlobals.exports
|
|
1944
|
+
: `${RuntimeGlobals.exports}_${i}`;
|
|
1945
|
+
if (merge) mergedTargets.set(entryModule, target);
|
|
1788
1946
|
if (chunks.length > 0) {
|
|
1789
1947
|
const awaitEntry =
|
|
1790
1948
|
canAwaitEntry && moduleGraph.isAsync(entryModule);
|
|
1791
|
-
const target =
|
|
1792
|
-
i === 0
|
|
1793
|
-
? RuntimeGlobals.exports
|
|
1794
|
-
: `${RuntimeGlobals.exports}_${i}`;
|
|
1795
1949
|
// The wrapper hands back nothing until the flush below runs the
|
|
1796
|
-
// entry, so
|
|
1797
|
-
|
|
1950
|
+
// entry, so a captured one is caught by the entry call itself.
|
|
1951
|
+
const capture = awaitEntry || merge;
|
|
1952
|
+
if (capture && target !== RuntimeGlobals.exports) {
|
|
1953
|
+
buf2.push(`${exportsDecl} ${target};`);
|
|
1954
|
+
}
|
|
1798
1955
|
const entryCall = `${RuntimeGlobals.require}(${moduleIdExpr})`;
|
|
1799
1956
|
buf2.push(
|
|
1800
|
-
`${
|
|
1801
|
-
|
|
1802
|
-
|
|
1957
|
+
`${
|
|
1958
|
+
i === 0 && !merge
|
|
1959
|
+
? `${exportsDecl} ${RuntimeGlobals.exports} = `
|
|
1960
|
+
: ""
|
|
1961
|
+
}${RuntimeGlobals.onChunksLoaded}(undefined, ${JSON.stringify(
|
|
1803
1962
|
chunks.map((c) => c.id)
|
|
1804
1963
|
)}, ${runtimeTemplate.returningFunction(
|
|
1805
|
-
|
|
1964
|
+
capture ? `(${target} = ${entryCall})` : entryCall
|
|
1806
1965
|
)})`
|
|
1807
1966
|
);
|
|
1808
1967
|
if (awaitEntry) awaitedEntries.push(target);
|
|
@@ -1811,18 +1970,14 @@ class JavascriptModulesPlugin {
|
|
|
1811
1970
|
// which orphans its rejection.
|
|
1812
1971
|
const awaitEntry =
|
|
1813
1972
|
canAwaitEntry && moduleGraph.isAsync(entryModule);
|
|
1814
|
-
const
|
|
1815
|
-
i === 0
|
|
1816
|
-
? RuntimeGlobals.exports
|
|
1817
|
-
: `${RuntimeGlobals.exports}_${i}`;
|
|
1818
|
-
const needsDecl = i === 0 || awaitEntry;
|
|
1973
|
+
const needsDecl = i === 0 || awaitEntry || merge;
|
|
1819
1974
|
buf2.push(
|
|
1820
1975
|
`${needsDecl ? `${exportsDecl} ${target} = ` : ""}${RuntimeGlobals.require}(${moduleIdExpr});`
|
|
1821
1976
|
);
|
|
1822
1977
|
if (awaitEntry) awaitedEntries.push(target);
|
|
1823
1978
|
} else {
|
|
1824
|
-
if (i === 0) {
|
|
1825
|
-
buf2.push(`${exportsDecl} ${
|
|
1979
|
+
if (i === 0 || merge) {
|
|
1980
|
+
buf2.push(`${exportsDecl} ${target} = {};`);
|
|
1826
1981
|
}
|
|
1827
1982
|
const needThisAsExports = entryRuntimeRequirements.has(
|
|
1828
1983
|
RuntimeGlobals.thisAsExports
|
|
@@ -1834,7 +1989,7 @@ class JavascriptModulesPlugin {
|
|
|
1834
1989
|
requireScopeUsed ||
|
|
1835
1990
|
entryRuntimeRequirements.has(RuntimeGlobals.exports)
|
|
1836
1991
|
) {
|
|
1837
|
-
const exportsArg = i === 0 ?
|
|
1992
|
+
const exportsArg = i === 0 || merge ? target : "{}";
|
|
1838
1993
|
args.push("0", exportsArg);
|
|
1839
1994
|
if (requireScopeUsed) {
|
|
1840
1995
|
args.push(RuntimeGlobals.require);
|
|
@@ -1846,7 +2001,7 @@ class JavascriptModulesPlugin {
|
|
|
1846
2001
|
if (needThisAsExports) {
|
|
1847
2002
|
const comma = args.length ? "," : "";
|
|
1848
2003
|
return `__webpack_modules__[${moduleIdExpr}].call(${
|
|
1849
|
-
RuntimeGlobals.exports
|
|
2004
|
+
merge ? target : RuntimeGlobals.exports
|
|
1850
2005
|
}${comma}${args.join(",")});`;
|
|
1851
2006
|
}
|
|
1852
2007
|
return `__webpack_modules__[${moduleIdExpr}](${args.join(
|
|
@@ -1859,10 +2014,43 @@ class JavascriptModulesPlugin {
|
|
|
1859
2014
|
}
|
|
1860
2015
|
if (runtimeRequirements.has(RuntimeGlobals.onChunksLoaded)) {
|
|
1861
2016
|
buf2.push(
|
|
1862
|
-
|
|
2017
|
+
merge
|
|
2018
|
+
? `${RuntimeGlobals.onChunksLoaded}();`
|
|
2019
|
+
: `${RuntimeGlobals.exports} = ${RuntimeGlobals.onChunksLoaded}(${RuntimeGlobals.exports});`
|
|
1863
2020
|
);
|
|
1864
2021
|
}
|
|
1865
2022
|
buf2.push(...renderAwaitedEntries(awaitedEntries));
|
|
2023
|
+
result.exportsAwaited = awaitedEntries.includes(RuntimeGlobals.exports);
|
|
2024
|
+
// Every entry has run by now, and the getters below read through to
|
|
2025
|
+
// whichever one provides each name.
|
|
2026
|
+
if (merge) {
|
|
2027
|
+
const { exports, namespace } = getMergedExports(
|
|
2028
|
+
mergedModules,
|
|
2029
|
+
moduleGraph,
|
|
2030
|
+
chunk.runtime
|
|
2031
|
+
);
|
|
2032
|
+
buf2.push(
|
|
2033
|
+
`${runtimeTemplate.renderLet()} ${RuntimeGlobals.exports} = {};`
|
|
2034
|
+
);
|
|
2035
|
+
if (namespace) {
|
|
2036
|
+
buf2.push(
|
|
2037
|
+
`${RuntimeGlobals.makeNamespaceObject}(${RuntimeGlobals.exports});`
|
|
2038
|
+
);
|
|
2039
|
+
}
|
|
2040
|
+
if (exports.length > 0) {
|
|
2041
|
+
const bindings = exports.map(
|
|
2042
|
+
({ name, module, usedName }) =>
|
|
2043
|
+
`${JSON.stringify(name)}, ${runtimeTemplate.returningFunction(
|
|
2044
|
+
`${mergedTargets.get(module)}${propertyAccess([usedName])}`
|
|
2045
|
+
)}`
|
|
2046
|
+
);
|
|
2047
|
+
buf2.push(
|
|
2048
|
+
`${RuntimeGlobals.definePropertyGetters}(${
|
|
2049
|
+
RuntimeGlobals.exports
|
|
2050
|
+
}, [${bindings.join(", ")}]);`
|
|
2051
|
+
);
|
|
2052
|
+
}
|
|
2053
|
+
}
|
|
1866
2054
|
if (
|
|
1867
2055
|
runtimeRequirements.has(RuntimeGlobals.startup) ||
|
|
1868
2056
|
(runtimeRequirements.has(RuntimeGlobals.startupOnlyBefore) &&
|
|
@@ -2105,7 +2293,7 @@ class JavascriptModulesPlugin {
|
|
|
2105
2293
|
* @param {CompilationHooks} hooks hooks
|
|
2106
2294
|
* @param {boolean | undefined} allStrict allStrict
|
|
2107
2295
|
* @param {boolean} hasChunkModules hasChunkModules
|
|
2108
|
-
* @returns {
|
|
2296
|
+
* @returns {RenamedInlinedModules | false} renamed inlined modules
|
|
2109
2297
|
*/
|
|
2110
2298
|
_getRenamedInlineModule(
|
|
2111
2299
|
compilation,
|
|
@@ -2131,18 +2319,22 @@ class JavascriptModulesPlugin {
|
|
|
2131
2319
|
|
|
2132
2320
|
/** @type {Map<Module, Source>} */
|
|
2133
2321
|
const renamedInlinedModules = new Map();
|
|
2322
|
+
/** @type {Map<Module, Map<string, string>>} */
|
|
2323
|
+
const renamedDeclarations = new Map();
|
|
2134
2324
|
const { runtimeTemplate } = renderContext;
|
|
2135
2325
|
|
|
2136
|
-
/** @typedef {{ source: Source, module: Module,
|
|
2326
|
+
/** @typedef {{ source: Source, module: Module, shorthandIdentifierStarts: Set<number>, variables: Set<Variable>, through: Set<Reference>, usedInNonInlined: Set<Variable>, moduleScope: Scope }} Info */
|
|
2137
2327
|
/** @type {Map<Module, Info>} */
|
|
2138
2328
|
const inlinedModulesToInfo = new Map();
|
|
2139
2329
|
/** @type {Set<string>} */
|
|
2140
2330
|
const nonInlinedModuleThroughIdentifiers = new Set();
|
|
2141
2331
|
/** @type {Map<Module, Source>} */
|
|
2142
2332
|
const inlinedModuleSources = new Map();
|
|
2333
|
+
const { codeGenerationResults, chunk } = renderContext;
|
|
2143
2334
|
|
|
2144
2335
|
for (const m of allModules) {
|
|
2145
2336
|
const isInlinedModule = inlinedModules && inlinedModules.has(m);
|
|
2337
|
+
|
|
2146
2338
|
const moduleSource = this.renderModule(
|
|
2147
2339
|
m,
|
|
2148
2340
|
{
|
|
@@ -2160,6 +2352,47 @@ class JavascriptModulesPlugin {
|
|
|
2160
2352
|
inlinedModuleSources.set(m, moduleSource);
|
|
2161
2353
|
continue;
|
|
2162
2354
|
}
|
|
2355
|
+
// The render hooks add free names, so only the source they left behind
|
|
2356
|
+
// can be analysed; keying on it lets a rebuild skip the parse.
|
|
2357
|
+
let freeNames = this._renderedFreeNamesCache.get(moduleSource);
|
|
2358
|
+
|
|
2359
|
+
if (freeNames === undefined) {
|
|
2360
|
+
const code = /** @type {string} */ (moduleSource.source());
|
|
2361
|
+
|
|
2362
|
+
const { experiments } = compilation.options;
|
|
2363
|
+
const { ast } = JavascriptParser._parse(
|
|
2364
|
+
code,
|
|
2365
|
+
{
|
|
2366
|
+
sourceType: "auto",
|
|
2367
|
+
ranges: true,
|
|
2368
|
+
// generated code contains phase imports when the experiments are on
|
|
2369
|
+
importPhases: Boolean(
|
|
2370
|
+
experiments.deferImport || experiments.sourceImport
|
|
2371
|
+
)
|
|
2372
|
+
},
|
|
2373
|
+
JavascriptParser._getModuleParseFunction(compilation, m)
|
|
2374
|
+
);
|
|
2375
|
+
|
|
2376
|
+
const analysis = analyzeScope(ast);
|
|
2377
|
+
|
|
2378
|
+
freeNames = new Set();
|
|
2379
|
+
for (const ref of analysis.unresolvedReferences) {
|
|
2380
|
+
freeNames.add(ref.identifier.name);
|
|
2381
|
+
}
|
|
2382
|
+
this._renderedFreeNamesCache.set(moduleSource, freeNames);
|
|
2383
|
+
}
|
|
2384
|
+
|
|
2385
|
+
for (const name of freeNames) {
|
|
2386
|
+
nonInlinedModuleThroughIdentifiers.add(name);
|
|
2387
|
+
}
|
|
2388
|
+
}
|
|
2389
|
+
|
|
2390
|
+
/**
|
|
2391
|
+
* @param {Module} module the inlined entry
|
|
2392
|
+
* @param {Source} moduleSource its rendered source
|
|
2393
|
+
* @returns {Info} scope information for renaming
|
|
2394
|
+
*/
|
|
2395
|
+
const getModuleInfo = (module, moduleSource) => {
|
|
2163
2396
|
const code = /** @type {string} */ (moduleSource.source());
|
|
2164
2397
|
|
|
2165
2398
|
const { experiments } = compilation.options;
|
|
@@ -2173,35 +2406,71 @@ class JavascriptModulesPlugin {
|
|
|
2173
2406
|
experiments.deferImport || experiments.sourceImport
|
|
2174
2407
|
)
|
|
2175
2408
|
},
|
|
2176
|
-
JavascriptParser._getModuleParseFunction(compilation,
|
|
2409
|
+
JavascriptParser._getModuleParseFunction(compilation, module)
|
|
2177
2410
|
);
|
|
2178
2411
|
|
|
2179
2412
|
const analysis = analyzeScope(ast);
|
|
2180
2413
|
|
|
2181
|
-
|
|
2182
|
-
|
|
2414
|
+
const moduleScope = analysis.moduleScope;
|
|
2415
|
+
return {
|
|
2416
|
+
source: moduleSource,
|
|
2417
|
+
shorthandIdentifierStarts: analysis.shorthandIdentifierStarts,
|
|
2418
|
+
module,
|
|
2419
|
+
variables: new Set(moduleScope.variables),
|
|
2420
|
+
through: new Set(analysis.unresolvedReferences),
|
|
2421
|
+
usedInNonInlined: new Set(),
|
|
2422
|
+
moduleScope
|
|
2423
|
+
};
|
|
2424
|
+
};
|
|
2425
|
+
|
|
2426
|
+
/**
|
|
2427
|
+
* @param {Info} info scope information for the entry
|
|
2428
|
+
* @param {Set<string>} usedNames names unavailable to its declarations
|
|
2429
|
+
* @returns {void}
|
|
2430
|
+
*/
|
|
2431
|
+
const renameModule = (info, usedNames) => {
|
|
2432
|
+
const source = new ReplaceSource(info.source);
|
|
2433
|
+
/** @type {Map<string, string>} */
|
|
2434
|
+
const renamed = new Map();
|
|
2435
|
+
for (const variable of info.variables) {
|
|
2436
|
+
renameInlinedModuleVariable(
|
|
2437
|
+
source,
|
|
2438
|
+
info.shorthandIdentifierStarts,
|
|
2439
|
+
variable,
|
|
2440
|
+
info.module.identifier(),
|
|
2441
|
+
info.module.readableIdentifier(runtimeTemplate.requestShortener),
|
|
2442
|
+
usedNames,
|
|
2443
|
+
renamed
|
|
2444
|
+
);
|
|
2183
2445
|
}
|
|
2184
|
-
|
|
2446
|
+
renamedInlinedModules.set(info.module, source);
|
|
2447
|
+
if (renamed.size > 0) renamedDeclarations.set(info.module, renamed);
|
|
2448
|
+
};
|
|
2185
2449
|
|
|
2186
|
-
// Codegen reports
|
|
2187
|
-
//
|
|
2188
|
-
// entries need not be parsed at all.
|
|
2450
|
+
// Codegen reports declarations and free names; only entries whose names
|
|
2451
|
+
// collide need parsing to locate their declarations and references.
|
|
2189
2452
|
fastPath: {
|
|
2190
|
-
const { codeGenerationResults, chunk } = renderContext;
|
|
2191
2453
|
/** @type {Set<string>} */
|
|
2192
2454
|
const usedNames = new Set(nonInlinedModuleThroughIdentifiers);
|
|
2193
2455
|
for (const name of RESERVED_NAMES) usedNames.add(name);
|
|
2194
|
-
/** @type {Set<string
|
|
2195
|
-
const
|
|
2196
|
-
|
|
2456
|
+
/** @type {Map<Module, Set<string>>} */
|
|
2457
|
+
const declarationsByModule = new Map();
|
|
2458
|
+
let canRenameSelectively = isMultipleEntries;
|
|
2459
|
+
for (const [m, moduleSource] of inlinedModuleSources) {
|
|
2197
2460
|
if (!codeGenerationResults.has(m, chunk.runtime)) break fastPath;
|
|
2198
2461
|
const result = codeGenerationResults.get(m, chunk.runtime);
|
|
2199
2462
|
const data = result.data;
|
|
2200
2463
|
if (!data) break fastPath;
|
|
2201
2464
|
const declarations = data.get("topLevelDeclarations");
|
|
2202
2465
|
if (!declarations) break fastPath;
|
|
2203
|
-
|
|
2466
|
+
declarationsByModule.set(m, declarations);
|
|
2204
2467
|
if (!isMultipleEntries) continue;
|
|
2468
|
+
// Mixing cached names with fresh scope analysis requires unchanged
|
|
2469
|
+
// sources and the same parser that produced the cached names.
|
|
2470
|
+
canRenameSelectively =
|
|
2471
|
+
canRenameSelectively &&
|
|
2472
|
+
result.sources.get(JAVASCRIPT_TYPE) === moduleSource &&
|
|
2473
|
+
!JavascriptParser._getModuleParseFunction(compilation, m);
|
|
2205
2474
|
// Entries share the startup scope: an entry's free names and runtime
|
|
2206
2475
|
// globals must not be shadowed by another entry's declarations.
|
|
2207
2476
|
const freeNames = data.get("freeNames");
|
|
@@ -2214,49 +2483,26 @@ class JavascriptModulesPlugin {
|
|
|
2214
2483
|
}
|
|
2215
2484
|
}
|
|
2216
2485
|
}
|
|
2217
|
-
for (const declarations of
|
|
2218
|
-
|
|
2219
|
-
|
|
2486
|
+
for (const [m, declarations] of declarationsByModule) {
|
|
2487
|
+
const moduleSource = /** @type {Source} */ (
|
|
2488
|
+
inlinedModuleSources.get(m)
|
|
2489
|
+
);
|
|
2490
|
+
if (someInIterable(declarations, (name) => usedNames.has(name))) {
|
|
2491
|
+
if (!canRenameSelectively) break fastPath;
|
|
2492
|
+
renameModule(getModuleInfo(m, moduleSource), usedNames);
|
|
2493
|
+
} else {
|
|
2494
|
+
for (const name of declarations) usedNames.add(name);
|
|
2495
|
+
renamedInlinedModules.set(m, moduleSource);
|
|
2220
2496
|
}
|
|
2221
|
-
// earlier entries' declarations join the used set so later entries
|
|
2222
|
-
// are checked against them
|
|
2223
|
-
for (const name of declarations) usedNames.add(name);
|
|
2224
|
-
}
|
|
2225
|
-
for (const [m, moduleSource] of inlinedModuleSources) {
|
|
2226
|
-
renamedInlinedModules.set(m, moduleSource);
|
|
2227
2497
|
}
|
|
2228
|
-
return
|
|
2498
|
+
return {
|
|
2499
|
+
sources: renamedInlinedModules,
|
|
2500
|
+
renamedDeclarations
|
|
2501
|
+
};
|
|
2229
2502
|
}
|
|
2230
2503
|
|
|
2231
2504
|
for (const [m, moduleSource] of inlinedModuleSources) {
|
|
2232
|
-
|
|
2233
|
-
|
|
2234
|
-
const { experiments } = compilation.options;
|
|
2235
|
-
const { ast } = JavascriptParser._parse(
|
|
2236
|
-
code,
|
|
2237
|
-
{
|
|
2238
|
-
sourceType: "auto",
|
|
2239
|
-
ranges: true,
|
|
2240
|
-
// generated code contains phase imports when the experiments are on
|
|
2241
|
-
importPhases: Boolean(
|
|
2242
|
-
experiments.deferImport || experiments.sourceImport
|
|
2243
|
-
)
|
|
2244
|
-
},
|
|
2245
|
-
JavascriptParser._getModuleParseFunction(compilation, m)
|
|
2246
|
-
);
|
|
2247
|
-
|
|
2248
|
-
const analysis = analyzeScope(ast);
|
|
2249
|
-
|
|
2250
|
-
const moduleScope = analysis.moduleScope;
|
|
2251
|
-
inlinedModulesToInfo.set(m, {
|
|
2252
|
-
source: moduleSource,
|
|
2253
|
-
ast,
|
|
2254
|
-
module: m,
|
|
2255
|
-
variables: new Set(moduleScope.variables),
|
|
2256
|
-
through: new Set(analysis.unresolvedReferences),
|
|
2257
|
-
usedInNonInlined: new Set(),
|
|
2258
|
-
moduleScope
|
|
2259
|
-
});
|
|
2505
|
+
inlinedModulesToInfo.set(m, getModuleInfo(m, moduleSource));
|
|
2260
2506
|
}
|
|
2261
2507
|
|
|
2262
2508
|
for (const [, { variables, usedInNonInlined }] of inlinedModulesToInfo) {
|
|
@@ -2280,56 +2526,37 @@ class JavascriptModulesPlugin {
|
|
|
2280
2526
|
for (const { through } of inlinedModulesToInfo.values()) {
|
|
2281
2527
|
for (const ref of through) allUsedNames.add(ref.identifier.name);
|
|
2282
2528
|
}
|
|
2283
|
-
for (const
|
|
2284
|
-
|
|
2285
|
-
const source = new ReplaceSource(_source);
|
|
2286
|
-
for (const variable of moduleInfo.variables) {
|
|
2287
|
-
renameInlinedModuleVariable(
|
|
2288
|
-
source,
|
|
2289
|
-
ast,
|
|
2290
|
-
variable,
|
|
2291
|
-
moduleInfo.module.identifier(),
|
|
2292
|
-
m.readableIdentifier(runtimeTemplate.requestShortener),
|
|
2293
|
-
allUsedNames
|
|
2294
|
-
);
|
|
2295
|
-
}
|
|
2296
|
-
renamedInlinedModules.set(m, source);
|
|
2529
|
+
for (const moduleInfo of inlinedModulesToInfo.values()) {
|
|
2530
|
+
renameModule(moduleInfo, allUsedNames);
|
|
2297
2531
|
}
|
|
2298
|
-
return
|
|
2532
|
+
return {
|
|
2533
|
+
sources: renamedInlinedModules,
|
|
2534
|
+
renamedDeclarations
|
|
2535
|
+
};
|
|
2299
2536
|
}
|
|
2300
2537
|
|
|
2301
2538
|
for (const [m, moduleInfo] of inlinedModulesToInfo) {
|
|
2302
|
-
const {
|
|
2303
|
-
const source = new ReplaceSource(_source);
|
|
2539
|
+
const { usedInNonInlined } = moduleInfo;
|
|
2304
2540
|
if (usedInNonInlined.size === 0) {
|
|
2305
|
-
renamedInlinedModules.set(m, source);
|
|
2541
|
+
renamedInlinedModules.set(m, new ReplaceSource(moduleInfo.source));
|
|
2306
2542
|
continue;
|
|
2307
2543
|
}
|
|
2308
2544
|
|
|
2309
|
-
const info = /** @type {Info} */ (inlinedModulesToInfo.get(m));
|
|
2310
2545
|
const allUsedNames = new Set(
|
|
2311
|
-
Array.from(
|
|
2546
|
+
Array.from(moduleInfo.through, (v) => v.identifier.name)
|
|
2312
2547
|
);
|
|
2313
2548
|
|
|
2314
2549
|
for (const variable of usedInNonInlined) {
|
|
2315
2550
|
allUsedNames.add(variable.name);
|
|
2316
2551
|
}
|
|
2317
2552
|
|
|
2318
|
-
|
|
2319
|
-
renameInlinedModuleVariable(
|
|
2320
|
-
source,
|
|
2321
|
-
ast,
|
|
2322
|
-
variable,
|
|
2323
|
-
info.module.identifier(),
|
|
2324
|
-
m.readableIdentifier(runtimeTemplate.requestShortener),
|
|
2325
|
-
allUsedNames
|
|
2326
|
-
);
|
|
2327
|
-
}
|
|
2328
|
-
|
|
2329
|
-
renamedInlinedModules.set(m, source);
|
|
2553
|
+
renameModule(moduleInfo, allUsedNames);
|
|
2330
2554
|
}
|
|
2331
2555
|
|
|
2332
|
-
return
|
|
2556
|
+
return {
|
|
2557
|
+
sources: renamedInlinedModules,
|
|
2558
|
+
renamedDeclarations
|
|
2559
|
+
};
|
|
2333
2560
|
}
|
|
2334
2561
|
}
|
|
2335
2562
|
|