@depup/webpack 5.109.0-depup.0 → 5.110.1-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 +7 -7
- package/bin/webpack.js +12 -0
- package/changes.json +10 -10
- 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 +43 -32
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +15 -16
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +38 -7
- package/lib/Compilation.js +709 -414
- package/lib/Compiler.js +69 -42
- 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 +168 -57
- 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 +123 -19
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +242 -84
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +116 -42
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +63 -57
- 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 +28 -36
- 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 +22 -6
- 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 +221 -156
- package/lib/NormalModuleFactory.js +563 -112
- 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 +346 -256
- 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 +55 -25
- 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 +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 +289 -28
- 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 +282 -81
- 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 +53 -66
- package/lib/container/ModuleFederationPlugin.js +7 -18
- 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 +178 -44
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +82 -36
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +197 -106
- package/lib/css/CssParser.js +1248 -618
- 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 +10396 -952
- 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 +140 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
- 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 +15 -11
- 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 +159 -71
- 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 +28 -20
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
- package/lib/dependencies/HarmonyImportGuard.js +21 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
- 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 +170 -71
- 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 +28 -10
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +299 -79
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +312 -174
- 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 +7819 -3331
- 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 +31 -18
- 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 +181 -162
- package/lib/javascript/JavascriptParser.js +291 -112
- 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 +3403 -300
- 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 +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 +81 -20
- package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +21 -17
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +996 -477
- 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 +124 -59
- package/lib/optimize/RealContentHashPlugin.js +20 -13
- 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 +232 -68
- 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 +377 -136
- 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 +274 -942
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +305 -66
- 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 +253 -226
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
- package/lib/stats/StatsFactory.js +56 -35
- 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 +25 -1
- 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 +57 -17
- 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 +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 +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 +37 -30
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +780 -91
- 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 +4013 -738
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -9,19 +9,29 @@ const InitFragment = require("../InitFragment");
|
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
|
10
10
|
const { propertyAccess } = require("../util/property");
|
|
11
11
|
const {
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
handleDependencyBase,
|
|
13
|
+
isThisBase,
|
|
14
|
+
isWorkerEntryThis
|
|
14
15
|
} = require("./CommonJsDependencyHelpers");
|
|
15
16
|
const NullDependency = require("./NullDependency");
|
|
16
17
|
|
|
17
|
-
/** @
|
|
18
|
-
/**
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
/** @import { ReplaceSource } from "webpack-sources" */
|
|
19
|
+
/**
|
|
20
|
+
* @import Dependency, {
|
|
21
|
+
* ExportsSpec,
|
|
22
|
+
* UpdateHashContext,
|
|
23
|
+
* ExportInfoName
|
|
24
|
+
* } from "../Dependency"
|
|
25
|
+
*/
|
|
26
|
+
/** @import Hash from "../util/Hash" */
|
|
27
|
+
/** @import { DependencyTemplateContext } from "../DependencyTemplate" */
|
|
28
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
29
|
+
/** @import { Range } from "../javascript/JavascriptParser" */
|
|
30
|
+
/**
|
|
31
|
+
* @import {
|
|
32
|
+
* CommonJSDependencyBaseKeywords
|
|
33
|
+
* } from "./CommonJsDependencyHelpers"
|
|
34
|
+
*/
|
|
25
35
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[]]>} ObjectDeserializerContext */
|
|
26
36
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[]]>} ObjectSerializerContext */
|
|
27
37
|
|
|
@@ -70,6 +80,26 @@ class CommonJsExportsDependency extends NullDependency {
|
|
|
70
80
|
};
|
|
71
81
|
}
|
|
72
82
|
|
|
83
|
+
/**
|
|
84
|
+
* Updates the hash with the data contributed by this instance.
|
|
85
|
+
* @param {Hash} hash hash to be updated
|
|
86
|
+
* @param {UpdateHashContext} context context
|
|
87
|
+
* @returns {void}
|
|
88
|
+
*/
|
|
89
|
+
updateHash(hash, context) {
|
|
90
|
+
// a classic worker entry generates `this` as the global scope, so it must
|
|
91
|
+
// not share one code generation with a runtime that generates it as exports
|
|
92
|
+
if (!isThisBase(this.base)) return;
|
|
93
|
+
const { chunkGraph, runtime, runtimeTemplate } = context;
|
|
94
|
+
const module = chunkGraph.moduleGraph.getParentModule(this);
|
|
95
|
+
hash.update(
|
|
96
|
+
module !== undefined &&
|
|
97
|
+
isWorkerEntryThis(module, chunkGraph, runtime, runtimeTemplate)
|
|
98
|
+
? "worker global"
|
|
99
|
+
: "exports"
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
|
|
73
103
|
/**
|
|
74
104
|
* Serializes this instance into the provided serializer context.
|
|
75
105
|
* @param {ObjectSerializerContext} context context
|
|
@@ -120,57 +150,31 @@ CommonJsExportsDependency.Template = class CommonJsExportsDependencyTemplate ext
|
|
|
120
150
|
{
|
|
121
151
|
module,
|
|
122
152
|
moduleGraph,
|
|
153
|
+
chunkGraph,
|
|
123
154
|
initFragments,
|
|
124
155
|
runtimeRequirements,
|
|
125
156
|
runtime,
|
|
126
|
-
|
|
157
|
+
runtimeTemplate
|
|
127
158
|
}
|
|
128
159
|
) {
|
|
129
160
|
const dep = /** @type {CommonJsExportsDependency} */ (dependency);
|
|
161
|
+
// a classic worker entry writes to its global scope, not to an export, so
|
|
162
|
+
// the names stay as written and are never dropped as unused
|
|
163
|
+
const isWorkerEntry =
|
|
164
|
+
isThisBase(dep.base) &&
|
|
165
|
+
isWorkerEntryThis(module, chunkGraph, runtime, runtimeTemplate);
|
|
130
166
|
// CJS exports are never inlined
|
|
131
|
-
const used =
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
if (concatenationScope) {
|
|
136
|
-
// eligibility is enforced by JavascriptGenerator.getConcatenationBailoutReason
|
|
137
|
-
if (dep.base !== "exports" && dep.base !== "module.exports") {
|
|
138
|
-
throw new Error(
|
|
139
|
-
`Unsupported base ${dep.base} in concatenated CommonJS module`
|
|
167
|
+
const used = isWorkerEntry
|
|
168
|
+
? dep.names
|
|
169
|
+
: /** @type {string | string[] | false} */ (
|
|
170
|
+
moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
|
|
140
171
|
);
|
|
141
|
-
}
|
|
142
|
-
if (!used) {
|
|
143
|
-
initFragments.push(
|
|
144
|
-
new InitFragment(
|
|
145
|
-
"var __webpack_unused_export__;\n",
|
|
146
|
-
InitFragment.STAGE_CONSTANTS,
|
|
147
|
-
0,
|
|
148
|
-
"__webpack_unused_export__"
|
|
149
|
-
)
|
|
150
|
-
);
|
|
151
|
-
source.replace(
|
|
152
|
-
dep.range[0],
|
|
153
|
-
dep.range[1] - 1,
|
|
154
|
-
"__webpack_unused_export__"
|
|
155
|
-
);
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
source.replace(
|
|
159
|
-
dep.range[0],
|
|
160
|
-
dep.range[1] - 1,
|
|
161
|
-
getConcatenatedExportAccess(
|
|
162
|
-
concatenationScope,
|
|
163
|
-
initFragments,
|
|
164
|
-
dep.names
|
|
165
|
-
)
|
|
166
|
-
);
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
172
|
|
|
170
173
|
const [type, base] = handleDependencyBase(
|
|
171
174
|
dep.base,
|
|
172
175
|
module,
|
|
173
|
-
runtimeRequirements
|
|
176
|
+
runtimeRequirements,
|
|
177
|
+
isWorkerEntry
|
|
174
178
|
);
|
|
175
179
|
|
|
176
180
|
switch (type) {
|
|
@@ -11,27 +11,57 @@ const formatLocation = require("../util/formatLocation");
|
|
|
11
11
|
const { propertyAccess } = require("../util/property");
|
|
12
12
|
const CommonJsExportRequireDependency = require("./CommonJsExportRequireDependency");
|
|
13
13
|
const CommonJsExportsDependency = require("./CommonJsExportsDependency");
|
|
14
|
+
const CommonJsFullRequireDependency = require("./CommonJsFullRequireDependency");
|
|
15
|
+
const CommonJsObjectExportDependency = require("./CommonJsObjectExportDependency");
|
|
16
|
+
const CommonJsRequireDependency = require("./CommonJsRequireDependency");
|
|
14
17
|
const CommonJsSelfReferenceDependency = require("./CommonJsSelfReferenceDependency");
|
|
15
18
|
const DynamicExports = require("./DynamicExports");
|
|
16
19
|
const HarmonyExports = require("./HarmonyExports");
|
|
17
20
|
const ModuleDecoratorDependency = require("./ModuleDecoratorDependency");
|
|
21
|
+
const RuntimeRequirementsDependency = require("./RuntimeRequirementsDependency");
|
|
18
22
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
23
|
+
const FUNCTION_PROPERTY_DROP_HEAD =
|
|
24
|
+
CommonJsObjectExportDependency.FUNCTION_PROPERTY_DROP_HEAD;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @import {
|
|
28
|
+
* AssignmentExpression,
|
|
29
|
+
* CallExpression,
|
|
30
|
+
* Expression,
|
|
31
|
+
* FunctionExpression,
|
|
32
|
+
* Node,
|
|
33
|
+
* ObjectExpression,
|
|
34
|
+
* Property,
|
|
35
|
+
* SpreadElement,
|
|
36
|
+
* Super,
|
|
37
|
+
* ThisExpression
|
|
38
|
+
* } from "estree"
|
|
39
|
+
*/
|
|
40
|
+
/** @import { ExportInfoName } from "../Dependency" */
|
|
41
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
42
|
+
/** @import BasicEvaluatedExpression from "../javascript/BasicEvaluatedExpression" */
|
|
43
|
+
/**
|
|
44
|
+
* @import JavascriptParser, {
|
|
45
|
+
* Range,
|
|
46
|
+
* Members,
|
|
47
|
+
* StatementPath
|
|
48
|
+
* } from "../javascript/JavascriptParser"
|
|
49
|
+
*/
|
|
50
|
+
/**
|
|
51
|
+
* @import {
|
|
52
|
+
* CommonJSDependencyBaseKeywords
|
|
53
|
+
* } from "./CommonJsDependencyHelpers"
|
|
54
|
+
*/
|
|
55
|
+
/**
|
|
56
|
+
* @import {
|
|
57
|
+
* CommonJsObjectExportKind
|
|
58
|
+
* } from "./CommonJsObjectExportDependency"
|
|
59
|
+
*/
|
|
60
|
+
/**
|
|
61
|
+
* @import {
|
|
62
|
+
* JavascriptModuleBuildMeta
|
|
63
|
+
* } from "../javascript/JavascriptModule"
|
|
64
|
+
*/
|
|
35
65
|
|
|
36
66
|
/**
|
|
37
67
|
* This function takes a generic expression and detects whether it is an ObjectExpression.
|
|
@@ -230,11 +260,15 @@ const getChildKeys = (node) => {
|
|
|
230
260
|
* and `extends` clauses evaluate in the outer scope and are searched. The
|
|
231
261
|
* `this`-scope boundary is enforced when a node is popped, so the generic
|
|
232
262
|
* branch may enumerate any child without crossing it.
|
|
233
|
-
* @param {Node
|
|
263
|
+
* @param {Node} body function body
|
|
264
|
+
* @param {Node[]} params function params
|
|
234
265
|
* @returns {ThisExpression | undefined} first own `this` expression
|
|
235
266
|
*/
|
|
236
|
-
const findOwnThisExpression = (
|
|
237
|
-
|
|
267
|
+
const findOwnThisExpression = (body, params) => {
|
|
268
|
+
// the body is popped first, so its `this` wins over a default parameter's
|
|
269
|
+
const stack = [];
|
|
270
|
+
for (let i = 0; i < params.length; i++) stack.push(params[i]);
|
|
271
|
+
stack.push(body);
|
|
238
272
|
let node;
|
|
239
273
|
while ((node = stack.pop()) !== undefined) {
|
|
240
274
|
switch (node.type) {
|
|
@@ -271,14 +305,55 @@ const findOwnThisExpression = (initialNodes) => {
|
|
|
271
305
|
* Returns the own `this` of a function-expression export value. When such a
|
|
272
306
|
* function is called as a method of the exports object, `this` is the exports
|
|
273
307
|
* object and may reach any sibling export (#21178).
|
|
308
|
+
* @param {JavascriptParser} parser the parser
|
|
274
309
|
* @param {Node} expr the exported value
|
|
275
310
|
* @returns {ThisExpression | undefined} first own `this` expression
|
|
276
311
|
*/
|
|
277
|
-
const getThisAccessInExportedValue = (expr) =>
|
|
278
|
-
expr.type === "FunctionExpression"
|
|
279
|
-
|
|
312
|
+
const getThisAccessInExportedValue = (parser, expr) =>
|
|
313
|
+
expr.type === "FunctionExpression" &&
|
|
314
|
+
// scanning the body of every exported function is expensive and most of them
|
|
315
|
+
// never mention `this`, so filter on the source text first
|
|
316
|
+
parser.sourceMayContainIdentifier(/** @type {Range} */ (expr.range), "this")
|
|
317
|
+
? findOwnThisExpression(expr.body, expr.params)
|
|
280
318
|
: undefined;
|
|
281
319
|
|
|
320
|
+
/**
|
|
321
|
+
* Returns the export name an object-literal property contributes, or
|
|
322
|
+
* `undefined` when it cannot contribute one: a spread, a computed or
|
|
323
|
+
* non-string key is unknown at compile time, and `__proto__` sets
|
|
324
|
+
* [[Prototype]] instead of an own property.
|
|
325
|
+
* @param {Property | SpreadElement} property property
|
|
326
|
+
* @returns {string | undefined} export name
|
|
327
|
+
*/
|
|
328
|
+
const getStaticPropertyName = (property) => {
|
|
329
|
+
if (property.type === "SpreadElement" || property.computed) return;
|
|
330
|
+
const key = property.key;
|
|
331
|
+
/** @type {string | undefined} */
|
|
332
|
+
let name;
|
|
333
|
+
if (key.type === "Identifier") {
|
|
334
|
+
name = key.name;
|
|
335
|
+
} else if (key.type === "Literal" && typeof key.value === "string") {
|
|
336
|
+
name = key.value;
|
|
337
|
+
}
|
|
338
|
+
return name === "__proto__" ? undefined : name;
|
|
339
|
+
};
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* @param {Property} property property
|
|
343
|
+
* @returns {CommonJsObjectExportKind} property kind
|
|
344
|
+
*/
|
|
345
|
+
const getObjectExportKind = (property) => {
|
|
346
|
+
if (property.kind === "get" || property.kind === "set") return property.kind;
|
|
347
|
+
if (property.method) {
|
|
348
|
+
const { async, generator } = /** @type {FunctionExpression} */ (
|
|
349
|
+
property.value
|
|
350
|
+
);
|
|
351
|
+
if (async) return generator ? "asyncGeneratorMethod" : "asyncMethod";
|
|
352
|
+
return generator ? "generatorMethod" : "method";
|
|
353
|
+
}
|
|
354
|
+
return property.shorthand ? "shorthand" : "keyValue";
|
|
355
|
+
};
|
|
356
|
+
|
|
282
357
|
const PLUGIN_NAME = "CommonJsExportsParserPlugin";
|
|
283
358
|
|
|
284
359
|
class CommonJsExportsParserPlugin {
|
|
@@ -348,7 +423,7 @@ class CommonJsExportsParserPlugin {
|
|
|
348
423
|
const keepAllExportsOnThisAccess = (valueExpr, base) => {
|
|
349
424
|
// One bailout per module is enough
|
|
350
425
|
if (keptAllExportsForState === parser.state) return;
|
|
351
|
-
const thisExpr = getThisAccessInExportedValue(valueExpr);
|
|
426
|
+
const thisExpr = getThisAccessInExportedValue(parser, valueExpr);
|
|
352
427
|
if (thisExpr === undefined) return;
|
|
353
428
|
keptAllExportsForState = parser.state;
|
|
354
429
|
bailoutHint(
|
|
@@ -413,7 +488,10 @@ class CommonJsExportsParserPlugin {
|
|
|
413
488
|
|
|
414
489
|
return true;
|
|
415
490
|
}
|
|
416
|
-
|
|
491
|
+
// `module.exports = { … }` — properties are the module's named exports.
|
|
492
|
+
if (members.length === 0) {
|
|
493
|
+
return handleObjectLiteralExport(expr, base);
|
|
494
|
+
}
|
|
417
495
|
enableStructuredExports();
|
|
418
496
|
const remainingMembers = members;
|
|
419
497
|
checkNamespace(
|
|
@@ -438,6 +516,103 @@ class CommonJsExportsParserPlugin {
|
|
|
438
516
|
parser.walkExpression(expr.right);
|
|
439
517
|
return true;
|
|
440
518
|
};
|
|
519
|
+
/**
|
|
520
|
+
* Handle top-level `module.exports = { … }` object-literal exports.
|
|
521
|
+
* @param {AssignmentExpression} expr expression
|
|
522
|
+
* @param {CommonJSDependencyBaseKeywords} base commonjs base keywords
|
|
523
|
+
* @returns {boolean | undefined} true, when the expression was handled
|
|
524
|
+
*/
|
|
525
|
+
const handleObjectLiteralExport = (expr, base) => {
|
|
526
|
+
// Only `module.exports = { … }` replaces the whole exports object.
|
|
527
|
+
if (base !== "module.exports") return;
|
|
528
|
+
if (
|
|
529
|
+
/** @type {StatementPath} */ (parser.statementPath).length !== 1 ||
|
|
530
|
+
!parser.isStatementLevelExpression(expr)
|
|
531
|
+
) {
|
|
532
|
+
return;
|
|
533
|
+
}
|
|
534
|
+
const object = expr.right;
|
|
535
|
+
if (object.type !== "ObjectExpression") return;
|
|
536
|
+
|
|
537
|
+
const module = parser.state.module;
|
|
538
|
+
/** @type {JavascriptModuleBuildMeta} */ (
|
|
539
|
+
module.buildMeta
|
|
540
|
+
).treatAsCommonJs = true;
|
|
541
|
+
// LHS stays as the text `module.exports` (moduleArgument is "module"
|
|
542
|
+
// unless a top-level `module` binding shadows it, which prevents this hook).
|
|
543
|
+
module.addPresentationalDependency(
|
|
544
|
+
new RuntimeRequirementsDependency([RuntimeGlobals.module])
|
|
545
|
+
);
|
|
546
|
+
|
|
547
|
+
// one unknown key makes the whole object opaque, so name them all first
|
|
548
|
+
/** @type {string[]} */
|
|
549
|
+
const names = [];
|
|
550
|
+
for (const property of object.properties) {
|
|
551
|
+
const name = getStaticPropertyName(property);
|
|
552
|
+
if (name === undefined) {
|
|
553
|
+
bailout(
|
|
554
|
+
`module.exports = {…} cannot be statically analysed at ${formatLocation(
|
|
555
|
+
parser.getLocation(expr)
|
|
556
|
+
)}`
|
|
557
|
+
);
|
|
558
|
+
parser.walkExpression(object);
|
|
559
|
+
return true;
|
|
560
|
+
}
|
|
561
|
+
names.push(name);
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
enableStructuredExports();
|
|
565
|
+
|
|
566
|
+
for (let i = 0; i < object.properties.length; i++) {
|
|
567
|
+
const property = /** @type {Property} */ (object.properties[i]);
|
|
568
|
+
const name = names[i];
|
|
569
|
+
const value = /** @type {Expression} */ (property.value);
|
|
570
|
+
const kind = getObjectExportKind(property);
|
|
571
|
+
// a shorthand has no value text of its own to replace
|
|
572
|
+
const valueRange = /** @type {Range} */ (
|
|
573
|
+
kind === "shorthand" ? property.range : value.range
|
|
574
|
+
);
|
|
575
|
+
// scans the key/value gap, so `/*#__PURE__*/` is picked up here
|
|
576
|
+
const pure =
|
|
577
|
+
kind === "keyValue" &&
|
|
578
|
+
parser.isPure(value, /** @type {Range} */ (property.key.range)[1]);
|
|
579
|
+
|
|
580
|
+
if (name === "__esModule") {
|
|
581
|
+
checkNamespace(true, ["__esModule"], value);
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
const dep = new CommonJsObjectExportDependency(
|
|
585
|
+
/** @type {Range} */ (property.range),
|
|
586
|
+
/** @type {Range} */ (property.key.range),
|
|
587
|
+
valueRange,
|
|
588
|
+
name,
|
|
589
|
+
kind,
|
|
590
|
+
pure
|
|
591
|
+
);
|
|
592
|
+
dep.loc = parser.getLocation(property);
|
|
593
|
+
module.addDependency(dep);
|
|
594
|
+
|
|
595
|
+
keepAllExportsOnThisAccess(value, base);
|
|
596
|
+
// Tag nested requires so unused get/set/method can disconnect them.
|
|
597
|
+
const start = FUNCTION_PROPERTY_DROP_HEAD.has(kind)
|
|
598
|
+
? module.dependencies.length
|
|
599
|
+
: -1;
|
|
600
|
+
parser.walkExpression(value);
|
|
601
|
+
if (start !== -1) {
|
|
602
|
+
const usedByExports = new Set([name]);
|
|
603
|
+
for (let j = start; j < module.dependencies.length; j++) {
|
|
604
|
+
const nested = module.dependencies[j];
|
|
605
|
+
if (
|
|
606
|
+
nested instanceof CommonJsRequireDependency ||
|
|
607
|
+
nested instanceof CommonJsFullRequireDependency
|
|
608
|
+
) {
|
|
609
|
+
nested.usedByExports = usedByExports;
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
return true;
|
|
615
|
+
};
|
|
441
616
|
parser.hooks.assignMemberChain
|
|
442
617
|
.for("exports")
|
|
443
618
|
.tap(PLUGIN_NAME, (expr, members) =>
|
|
@@ -638,8 +813,15 @@ class CommonJsExportsParserPlugin {
|
|
|
638
813
|
|
|
639
814
|
// Bailouts //
|
|
640
815
|
parser.hooks.expression.for("module").tap(PLUGIN_NAME, (expr) => {
|
|
641
|
-
bailout();
|
|
642
816
|
const isHarmony = HarmonyExports.isEnabled(parser.state);
|
|
817
|
+
// Silent under ESM, where `HarmonyExports` governs and nothing was lost.
|
|
818
|
+
bailout(
|
|
819
|
+
isHarmony
|
|
820
|
+
? undefined
|
|
821
|
+
: `module is used directly at ${formatLocation(
|
|
822
|
+
parser.getLocation(expr)
|
|
823
|
+
)}`
|
|
824
|
+
);
|
|
643
825
|
const dep = new ModuleDecoratorDependency(
|
|
644
826
|
isHarmony
|
|
645
827
|
? RuntimeGlobals.harmonyModuleDecorator
|
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const Template = require("../Template");
|
|
9
|
+
const {
|
|
10
|
+
getDependencyUsedByExportsCondition
|
|
11
|
+
} = require("../optimize/InnerGraph");
|
|
9
12
|
const { equals } = require("../util/ArrayHelpers");
|
|
10
13
|
const { getTrimmedIdsAndRange } = require("../util/chainedImports");
|
|
11
14
|
const makeSerializable = require("../util/makeSerializable");
|
|
@@ -15,19 +18,26 @@ const {
|
|
|
15
18
|
getRequireEsmModuleExportsAccess,
|
|
16
19
|
isRequireEsmModuleExportsModule
|
|
17
20
|
} = require("./CommonJsDependencyHelpers");
|
|
21
|
+
const HarmonyImportGuard = require("./HarmonyImportGuard");
|
|
18
22
|
const ModuleDependency = require("./ModuleDependency");
|
|
19
23
|
|
|
20
|
-
/** @
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
/** @
|
|
29
|
-
/** @
|
|
30
|
-
/** @
|
|
24
|
+
/** @import { ReplaceSource } from "webpack-sources" */
|
|
25
|
+
/**
|
|
26
|
+
* @import Dependency, {
|
|
27
|
+
* GetConditionFn,
|
|
28
|
+
* ReferencedExports,
|
|
29
|
+
* ExportInfoName
|
|
30
|
+
* } from "../Dependency"
|
|
31
|
+
*/
|
|
32
|
+
/** @import { DependencyTemplateContext } from "../DependencyTemplate" */
|
|
33
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
34
|
+
/** @import { Range } from "../javascript/JavascriptParser" */
|
|
35
|
+
/** @import { UsedByExports } from "../optimize/InnerGraph" */
|
|
36
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
37
|
+
/** @import { IdRanges } from "../util/chainedImports" */
|
|
38
|
+
/** @import { DependencyGuard } from "./HarmonyImportGuard" */
|
|
39
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[ExportInfoName[], IdRanges | undefined, boolean, undefined | boolean, DependencyGuard[] | undefined, boolean, boolean, UsedByExports | undefined]>} ObjectDeserializerContext */
|
|
40
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[ExportInfoName[], IdRanges | undefined, boolean, undefined | boolean, DependencyGuard[] | undefined, boolean, boolean, UsedByExports | undefined]>} ObjectSerializerContext */
|
|
31
41
|
|
|
32
42
|
class CommonJsFullRequireDependency extends ModuleDependency {
|
|
33
43
|
/**
|
|
@@ -51,8 +61,52 @@ class CommonJsFullRequireDependency extends ModuleDependency {
|
|
|
51
61
|
this.idRanges = idRanges;
|
|
52
62
|
/** @type {boolean} */
|
|
53
63
|
this.call = false;
|
|
64
|
+
/** @type {boolean} */
|
|
65
|
+
this.namespaceObjectAsContext = false;
|
|
54
66
|
/** @type {undefined | boolean} */
|
|
55
67
|
this.asiSafe = undefined;
|
|
68
|
+
/** @type {DependencyGuard[] | undefined} */
|
|
69
|
+
this.branchGuards = undefined;
|
|
70
|
+
/** @type {UsedByExports | undefined} */
|
|
71
|
+
this.usedByExports = undefined;
|
|
72
|
+
/** @type {boolean} */
|
|
73
|
+
this._canConcatenate = false;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Returns function to determine if the connection is active.
|
|
78
|
+
* @param {ModuleGraph} moduleGraph module graph
|
|
79
|
+
* @returns {null | false | GetConditionFn} function to determine if the connection is active
|
|
80
|
+
*/
|
|
81
|
+
getCondition(moduleGraph) {
|
|
82
|
+
const usedByExportsCondition =
|
|
83
|
+
this.usedByExports !== undefined
|
|
84
|
+
? getDependencyUsedByExportsCondition(this, moduleGraph)
|
|
85
|
+
: null;
|
|
86
|
+
if (usedByExportsCondition === false) return false;
|
|
87
|
+
const guards = this.branchGuards;
|
|
88
|
+
if (usedByExportsCondition === null && guards === undefined) return null;
|
|
89
|
+
return (connection, runtime) => {
|
|
90
|
+
if (
|
|
91
|
+
usedByExportsCondition !== null &&
|
|
92
|
+
usedByExportsCondition(connection, runtime) === false
|
|
93
|
+
) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
return !(
|
|
97
|
+
guards !== undefined &&
|
|
98
|
+
HarmonyImportGuard.isDeadByGuards(guards, moduleGraph, runtime)
|
|
99
|
+
);
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Returns true if this dependency can be concatenated
|
|
105
|
+
* @param {boolean} concatenateCommonJsModules whether optimization.concatenateModules.commonjs is enabled
|
|
106
|
+
* @returns {boolean} true if this dependency can be concatenated
|
|
107
|
+
*/
|
|
108
|
+
canConcatenate(concatenateCommonJsModules) {
|
|
109
|
+
return concatenateCommonJsModules && this._canConcatenate;
|
|
56
110
|
}
|
|
57
111
|
|
|
58
112
|
/**
|
|
@@ -76,6 +130,8 @@ class CommonJsFullRequireDependency extends ModuleDependency {
|
|
|
76
130
|
if (
|
|
77
131
|
this.call &&
|
|
78
132
|
(!importedModule ||
|
|
133
|
+
// the namespace object of a required ESM module is the call receiver
|
|
134
|
+
this.namespaceObjectAsContext ||
|
|
79
135
|
importedModule.getExportsType(moduleGraph, false) !== "namespace")
|
|
80
136
|
) {
|
|
81
137
|
return [{ name: this.names.slice(0, -1), canInline: false }];
|
|
@@ -92,7 +148,11 @@ class CommonJsFullRequireDependency extends ModuleDependency {
|
|
|
92
148
|
.write(this.names)
|
|
93
149
|
.write(this.idRanges)
|
|
94
150
|
.write(this.call)
|
|
95
|
-
.write(this.asiSafe)
|
|
151
|
+
.write(this.asiSafe)
|
|
152
|
+
.write(this.branchGuards)
|
|
153
|
+
.write(this._canConcatenate)
|
|
154
|
+
.write(this.namespaceObjectAsContext)
|
|
155
|
+
.write(this.usedByExports);
|
|
96
156
|
super.serialize(context);
|
|
97
157
|
}
|
|
98
158
|
|
|
@@ -108,7 +168,15 @@ class CommonJsFullRequireDependency extends ModuleDependency {
|
|
|
108
168
|
this.call = c2.read();
|
|
109
169
|
const c3 = c2.rest;
|
|
110
170
|
this.asiSafe = c3.read();
|
|
111
|
-
|
|
171
|
+
const c4 = c3.rest;
|
|
172
|
+
this.branchGuards = c4.read();
|
|
173
|
+
const c5 = c4.rest;
|
|
174
|
+
this._canConcatenate = c5.read();
|
|
175
|
+
const c6 = c5.rest;
|
|
176
|
+
this.namespaceObjectAsContext = c6.read();
|
|
177
|
+
const c7 = c6.rest;
|
|
178
|
+
this.usedByExports = c7.read();
|
|
179
|
+
super.deserialize(c7.rest);
|
|
112
180
|
}
|
|
113
181
|
|
|
114
182
|
get type() {
|
|
@@ -133,22 +201,25 @@ CommonJsFullRequireDependency.Template = class CommonJsFullRequireDependencyTemp
|
|
|
133
201
|
apply(
|
|
134
202
|
dependency,
|
|
135
203
|
source,
|
|
136
|
-
{
|
|
204
|
+
{
|
|
205
|
+
runtimeTemplate,
|
|
206
|
+
moduleGraph,
|
|
207
|
+
chunkGraph,
|
|
208
|
+
runtimeRequirements,
|
|
209
|
+
runtime,
|
|
210
|
+
concatenationScope
|
|
211
|
+
}
|
|
137
212
|
) {
|
|
138
213
|
const dep = /** @type {CommonJsFullRequireDependency} */ (dependency);
|
|
139
214
|
if (!dep.range) return;
|
|
215
|
+
const connection = moduleGraph.getConnection(dep);
|
|
216
|
+
// Dead branch: module is excluded and has no id; code is never executed.
|
|
217
|
+
if (connection && !connection.isTargetActive(runtime)) {
|
|
218
|
+
// Replaces the whole member chain, so no property access is left dangling
|
|
219
|
+
source.replace(dep.range[0], dep.range[1] - 1, "null /* dead branch */");
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
140
222
|
const importedModule = moduleGraph.getModule(dep);
|
|
141
|
-
let requireExpr = runtimeTemplate.moduleExports({
|
|
142
|
-
module: importedModule,
|
|
143
|
-
chunkGraph,
|
|
144
|
-
request: dep.request,
|
|
145
|
-
weak: dep.weak,
|
|
146
|
-
runtimeRequirements
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
const esmRequireAccess = importedModule
|
|
150
|
-
? getRequireEsmModuleExportsAccess(importedModule, moduleGraph, runtime)
|
|
151
|
-
: null;
|
|
152
223
|
|
|
153
224
|
const {
|
|
154
225
|
trimmedRange: [trimmedRangeStart, trimmedRangeEnd],
|
|
@@ -161,6 +232,49 @@ CommonJsFullRequireDependency.Template = class CommonJsFullRequireDependencyTemp
|
|
|
161
232
|
dep
|
|
162
233
|
);
|
|
163
234
|
|
|
235
|
+
if (concatenationScope) {
|
|
236
|
+
const connection = moduleGraph.getConnection(dep);
|
|
237
|
+
if (
|
|
238
|
+
connection &&
|
|
239
|
+
importedModule &&
|
|
240
|
+
concatenationScope.isModuleInScope(importedModule)
|
|
241
|
+
) {
|
|
242
|
+
// `require(esm)` unwraps the "module.exports" export and the member
|
|
243
|
+
// chain hangs off it; without that prefix the ids name exports the
|
|
244
|
+
// module never declares.
|
|
245
|
+
const ids = isRequireEsmModuleExportsModule(
|
|
246
|
+
connection.module,
|
|
247
|
+
moduleGraph
|
|
248
|
+
)
|
|
249
|
+
? [ESM_MODULE_EXPORTS_NAME, ...trimmedIds]
|
|
250
|
+
: trimmedIds;
|
|
251
|
+
|
|
252
|
+
source.replace(
|
|
253
|
+
trimmedRangeStart,
|
|
254
|
+
trimmedRangeEnd - 1,
|
|
255
|
+
concatenationScope.createModuleReference(connection.module, {
|
|
256
|
+
ids: ids.length > 0 ? ids : undefined,
|
|
257
|
+
call: dep.call,
|
|
258
|
+
asiSafe: dep.asiSafe,
|
|
259
|
+
moduleExportsAccess: true
|
|
260
|
+
})
|
|
261
|
+
);
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
let requireExpr = runtimeTemplate.moduleExports({
|
|
267
|
+
module: importedModule,
|
|
268
|
+
chunkGraph,
|
|
269
|
+
request: dep.request,
|
|
270
|
+
weak: dep.weak,
|
|
271
|
+
runtimeRequirements
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
const esmRequireAccess = importedModule
|
|
275
|
+
? getRequireEsmModuleExportsAccess(importedModule, moduleGraph, runtime)
|
|
276
|
+
: null;
|
|
277
|
+
|
|
164
278
|
if (esmRequireAccess !== null) {
|
|
165
279
|
const access = `${esmRequireAccess}${propertyAccess(trimmedIds)}`;
|
|
166
280
|
requireExpr =
|
|
@@ -168,7 +282,7 @@ CommonJsFullRequireDependency.Template = class CommonJsFullRequireDependencyTemp
|
|
|
168
282
|
? `(${requireExpr}${access})`
|
|
169
283
|
: `${requireExpr}${access}`;
|
|
170
284
|
} else if (importedModule) {
|
|
171
|
-
// CJS
|
|
285
|
+
// CJS required are never inlined
|
|
172
286
|
const usedImported = /** @type {string | string[] | false} */ (
|
|
173
287
|
moduleGraph
|
|
174
288
|
.getExportsInfo(importedModule)
|