@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
|
@@ -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;
|
|
@@ -240,6 +283,25 @@ class CommonJsExportRequireDependency extends ModuleDependency {
|
|
|
240
283
|
dependencies: [from.module]
|
|
241
284
|
};
|
|
242
285
|
}
|
|
286
|
+
// The imported namespace ESM hasn't been flagged by
|
|
287
|
+
// FlagDependencyExportsPlugin yet (no exports determined), so its
|
|
288
|
+
// `"module.exports"` unwrap eligibility is still unknown. Star-reexporting
|
|
289
|
+
// now would add `__esModule` (and names) the monotonic merge can't retract
|
|
290
|
+
// once the module turns out to unwrap, making the result order-dependent
|
|
291
|
+
// across runtimes; defer — the `from.module` dependency re-queues us once
|
|
292
|
+
// its exports (owned names, or dynamic `other`) become known.
|
|
293
|
+
if (
|
|
294
|
+
importedModule &&
|
|
295
|
+
importedModule.getExportsType(moduleGraph, false) === "namespace"
|
|
296
|
+
) {
|
|
297
|
+
const importedExportsInfo = moduleGraph.getExportsInfo(importedModule);
|
|
298
|
+
if (
|
|
299
|
+
importedExportsInfo.otherExportsInfo.provided === false &&
|
|
300
|
+
importedExportsInfo.ownedExports[Symbol.iterator]().next().done
|
|
301
|
+
) {
|
|
302
|
+
return { exports: [], dependencies: [from.module] };
|
|
303
|
+
}
|
|
304
|
+
}
|
|
243
305
|
const reexportInfo = this.getStarReexports(
|
|
244
306
|
moduleGraph,
|
|
245
307
|
undefined,
|
|
@@ -421,7 +483,8 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
|
|
|
421
483
|
chunkGraph,
|
|
422
484
|
moduleGraph,
|
|
423
485
|
runtimeRequirements,
|
|
424
|
-
runtime
|
|
486
|
+
runtime,
|
|
487
|
+
concatenationScope
|
|
425
488
|
}
|
|
426
489
|
) {
|
|
427
490
|
const dep = /** @type {CommonJsExportRequireDependency} */ (dependency);
|
|
@@ -430,6 +493,16 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
|
|
|
430
493
|
moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
|
|
431
494
|
);
|
|
432
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
|
+
|
|
433
506
|
const [type, base] = handleDependencyBase(
|
|
434
507
|
dep.base,
|
|
435
508
|
module,
|
|
@@ -437,32 +510,55 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
|
|
|
437
510
|
);
|
|
438
511
|
|
|
439
512
|
const importedModule = moduleGraph.getModule(dep);
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
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.
|
|
448
522
|
const ids = dep.getIds(moduleGraph);
|
|
449
|
-
const
|
|
523
|
+
const requestedIds = isRequireEsmModuleExportsModule(
|
|
450
524
|
importedModule,
|
|
451
|
-
moduleGraph
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
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
|
|
460
548
|
);
|
|
461
|
-
if (
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
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
|
+
}
|
|
466
562
|
}
|
|
467
563
|
}
|
|
468
564
|
}
|
|
@@ -483,14 +579,12 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
|
|
|
483
579
|
// barrel files (e.g. webpack's own `lib/index.js`).
|
|
484
580
|
const valueRange = /** @type {Range} */ (dep.valueRange);
|
|
485
581
|
if (!used) {
|
|
486
|
-
//
|
|
487
|
-
//
|
|
582
|
+
// Active unused eager reexport: keep side effects. Unused getters
|
|
583
|
+
// are inactive and already replaced with `0` above.
|
|
488
584
|
source.replace(
|
|
489
585
|
dep.range[0],
|
|
490
586
|
dep.range[1] - 1,
|
|
491
|
-
|
|
492
|
-
? "/* unused reexport */ 0"
|
|
493
|
-
: `/* unused reexport */ ${requireExpr}`
|
|
587
|
+
`/* unused reexport */ ${requireExpr}`
|
|
494
588
|
);
|
|
495
589
|
return;
|
|
496
590
|
}
|
|
@@ -514,5 +608,6 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
|
|
|
514
608
|
}
|
|
515
609
|
};
|
|
516
610
|
|
|
611
|
+
CommonJsExportRequireDependency.idsSymbol = idsSymbol;
|
|
612
|
+
|
|
517
613
|
module.exports = CommonJsExportRequireDependency;
|
|
518
|
-
module.exports.idsSymbol = idsSymbol;
|