@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
|
@@ -13,12 +13,16 @@ const { compareSelect, compareStrings } = require("../util/comparators");
|
|
|
13
13
|
const createHash = require("../util/createHash");
|
|
14
14
|
const createHooksRegistry = require("../util/createHooksRegistry");
|
|
15
15
|
|
|
16
|
-
/**
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
/**
|
|
17
|
+
* @import {
|
|
18
|
+
* HashFunction,
|
|
19
|
+
* HashDigest
|
|
20
|
+
* } from "../../declarations/WebpackOptions"
|
|
21
|
+
*/
|
|
22
|
+
/** @import { Source } from "webpack-sources" */
|
|
23
|
+
/** @import { Etag } from "../Cache" */
|
|
24
|
+
/** @import { AssetInfo } from "../Compilation" */
|
|
25
|
+
/** @import Compiler from "../Compiler" */
|
|
22
26
|
/** @typedef {typeof import("../util/Hash")} Hash */
|
|
23
27
|
|
|
24
28
|
/**
|
|
@@ -341,47 +345,68 @@ ${referencingAssets
|
|
|
341
345
|
}
|
|
342
346
|
return hashes;
|
|
343
347
|
};
|
|
348
|
+
// Tarjan: hashes naming each other come out as one group where a chain
|
|
349
|
+
// walk would never end, and groups arrive dependencies-first as needed.
|
|
350
|
+
/** @type {string[][]} */
|
|
351
|
+
const groupsInOrder = [];
|
|
352
|
+
/** @type {Map<string, number>} */
|
|
353
|
+
const indexOf = new Map();
|
|
354
|
+
/** @type {Map<string, number>} */
|
|
355
|
+
const lowOf = new Map();
|
|
356
|
+
/** @type {Set<string>} */
|
|
357
|
+
const onStack = new Set();
|
|
358
|
+
/** @type {string[]} */
|
|
359
|
+
const stack = [];
|
|
344
360
|
/**
|
|
345
|
-
*
|
|
361
|
+
* Visits one hash and everything its assets reference.
|
|
346
362
|
* @param {string} hash the hash
|
|
347
|
-
* @returns {
|
|
363
|
+
* @returns {void}
|
|
348
364
|
*/
|
|
349
|
-
const
|
|
350
|
-
const
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
)
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
for (const hash of hashToAssets.keys()) {
|
|
359
|
-
/**
|
|
360
|
-
* Processes the provided hash.
|
|
361
|
-
* @param {string} hash the hash
|
|
362
|
-
* @param {Set<string>} stack stack of hashes
|
|
363
|
-
*/
|
|
364
|
-
const add = (hash, stack) => {
|
|
365
|
-
const deps = getDependencies(hash);
|
|
366
|
-
if (!deps) return;
|
|
367
|
-
stack.add(hash);
|
|
365
|
+
const strongConnect = (hash) => {
|
|
366
|
+
const index = indexOf.size;
|
|
367
|
+
indexOf.set(hash, index);
|
|
368
|
+
lowOf.set(hash, index);
|
|
369
|
+
stack.push(hash);
|
|
370
|
+
onStack.add(hash);
|
|
371
|
+
// An unowned reference reports the caching problem and stays a leaf.
|
|
372
|
+
const deps = getDependencies(hash);
|
|
373
|
+
if (deps) {
|
|
368
374
|
for (const dep of deps) {
|
|
369
|
-
if (
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
375
|
+
if (!indexOf.has(dep)) {
|
|
376
|
+
strongConnect(dep);
|
|
377
|
+
lowOf.set(
|
|
378
|
+
hash,
|
|
379
|
+
Math.min(
|
|
380
|
+
/** @type {number} */ (lowOf.get(hash)),
|
|
381
|
+
/** @type {number} */ (lowOf.get(dep))
|
|
382
|
+
)
|
|
383
|
+
);
|
|
384
|
+
} else if (onStack.has(dep)) {
|
|
385
|
+
lowOf.set(
|
|
386
|
+
hash,
|
|
387
|
+
Math.min(
|
|
388
|
+
/** @type {number} */ (lowOf.get(hash)),
|
|
389
|
+
/** @type {number} */ (indexOf.get(dep))
|
|
390
|
+
)
|
|
376
391
|
);
|
|
377
392
|
}
|
|
378
|
-
add(dep, stack);
|
|
379
393
|
}
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
394
|
+
}
|
|
395
|
+
if (lowOf.get(hash) === indexOf.get(hash)) {
|
|
396
|
+
/** @type {string[]} */
|
|
397
|
+
const group = [];
|
|
398
|
+
/** @type {string} */
|
|
399
|
+
let member;
|
|
400
|
+
do {
|
|
401
|
+
member = /** @type {string} */ (stack.pop());
|
|
402
|
+
onStack.delete(member);
|
|
403
|
+
if (hashToAssets.has(member)) group.push(member);
|
|
404
|
+
} while (member !== hash);
|
|
405
|
+
if (group.length > 0) groupsInOrder.push(group);
|
|
406
|
+
}
|
|
407
|
+
};
|
|
408
|
+
for (const hash of hashToAssets.keys()) {
|
|
409
|
+
if (!indexOf.has(hash)) strongConnect(hash);
|
|
385
410
|
}
|
|
386
411
|
/** @type {Map<string, string>} */
|
|
387
412
|
const hashToNewHash = new Map();
|
|
@@ -470,7 +495,62 @@ ${referencingAssets
|
|
|
470
495
|
};
|
|
471
496
|
/** @type {Comparator<AssetInfoForRealContentHash>} */
|
|
472
497
|
const comparator = compareSelect((a) => a.name, compareStrings);
|
|
473
|
-
for (const
|
|
498
|
+
for (const group of groupsInOrder) {
|
|
499
|
+
// A cycle is assigned as one group: members are told apart by stable
|
|
500
|
+
// markers, so the group hashes to a fixed point instead of chasing one.
|
|
501
|
+
if (group.length > 1) {
|
|
502
|
+
const members = group.sort();
|
|
503
|
+
/** @type {Map<string, string>} */
|
|
504
|
+
const markerOf = new Map(
|
|
505
|
+
members.map((hash, i) => [hash, `|webpack/scc/${i}|`])
|
|
506
|
+
);
|
|
507
|
+
for (let i = 0; i < members.length; i++) {
|
|
508
|
+
const oldHash = members[i];
|
|
509
|
+
const memberAssets =
|
|
510
|
+
/** @type {AssetInfoForRealContentHash[]} */
|
|
511
|
+
(hashToAssets.get(oldHash));
|
|
512
|
+
memberAssets.sort(comparator);
|
|
513
|
+
const hash = createHash(this._hashFunction);
|
|
514
|
+
if (compilation.outputOptions.hashSalt) {
|
|
515
|
+
hash.update(compilation.outputOptions.hashSalt);
|
|
516
|
+
}
|
|
517
|
+
// Two members can normalize to the same text; the position keeps
|
|
518
|
+
// their hashes apart, and sorting keeps the position stable.
|
|
519
|
+
hash.update(`${i}`);
|
|
520
|
+
for (const asset of memberAssets) {
|
|
521
|
+
if (Buffer.isBuffer(asset.content)) {
|
|
522
|
+
hash.update(asset.content);
|
|
523
|
+
continue;
|
|
524
|
+
}
|
|
525
|
+
const withoutOwn =
|
|
526
|
+
/** @type {Hashes} */
|
|
527
|
+
(asset.ownHashes).has(oldHash);
|
|
528
|
+
hash.update(
|
|
529
|
+
asset.content.replace(hashRegExp, (matched) => {
|
|
530
|
+
// Its own occurrences vanish, exactly as a lone hash's do.
|
|
531
|
+
if (
|
|
532
|
+
withoutOwn &&
|
|
533
|
+
/** @type {Hashes} */ (asset.ownHashes).has(matched)
|
|
534
|
+
) {
|
|
535
|
+
return "";
|
|
536
|
+
}
|
|
537
|
+
const marker = markerOf.get(matched);
|
|
538
|
+
if (marker !== undefined) return marker;
|
|
539
|
+
const mapped = hashToNewHash.get(matched);
|
|
540
|
+
return mapped === undefined ? matched : mapped;
|
|
541
|
+
})
|
|
542
|
+
);
|
|
543
|
+
}
|
|
544
|
+
const digest = hash.digest(
|
|
545
|
+
/** @type {HashDigest} */ (
|
|
546
|
+
hashToDigest.get(oldHash) || this._hashDigest
|
|
547
|
+
)
|
|
548
|
+
);
|
|
549
|
+
hashToNewHash.set(oldHash, digest.slice(0, oldHash.length));
|
|
550
|
+
}
|
|
551
|
+
continue;
|
|
552
|
+
}
|
|
553
|
+
const oldHash = group[0];
|
|
474
554
|
const assets =
|
|
475
555
|
/** @type {AssetInfoForRealContentHash[]} */
|
|
476
556
|
(hashToAssets.get(oldHash));
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
const { STAGE_ADVANCED, STAGE_BASIC } = require("../OptimizationStages");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
10
|
+
/** @import Chunk from "../Chunk" */
|
|
11
|
+
/** @import Compiler from "../Compiler" */
|
|
12
12
|
|
|
13
13
|
const PLUGIN_NAME = "RemoveEmptyChunksPlugin";
|
|
14
14
|
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
|
|
8
8
|
const { STAGE_BASIC } = require("../OptimizationStages");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
10
|
+
/** @import Chunk from "../Chunk" */
|
|
11
|
+
/** @import ChunkGroup from "../ChunkGroup" */
|
|
12
|
+
/** @import Compiler from "../Compiler" */
|
|
13
|
+
/** @import Module from "../Module" */
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Intersects multiple masks represented as bigints
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
/** @
|
|
9
|
-
/** @
|
|
8
|
+
/** @import { EntryData } from "../Compilation" */
|
|
9
|
+
/** @import Compiler from "../Compiler" */
|
|
10
10
|
|
|
11
11
|
const PLUGIN_NAME = "RuntimeChunkPlugin";
|
|
12
12
|
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const glob2regexp = require("watchpack").util.globToRegExp;
|
|
9
8
|
const {
|
|
10
9
|
JAVASCRIPT_MODULE_TYPE_AUTO,
|
|
11
10
|
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
|
@@ -17,26 +16,41 @@ const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency
|
|
|
17
16
|
const HarmonyImportSpecifierDependency = require("../dependencies/HarmonyImportSpecifierDependency");
|
|
18
17
|
const { ImportPhaseUtils } = require("../dependencies/ImportPhase");
|
|
19
18
|
const formatLocation = require("../util/formatLocation");
|
|
19
|
+
const { dirname, join, readJson, relative } = require("../util/fs");
|
|
20
|
+
const { getGlobToRegExpSource } = require("../util/globUtils");
|
|
21
|
+
const {
|
|
22
|
+
NODE_MODULES_REGEXP,
|
|
23
|
+
WINDOWS_PATH_SEPARATOR_REGEXP,
|
|
24
|
+
relativePathToRequest
|
|
25
|
+
} = require("../util/identifier");
|
|
20
26
|
const { CompilerHintNotationRegExp } = require("../util/magicComment");
|
|
21
27
|
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
/** @
|
|
32
|
-
/** @
|
|
33
|
-
/**
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
/** @
|
|
39
|
-
/** @
|
|
28
|
+
/**
|
|
29
|
+
* @import {
|
|
30
|
+
* MaybeNamedClassDeclaration,
|
|
31
|
+
* MaybeNamedFunctionDeclaration,
|
|
32
|
+
* ModuleDeclaration,
|
|
33
|
+
* Statement,
|
|
34
|
+
* CallExpression
|
|
35
|
+
* } from "estree"
|
|
36
|
+
*/
|
|
37
|
+
/** @import Compiler from "../Compiler" */
|
|
38
|
+
/** @import Module, { BuildMeta } from "../Module" */
|
|
39
|
+
/**
|
|
40
|
+
* @import {
|
|
41
|
+
* JavascriptModuleBuildInfo
|
|
42
|
+
* } from "../javascript/JavascriptModule"
|
|
43
|
+
*/
|
|
44
|
+
/** @import ModuleGraphConnection from "../ModuleGraphConnection" */
|
|
45
|
+
/** @import { ExportInfo, TargetItemWithConnection } from "../ExportsInfo" */
|
|
46
|
+
/** @import JavascriptParser, { Range } from "../javascript/JavascriptParser" */
|
|
47
|
+
/** @import { InputFileSystem } from "../util/fs" */
|
|
48
|
+
/** @import { CreateData, ResolveData } from "../NormalModuleFactory" */
|
|
49
|
+
/**
|
|
50
|
+
* @import {
|
|
51
|
+
* JavascriptParserOptions
|
|
52
|
+
* } from "../../declarations/WebpackOptions"
|
|
53
|
+
*/
|
|
40
54
|
|
|
41
55
|
/**
|
|
42
56
|
* Defines the export in module type used by this module.
|
|
@@ -46,10 +60,35 @@ const { CompilerHintNotationRegExp } = require("../util/magicComment");
|
|
|
46
60
|
* @property {boolean} checked if the export is conditional
|
|
47
61
|
*/
|
|
48
62
|
|
|
63
|
+
/** @typedef {NonNullable<CreateData["resourceResolveData"]>} ResourceResolveData */
|
|
64
|
+
|
|
49
65
|
/** @typedef {string | boolean | string[] | undefined} SideEffectsFlagValue */
|
|
50
66
|
|
|
51
67
|
/** @typedef {Map<string, RegExp>} CacheItem */
|
|
52
68
|
|
|
69
|
+
/**
|
|
70
|
+
* @typedef {object} ResolvedSideEffectsFlag
|
|
71
|
+
* @property {SideEffectsFlagValue} sideEffects package.json sideEffects value
|
|
72
|
+
* @property {string} relativePath path relative to the owning package root
|
|
73
|
+
*/
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @typedef {object} OwningSideEffectsFlag
|
|
77
|
+
* @property {SideEffectsFlagValue} sideEffects package.json sideEffects value
|
|
78
|
+
* @property {string} packageRoot directory of the declaring package.json
|
|
79
|
+
*/
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* A finished ancestor walk, kept per descriptionFileRoot. The package.json
|
|
83
|
+
* paths it consulted are replayed as dependencies for every module reusing it.
|
|
84
|
+
* @typedef {object} OwningSideEffectsFlagWalk
|
|
85
|
+
* @property {OwningSideEffectsFlag | null} owning declaring package, `null` when the walk found none
|
|
86
|
+
* @property {string[]} read package.json files the walk read
|
|
87
|
+
* @property {string[]} missing package.json files the walk did not find
|
|
88
|
+
*/
|
|
89
|
+
|
|
90
|
+
/** @typedef {Map<string, OwningSideEffectsFlagWalk>} OwningSideEffectsFlagCache */
|
|
91
|
+
|
|
53
92
|
/**
|
|
54
93
|
* Whether a resolved re-export target is reached through an `import defer` edge.
|
|
55
94
|
* Such edges must not be collapsed by the side-effect-free barrel optimization:
|
|
@@ -67,6 +106,21 @@ const isDeferredTargetConnection = (connection) =>
|
|
|
67
106
|
/** @type {WeakMap<Compiler, CacheItem>} */
|
|
68
107
|
const globToRegexpCache = new WeakMap();
|
|
69
108
|
|
|
109
|
+
/** @type {WeakMap<Compiler, OwningSideEffectsFlagCache>} */
|
|
110
|
+
const owningSideEffectsFlagCache = new WeakMap();
|
|
111
|
+
|
|
112
|
+
/** @type {WeakMap<Partial<CreateData>, ResolvedSideEffectsFlag>} */
|
|
113
|
+
const resolvedSideEffectsFlags = new WeakMap();
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Whether a failed ancestor package.json read means nothing is there, as
|
|
117
|
+
* opposed to something being there that cannot be used.
|
|
118
|
+
* @param {NodeJS.ErrnoException | SyntaxError | Error} err error from readJson
|
|
119
|
+
* @returns {boolean} true when no file was found at that path
|
|
120
|
+
*/
|
|
121
|
+
const isMissingPackageJsonError = (err) =>
|
|
122
|
+
"code" in err && err.code === "ENOENT";
|
|
123
|
+
|
|
70
124
|
/**
|
|
71
125
|
* Returns a regular expression.
|
|
72
126
|
* @param {string} glob the pattern
|
|
@@ -79,7 +133,7 @@ const globToRegexp = (glob, cache) => {
|
|
|
79
133
|
if (!glob.includes("/")) {
|
|
80
134
|
glob = `**/${glob}`;
|
|
81
135
|
}
|
|
82
|
-
const regexpSource =
|
|
136
|
+
const regexpSource = getGlobToRegExpSource()(glob);
|
|
83
137
|
const regexp = new RegExp(`^(\\./)?${regexpSource}$`);
|
|
84
138
|
cache.set(glob, regexp);
|
|
85
139
|
return regexp;
|
|
@@ -110,6 +164,144 @@ const notSideEffectsTag = Symbol("NoSideEffects");
|
|
|
110
164
|
/** @type {(target: { module: Module }) => boolean} */
|
|
111
165
|
const RETURNS_FALSE = () => false;
|
|
112
166
|
|
|
167
|
+
/**
|
|
168
|
+
* Resolve sideEffects from the package that declares it, inheriting past a nested
|
|
169
|
+
* package.json that declares none. Globs are rebased on the declaring package root,
|
|
170
|
+
* and each package.json the walk consults becomes a dependency of the resolve.
|
|
171
|
+
* @param {InputFileSystem} fs file system
|
|
172
|
+
* @param {ResolveData} resolveData resolve data
|
|
173
|
+
* @param {string} descriptionFileRoot root directory of the nearest description file
|
|
174
|
+
* @param {OwningSideEffectsFlagCache} owningCache walk cache keyed by descriptionFileRoot
|
|
175
|
+
* @param {(result?: ResolvedSideEffectsFlag) => void} callback callback
|
|
176
|
+
* @returns {void}
|
|
177
|
+
*/
|
|
178
|
+
const resolveSideEffectsFlag = (
|
|
179
|
+
fs,
|
|
180
|
+
resolveData,
|
|
181
|
+
descriptionFileRoot,
|
|
182
|
+
owningCache,
|
|
183
|
+
callback
|
|
184
|
+
) => {
|
|
185
|
+
const resolveInfo = /** @type {ResourceResolveData} */ (
|
|
186
|
+
resolveData.createData.resourceResolveData
|
|
187
|
+
);
|
|
188
|
+
const descriptionFileData =
|
|
189
|
+
/** @type {NonNullable<ResourceResolveData["descriptionFileData"]>} */ (
|
|
190
|
+
resolveInfo.descriptionFileData
|
|
191
|
+
);
|
|
192
|
+
const relativePath = /** @type {string} */ (resolveInfo.relativePath);
|
|
193
|
+
if (descriptionFileData.sideEffects !== undefined) {
|
|
194
|
+
return callback({
|
|
195
|
+
sideEffects: /** @type {SideEffectsFlagValue} */ (
|
|
196
|
+
descriptionFileData.sideEffects
|
|
197
|
+
),
|
|
198
|
+
relativePath
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
// Named package with no sideEffects: do not inherit from outside.
|
|
202
|
+
if (descriptionFileData.name !== undefined) {
|
|
203
|
+
return callback();
|
|
204
|
+
}
|
|
205
|
+
// Only inherit for a file living under node_modules; app-local nests keep shadowing.
|
|
206
|
+
// Read the resolved path so a symlinked package flags all of its files alike.
|
|
207
|
+
if (
|
|
208
|
+
typeof resolveInfo.path !== "string" ||
|
|
209
|
+
!NODE_MODULES_REGEXP.test(resolveInfo.path)
|
|
210
|
+
) {
|
|
211
|
+
return callback();
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// stays in descriptionFileRoot's space, which is the space packageRoot is found in
|
|
215
|
+
const resourcePath = join(fs, descriptionFileRoot, relativePath);
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* @param {OwningSideEffectsFlagWalk} walk finished walk
|
|
219
|
+
* @returns {void}
|
|
220
|
+
*/
|
|
221
|
+
const finishFromWalk = (walk) => {
|
|
222
|
+
for (const file of walk.read) resolveData.fileDependencies.add(file);
|
|
223
|
+
for (const file of walk.missing) resolveData.missingDependencies.add(file);
|
|
224
|
+
const owning = walk.owning;
|
|
225
|
+
if (owning === null) return callback();
|
|
226
|
+
const ancestorRelative = relative(
|
|
227
|
+
fs,
|
|
228
|
+
owning.packageRoot,
|
|
229
|
+
resourcePath
|
|
230
|
+
).replace(WINDOWS_PATH_SEPARATOR_REGEXP, "/");
|
|
231
|
+
return callback({
|
|
232
|
+
sideEffects: owning.sideEffects,
|
|
233
|
+
relativePath: relativePathToRequest(ancestorRelative)
|
|
234
|
+
});
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
const cached = owningCache.get(descriptionFileRoot);
|
|
238
|
+
if (cached !== undefined) {
|
|
239
|
+
return finishFromWalk(cached);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/** @type {string[]} */
|
|
243
|
+
const read = [];
|
|
244
|
+
/** @type {string[]} */
|
|
245
|
+
const missing = [];
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* @param {OwningSideEffectsFlag | null} owning declaring package or null
|
|
249
|
+
* @returns {void}
|
|
250
|
+
*/
|
|
251
|
+
const done = (owning) => {
|
|
252
|
+
/** @type {OwningSideEffectsFlagWalk} */
|
|
253
|
+
const walk = { owning, read, missing };
|
|
254
|
+
owningCache.set(descriptionFileRoot, walk);
|
|
255
|
+
return finishFromWalk(walk);
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
let dir = dirname(fs, descriptionFileRoot);
|
|
259
|
+
|
|
260
|
+
const next = () => {
|
|
261
|
+
const parent = dirname(fs, dir);
|
|
262
|
+
if (!parent || parent === dir) return done(null);
|
|
263
|
+
const baseName = relative(fs, parent, dir).replace(
|
|
264
|
+
WINDOWS_PATH_SEPARATOR_REGEXP,
|
|
265
|
+
"/"
|
|
266
|
+
);
|
|
267
|
+
// Do not inherit an application's sideEffects across an install boundary.
|
|
268
|
+
if (baseName === "node_modules") return done(null);
|
|
269
|
+
|
|
270
|
+
const packageJsonPath = join(fs, dir, "package.json");
|
|
271
|
+
|
|
272
|
+
readJson(fs, packageJsonPath, (err, data) => {
|
|
273
|
+
if (err) {
|
|
274
|
+
if (!isMissingPackageJsonError(err)) {
|
|
275
|
+
// it is there but unreadable, so what it declares is unknown:
|
|
276
|
+
// decline rather than let an outer flag speak for it
|
|
277
|
+
read.push(packageJsonPath);
|
|
278
|
+
return done(null);
|
|
279
|
+
}
|
|
280
|
+
missing.push(packageJsonPath);
|
|
281
|
+
dir = parent;
|
|
282
|
+
return next();
|
|
283
|
+
}
|
|
284
|
+
read.push(packageJsonPath);
|
|
285
|
+
if (!data || typeof data !== "object" || Array.isArray(data)) {
|
|
286
|
+
dir = parent;
|
|
287
|
+
return next();
|
|
288
|
+
}
|
|
289
|
+
if (data.sideEffects !== undefined) {
|
|
290
|
+
return done({
|
|
291
|
+
sideEffects: /** @type {SideEffectsFlagValue} */ (data.sideEffects),
|
|
292
|
+
packageRoot: dir
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
// An unnamed manifest deeper in the package keeps the walk going; a named one
|
|
296
|
+
// is a package of its own, and its silence is its answer.
|
|
297
|
+
if (data.name !== undefined) return done(null);
|
|
298
|
+
dir = parent;
|
|
299
|
+
next();
|
|
300
|
+
});
|
|
301
|
+
};
|
|
302
|
+
next();
|
|
303
|
+
};
|
|
304
|
+
|
|
113
305
|
/**
|
|
114
306
|
* Detects if the module is "pure single-star passthrough": one whose entire export
|
|
115
307
|
* surface is exactly one `export * from "x"` (no named/local/default-bearing
|
|
@@ -159,31 +351,62 @@ class SideEffectsFlagPlugin {
|
|
|
159
351
|
cache = new Map();
|
|
160
352
|
globToRegexpCache.set(compiler.root, cache);
|
|
161
353
|
}
|
|
354
|
+
let owningCache = owningSideEffectsFlagCache.get(compiler.root);
|
|
355
|
+
if (owningCache === undefined) {
|
|
356
|
+
owningCache = new Map();
|
|
357
|
+
owningSideEffectsFlagCache.set(compiler.root, owningCache);
|
|
358
|
+
}
|
|
162
359
|
compiler.hooks.compilation.tap(
|
|
163
360
|
PLUGIN_NAME,
|
|
164
361
|
(compilation, { normalModuleFactory }) => {
|
|
165
362
|
const moduleGraph = compilation.moduleGraph;
|
|
166
|
-
normalModuleFactory.hooks.
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
resolveData
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
363
|
+
normalModuleFactory.hooks.afterResolve.tapAsync(
|
|
364
|
+
PLUGIN_NAME,
|
|
365
|
+
(resolveData, callback) => {
|
|
366
|
+
const inputFileSystem = compiler.inputFileSystem;
|
|
367
|
+
if (!inputFileSystem) return callback();
|
|
368
|
+
const { createData } = resolveData;
|
|
369
|
+
const resolveInfo = createData.resourceResolveData;
|
|
370
|
+
if (
|
|
371
|
+
!resolveInfo ||
|
|
372
|
+
!resolveInfo.descriptionFileData ||
|
|
373
|
+
!resolveInfo.relativePath
|
|
374
|
+
) {
|
|
375
|
+
return callback();
|
|
376
|
+
}
|
|
377
|
+
const descriptionFileRoot =
|
|
378
|
+
resolveInfo.descriptionFileRoot ||
|
|
379
|
+
(resolveInfo.descriptionFilePath
|
|
380
|
+
? dirname(inputFileSystem, resolveInfo.descriptionFilePath)
|
|
381
|
+
: undefined);
|
|
382
|
+
if (descriptionFileRoot === undefined) return callback();
|
|
383
|
+
resolveSideEffectsFlag(
|
|
384
|
+
inputFileSystem,
|
|
385
|
+
resolveData,
|
|
386
|
+
descriptionFileRoot,
|
|
387
|
+
owningCache,
|
|
388
|
+
(resolved) => {
|
|
389
|
+
if (resolved !== undefined) {
|
|
390
|
+
resolvedSideEffectsFlags.set(createData, resolved);
|
|
391
|
+
}
|
|
392
|
+
callback();
|
|
177
393
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
394
|
+
);
|
|
395
|
+
}
|
|
396
|
+
);
|
|
397
|
+
normalModuleFactory.hooks.module.tap(PLUGIN_NAME, (module, data) => {
|
|
398
|
+
const resolved = resolvedSideEffectsFlags.get(data);
|
|
399
|
+
if (resolved !== undefined) {
|
|
400
|
+
if (module.factoryMeta === undefined) {
|
|
401
|
+
module.factoryMeta = {};
|
|
184
402
|
}
|
|
403
|
+
const hasSideEffects = SideEffectsFlagPlugin.moduleHasSideEffects(
|
|
404
|
+
resolved.relativePath,
|
|
405
|
+
resolved.sideEffects,
|
|
406
|
+
/** @type {CacheItem} */ (cache)
|
|
407
|
+
);
|
|
408
|
+
module.factoryMeta.sideEffectFree = !hasSideEffects;
|
|
185
409
|
}
|
|
186
|
-
|
|
187
410
|
return module;
|
|
188
411
|
});
|
|
189
412
|
normalModuleFactory.hooks.module.tap(PLUGIN_NAME, (module, data) => {
|
|
@@ -529,7 +752,7 @@ class SideEffectsFlagPlugin {
|
|
|
529
752
|
// Re-export resolution is idempotent within a pass, so cache it
|
|
530
753
|
// per export info: a shared barrel imported by many modules
|
|
531
754
|
// resolves each name once instead of once per consumer.
|
|
532
|
-
/** @type {Map<ExportInfo
|
|
755
|
+
/** @type {Map<InstanceType<ExportInfo>, TargetItemWithConnection | null>} */
|
|
533
756
|
const reexportTargetCache = new Map();
|
|
534
757
|
|
|
535
758
|
// Dependencies don't change within the pass, so the passthrough
|