@depup/webpack 5.109.2-depup.0 → 5.110.3-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/changes.json +7 -7
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +46 -35
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +4 -7
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +7 -7
- package/lib/Compilation.js +688 -409
- package/lib/Compiler.js +53 -38
- package/lib/ConcatenationScope.js +107 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +121 -37
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +91 -26
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +111 -14
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +232 -77
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +44 -70
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +40 -49
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +36 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +8 -4
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +9 -4
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +152 -103
- package/lib/NormalModuleFactory.js +555 -110
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +335 -169
- package/lib/RuntimeTemplate.js +2761 -316
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +32 -22
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +12 -6
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +30 -23
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +270 -78
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +46 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +6 -11
- package/lib/container/ModuleFederationPlugin.js +7 -24
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +171 -43
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +84 -32
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +172 -100
- package/lib/css/CssParser.js +1113 -568
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5334 -0
- package/lib/css/syntax.js +9647 -232
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +170 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +121 -60
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
- package/lib/dependencies/HarmonyImportGuard.js +20 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +49 -31
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +45 -5
- package/lib/dependencies/ImportDependency.js +33 -50
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +73 -49
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +50 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
- package/lib/dependencies/WorkerDependency.js +22 -22
- package/lib/dependencies/WorkletDependency.js +18 -21
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/importOptionsCheck.js +47 -0
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DotenvFileError.js +29 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/ImportedBindingAssignmentError.js +30 -0
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +9 -6
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +277 -77
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +366 -200
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +6034 -1384
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +7 -8
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +65 -165
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +103 -123
- package/lib/javascript/JavascriptParser.js +242 -99
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +2678 -232
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +47 -6
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +1030 -476
- package/lib/optimize/ConstExportsPlugin.js +16 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +130 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
- package/lib/optimize/RealContentHashPlugin.js +121 -41
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +86 -24
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +295 -79
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +46 -20
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +4 -4
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +22 -9
- package/lib/serialization/ObjectMiddleware.js +139 -114
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
- package/lib/stats/StatsFactory.js +25 -26
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +20 -24
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1066 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +10 -2
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/createMappings.js +25 -3
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +4 -0
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +8 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/removeBOM.js +82 -1
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
- package/lib/web/FetchCompileWasmPlugin.js +48 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +32 -25
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +667 -34
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +3223 -465
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const makeSerializable = require("../util/makeSerializable");
|
|
9
|
+
const ConstDependency = require("./ConstDependency");
|
|
10
|
+
const NullDependency = require("./NullDependency");
|
|
11
|
+
|
|
12
|
+
/** @import { ReplaceSource } from "webpack-sources" */
|
|
13
|
+
/** @import Dependency, { UpdateHashContext } from "../Dependency" */
|
|
14
|
+
/** @import { DependencyTemplateContext } from "../DependencyTemplate" */
|
|
15
|
+
/** @import { Range } from "../javascript/JavascriptParser" */
|
|
16
|
+
/**
|
|
17
|
+
* @import {
|
|
18
|
+
* ObjectDeserializerContext,
|
|
19
|
+
* ObjectSerializerContext
|
|
20
|
+
* } from "../serialization/ObjectMiddleware"
|
|
21
|
+
*/
|
|
22
|
+
/** @import Hash from "../util/Hash" */
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* A constant replacement whose source is only valid in emitted output (e.g.
|
|
26
|
+
* native `import.meta`), with a separate expression for build-time execution.
|
|
27
|
+
*/
|
|
28
|
+
class BuildTimeConstDependency extends ConstDependency {
|
|
29
|
+
/**
|
|
30
|
+
* Creates an instance of BuildTimeConstDependency.
|
|
31
|
+
* @param {string} expression the expression
|
|
32
|
+
* @param {string} buildTimeExpression the expression for build-time execution
|
|
33
|
+
* @param {Range} range the source range
|
|
34
|
+
* @param {(string[] | null)=} runtimeRequirements runtime requirements
|
|
35
|
+
*/
|
|
36
|
+
constructor(expression, buildTimeExpression, range, runtimeRequirements) {
|
|
37
|
+
super(expression, range, runtimeRequirements);
|
|
38
|
+
/** @type {string} */
|
|
39
|
+
this.buildTimeExpression = buildTimeExpression;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Updates the hash with the data contributed by this instance.
|
|
44
|
+
* @param {Hash} hash hash to be updated
|
|
45
|
+
* @param {UpdateHashContext} context context
|
|
46
|
+
* @returns {void}
|
|
47
|
+
*/
|
|
48
|
+
updateHash(hash, context) {
|
|
49
|
+
super.updateHash(hash, context);
|
|
50
|
+
hash.update(this.buildTimeExpression);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Serializes this instance into the provided serializer context.
|
|
55
|
+
* @param {ObjectSerializerContext} context context
|
|
56
|
+
*/
|
|
57
|
+
serialize(context) {
|
|
58
|
+
context.write(this.buildTimeExpression);
|
|
59
|
+
super.serialize(context);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Restores this instance from the provided deserializer context.
|
|
64
|
+
* @param {ObjectDeserializerContext} context context
|
|
65
|
+
*/
|
|
66
|
+
deserialize(context) {
|
|
67
|
+
this.buildTimeExpression = context.read();
|
|
68
|
+
super.deserialize(context.rest);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
makeSerializable(
|
|
73
|
+
BuildTimeConstDependency,
|
|
74
|
+
"webpack/lib/dependencies/BuildTimeConstDependency"
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
BuildTimeConstDependency.Template = class BuildTimeConstDependencyTemplate extends (
|
|
78
|
+
NullDependency.Template
|
|
79
|
+
) {
|
|
80
|
+
/**
|
|
81
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
82
|
+
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
83
|
+
* @param {ReplaceSource} source the current replace source which can be modified
|
|
84
|
+
* @param {DependencyTemplateContext} templateContext the context object
|
|
85
|
+
* @returns {void}
|
|
86
|
+
*/
|
|
87
|
+
apply(dependency, source, templateContext) {
|
|
88
|
+
const dep = /** @type {BuildTimeConstDependency} */ (dependency);
|
|
89
|
+
if (dep.runtimeRequirements) {
|
|
90
|
+
for (const req of dep.runtimeRequirements) {
|
|
91
|
+
templateContext.runtimeRequirements.add(req);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
const expression = templateContext.chunkGraph.buildTimeExecution
|
|
95
|
+
? dep.buildTimeExpression
|
|
96
|
+
: dep.expression;
|
|
97
|
+
const range = /** @type {Range} */ (dep.range);
|
|
98
|
+
source.replace(range[0], range[1] - 1, expression);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
module.exports = BuildTimeConstDependency;
|
|
@@ -10,14 +10,17 @@ const InitFragment = require("../InitFragment");
|
|
|
10
10
|
const makeSerializable = require("../util/makeSerializable");
|
|
11
11
|
const NullDependency = require("./NullDependency");
|
|
12
12
|
|
|
13
|
-
/** @
|
|
14
|
-
/** @
|
|
15
|
-
/** @
|
|
16
|
-
/** @
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
/** @import { ReplaceSource } from "webpack-sources" */
|
|
14
|
+
/** @import Dependency, { UpdateHashContext } from "../Dependency" */
|
|
15
|
+
/** @import { DependencyTemplateContext } from "../DependencyTemplate" */
|
|
16
|
+
/** @import { Range } from "../javascript/JavascriptParser" */
|
|
17
|
+
/**
|
|
18
|
+
* @import {
|
|
19
|
+
* ObjectDeserializerContext,
|
|
20
|
+
* ObjectSerializerContext
|
|
21
|
+
* } from "../serialization/ObjectMiddleware"
|
|
22
|
+
*/
|
|
23
|
+
/** @import Hash from "../util/Hash" */
|
|
21
24
|
|
|
22
25
|
class CachedConstDependency extends NullDependency {
|
|
23
26
|
/**
|
|
@@ -5,17 +5,15 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const
|
|
8
|
+
const Entrypoint = require("../Entrypoint");
|
|
9
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
|
-
const Template = require("../Template");
|
|
11
10
|
const { propertyAccess } = require("../util/property");
|
|
12
11
|
|
|
13
|
-
/** @
|
|
14
|
-
/** @
|
|
15
|
-
/** @
|
|
16
|
-
/** @
|
|
17
|
-
/** @
|
|
18
|
-
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
12
|
+
/** @import ChunkGraph from "../ChunkGraph" */
|
|
13
|
+
/** @import Module, { RuntimeRequirements } from "../Module" */
|
|
14
|
+
/** @import RuntimeTemplate from "../RuntimeTemplate" */
|
|
15
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
16
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
19
17
|
/** @typedef {"exports" | "module.exports" | "this" | "Object.defineProperty(exports)" | "Object.defineProperty(module.exports)" | "Object.defineProperty(this)"} CommonJSDependencyBaseKeywords */
|
|
20
18
|
|
|
21
19
|
/**
|
|
@@ -75,54 +73,65 @@ const getRequireEsmModuleExportsAccess = (
|
|
|
75
73
|
|
|
76
74
|
module.exports.ESM_MODULE_EXPORTS_NAME = ESM_MODULE_EXPORTS_NAME;
|
|
77
75
|
|
|
76
|
+
module.exports.getRequireEsmModuleExportsAccess =
|
|
77
|
+
getRequireEsmModuleExportsAccess;
|
|
78
|
+
|
|
78
79
|
/**
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* @param {ConcatenationScope} concatenationScope the concatenation scope
|
|
83
|
-
* @param {InitFragment<GenerateContext>[]} initFragments init fragments (receives the `var` declaration)
|
|
84
|
-
* @param {string[]} names full member chain of the reference (at least one entry)
|
|
85
|
-
* @returns {string} replacement expression for the whole reference
|
|
80
|
+
* Whether the base keyword reads the module's top-level `this`.
|
|
81
|
+
* @param {CommonJSDependencyBaseKeywords} depBase commonjs dependency base
|
|
82
|
+
* @returns {boolean} true when the base is `this`
|
|
86
83
|
*/
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
84
|
+
const isThisBase = (depBase) =>
|
|
85
|
+
depBase === "this" || depBase === "Object.defineProperty(this)";
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* A classic worker script's top-level `this` is its global scope, not the
|
|
89
|
+
* module's exports. True only for a runtime every entry of which is a worker,
|
|
90
|
+
* so a module imported elsewhere keeps exports semantics in that runtime.
|
|
91
|
+
* @param {Module} module the module
|
|
92
|
+
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
93
|
+
* @param {RuntimeSpec} runtime the runtime code is generated for
|
|
94
|
+
* @param {RuntimeTemplate=} runtimeTemplate the runtime template
|
|
95
|
+
* @returns {boolean} true when `this` is the worker's global scope
|
|
96
|
+
*/
|
|
97
|
+
const isWorkerEntryThis = (module, chunkGraph, runtime, runtimeTemplate) => {
|
|
98
|
+
// a module worker or worklet is an ES module, where `this` is undefined and
|
|
99
|
+
// there is nothing to resolve it to
|
|
100
|
+
if (
|
|
101
|
+
typeof runtime !== "string" ||
|
|
102
|
+
runtimeTemplate === undefined ||
|
|
103
|
+
runtimeTemplate.isModule()
|
|
104
|
+
) {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
let workerEntry = false;
|
|
108
|
+
for (const chunk of chunkGraph.getModuleChunks(module)) {
|
|
109
|
+
if (chunk.runtime !== runtime) continue;
|
|
110
|
+
for (const group of chunk.groupsIterable) {
|
|
111
|
+
if (!(group instanceof Entrypoint)) continue;
|
|
112
|
+
const { options } = group;
|
|
113
|
+
// an entry may pin a worker to a non-worker entry's runtime, leaving one
|
|
114
|
+
// code generation for both roles: keep exports, the only safe answer
|
|
115
|
+
if (!options.worker || options.worklet) return false;
|
|
116
|
+
workerEntry = true;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return workerEntry;
|
|
111
120
|
};
|
|
112
|
-
module.exports.getRequireEsmModuleExportsAccess =
|
|
113
|
-
getRequireEsmModuleExportsAccess;
|
|
114
121
|
|
|
115
122
|
/**
|
|
116
123
|
* Returns type and base.
|
|
117
124
|
* @param {CommonJSDependencyBaseKeywords} depBase commonjs dependency base
|
|
118
125
|
* @param {Module} module module
|
|
119
126
|
* @param {RuntimeRequirements} runtimeRequirements runtime requirements
|
|
127
|
+
* @param {boolean=} isWorkerEntry whether `this` is a classic worker's global scope
|
|
120
128
|
* @returns {[string, string]} type and base
|
|
121
129
|
*/
|
|
122
130
|
module.exports.handleDependencyBase = (
|
|
123
131
|
depBase,
|
|
124
132
|
module,
|
|
125
|
-
runtimeRequirements
|
|
133
|
+
runtimeRequirements,
|
|
134
|
+
isWorkerEntry
|
|
126
135
|
) => {
|
|
127
136
|
/** @type {string} */
|
|
128
137
|
let base;
|
|
@@ -140,8 +149,13 @@ module.exports.handleDependencyBase = (
|
|
|
140
149
|
type = "expression";
|
|
141
150
|
break;
|
|
142
151
|
case "this":
|
|
143
|
-
|
|
144
|
-
|
|
152
|
+
if (isWorkerEntry) {
|
|
153
|
+
runtimeRequirements.add(RuntimeGlobals.global);
|
|
154
|
+
base = RuntimeGlobals.global;
|
|
155
|
+
} else {
|
|
156
|
+
runtimeRequirements.add(RuntimeGlobals.thisAsExports);
|
|
157
|
+
base = "this";
|
|
158
|
+
}
|
|
145
159
|
type = "expression";
|
|
146
160
|
break;
|
|
147
161
|
case "Object.defineProperty(exports)":
|
|
@@ -155,8 +169,13 @@ module.exports.handleDependencyBase = (
|
|
|
155
169
|
type = "Object.defineProperty";
|
|
156
170
|
break;
|
|
157
171
|
case "Object.defineProperty(this)":
|
|
158
|
-
|
|
159
|
-
|
|
172
|
+
if (isWorkerEntry) {
|
|
173
|
+
runtimeRequirements.add(RuntimeGlobals.global);
|
|
174
|
+
base = RuntimeGlobals.global;
|
|
175
|
+
} else {
|
|
176
|
+
runtimeRequirements.add(RuntimeGlobals.thisAsExports);
|
|
177
|
+
base = "this";
|
|
178
|
+
}
|
|
160
179
|
type = "Object.defineProperty";
|
|
161
180
|
break;
|
|
162
181
|
default:
|
|
@@ -167,3 +186,5 @@ module.exports.handleDependencyBase = (
|
|
|
167
186
|
};
|
|
168
187
|
module.exports.isRequireEsmModuleExportsModule =
|
|
169
188
|
isRequireEsmModuleExportsModule;
|
|
189
|
+
module.exports.isThisBase = isThisBase;
|
|
190
|
+
module.exports.isWorkerEntryThis = isWorkerEntryThis;
|
|
@@ -20,20 +20,29 @@ const {
|
|
|
20
20
|
const ModuleDependency = require("./ModuleDependency");
|
|
21
21
|
const processExportInfo = require("./processExportInfo");
|
|
22
22
|
|
|
23
|
-
/** @
|
|
24
|
-
/**
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
/** @
|
|
35
|
-
/** @
|
|
36
|
-
/** @
|
|
23
|
+
/** @import { ReplaceSource } from "webpack-sources" */
|
|
24
|
+
/**
|
|
25
|
+
* @import {
|
|
26
|
+
* ExportsSpec,
|
|
27
|
+
* GetConditionFn,
|
|
28
|
+
* RawReferencedExports,
|
|
29
|
+
* ReferencedExports,
|
|
30
|
+
* TRANSITIVE,
|
|
31
|
+
* ExportInfoName
|
|
32
|
+
* } from "../Dependency"
|
|
33
|
+
*/
|
|
34
|
+
/** @import { DependencyTemplateContext } from "../DependencyTemplate" */
|
|
35
|
+
/** @import ExportsInfo, { ExportInfo } from "../ExportsInfo" */
|
|
36
|
+
/** @import Module from "../Module" */
|
|
37
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
38
|
+
/** @import ModuleGraphConnection from "../ModuleGraphConnection" */
|
|
39
|
+
/** @import { Range } from "../javascript/JavascriptParser" */
|
|
40
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
41
|
+
/**
|
|
42
|
+
* @import {
|
|
43
|
+
* CommonJSDependencyBaseKeywords
|
|
44
|
+
* } from "./CommonJsDependencyHelpers"
|
|
45
|
+
*/
|
|
37
46
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[undefined | boolean, Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[], ExportInfoName[], boolean, boolean]>} ObjectDeserializerContext */
|
|
38
47
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[undefined | boolean, Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[], ExportInfoName[], boolean, boolean]>} ObjectSerializerContext */
|
|
39
48
|
|
|
@@ -93,6 +102,40 @@ class CommonJsExportRequireDependency extends ModuleDependency {
|
|
|
93
102
|
return Dependency.TRANSITIVE;
|
|
94
103
|
}
|
|
95
104
|
|
|
105
|
+
/**
|
|
106
|
+
* Returns true if this dependency can be concatenated
|
|
107
|
+
* @param {boolean} concatenateCommonJsModules whether optimization.concatenateModules.commonjs is enabled
|
|
108
|
+
* @returns {boolean} true if this dependency can be concatenated
|
|
109
|
+
*/
|
|
110
|
+
canConcatenate(concatenateCommonJsModules) {
|
|
111
|
+
return concatenateCommonJsModules;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Returns function to determine if the connection is active.
|
|
116
|
+
* @param {ModuleGraph} moduleGraph module graph
|
|
117
|
+
* @returns {null | false | GetConditionFn} function to determine if the connection is active
|
|
118
|
+
*/
|
|
119
|
+
getCondition(moduleGraph) {
|
|
120
|
+
// Conservative: keep `module.exports = require(...)` (names empty) active even
|
|
121
|
+
// when the parent is evaluation-only and the target is side-effect-free.
|
|
122
|
+
if (this.resultUsed || this.names.length === 0) return null;
|
|
123
|
+
const names = this.names;
|
|
124
|
+
const getter = this.getter;
|
|
125
|
+
return (connection, runtime) => {
|
|
126
|
+
const parentModule = moduleGraph.getParentModule(this);
|
|
127
|
+
if (!parentModule) return true;
|
|
128
|
+
const used = moduleGraph
|
|
129
|
+
.getExportsInfo(parentModule)
|
|
130
|
+
.getUsedName(names, runtime);
|
|
131
|
+
if (used !== false) return true;
|
|
132
|
+
if (getter) return false;
|
|
133
|
+
const refModule = connection.resolvedModule;
|
|
134
|
+
if (!refModule) return true;
|
|
135
|
+
return refModule.getSideEffectsConnectionState(moduleGraph);
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
|
|
96
139
|
/**
|
|
97
140
|
* Returns the imported id.
|
|
98
141
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
@@ -149,7 +192,7 @@ class CommonJsExportRequireDependency extends ModuleDependency {
|
|
|
149
192
|
);
|
|
150
193
|
for (const name of this.names) {
|
|
151
194
|
const exportInfo =
|
|
152
|
-
/** @type {ExportInfo} */
|
|
195
|
+
/** @type {InstanceType<ExportInfo>} */
|
|
153
196
|
(exportsInfo.getReadOnlyExportInfo(name));
|
|
154
197
|
const used = exportInfo.getUsed(runtime);
|
|
155
198
|
if (used === UsageState.Unused) return Dependency.NO_EXPORTS_REFERENCED;
|
|
@@ -440,7 +483,8 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
|
|
|
440
483
|
chunkGraph,
|
|
441
484
|
moduleGraph,
|
|
442
485
|
runtimeRequirements,
|
|
443
|
-
runtime
|
|
486
|
+
runtime,
|
|
487
|
+
concatenationScope
|
|
444
488
|
}
|
|
445
489
|
) {
|
|
446
490
|
const dep = /** @type {CommonJsExportRequireDependency} */ (dependency);
|
|
@@ -449,6 +493,16 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
|
|
|
449
493
|
moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
|
|
450
494
|
);
|
|
451
495
|
|
|
496
|
+
const connection = /** @type {ModuleGraphConnection | undefined} */ (
|
|
497
|
+
moduleGraph.getConnection(dep)
|
|
498
|
+
);
|
|
499
|
+
// Inactive unused reexport: no module id; drop to a no-op.
|
|
500
|
+
// Missing connection (e.g. IgnorePlugin) must keep the require so it throws.
|
|
501
|
+
if (!used && connection && !connection.isTargetActive(runtime)) {
|
|
502
|
+
source.replace(dep.range[0], dep.range[1] - 1, "/* unused reexport */ 0");
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
505
|
+
|
|
452
506
|
const [type, base] = handleDependencyBase(
|
|
453
507
|
dep.base,
|
|
454
508
|
module,
|
|
@@ -456,32 +510,55 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
|
|
|
456
510
|
);
|
|
457
511
|
|
|
458
512
|
const importedModule = moduleGraph.getModule(dep);
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
513
|
+
/** @type {string} */
|
|
514
|
+
let requireExpr;
|
|
515
|
+
if (
|
|
516
|
+
concatenationScope &&
|
|
517
|
+
importedModule &&
|
|
518
|
+
concatenationScope.isModuleInScope(importedModule)
|
|
519
|
+
) {
|
|
520
|
+
// The alias reads the target's exports value, so it binds like `require()`
|
|
521
|
+
// rather than an ESM import: no interop.
|
|
467
522
|
const ids = dep.getIds(moduleGraph);
|
|
468
|
-
const
|
|
523
|
+
const requestedIds = isRequireEsmModuleExportsModule(
|
|
469
524
|
importedModule,
|
|
470
|
-
moduleGraph
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
525
|
+
moduleGraph
|
|
526
|
+
)
|
|
527
|
+
? [ESM_MODULE_EXPORTS_NAME, ...ids]
|
|
528
|
+
: ids;
|
|
529
|
+
requireExpr = concatenationScope.createModuleReference(importedModule, {
|
|
530
|
+
ids: requestedIds.length > 0 ? requestedIds : undefined,
|
|
531
|
+
asiSafe: true,
|
|
532
|
+
moduleExportsAccess: true
|
|
533
|
+
});
|
|
534
|
+
} else {
|
|
535
|
+
requireExpr = runtimeTemplate.moduleExports({
|
|
536
|
+
module: importedModule,
|
|
537
|
+
chunkGraph,
|
|
538
|
+
request: dep.request,
|
|
539
|
+
weak: dep.weak,
|
|
540
|
+
runtimeRequirements
|
|
541
|
+
});
|
|
542
|
+
if (importedModule) {
|
|
543
|
+
const ids = dep.getIds(moduleGraph);
|
|
544
|
+
const esmRequireAccess = getRequireEsmModuleExportsAccess(
|
|
545
|
+
importedModule,
|
|
546
|
+
moduleGraph,
|
|
547
|
+
runtime
|
|
479
548
|
);
|
|
480
|
-
if (
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
549
|
+
if (esmRequireAccess !== null) {
|
|
550
|
+
requireExpr += `${esmRequireAccess}${propertyAccess(ids)}`;
|
|
551
|
+
} else {
|
|
552
|
+
// CJS exports are never inlined
|
|
553
|
+
const usedImported = /** @type {string | string[] | false} */ (
|
|
554
|
+
moduleGraph.getExportsInfo(importedModule).getUsedName(ids, runtime)
|
|
555
|
+
);
|
|
556
|
+
if (usedImported) {
|
|
557
|
+
const comment = equals(usedImported, ids)
|
|
558
|
+
? ""
|
|
559
|
+
: `${Template.toNormalComment(propertyAccess(ids))} `;
|
|
560
|
+
requireExpr += `${comment}${propertyAccess(/** @type {string[]} */ (usedImported))}`;
|
|
561
|
+
}
|
|
485
562
|
}
|
|
486
563
|
}
|
|
487
564
|
}
|
|
@@ -502,14 +579,12 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
|
|
|
502
579
|
// barrel files (e.g. webpack's own `lib/index.js`).
|
|
503
580
|
const valueRange = /** @type {Range} */ (dep.valueRange);
|
|
504
581
|
if (!used) {
|
|
505
|
-
//
|
|
506
|
-
//
|
|
582
|
+
// Active unused eager reexport: keep side effects. Unused getters
|
|
583
|
+
// are inactive and already replaced with `0` above.
|
|
507
584
|
source.replace(
|
|
508
585
|
dep.range[0],
|
|
509
586
|
dep.range[1] - 1,
|
|
510
|
-
|
|
511
|
-
? "/* unused reexport */ 0"
|
|
512
|
-
: `/* unused reexport */ ${requireExpr}`
|
|
587
|
+
`/* unused reexport */ ${requireExpr}`
|
|
513
588
|
);
|
|
514
589
|
return;
|
|
515
590
|
}
|
|
@@ -533,5 +608,6 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
|
|
|
533
608
|
}
|
|
534
609
|
};
|
|
535
610
|
|
|
611
|
+
CommonJsExportRequireDependency.idsSymbol = idsSymbol;
|
|
612
|
+
|
|
536
613
|
module.exports = CommonJsExportRequireDependency;
|
|
537
|
-
module.exports.idsSymbol = idsSymbol;
|
|
@@ -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) {
|