webpack 5.109.2 → 5.110.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 +2 -0
- 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 +26 -17
- 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 +117 -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 +50 -13
- 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 +101 -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 +27 -68
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +32 -47
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +19 -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 +138 -82
- 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 +332 -169
- package/lib/RuntimeTemplate.js +2792 -352
- 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 +11 -7
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +187 -92
- 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 +59 -10
- 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 +2 -2
- 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 +255 -79
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +36 -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 +170 -40
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +57 -24
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +168 -88
- 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 +5324 -0
- package/lib/css/syntax.js +9579 -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 +156 -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 +4 -4
- 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 +13 -10
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -63
- 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 +27 -19
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
- package/lib/dependencies/HarmonyImportGuard.js +20 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -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 +37 -29
- 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 +2 -2
- package/lib/dependencies/ImportDependency.js +24 -20
- 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 +49 -35
- 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 +51 -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 +46 -28
- package/lib/dependencies/WorkerDependency.js +28 -22
- package/lib/dependencies/WorkletDependency.js +15 -14
- package/lib/dependencies/getFunctionExpression.js +8 -4
- 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/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/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 +89 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +155 -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 +276 -76
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +282 -162
- 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 +5557 -1155
- 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 +64 -164
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +98 -113
- 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 +37 -15
- 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 +14 -1
- 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 +72 -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 +985 -470
- package/lib/optimize/ConstExportsPlugin.js +11 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +9 -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 +10 -6
- 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 -78
- 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 +1 -1
- 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 +23 -6
- 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 +24 -15
- 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 +7 -7
- package/lib/serialization/ObjectMiddleware.js +11 -6
- 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 +12 -14
- package/lib/url/URLParserPlugin.js +26 -13
- 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 +1050 -24
- package/lib/util/StringXor.js +1 -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 +5 -1
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- 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 +6 -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/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 +41 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +54 -16
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -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 +4 -6
- 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 +101 -19
- package/lib/web/FetchCompileWasmPlugin.js +46 -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 +22 -15
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +670 -36
- 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 +3138 -456
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -16,20 +16,28 @@ const ImportDependency = require("./dependencies/ImportDependency");
|
|
|
16
16
|
const { coreModules } = require("./node/nodeBuiltins");
|
|
17
17
|
const { cachedSetProperty, resolveByProperty } = require("./util/cleverMerge");
|
|
18
18
|
|
|
19
|
-
/** @
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
/** @
|
|
19
|
+
/** @import { ResolveContext } from "enhanced-resolve" */
|
|
20
|
+
/**
|
|
21
|
+
* @import {
|
|
22
|
+
* ResolveOptions,
|
|
23
|
+
* ExternalsType,
|
|
24
|
+
* ExternalItem,
|
|
25
|
+
* ExternalItemValue,
|
|
26
|
+
* ExternalItemObjectKnown,
|
|
27
|
+
* ExternalItemObjectUnknown,
|
|
28
|
+
* ExternalItemInterop,
|
|
29
|
+
* Externals
|
|
30
|
+
* } from "../declarations/WebpackOptions"
|
|
31
|
+
*/
|
|
32
|
+
/** @import Dependency from "./Dependency" */
|
|
33
|
+
/** @import { DependencyMeta, ExternalModuleRequest } from "./ExternalModule" */
|
|
34
|
+
/**
|
|
35
|
+
* @import {
|
|
36
|
+
* IssuerLayer,
|
|
37
|
+
* ModuleFactoryCreateDataContextInfo
|
|
38
|
+
* } from "./ModuleFactory"
|
|
39
|
+
*/
|
|
40
|
+
/** @import NormalModuleFactory from "./NormalModuleFactory" */
|
|
33
41
|
|
|
34
42
|
/** @typedef {((context: string, request: string, callback: (err?: Error | null, result?: string | false, resolveRequest?: import("enhanced-resolve").ResolveRequest) => void) => void)} ExternalItemFunctionDataGetResolveCallbackResult */
|
|
35
43
|
/** @typedef {((context: string, request: string) => Promise<string>)} ExternalItemFunctionDataGetResolveResult */
|
|
@@ -43,6 +51,7 @@ const { cachedSetProperty, resolveByProperty } = require("./util/cleverMerge");
|
|
|
43
51
|
* @property {string} dependencyType the category of the referencing dependency
|
|
44
52
|
* @property {ExternalItemFunctionDataGetResolve} getResolve get a resolve function with the current resolver options
|
|
45
53
|
* @property {string} request the request as written by the user in the require/import expression/statement
|
|
54
|
+
* @property {string} originalRequest same as `request`, except for an element of a context module (a request containing an expression), where it is the request as written by the user instead of the one relative to the resolved context directory
|
|
46
55
|
*/
|
|
47
56
|
|
|
48
57
|
/** @typedef {((data: ExternalItemFunctionData, callback: (err?: (Error | null), result?: ExternalItemValue) => void) => void)} ExternalItemFunctionCallback */
|
|
@@ -115,7 +124,12 @@ const resolveLayer = (obj, layer) => {
|
|
|
115
124
|
return result;
|
|
116
125
|
};
|
|
117
126
|
|
|
118
|
-
|
|
127
|
+
// the keys `ExternalItemValueWithOptions` allows, mirroring the schema
|
|
128
|
+
const OPTIONS_FORM_KEYS = new Set(["external", "sideEffects"]);
|
|
129
|
+
|
|
130
|
+
/** @typedef {string | string[] | boolean | Record<string, string | string[]>} ExternalTargetValue */
|
|
131
|
+
/** @typedef {{ external: ExternalTargetValue, sideEffects?: boolean }} ExternalValueWithOptions */
|
|
132
|
+
/** @typedef {ExternalTargetValue | ExternalValueWithOptions} ExternalValue */
|
|
119
133
|
|
|
120
134
|
const PLUGIN_NAME = "ExternalModuleFactoryPlugin";
|
|
121
135
|
|
|
@@ -145,6 +159,14 @@ class ExternalModuleFactoryPlugin {
|
|
|
145
159
|
const contextInfo = data.contextInfo;
|
|
146
160
|
const dependency = data.dependencies[0];
|
|
147
161
|
const dependencyType = data.dependencyType;
|
|
162
|
+
const request = dependency.request;
|
|
163
|
+
// a context element's request is relative to the resolved directory
|
|
164
|
+
// (`./file.mjs`), externals are written against what the user wrote
|
|
165
|
+
const originalRequest =
|
|
166
|
+
dependency instanceof ContextElementDependency
|
|
167
|
+
? dependency.originalRequest
|
|
168
|
+
: request;
|
|
169
|
+
const hasOriginalRequest = originalRequest !== request;
|
|
148
170
|
|
|
149
171
|
/** @typedef {(err?: Error | null, externalModule?: ExternalModule) => void} HandleExternalCallback */
|
|
150
172
|
|
|
@@ -156,12 +178,33 @@ class ExternalModuleFactoryPlugin {
|
|
|
156
178
|
* @returns {void}
|
|
157
179
|
*/
|
|
158
180
|
const handleExternal = (value, type, callback) => {
|
|
159
|
-
|
|
181
|
+
/** @type {boolean | undefined} */
|
|
182
|
+
let sideEffects;
|
|
183
|
+
/** @type {ExternalTargetValue} */
|
|
184
|
+
let target;
|
|
185
|
+
// the options form carries the target under `external`; a target
|
|
186
|
+
// map holding an `external` type key keeps its own meaning
|
|
187
|
+
if (
|
|
188
|
+
typeof value === "object" &&
|
|
189
|
+
value !== null &&
|
|
190
|
+
!Array.isArray(value) &&
|
|
191
|
+
Object.prototype.hasOwnProperty.call(value, "external") &&
|
|
192
|
+
Object.keys(value).every((key) => OPTIONS_FORM_KEYS.has(key))
|
|
193
|
+
) {
|
|
194
|
+
const withOptions =
|
|
195
|
+
/** @type {ExternalValueWithOptions} */
|
|
196
|
+
(value);
|
|
197
|
+
sideEffects = withOptions.sideEffects;
|
|
198
|
+
target = withOptions.external;
|
|
199
|
+
} else {
|
|
200
|
+
target = /** @type {ExternalTargetValue} */ (value);
|
|
201
|
+
}
|
|
202
|
+
if (target === false) {
|
|
160
203
|
// Not externals, fallback to original factory
|
|
161
204
|
return callback();
|
|
162
205
|
}
|
|
163
|
-
/** @type {
|
|
164
|
-
let externalConfig =
|
|
206
|
+
/** @type {ExternalModuleRequest} */
|
|
207
|
+
let externalConfig = target === true ? originalRequest : target;
|
|
165
208
|
// `interop` is a reserved key on the object form, not a target;
|
|
166
209
|
// pull it out so the rest stays a pure externalsType->request map.
|
|
167
210
|
/** @type {ExternalItemInterop | undefined} */
|
|
@@ -244,8 +287,12 @@ class ExternalModuleFactoryPlugin {
|
|
|
244
287
|
};
|
|
245
288
|
}
|
|
246
289
|
|
|
290
|
+
// a css `url()` reads the url out of the external: no js wrapper
|
|
291
|
+
// TODO webpack 6 drop "css-url" once the alias is removed
|
|
247
292
|
if (
|
|
248
|
-
resolvedType === "asset"
|
|
293
|
+
(resolvedType === "asset" ||
|
|
294
|
+
resolvedType === ASSET_URL_TYPE ||
|
|
295
|
+
resolvedType === "css-url") &&
|
|
249
296
|
dependency instanceof CssUrlDependency
|
|
250
297
|
) {
|
|
251
298
|
dependencyMeta = { sourceType: ASSET_URL_TYPE };
|
|
@@ -256,9 +303,10 @@ class ExternalModuleFactoryPlugin {
|
|
|
256
303
|
new ExternalModule(
|
|
257
304
|
externalConfig,
|
|
258
305
|
resolvedType,
|
|
259
|
-
|
|
306
|
+
originalRequest,
|
|
260
307
|
dependencyMeta,
|
|
261
|
-
interop
|
|
308
|
+
interop,
|
|
309
|
+
sideEffects
|
|
262
310
|
)
|
|
263
311
|
);
|
|
264
312
|
};
|
|
@@ -272,10 +320,11 @@ class ExternalModuleFactoryPlugin {
|
|
|
272
320
|
const handleExternals = (externals, callback) => {
|
|
273
321
|
if (typeof externals === "string") {
|
|
274
322
|
if (
|
|
275
|
-
externals ===
|
|
276
|
-
externals ===
|
|
323
|
+
externals === request ||
|
|
324
|
+
(hasOriginalRequest && externals === originalRequest) ||
|
|
325
|
+
externals === getAlternateCoreModuleRequest(request)
|
|
277
326
|
) {
|
|
278
|
-
return handleExternal(
|
|
327
|
+
return handleExternal(originalRequest, undefined, callback);
|
|
279
328
|
}
|
|
280
329
|
} else if (Array.isArray(externals)) {
|
|
281
330
|
let i = 0;
|
|
@@ -311,8 +360,11 @@ class ExternalModuleFactoryPlugin {
|
|
|
311
360
|
next();
|
|
312
361
|
return;
|
|
313
362
|
} else if (externals instanceof RegExp) {
|
|
314
|
-
if (
|
|
315
|
-
|
|
363
|
+
if (
|
|
364
|
+
externals.test(request) ||
|
|
365
|
+
(hasOriginalRequest && externals.test(originalRequest))
|
|
366
|
+
) {
|
|
367
|
+
return handleExternal(originalRequest, undefined, callback);
|
|
316
368
|
}
|
|
317
369
|
} else if (typeof externals === "function") {
|
|
318
370
|
/**
|
|
@@ -332,17 +384,13 @@ class ExternalModuleFactoryPlugin {
|
|
|
332
384
|
};
|
|
333
385
|
if (externals.length === 3) {
|
|
334
386
|
// TODO webpack 6 remove this
|
|
335
|
-
callDeprecatedExternals(
|
|
336
|
-
externals,
|
|
337
|
-
context,
|
|
338
|
-
dependency.request,
|
|
339
|
-
cb
|
|
340
|
-
);
|
|
387
|
+
callDeprecatedExternals(externals, context, request, cb);
|
|
341
388
|
} else {
|
|
342
389
|
const promise = externals(
|
|
343
390
|
{
|
|
344
391
|
context,
|
|
345
|
-
request
|
|
392
|
+
request,
|
|
393
|
+
originalRequest,
|
|
346
394
|
dependencyType,
|
|
347
395
|
contextInfo,
|
|
348
396
|
getResolve: (options) => (context, request, callback) => {
|
|
@@ -401,21 +449,29 @@ class ExternalModuleFactoryPlugin {
|
|
|
401
449
|
(contextInfo.issuerLayer)
|
|
402
450
|
);
|
|
403
451
|
if (
|
|
452
|
+
Object.prototype.hasOwnProperty.call(resolvedExternals, request)
|
|
453
|
+
) {
|
|
454
|
+
return handleExternal(
|
|
455
|
+
resolvedExternals[request],
|
|
456
|
+
undefined,
|
|
457
|
+
callback
|
|
458
|
+
);
|
|
459
|
+
}
|
|
460
|
+
if (
|
|
461
|
+
hasOriginalRequest &&
|
|
404
462
|
Object.prototype.hasOwnProperty.call(
|
|
405
463
|
resolvedExternals,
|
|
406
|
-
|
|
464
|
+
originalRequest
|
|
407
465
|
)
|
|
408
466
|
) {
|
|
409
467
|
return handleExternal(
|
|
410
|
-
resolvedExternals[
|
|
468
|
+
resolvedExternals[originalRequest],
|
|
411
469
|
undefined,
|
|
412
470
|
callback
|
|
413
471
|
);
|
|
414
472
|
}
|
|
415
473
|
// Fall back to the `node:`-prefixed/unprefixed core module form.
|
|
416
|
-
const alternateRequest = getAlternateCoreModuleRequest(
|
|
417
|
-
dependency.request
|
|
418
|
-
);
|
|
474
|
+
const alternateRequest = getAlternateCoreModuleRequest(request);
|
|
419
475
|
if (
|
|
420
476
|
alternateRequest !== undefined &&
|
|
421
477
|
Object.prototype.hasOwnProperty.call(
|
|
@@ -439,4 +495,7 @@ class ExternalModuleFactoryPlugin {
|
|
|
439
495
|
}
|
|
440
496
|
}
|
|
441
497
|
|
|
498
|
+
ExternalModuleFactoryPlugin.getAlternateCoreModuleRequest =
|
|
499
|
+
getAlternateCoreModuleRequest;
|
|
500
|
+
|
|
442
501
|
module.exports = ExternalModuleFactoryPlugin;
|
package/lib/ExternalsPlugin.js
CHANGED
|
@@ -9,11 +9,15 @@ const { ModuleExternalInitFragment } = require("./ExternalModule");
|
|
|
9
9
|
const ExternalModuleFactoryPlugin = require("./ExternalModuleFactoryPlugin");
|
|
10
10
|
const ConcatenatedModule = require("./optimize/ConcatenatedModule");
|
|
11
11
|
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
/**
|
|
13
|
+
* @import {
|
|
14
|
+
* ExternalsType,
|
|
15
|
+
* Externals
|
|
16
|
+
* } from "../declarations/WebpackOptions"
|
|
17
|
+
*/
|
|
18
|
+
/** @import Compiler from "./Compiler" */
|
|
19
|
+
/** @import { Imported } from "./ExternalModule" */
|
|
20
|
+
/** @import Dependency from "./Dependency" */
|
|
17
21
|
|
|
18
22
|
const PLUGIN_NAME = "ExternalsPlugin";
|
|
19
23
|
|
|
@@ -53,7 +57,7 @@ class ExternalsPlugin {
|
|
|
53
57
|
|
|
54
58
|
const chunkInitFragments = moduleInfo.chunkInitFragments;
|
|
55
59
|
const moduleExternalInitFragments =
|
|
56
|
-
/** @type {ModuleExternalInitFragment[]} */
|
|
60
|
+
/** @type {InstanceType<ModuleExternalInitFragment>[]} */
|
|
57
61
|
(
|
|
58
62
|
chunkInitFragments
|
|
59
63
|
? /** @type {unknown[]} */
|
package/lib/FileSystemInfo.js
CHANGED
|
@@ -10,6 +10,7 @@ const { isAbsolute } = require("path");
|
|
|
10
10
|
const { create: createResolver } = require("enhanced-resolve");
|
|
11
11
|
const asyncLib = require("neo-async");
|
|
12
12
|
const { DEFAULTS } = require("./config/defaults");
|
|
13
|
+
const { collectCjsRequireSpecifiers } = require("./javascript/syntax");
|
|
13
14
|
const AsyncQueue = require("./util/AsyncQueue");
|
|
14
15
|
const StackedCacheMap = require("./util/StackedCacheMap");
|
|
15
16
|
const createHash = require("./util/createHash");
|
|
@@ -18,16 +19,20 @@ const makeSerializable = require("./util/makeSerializable");
|
|
|
18
19
|
const memoize = require("./util/memoize");
|
|
19
20
|
const processAsyncTree = require("./util/processAsyncTree");
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
/** @
|
|
25
|
-
/** @
|
|
26
|
-
/** @
|
|
27
|
-
/** @
|
|
28
|
-
/** @
|
|
29
|
-
/**
|
|
30
|
-
|
|
22
|
+
// only the mjs build-dependency walk needs it
|
|
23
|
+
const getEsModuleLexer = memoize(() => require("es-module-lexer"));
|
|
24
|
+
|
|
25
|
+
/** @import { ResolveRequest, ResolveFunctionAsync } from "enhanced-resolve" */
|
|
26
|
+
/** @import { HashFunction } from "../declarations/WebpackOptions" */
|
|
27
|
+
/** @import { Logger } from "./logging/Logger" */
|
|
28
|
+
/** @import WebpackError from "./errors/WebpackError" */
|
|
29
|
+
/** @import { JsonObject, IStats, InputFileSystem } from "./util/fs" */
|
|
30
|
+
/**
|
|
31
|
+
* @import {
|
|
32
|
+
* ObjectDeserializerContext,
|
|
33
|
+
* ObjectSerializerContext
|
|
34
|
+
* } from "./serialization/ObjectMiddleware"
|
|
35
|
+
*/
|
|
31
36
|
/**
|
|
32
37
|
* Defines the processor callback type used by this module.
|
|
33
38
|
* @template T
|
|
@@ -1235,60 +1240,10 @@ const addAll = (source, target) => {
|
|
|
1235
1240
|
for (const key of source) target.add(key);
|
|
1236
1241
|
};
|
|
1237
1242
|
|
|
1238
|
-
const getEsModuleLexer = memoize(() => require("es-module-lexer"));
|
|
1239
|
-
|
|
1240
|
-
const getAcorn = memoize(/* istanbul ignore next */ () => require("acorn"));
|
|
1241
|
-
|
|
1242
1243
|
// Bun doesn't populate `require.cache` `module.children`, so the CJS build-dependency
|
|
1243
1244
|
// walk needs a source-parsing fallback there. Node/Deno populate it — never pay for it.
|
|
1244
1245
|
const IS_BUN = Boolean(process.versions.bun);
|
|
1245
1246
|
|
|
1246
|
-
/**
|
|
1247
|
-
* Collects static `require("literal")` specifiers from CommonJS source. Used as a
|
|
1248
|
-
* fallback where `require.cache` children aren't populated (e.g. Bun), so build
|
|
1249
|
-
* dependencies of a CJS file are still tracked. Dynamic requires can't be seen here.
|
|
1250
|
-
* @param {string} source source
|
|
1251
|
-
* @returns {Set<string>} required specifiers
|
|
1252
|
-
*/
|
|
1253
|
-
// Bun-only: exercised by BuildDependencies.longtest under the Bun CI job (no coverage upload).
|
|
1254
|
-
/* istanbul ignore next */
|
|
1255
|
-
const parseCjsRequires = (source) => {
|
|
1256
|
-
/** @type {Set<string>} */
|
|
1257
|
-
const requires = new Set();
|
|
1258
|
-
const ast = getAcorn().parse(source, {
|
|
1259
|
-
ecmaVersion: "latest",
|
|
1260
|
-
sourceType: "script",
|
|
1261
|
-
allowReturnOutsideFunction: true
|
|
1262
|
-
});
|
|
1263
|
-
/** @type {EXPECTED_ANY[]} */
|
|
1264
|
-
const stack = [ast];
|
|
1265
|
-
while (stack.length > 0) {
|
|
1266
|
-
const node = stack.pop();
|
|
1267
|
-
if (!node || typeof node.type !== "string") continue;
|
|
1268
|
-
if (
|
|
1269
|
-
node.type === "CallExpression" &&
|
|
1270
|
-
node.callee.type === "Identifier" &&
|
|
1271
|
-
node.callee.name === "require" &&
|
|
1272
|
-
node.arguments.length === 1 &&
|
|
1273
|
-
node.arguments[0].type === "Literal" &&
|
|
1274
|
-
typeof node.arguments[0].value === "string"
|
|
1275
|
-
) {
|
|
1276
|
-
requires.add(node.arguments[0].value);
|
|
1277
|
-
}
|
|
1278
|
-
for (const key of Object.keys(node)) {
|
|
1279
|
-
const value = node[key];
|
|
1280
|
-
if (Array.isArray(value)) {
|
|
1281
|
-
for (const item of value) {
|
|
1282
|
-
if (item && typeof item.type === "string") stack.push(item);
|
|
1283
|
-
}
|
|
1284
|
-
} else if (value && typeof value.type === "string") {
|
|
1285
|
-
stack.push(value);
|
|
1286
|
-
}
|
|
1287
|
-
}
|
|
1288
|
-
}
|
|
1289
|
-
return requires;
|
|
1290
|
-
};
|
|
1291
|
-
|
|
1292
1247
|
/** @typedef {Set<string>} LoggedPaths */
|
|
1293
1248
|
|
|
1294
1249
|
/** @typedef {FileSystemInfoEntry | ExistenceOnlyTimeEntry | "ignore" | null} FileTimestamp */
|
|
@@ -2290,12 +2245,11 @@ class FileSystemInfo {
|
|
|
2290
2245
|
try {
|
|
2291
2246
|
const context = dirname(this.fs, path);
|
|
2292
2247
|
const source = /** @type {Buffer} */ (content).toString();
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2248
|
+
for (const dependency of collectCjsRequireSpecifiers(
|
|
2249
|
+
source
|
|
2250
|
+
)) {
|
|
2296
2251
|
if (dependency.startsWith("node:")) continue;
|
|
2297
2252
|
if (builtinModules.has(dependency)) continue;
|
|
2298
|
-
if (added.has(dependency)) continue;
|
|
2299
2253
|
push({
|
|
2300
2254
|
type: RBDT_RESOLVE_CJS_FILE,
|
|
2301
2255
|
context,
|
|
@@ -2304,7 +2258,6 @@ class FileSystemInfo {
|
|
|
2304
2258
|
expected: false,
|
|
2305
2259
|
issuer: job
|
|
2306
2260
|
});
|
|
2307
|
-
added.add(dependency);
|
|
2308
2261
|
}
|
|
2309
2262
|
} catch (_err) {
|
|
2310
2263
|
// Source we can't parse as CommonJS — ignore its dependencies.
|
|
@@ -4332,12 +4285,17 @@ class FileSystemInfo {
|
|
|
4332
4285
|
/**
|
|
4333
4286
|
* Processes the provided timestamp.
|
|
4334
4287
|
* @param {ContextTimestamp} timestamp timestamp
|
|
4335
|
-
* @param {ContextHash} hash hash
|
|
4288
|
+
* @param {ContextHash | null} hash hash
|
|
4336
4289
|
*/
|
|
4337
4290
|
const finalize = (timestamp, hash) => {
|
|
4291
|
+
// Merging two `null` reads yields `{}`, which reads as "exists, no hash" (#21636)
|
|
4338
4292
|
const result =
|
|
4339
4293
|
/** @type {ContextTimestampAndHash} */
|
|
4340
|
-
(
|
|
4294
|
+
(
|
|
4295
|
+
hash === null || timestamp === "ignore"
|
|
4296
|
+
? hash
|
|
4297
|
+
: { ...timestamp, ...hash }
|
|
4298
|
+
);
|
|
4341
4299
|
this._contextTshs.set(path, result);
|
|
4342
4300
|
callback(null, result);
|
|
4343
4301
|
};
|
|
@@ -4655,5 +4613,6 @@ class FileSystemInfo {
|
|
|
4655
4613
|
}
|
|
4656
4614
|
}
|
|
4657
4615
|
|
|
4616
|
+
FileSystemInfo.Snapshot = Snapshot;
|
|
4617
|
+
|
|
4658
4618
|
module.exports = FileSystemInfo;
|
|
4659
|
-
module.exports.Snapshot = Snapshot;
|
|
@@ -7,9 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
const { getEntryRuntime, mergeRuntimeOwned } = require("./util/runtime");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
12
|
-
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
|
10
|
+
/** @import Compiler from "./Compiler" */
|
|
11
|
+
/** @import { RuntimeSpec } from "./util/runtime" */
|
|
13
12
|
|
|
14
13
|
const PLUGIN_NAME = "FlagAllModulesAsUsedPlugin";
|
|
15
14
|
class FlagAllModulesAsUsedPlugin {
|
|
@@ -7,25 +7,27 @@
|
|
|
7
7
|
|
|
8
8
|
const asyncLib = require("neo-async");
|
|
9
9
|
const Queue = require("./util/Queue");
|
|
10
|
+
const { compareModulesByIdentifier } = require("./util/comparators");
|
|
10
11
|
const createHash = require("./util/createHash");
|
|
11
12
|
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
/** @
|
|
22
|
-
/** @
|
|
23
|
-
/** @
|
|
13
|
+
/** @import Compiler from "./Compiler" */
|
|
14
|
+
/** @import DependenciesBlock from "./DependenciesBlock" */
|
|
15
|
+
/**
|
|
16
|
+
* @import Dependency, {
|
|
17
|
+
* ExportSpec,
|
|
18
|
+
* ExportsSpec,
|
|
19
|
+
* ExportInfoName
|
|
20
|
+
* } from "./Dependency"
|
|
21
|
+
*/
|
|
22
|
+
/** @import ExportsInfo, { RestoreProvidedData } from "./ExportsInfo" */
|
|
23
|
+
/** @import { HashFunction } from "../declarations/WebpackOptions" */
|
|
24
|
+
/** @import LazyBarrelController from "./LazyBarrel" */
|
|
25
|
+
/** @import Module, { BuildInfo } from "./Module" */
|
|
24
26
|
|
|
25
27
|
const PLUGIN_NAME = "FlagDependencyExportsPlugin";
|
|
26
28
|
const PLUGIN_LOGGER_NAME = `webpack.${PLUGIN_NAME}`;
|
|
27
29
|
|
|
28
|
-
/** @typedef {{ etag: string, data: RestoreProvidedData }} MemCacheEntry */
|
|
30
|
+
/** @typedef {{ etag: string, data: InstanceType<RestoreProvidedData> }} MemCacheEntry */
|
|
29
31
|
|
|
30
32
|
/**
|
|
31
33
|
* @param {Module} module the module
|
|
@@ -70,6 +72,8 @@ class FlagDependencyExportsPlugin {
|
|
|
70
72
|
|
|
71
73
|
/** @type {Queue<Module>} */
|
|
72
74
|
const queue = new Queue();
|
|
75
|
+
/** @type {Set<Module>} */
|
|
76
|
+
const modulesToAnalyse = new Set();
|
|
73
77
|
|
|
74
78
|
// Step 1: Try to restore cached provided export info from cache
|
|
75
79
|
logger.time("restore cached provided exports");
|
|
@@ -97,8 +101,8 @@ class FlagDependencyExportsPlugin {
|
|
|
97
101
|
"string"
|
|
98
102
|
) {
|
|
99
103
|
statFlaggedUncached++;
|
|
100
|
-
//
|
|
101
|
-
|
|
104
|
+
// Determined below, in a stable order
|
|
105
|
+
modulesToAnalyse.add(module);
|
|
102
106
|
exportsInfo.setHasProvideInfo();
|
|
103
107
|
return callback();
|
|
104
108
|
}
|
|
@@ -133,8 +137,8 @@ class FlagDependencyExportsPlugin {
|
|
|
133
137
|
exportsInfo.restoreProvided(result);
|
|
134
138
|
} else {
|
|
135
139
|
statNotCached++;
|
|
136
|
-
// Without cached info
|
|
137
|
-
|
|
140
|
+
// Without cached info determine the exports below
|
|
141
|
+
modulesToAnalyse.add(module);
|
|
138
142
|
exportsInfo.setHasProvideInfo();
|
|
139
143
|
}
|
|
140
144
|
callback();
|
|
@@ -145,6 +149,59 @@ class FlagDependencyExportsPlugin {
|
|
|
145
149
|
logger.timeEnd("restore cached provided exports");
|
|
146
150
|
if (err) return callback(err);
|
|
147
151
|
|
|
152
|
+
// Seed the queue with targets before the modules that read
|
|
153
|
+
// them. Enqueueing at the two branches above ordered the work by
|
|
154
|
+
// how fast each cache lookup answered — one is synchronous, the
|
|
155
|
+
// other a `cache.get` callback — so the persistent cache decided
|
|
156
|
+
// it. A module analysed before the module it re-exports from
|
|
157
|
+
// reads exports that are not determined yet and over-estimates,
|
|
158
|
+
// and this loop can add exports info but never retract it, so
|
|
159
|
+
// the over-estimate survives the pass that corrects it. The
|
|
160
|
+
// roots are sorted so the walk is stable, and post-order visits
|
|
161
|
+
// each module after everything it points at.
|
|
162
|
+
/** @type {Set<Module>} */
|
|
163
|
+
const visited = new Set();
|
|
164
|
+
/** @type {Module[]} */
|
|
165
|
+
const stack = [];
|
|
166
|
+
/** @type {Set<Module>} */
|
|
167
|
+
const expanded = new Set();
|
|
168
|
+
for (const root of [...modulesToAnalyse].sort(
|
|
169
|
+
compareModulesByIdentifier
|
|
170
|
+
)) {
|
|
171
|
+
if (visited.has(root)) continue;
|
|
172
|
+
stack.push(root);
|
|
173
|
+
while (stack.length > 0) {
|
|
174
|
+
const current = stack[stack.length - 1];
|
|
175
|
+
if (expanded.has(current)) {
|
|
176
|
+
stack.pop();
|
|
177
|
+
if (!visited.has(current)) {
|
|
178
|
+
visited.add(current);
|
|
179
|
+
if (modulesToAnalyse.has(current)) {
|
|
180
|
+
queue.enqueue(current);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
expanded.add(current);
|
|
186
|
+
for (const connection of moduleGraph.getOutgoingConnections(
|
|
187
|
+
current
|
|
188
|
+
)) {
|
|
189
|
+
const target = connection.module;
|
|
190
|
+
// A module restored from cache is already final, so
|
|
191
|
+
// nothing has to be ordered before it and the walk stops
|
|
192
|
+
// there — on an incremental build that is most of them.
|
|
193
|
+
if (
|
|
194
|
+
target !== undefined &&
|
|
195
|
+
target !== null &&
|
|
196
|
+
modulesToAnalyse.has(target) &&
|
|
197
|
+
!expanded.has(target)
|
|
198
|
+
) {
|
|
199
|
+
stack.push(target);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
148
205
|
/** @type {Set<Module>} */
|
|
149
206
|
const modulesToStore = new Set();
|
|
150
207
|
|
|
@@ -489,7 +546,7 @@ class FlagDependencyExportsPlugin {
|
|
|
489
546
|
}
|
|
490
547
|
);
|
|
491
548
|
|
|
492
|
-
/** @type {WeakMap<Module, RestoreProvidedData
|
|
549
|
+
/** @type {WeakMap<Module, InstanceType<RestoreProvidedData>>} */
|
|
493
550
|
const providedExportsCache = new WeakMap();
|
|
494
551
|
compilation.hooks.rebuildModule.tap(PLUGIN_NAME, (module) => {
|
|
495
552
|
providedExportsCache.set(
|
|
@@ -499,7 +556,7 @@ class FlagDependencyExportsPlugin {
|
|
|
499
556
|
});
|
|
500
557
|
compilation.hooks.finishRebuildingModule.tap(PLUGIN_NAME, (module) => {
|
|
501
558
|
moduleGraph.getExportsInfo(module).restoreProvided(
|
|
502
|
-
/** @type {RestoreProvidedData} */
|
|
559
|
+
/** @type {InstanceType<RestoreProvidedData>} */
|
|
503
560
|
(providedExportsCache.get(module))
|
|
504
561
|
);
|
|
505
562
|
});
|