@depup/webpack 5.109.2-depup.0 → 5.110.3-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/changes.json +7 -7
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +46 -35
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +4 -7
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +7 -7
- package/lib/Compilation.js +688 -409
- package/lib/Compiler.js +53 -38
- package/lib/ConcatenationScope.js +107 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +121 -37
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +91 -26
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +111 -14
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +232 -77
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +44 -70
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +40 -49
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +36 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +8 -4
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +9 -4
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +152 -103
- package/lib/NormalModuleFactory.js +555 -110
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +335 -169
- package/lib/RuntimeTemplate.js +2761 -316
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +32 -22
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +12 -6
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +30 -23
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +270 -78
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +46 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +6 -11
- package/lib/container/ModuleFederationPlugin.js +7 -24
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +171 -43
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +84 -32
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +172 -100
- package/lib/css/CssParser.js +1113 -568
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5334 -0
- package/lib/css/syntax.js +9647 -232
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +170 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +121 -60
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
- package/lib/dependencies/HarmonyImportGuard.js +20 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +49 -31
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +45 -5
- package/lib/dependencies/ImportDependency.js +33 -50
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +73 -49
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +50 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
- package/lib/dependencies/WorkerDependency.js +22 -22
- package/lib/dependencies/WorkletDependency.js +18 -21
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/importOptionsCheck.js +47 -0
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DotenvFileError.js +29 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/ImportedBindingAssignmentError.js +30 -0
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +9 -6
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +277 -77
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +366 -200
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +6034 -1384
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +7 -8
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +65 -165
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +103 -123
- package/lib/javascript/JavascriptParser.js +242 -99
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +2678 -232
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +47 -6
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +1030 -476
- package/lib/optimize/ConstExportsPlugin.js +16 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +130 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
- package/lib/optimize/RealContentHashPlugin.js +121 -41
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +86 -24
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +295 -79
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +46 -20
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +4 -4
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +22 -9
- package/lib/serialization/ObjectMiddleware.js +139 -114
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
- package/lib/stats/StatsFactory.js +25 -26
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +20 -24
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1066 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +10 -2
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/createMappings.js +25 -3
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +4 -0
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +8 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/removeBOM.js +82 -1
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
- package/lib/web/FetchCompileWasmPlugin.js +48 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +32 -25
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +667 -34
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +3223 -465
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -15,15 +15,19 @@ const { VariableInfoFlags } = require("../javascript/JavascriptParser");
|
|
|
15
15
|
const {
|
|
16
16
|
InlinedUsedName,
|
|
17
17
|
enableInlineExports,
|
|
18
|
+
findModulesInCycles,
|
|
18
19
|
toInlinedValue
|
|
19
20
|
} = require("./InlineExports");
|
|
20
21
|
|
|
21
|
-
/** @
|
|
22
|
-
/** @
|
|
23
|
-
/** @
|
|
24
|
-
/** @
|
|
25
|
-
/**
|
|
26
|
-
|
|
22
|
+
/** @import { InlinedValue } from "./InlineExports" */
|
|
23
|
+
/** @import Compiler from "../Compiler" */
|
|
24
|
+
/** @import ExportsInfo from "../ExportsInfo" */
|
|
25
|
+
/** @import JavascriptParser from "../javascript/JavascriptParser" */
|
|
26
|
+
/**
|
|
27
|
+
* @import {
|
|
28
|
+
* JavascriptModuleBuildInfo
|
|
29
|
+
* } from "../javascript/JavascriptModule"
|
|
30
|
+
*/
|
|
27
31
|
|
|
28
32
|
/** @typedef {{ inlineExports: boolean }} ConstValueParserPluginOptions */
|
|
29
33
|
|
|
@@ -159,11 +163,15 @@ class ConstExportsPlugin {
|
|
|
159
163
|
|
|
160
164
|
const moduleGraph = compilation.moduleGraph;
|
|
161
165
|
compilation.hooks.optimizeDependencies.tap(PLUGIN_NAME, (modules) => {
|
|
166
|
+
// A cycle peer may read an export during its temporal dead zone,
|
|
167
|
+
// where the binding must throw and a literal would answer.
|
|
168
|
+
const inCycle = findModulesInCycles(moduleGraph, modules);
|
|
162
169
|
/** @type {Set<ExportsInfo>} */
|
|
163
170
|
const visited = new Set();
|
|
164
171
|
/** @type {ExportsInfo[]} */
|
|
165
172
|
let queue = [];
|
|
166
173
|
for (const module of modules) {
|
|
174
|
+
if (inCycle.has(module)) continue;
|
|
167
175
|
queue.push(moduleGraph.getExportsInfo(module));
|
|
168
176
|
}
|
|
169
177
|
while (queue.length > 0) {
|
|
@@ -207,5 +215,6 @@ class ConstExportsPlugin {
|
|
|
207
215
|
}
|
|
208
216
|
}
|
|
209
217
|
|
|
218
|
+
ConstExportsPlugin.CONST_BINDING_TAG = CONST_BINDING_TAG;
|
|
219
|
+
|
|
210
220
|
module.exports = ConstExportsPlugin;
|
|
211
|
-
module.exports.CONST_BINDING_TAG = CONST_BINDING_TAG;
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
const { STAGE_BASIC } = require("../OptimizationStages");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
10
|
+
/** @import Chunk from "../Chunk" */
|
|
11
|
+
/** @import ChunkGroup from "../ChunkGroup" */
|
|
12
|
+
/** @import Compiler from "../Compiler" */
|
|
13
13
|
|
|
14
14
|
const PLUGIN_NAME = "EnsureChunkConditionsPlugin";
|
|
15
15
|
|
|
@@ -7,10 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
const { compareIds } = require("../util/comparators");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
13
|
-
/** @typedef {import("../Module")} Module */
|
|
10
|
+
/** @import Chunk, { ChunkId } from "../Chunk" */
|
|
11
|
+
/** @import Compiler from "../Compiler" */
|
|
12
|
+
/** @import Module from "../Module" */
|
|
14
13
|
|
|
15
14
|
const PLUGIN_NAME = "FlagIncludedChunksPlugin";
|
|
16
15
|
|
|
@@ -8,11 +8,15 @@
|
|
|
8
8
|
const makeSerializable = require("../util/makeSerializable");
|
|
9
9
|
const { propertyAccess } = require("../util/property");
|
|
10
10
|
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
/**
|
|
12
|
+
* @import {
|
|
13
|
+
* ObjectDeserializerContext,
|
|
14
|
+
* ObjectSerializerContext
|
|
15
|
+
* } from "../serialization/ObjectMiddleware"
|
|
16
|
+
*/
|
|
17
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
18
|
+
/** @import Module from "../Module" */
|
|
19
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
16
20
|
|
|
17
21
|
const MAX_INLINE_BYTES = 6;
|
|
18
22
|
|
|
@@ -168,10 +172,131 @@ const isExportInlined = (moduleGraph, module, ids, runtime) => {
|
|
|
168
172
|
return moduleGraph.getExportsInfo(module).hasInlinedUsedName(ids, runtime);
|
|
169
173
|
};
|
|
170
174
|
|
|
175
|
+
/**
|
|
176
|
+
* Collects, by an iterative Tarjan pass, the modules a cycle peer may read in
|
|
177
|
+
* their dead zone. A cycle of bare side-effect imports still inlines.
|
|
178
|
+
* @param {ModuleGraph} moduleGraph module graph
|
|
179
|
+
* @param {Iterable<Module>} modules all modules of the compilation
|
|
180
|
+
* @returns {Set<Module>} modules whose exports must not be inlined
|
|
181
|
+
*/
|
|
182
|
+
const findModulesInCycles = (moduleGraph, modules) => {
|
|
183
|
+
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
|
|
184
|
+
const HarmonyImportSideEffectDependency = require("../dependencies/HarmonyImportSideEffectDependency");
|
|
185
|
+
|
|
186
|
+
/** @type {Set<Module>} */
|
|
187
|
+
const inCycle = new Set();
|
|
188
|
+
/** @type {[Module, Module][]} */
|
|
189
|
+
const bindingReads = [];
|
|
190
|
+
/** @type {Map<Module, number>} */
|
|
191
|
+
const componentOf = new Map();
|
|
192
|
+
let nextComponent = 0;
|
|
193
|
+
/** @type {Map<Module, number>} */
|
|
194
|
+
const index = new Map();
|
|
195
|
+
/** @type {Map<Module, number>} */
|
|
196
|
+
const low = new Map();
|
|
197
|
+
/** @type {Set<Module>} */
|
|
198
|
+
const onStack = new Set();
|
|
199
|
+
/** @type {Module[]} */
|
|
200
|
+
const componentStack = [];
|
|
201
|
+
let counter = 0;
|
|
202
|
+
/**
|
|
203
|
+
* @param {Module} module the module
|
|
204
|
+
* @returns {Module[]} modules it imports, self included when self-importing
|
|
205
|
+
*/
|
|
206
|
+
const targetsOf = (module) => {
|
|
207
|
+
const connections = moduleGraph.getOutgoingConnectionsByModule(module);
|
|
208
|
+
if (!connections) return [];
|
|
209
|
+
/** @type {Module[]} */
|
|
210
|
+
const targets = [];
|
|
211
|
+
for (const [target, moduleConnections] of connections) {
|
|
212
|
+
if (
|
|
213
|
+
!target ||
|
|
214
|
+
!moduleConnections.some(
|
|
215
|
+
(c) => c.dependency instanceof HarmonyImportDependency
|
|
216
|
+
)
|
|
217
|
+
) {
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
// Anything but a bare side-effect import may observe the binding.
|
|
221
|
+
if (
|
|
222
|
+
moduleConnections.some(
|
|
223
|
+
(c) =>
|
|
224
|
+
c.dependency instanceof HarmonyImportDependency &&
|
|
225
|
+
!(c.dependency instanceof HarmonyImportSideEffectDependency)
|
|
226
|
+
)
|
|
227
|
+
) {
|
|
228
|
+
bindingReads.push([module, target]);
|
|
229
|
+
}
|
|
230
|
+
targets.push(target);
|
|
231
|
+
}
|
|
232
|
+
return targets;
|
|
233
|
+
};
|
|
234
|
+
/** @type {{ node: Module, targets: Module[], i: number }[]} */
|
|
235
|
+
const work = [];
|
|
236
|
+
/**
|
|
237
|
+
* @param {Module} node node to open
|
|
238
|
+
*/
|
|
239
|
+
const open = (node) => {
|
|
240
|
+
index.set(node, counter);
|
|
241
|
+
low.set(node, counter);
|
|
242
|
+
counter++;
|
|
243
|
+
componentStack.push(node);
|
|
244
|
+
onStack.add(node);
|
|
245
|
+
work.push({ node, targets: targetsOf(node), i: 0 });
|
|
246
|
+
};
|
|
247
|
+
for (const seed of modules) {
|
|
248
|
+
if (index.has(seed)) continue;
|
|
249
|
+
open(seed);
|
|
250
|
+
while (work.length > 0) {
|
|
251
|
+
const frame = work[work.length - 1];
|
|
252
|
+
if (frame.i < frame.targets.length) {
|
|
253
|
+
const next = frame.targets[frame.i++];
|
|
254
|
+
if (!index.has(next)) {
|
|
255
|
+
open(next);
|
|
256
|
+
} else if (onStack.has(next)) {
|
|
257
|
+
const nodeLow = /** @type {number} */ (low.get(frame.node));
|
|
258
|
+
const nextIndex = /** @type {number} */ (index.get(next));
|
|
259
|
+
if (nextIndex < nodeLow) low.set(frame.node, nextIndex);
|
|
260
|
+
}
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
work.pop();
|
|
264
|
+
const node = frame.node;
|
|
265
|
+
const nodeLow = /** @type {number} */ (low.get(node));
|
|
266
|
+
if (work.length > 0) {
|
|
267
|
+
const parent = work[work.length - 1].node;
|
|
268
|
+
if (nodeLow < /** @type {number} */ (low.get(parent))) {
|
|
269
|
+
low.set(parent, nodeLow);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
if (nodeLow === index.get(node)) {
|
|
273
|
+
const id = nextComponent++;
|
|
274
|
+
let member;
|
|
275
|
+
do {
|
|
276
|
+
member = /** @type {Module} */ (componentStack.pop());
|
|
277
|
+
onStack.delete(member);
|
|
278
|
+
componentOf.set(member, id);
|
|
279
|
+
} while (member !== node);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// Reader and target evaluate together exactly when they share a component.
|
|
284
|
+
for (const [origin, target] of bindingReads) {
|
|
285
|
+
if (
|
|
286
|
+
origin === target ||
|
|
287
|
+
componentOf.get(origin) === componentOf.get(target)
|
|
288
|
+
) {
|
|
289
|
+
inCycle.add(target);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return inCycle;
|
|
293
|
+
};
|
|
294
|
+
|
|
171
295
|
module.exports.InlinedUsedName = InlinedUsedName;
|
|
172
296
|
module.exports.InlinedValue = InlinedValue;
|
|
173
297
|
module.exports.MAX_INLINE_BYTES = MAX_INLINE_BYTES;
|
|
174
298
|
module.exports.enableInlineExports = enableInlineExports;
|
|
299
|
+
module.exports.findModulesInCycles = findModulesInCycles;
|
|
175
300
|
module.exports.isExportInlined = isExportInlined;
|
|
176
301
|
module.exports.isInlineEnabled = isInlineEnabled;
|
|
177
302
|
module.exports.isInlineExportsEnabled = isInlineExportsEnabled;
|
|
@@ -8,13 +8,12 @@
|
|
|
8
8
|
const { UsageState } = require("../ExportsInfo");
|
|
9
9
|
const JavascriptParser = require("../javascript/JavascriptParser");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
14
|
-
/** @
|
|
15
|
-
/** @
|
|
16
|
-
/** @
|
|
17
|
-
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
|
+
/** @import Dependency, { GetConditionFn } from "../Dependency" */
|
|
13
|
+
/** @import Module from "../Module" */
|
|
14
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
15
|
+
/** @import { ParserState } from "../Parser" */
|
|
16
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
18
17
|
|
|
19
18
|
/** @typedef {boolean | ((compilation: Compilation, module: Module) => boolean)} PureCondition */
|
|
20
19
|
/** @typedef {Set<string | TopLevelSymbol>} InnerGraphValueSet */
|
|
@@ -135,6 +134,15 @@ function isDependencyUsedByExports(
|
|
|
135
134
|
return true;
|
|
136
135
|
}
|
|
137
136
|
|
|
137
|
+
/**
|
|
138
|
+
* One condition per module graph rather than per dependency. The dependency the
|
|
139
|
+
* condition was built for is always the one on the connection it is called with
|
|
140
|
+
* (`ModuleGraph#setResolvedModule` is the only caller of `getCondition`, and it
|
|
141
|
+
* pairs the two), so it can be read off the connection instead of captured.
|
|
142
|
+
* @type {WeakMap<ModuleGraph, GetConditionFn>}
|
|
143
|
+
*/
|
|
144
|
+
const usedByExportsConditions = new WeakMap();
|
|
145
|
+
|
|
138
146
|
/**
|
|
139
147
|
* Returns dependency condition
|
|
140
148
|
* @param {Dependency} dependency the dependency
|
|
@@ -152,14 +160,22 @@ module.exports.getDependencyUsedByExportsCondition = (
|
|
|
152
160
|
return false;
|
|
153
161
|
case true:
|
|
154
162
|
return null;
|
|
155
|
-
default:
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
163
|
+
default: {
|
|
164
|
+
const existing = usedByExportsConditions.get(moduleGraph);
|
|
165
|
+
if (existing !== undefined) return existing;
|
|
166
|
+
/** @type {GetConditionFn} */
|
|
167
|
+
const condition = (connection, runtime) => {
|
|
168
|
+
const dep = /** @type {Dependency} */ (connection.dependency);
|
|
169
|
+
return isDependencyUsedByExports(
|
|
170
|
+
dep,
|
|
171
|
+
/** @type {DependencyWithUsedByExports} */ (dep).usedByExports,
|
|
160
172
|
moduleGraph,
|
|
161
173
|
runtime
|
|
162
174
|
);
|
|
175
|
+
};
|
|
176
|
+
usedByExportsConditions.set(moduleGraph, condition);
|
|
177
|
+
return condition;
|
|
178
|
+
}
|
|
163
179
|
}
|
|
164
180
|
};
|
|
165
181
|
|
|
@@ -17,24 +17,29 @@ const HarmonyImportSideEffectDependency = require("../dependencies/HarmonyImport
|
|
|
17
17
|
const PureExpressionDependency = require("../dependencies/PureExpressionDependency");
|
|
18
18
|
const { getInnerGraphUtils, topLevelSymbolTag } = require("./InnerGraph");
|
|
19
19
|
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
/** @
|
|
20
|
+
/**
|
|
21
|
+
* @import {
|
|
22
|
+
* CallExpression,
|
|
23
|
+
* ClassDeclaration,
|
|
24
|
+
* ClassExpression,
|
|
25
|
+
* Expression,
|
|
26
|
+
* MaybeNamedClassDeclaration,
|
|
27
|
+
* MaybeNamedFunctionDeclaration,
|
|
28
|
+
* Node,
|
|
29
|
+
* VariableDeclarator
|
|
30
|
+
* } from "estree"
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* @import {
|
|
34
|
+
* JavascriptParserOptions
|
|
35
|
+
* } from "../../declarations/WebpackOptions"
|
|
36
|
+
*/
|
|
37
|
+
/** @import Compilation from "../Compilation" */
|
|
38
|
+
/** @import Compiler from "../Compiler" */
|
|
39
|
+
/** @import Dependency from "../Dependency" */
|
|
40
|
+
/** @import Module from "../Module" */
|
|
41
|
+
/** @import JavascriptParser, { Range } from "../javascript/JavascriptParser" */
|
|
42
|
+
/** @import { TopLevelSymbol } from "./InnerGraph" */
|
|
38
43
|
|
|
39
44
|
const PLUGIN_NAME = "InnerGraphPlugin";
|
|
40
45
|
const impureVariableDeclarationKinds = new Set(["using", "await using"]);
|
|
@@ -9,9 +9,13 @@ const { STAGE_ADVANCED } = require("../OptimizationStages");
|
|
|
9
9
|
const LazyBucketSortedSet = require("../util/LazyBucketSortedSet");
|
|
10
10
|
const { compareChunks } = require("../util/comparators");
|
|
11
11
|
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
/**
|
|
13
|
+
* @import {
|
|
14
|
+
* LimitChunkCountPluginOptions
|
|
15
|
+
* } from "../../declarations/plugins/optimize/LimitChunkCountPlugin"
|
|
16
|
+
*/
|
|
17
|
+
/** @import Chunk from "../Chunk" */
|
|
18
|
+
/** @import Compiler from "../Compiler" */
|
|
15
19
|
|
|
16
20
|
/**
|
|
17
21
|
* Defines the chunk combination type used by this module.
|
|
@@ -14,10 +14,9 @@ const {
|
|
|
14
14
|
const { assignDeterministicIds } = require("../ids/IdHelpers");
|
|
15
15
|
const { compareSelect, compareStringsNumeric } = require("../util/comparators");
|
|
16
16
|
|
|
17
|
-
/** @
|
|
18
|
-
/** @
|
|
19
|
-
/** @
|
|
20
|
-
/** @typedef {import("../util/concatenate").UsedNames} UsedNames */
|
|
17
|
+
/** @import Compiler from "../Compiler" */
|
|
18
|
+
/** @import ExportsInfo, { ExportInfo } from "../ExportsInfo" */
|
|
19
|
+
/** @import { UsedNames } from "../util/concatenate" */
|
|
21
20
|
|
|
22
21
|
/**
|
|
23
22
|
* Defines the comparator type used by this module.
|
|
@@ -44,7 +43,7 @@ const canMangle = (exportsInfo) => {
|
|
|
44
43
|
};
|
|
45
44
|
|
|
46
45
|
// Sort by name
|
|
47
|
-
/** @type {Comparator<ExportInfo
|
|
46
|
+
/** @type {Comparator<InstanceType<ExportInfo>>} */
|
|
48
47
|
const comparator = compareSelect((e) => e.name, compareStringsNumeric);
|
|
49
48
|
/**
|
|
50
49
|
* Mangle exports info.
|
|
@@ -57,7 +56,7 @@ const mangleExportsInfo = (deterministic, exportsInfo, isNamespace) => {
|
|
|
57
56
|
if (!canMangle(exportsInfo)) return;
|
|
58
57
|
/** @type {UsedNames} */
|
|
59
58
|
const usedNames = new Set();
|
|
60
|
-
/** @type {ExportInfo[]} */
|
|
59
|
+
/** @type {InstanceType<ExportInfo>[]} */
|
|
61
60
|
const mangleableExports = [];
|
|
62
61
|
|
|
63
62
|
// Avoid to renamed exports that are not provided when
|
|
@@ -130,9 +129,9 @@ const mangleExportsInfo = (deterministic, exportsInfo, isNamespace) => {
|
|
|
130
129
|
usedNames.size
|
|
131
130
|
);
|
|
132
131
|
} else {
|
|
133
|
-
/** @type {ExportInfo[]} */
|
|
132
|
+
/** @type {InstanceType<ExportInfo>[]} */
|
|
134
133
|
const usedExports = [];
|
|
135
|
-
/** @type {ExportInfo[]} */
|
|
134
|
+
/** @type {InstanceType<ExportInfo>[]} */
|
|
136
135
|
const unusedExports = [];
|
|
137
136
|
for (const exportInfo of mangleableExports) {
|
|
138
137
|
if (exportInfo.getUsed(undefined) === UsageState.Unused) {
|
|
@@ -8,9 +8,13 @@
|
|
|
8
8
|
const { STAGE_BASIC } = require("../OptimizationStages");
|
|
9
9
|
const { runtimeEqual } = require("../util/runtime");
|
|
10
10
|
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
/**
|
|
12
|
+
* @import {
|
|
13
|
+
* MergeDuplicateChunksPluginOptions
|
|
14
|
+
* } from "../../declarations/plugins/optimize/MergeDuplicateChunksPlugin"
|
|
15
|
+
*/
|
|
16
|
+
/** @import Compiler from "../Compiler" */
|
|
17
|
+
/** @import Chunk from "../Chunk" */
|
|
14
18
|
|
|
15
19
|
const PLUGIN_NAME = "MergeDuplicateChunksPlugin";
|
|
16
20
|
|
|
@@ -7,9 +7,13 @@
|
|
|
7
7
|
|
|
8
8
|
const { STAGE_ADVANCED } = require("../OptimizationStages");
|
|
9
9
|
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
/**
|
|
11
|
+
* @import {
|
|
12
|
+
* MinChunkSizePluginOptions
|
|
13
|
+
* } from "../../declarations/plugins/optimize/MinChunkSizePlugin"
|
|
14
|
+
*/
|
|
15
|
+
/** @import Chunk from "../Chunk" */
|
|
16
|
+
/** @import Compiler from "../Compiler" */
|
|
13
17
|
|
|
14
18
|
const PLUGIN_NAME = "MinChunkSizePlugin";
|
|
15
19
|
|
|
@@ -12,10 +12,10 @@ const Module = require("../Module");
|
|
|
12
12
|
const ModuleGraph = require("../ModuleGraph");
|
|
13
13
|
const { JAVASCRIPT_TYPE } = require("../ModuleSourceTypeConstants");
|
|
14
14
|
const { STAGE_DEFAULT } = require("../OptimizationStages");
|
|
15
|
-
const CommonJsSelfReferenceDependency = require("../dependencies/CommonJsSelfReferenceDependency");
|
|
16
15
|
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
|
|
17
16
|
const { ImportPhaseUtils } = require("../dependencies/ImportPhase");
|
|
18
17
|
const { compareModulesByIdentifier } = require("../util/comparators");
|
|
18
|
+
const { isCommonJsConcatenationEnabled } = require("../util/concatenate");
|
|
19
19
|
const {
|
|
20
20
|
filterRuntime,
|
|
21
21
|
intersectRuntime,
|
|
@@ -25,13 +25,12 @@ const {
|
|
|
25
25
|
} = require("../util/runtime");
|
|
26
26
|
const ConcatenatedModule = require("./ConcatenatedModule");
|
|
27
27
|
|
|
28
|
-
/** @
|
|
29
|
-
/** @
|
|
30
|
-
/** @
|
|
31
|
-
/** @
|
|
32
|
-
/** @
|
|
33
|
-
/** @
|
|
34
|
-
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
28
|
+
/** @import Chunk from "../Chunk" */
|
|
29
|
+
/** @import Compilation from "../Compilation" */
|
|
30
|
+
/** @import Compiler from "../Compiler" */
|
|
31
|
+
/** @import { BuildInfo, BuildMeta } from "../Module" */
|
|
32
|
+
/** @import RequestShortener from "../RequestShortener" */
|
|
33
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
35
34
|
|
|
36
35
|
/** @typedef {Module | ((requestShortener: RequestShortener) => string)} Problem */
|
|
37
36
|
|
|
@@ -87,12 +86,19 @@ const cacheFailure = (failureCache, statistics, statKey, module, problem) => {
|
|
|
87
86
|
return problem;
|
|
88
87
|
};
|
|
89
88
|
|
|
89
|
+
// Read back by `performance.scopeHoistingBailouts` to tell these reasons apart
|
|
90
|
+
// from the other kinds `getOptimizationBailout` collects.
|
|
91
|
+
const BAILOUT_PREFIX = "ModuleConcatenation bailout: ";
|
|
92
|
+
|
|
93
|
+
// A root's reason for rejecting another module, rather than the module's own.
|
|
94
|
+
const REJECTED_PREFIX = "Cannot concat with ";
|
|
95
|
+
|
|
90
96
|
/**
|
|
91
97
|
* Format bailout reason.
|
|
92
98
|
* @param {string} msg message
|
|
93
99
|
* @returns {string} formatted message
|
|
94
100
|
*/
|
|
95
|
-
const formatBailoutReason = (msg) =>
|
|
101
|
+
const formatBailoutReason = (msg) => `${BAILOUT_PREFIX}${msg}`;
|
|
96
102
|
|
|
97
103
|
const PLUGIN_NAME = "ModuleConcatenationPlugin";
|
|
98
104
|
|
|
@@ -160,7 +166,7 @@ class ModuleConcatenationPlugin {
|
|
|
160
166
|
const formatBailoutWarning = (module, problem) => (requestShortener) => {
|
|
161
167
|
if (typeof problem === "function") {
|
|
162
168
|
return formatBailoutReason(
|
|
163
|
-
|
|
169
|
+
`${REJECTED_PREFIX}${module.readableIdentifier(
|
|
164
170
|
requestShortener
|
|
165
171
|
)}: ${problem(requestShortener)}`
|
|
166
172
|
);
|
|
@@ -169,13 +175,13 @@ class ModuleConcatenationPlugin {
|
|
|
169
175
|
const reasonWithPrefix = reason ? `: ${reason}` : "";
|
|
170
176
|
if (module === problem) {
|
|
171
177
|
return formatBailoutReason(
|
|
172
|
-
|
|
178
|
+
`${REJECTED_PREFIX}${module.readableIdentifier(
|
|
173
179
|
requestShortener
|
|
174
180
|
)}${reasonWithPrefix}`
|
|
175
181
|
);
|
|
176
182
|
}
|
|
177
183
|
return formatBailoutReason(
|
|
178
|
-
|
|
184
|
+
`${REJECTED_PREFIX}${module.readableIdentifier(
|
|
179
185
|
requestShortener
|
|
180
186
|
)} because of ${problem.readableIdentifier(
|
|
181
187
|
requestShortener
|
|
@@ -197,16 +203,14 @@ class ModuleConcatenationPlugin {
|
|
|
197
203
|
const relevantModules = [];
|
|
198
204
|
/** @type {Set<Module>} */
|
|
199
205
|
const possibleInners = new Set();
|
|
200
|
-
|
|
201
|
-
|
|
206
|
+
// commonjs concatenation defaults to on; { commonjs: false } opts out
|
|
207
|
+
const concatenateCommonJsModules = isCommonJsConcatenationEnabled(
|
|
208
|
+
compilation.options.optimization.concatenateModules
|
|
209
|
+
);
|
|
202
210
|
const context = {
|
|
203
211
|
chunkGraph,
|
|
204
212
|
moduleGraph,
|
|
205
|
-
|
|
206
|
-
concatenateCommonJsModules:
|
|
207
|
-
typeof concatenateModules === "object"
|
|
208
|
-
? concatenateModules.commonjs !== false
|
|
209
|
-
: concatenateModules === true
|
|
213
|
+
concatenateCommonJsModules
|
|
210
214
|
};
|
|
211
215
|
const deferEnabled = compilation.options.experiments.deferImport;
|
|
212
216
|
logger.time("select relevant modules");
|
|
@@ -531,7 +535,10 @@ class ModuleConcatenationPlugin {
|
|
|
531
535
|
c.originModule === m &&
|
|
532
536
|
!(
|
|
533
537
|
c.dependency &&
|
|
534
|
-
Dependency.canConcatenate(
|
|
538
|
+
Dependency.canConcatenate(
|
|
539
|
+
c.dependency,
|
|
540
|
+
concatenateCommonJsModules
|
|
541
|
+
) &&
|
|
535
542
|
modules.has(c.module)
|
|
536
543
|
)
|
|
537
544
|
);
|
|
@@ -575,7 +582,10 @@ class ModuleConcatenationPlugin {
|
|
|
575
582
|
c.module === rootModule ? c.originModule : c.module;
|
|
576
583
|
const innerConnection =
|
|
577
584
|
c.dependency &&
|
|
578
|
-
Dependency.canConcatenate(
|
|
585
|
+
Dependency.canConcatenate(
|
|
586
|
+
c.dependency,
|
|
587
|
+
concatenateCommonJsModules
|
|
588
|
+
) &&
|
|
579
589
|
modules.has(/** @type {Module} */ (otherModule));
|
|
580
590
|
return !innerConnection;
|
|
581
591
|
}
|
|
@@ -627,11 +637,14 @@ class ModuleConcatenationPlugin {
|
|
|
627
637
|
*/
|
|
628
638
|
_getImports(compilation, module, runtime) {
|
|
629
639
|
const moduleGraph = compilation.moduleGraph;
|
|
640
|
+
const concatenateCommonJsModules = isCommonJsConcatenationEnabled(
|
|
641
|
+
compilation.options.optimization.concatenateModules
|
|
642
|
+
);
|
|
630
643
|
/** @type {Set<Module>} */
|
|
631
644
|
const set = new Set();
|
|
632
645
|
for (const dep of module.dependencies) {
|
|
633
646
|
// Get reference info only for dependencies that support concatenation
|
|
634
|
-
if (!Dependency.canConcatenate(dep)) continue;
|
|
647
|
+
if (!Dependency.canConcatenate(dep, concatenateCommonJsModules)) continue;
|
|
635
648
|
|
|
636
649
|
const connection = moduleGraph.getConnection(dep);
|
|
637
650
|
// Reference is valid and has a module
|
|
@@ -821,7 +834,7 @@ class ModuleConcatenationPlugin {
|
|
|
821
834
|
}
|
|
822
835
|
}
|
|
823
836
|
|
|
824
|
-
/** @type {Map<Module, ReadonlyArray<ModuleGraph.ModuleGraphConnection
|
|
837
|
+
/** @type {Map<Module, ReadonlyArray<InstanceType<ModuleGraph.ModuleGraphConnection>>>} */
|
|
825
838
|
const incomingConnectionsFromModules = new Map();
|
|
826
839
|
for (const [originModule, connections] of incomingConnections) {
|
|
827
840
|
if (originModule) {
|
|
@@ -883,32 +896,32 @@ class ModuleConcatenationPlugin {
|
|
|
883
896
|
);
|
|
884
897
|
}
|
|
885
898
|
|
|
886
|
-
|
|
887
|
-
|
|
899
|
+
const concatenateCommonJsModules = isCommonJsConcatenationEnabled(
|
|
900
|
+
compilation.options.optimization.concatenateModules
|
|
901
|
+
);
|
|
902
|
+
/** @type {Map<Module, ReadonlyArray<InstanceType<ModuleGraph.ModuleGraphConnection>>>} */
|
|
903
|
+
const nonTargetConnections = new Map();
|
|
888
904
|
for (const [originModule, connections] of incomingConnectionsFromModules) {
|
|
889
905
|
const selected = connections.filter(
|
|
890
906
|
(connection) =>
|
|
891
907
|
!connection.dependency ||
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
originModule === module &&
|
|
897
|
-
connection.dependency instanceof CommonJsSelfReferenceDependency
|
|
898
|
-
))
|
|
908
|
+
!Dependency.canConcatenate(
|
|
909
|
+
connection.dependency,
|
|
910
|
+
concatenateCommonJsModules
|
|
911
|
+
)
|
|
899
912
|
);
|
|
900
913
|
if (selected.length > 0) {
|
|
901
|
-
|
|
914
|
+
nonTargetConnections.set(originModule, selected);
|
|
902
915
|
}
|
|
903
916
|
}
|
|
904
|
-
if (
|
|
917
|
+
if (nonTargetConnections.size > 0) {
|
|
905
918
|
/**
|
|
906
919
|
* Returns problem description.
|
|
907
920
|
* @param {RequestShortener} requestShortener request shortener
|
|
908
921
|
* @returns {string} problem description
|
|
909
922
|
*/
|
|
910
923
|
const problem = (requestShortener) => {
|
|
911
|
-
const names = [...
|
|
924
|
+
const names = [...nonTargetConnections]
|
|
912
925
|
.map(
|
|
913
926
|
([originModule, connections]) =>
|
|
914
927
|
`${originModule.readableIdentifier(
|
|
@@ -1142,4 +1155,7 @@ class ConcatConfiguration {
|
|
|
1142
1155
|
}
|
|
1143
1156
|
}
|
|
1144
1157
|
|
|
1158
|
+
ModuleConcatenationPlugin.BAILOUT_PREFIX = BAILOUT_PREFIX;
|
|
1159
|
+
ModuleConcatenationPlugin.REJECTED_PREFIX = REJECTED_PREFIX;
|
|
1160
|
+
|
|
1145
1161
|
module.exports = ModuleConcatenationPlugin;
|