@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
package/lib/ExternalModule.js
CHANGED
|
@@ -25,55 +25,75 @@ const WebpackError = require("./WebpackError");
|
|
|
25
25
|
const { DEFAULTS } = require("./config/defaults");
|
|
26
26
|
const { ImportPhaseUtils } = require("./dependencies/ImportPhase");
|
|
27
27
|
const StaticExportsDependency = require("./dependencies/StaticExportsDependency");
|
|
28
|
-
const EnvironmentNotSupportAsyncWarning = require("./errors/EnvironmentNotSupportAsyncWarning");
|
|
29
28
|
const { coreModules } = require("./node/nodeBuiltins");
|
|
30
29
|
const createHash = require("./util/createHash");
|
|
31
30
|
const createHooksRegistry = require("./util/createHooksRegistry");
|
|
32
31
|
const extractUrlAndGlobal = require("./util/extractUrlAndGlobal");
|
|
33
32
|
const makeSerializable = require("./util/makeSerializable");
|
|
33
|
+
const memoize = require("./util/memoize");
|
|
34
34
|
const { propertyAccess } = require("./util/property");
|
|
35
35
|
const { register } = require("./util/serialization");
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
/** @
|
|
42
|
-
/**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
/** @
|
|
55
|
-
/** @
|
|
56
|
-
/** @
|
|
57
|
-
/** @
|
|
58
|
-
/** @
|
|
59
|
-
/** @
|
|
60
|
-
/**
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
37
|
+
const getEnvironmentNotSupportAsyncWarning = memoize(() =>
|
|
38
|
+
require("./errors/EnvironmentNotSupportAsyncWarning")
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
/** @import { Source } from "webpack-sources" */
|
|
42
|
+
/**
|
|
43
|
+
* @import {
|
|
44
|
+
* ExternalsType,
|
|
45
|
+
* HashFunction,
|
|
46
|
+
* ExternalItemInterop as ExternalInterop
|
|
47
|
+
* } from "../declarations/WebpackOptions"
|
|
48
|
+
*/
|
|
49
|
+
/**
|
|
50
|
+
* @import {
|
|
51
|
+
* WebpackOptionsNormalizedWithDefaults as WebpackOptions
|
|
52
|
+
* } from "./config/defaults"
|
|
53
|
+
*/
|
|
54
|
+
/** @import Chunk from "./Chunk" */
|
|
55
|
+
/** @import ChunkGraph, { ModuleId } from "./ChunkGraph" */
|
|
56
|
+
/** @import Compilation, { UnsafeCacheData } from "./Compilation" */
|
|
57
|
+
/** @import { UpdateHashContext } from "./Dependency" */
|
|
58
|
+
/** @import ExportsInfo from "./ExportsInfo" */
|
|
59
|
+
/** @import { GenerateContext } from "./Generator" */
|
|
60
|
+
/**
|
|
61
|
+
* @import {
|
|
62
|
+
* BuildMeta,
|
|
63
|
+
* BuildCallback,
|
|
64
|
+
* BuildInfo,
|
|
65
|
+
* CodeGenerationContext,
|
|
66
|
+
* CodeGenerationResult,
|
|
67
|
+
* CodeGenerationResultData,
|
|
68
|
+
* ConcatenationBailoutReasonContext,
|
|
69
|
+
* LibIdentOptions,
|
|
70
|
+
* LibIdent,
|
|
71
|
+
* NeedBuildCallback,
|
|
72
|
+
* NeedBuildContext,
|
|
73
|
+
* RuntimeRequirements,
|
|
74
|
+
* ReadOnlyRuntimeRequirements,
|
|
75
|
+
* Sources,
|
|
76
|
+
* SourceTypes
|
|
77
|
+
* } from "./Module"
|
|
78
|
+
*/
|
|
79
|
+
/** @import ModuleGraph from "./ModuleGraph" */
|
|
80
|
+
/** @import { ConnectionState } from "./ModuleGraphConnection" */
|
|
81
|
+
/** @import NormalModuleFactory from "./NormalModuleFactory" */
|
|
82
|
+
/** @import RequestShortener from "./RequestShortener" */
|
|
83
|
+
/** @import { ResolverWithOptions } from "./ResolverFactory" */
|
|
84
|
+
/** @import RuntimeTemplate from "./RuntimeTemplate" */
|
|
85
|
+
/**
|
|
86
|
+
* @import {
|
|
87
|
+
* ChunkRenderContext
|
|
88
|
+
* } from "./javascript/JavascriptModulesPlugin"
|
|
89
|
+
*/
|
|
90
|
+
/** @import { ImportAttributes } from "./javascript/JavascriptParser" */
|
|
91
|
+
/** @import { ImportPhaseType } from "./dependencies/ImportPhase" */
|
|
92
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext<[ExternalModuleRequest, ExternalsType, string, DependencyMeta | undefined, ExternalInterop | undefined, boolean | undefined]>} ObjectDeserializerContext */
|
|
93
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext<[ExternalModuleRequest, ExternalsType, string, DependencyMeta | undefined, ExternalInterop | undefined, boolean | undefined]>} ObjectSerializerContext */
|
|
94
|
+
/** @import Hash from "./util/Hash" */
|
|
95
|
+
/** @import { InputFileSystem } from "./util/fs" */
|
|
96
|
+
/** @import { RuntimeSpec } from "./util/runtime" */
|
|
77
97
|
|
|
78
98
|
/** @typedef {{ attributes?: ImportAttributes, phase?: ImportPhaseType, externalType: "import" | "module" | undefined }} ImportDependencyMeta */
|
|
79
99
|
/** @typedef {{ layer?: string, supports?: string, media?: string }} CssImportDependencyMeta */
|
|
@@ -277,6 +297,32 @@ const getSourceForCommonJsExternalInNodeModule = (
|
|
|
277
297
|
};
|
|
278
298
|
};
|
|
279
299
|
|
|
300
|
+
/**
|
|
301
|
+
* A phase is syntax the target has to read, with no form to fall back to. Reported
|
|
302
|
+
* like the `import()` check beside it, so the build fails rather than the bundle.
|
|
303
|
+
* @param {ImportPhaseType | undefined} phase the phase the reference asks for
|
|
304
|
+
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
305
|
+
* @returns {void}
|
|
306
|
+
*/
|
|
307
|
+
const checkPhaseIsSupported = (phase, runtimeTemplate) => {
|
|
308
|
+
if (
|
|
309
|
+
ImportPhaseUtils.isDefer(phase) &&
|
|
310
|
+
!runtimeTemplate.supportsDeferImport()
|
|
311
|
+
) {
|
|
312
|
+
throw new Error(
|
|
313
|
+
"The target environment doesn't support 'import defer', so an external cannot be imported in the defer phase. Set 'output.environment.deferImport' when the target reads it."
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
if (
|
|
317
|
+
ImportPhaseUtils.isSource(phase) &&
|
|
318
|
+
!runtimeTemplate.supportsSourceImport()
|
|
319
|
+
) {
|
|
320
|
+
throw new Error(
|
|
321
|
+
"The target environment doesn't support 'import source', so an external cannot be imported in the source phase. Set 'output.environment.sourceImport' when the target reads it."
|
|
322
|
+
);
|
|
323
|
+
}
|
|
324
|
+
};
|
|
325
|
+
|
|
280
326
|
/**
|
|
281
327
|
* Gets source for import external.
|
|
282
328
|
* @param {ModuleAndSpecifiers} moduleAndSpecifiers the module request
|
|
@@ -299,15 +345,24 @@ const getSourceForImportExternal = (
|
|
|
299
345
|
);
|
|
300
346
|
}
|
|
301
347
|
const phase = dependencyMeta && dependencyMeta.phase;
|
|
348
|
+
checkPhaseIsSupported(phase, runtimeTemplate);
|
|
302
349
|
// `import.defer(…)` and `import.source(…)` are only valid forms of the
|
|
303
350
|
// native `import(…)` function, so we only emit the phase suffix when the
|
|
304
|
-
// importFunctionName is the default `"import"`.
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
351
|
+
// importFunctionName is the default `"import"`. Anything else has no phase
|
|
352
|
+
// form at all, and dropping it would silently import eagerly instead.
|
|
353
|
+
if (
|
|
354
|
+
baseImportName !== "import" &&
|
|
355
|
+
(ImportPhaseUtils.isDefer(phase) || ImportPhaseUtils.isSource(phase))
|
|
356
|
+
) {
|
|
357
|
+
throw new Error(
|
|
358
|
+
`'import.defer' and 'import.source' are forms of the native 'import()', so an external cannot be imported in a phase while 'output.importFunctionName' is '${baseImportName}'`
|
|
359
|
+
);
|
|
360
|
+
}
|
|
361
|
+
const importName = ImportPhaseUtils.isDefer(phase)
|
|
362
|
+
? "import.defer"
|
|
363
|
+
: ImportPhaseUtils.isSource(phase)
|
|
364
|
+
? "import.source"
|
|
365
|
+
: baseImportName;
|
|
311
366
|
const attributes =
|
|
312
367
|
dependencyMeta && dependencyMeta.attributes
|
|
313
368
|
? dependencyMeta.attributes._isLegacyAssert
|
|
@@ -317,18 +372,24 @@ const getSourceForImportExternal = (
|
|
|
317
372
|
)} }`
|
|
318
373
|
: `, { with: ${JSON.stringify(dependencyMeta.attributes)} }`
|
|
319
374
|
: "";
|
|
375
|
+
// `import.source(…)` resolves to the source object itself, while every other
|
|
376
|
+
// external here resolves to a namespace. Consumers unwrap `default` to reach a
|
|
377
|
+
// source, so hand them that shape rather than a value they read `default` off.
|
|
378
|
+
const asNamespace = ImportPhaseUtils.isSource(phase)
|
|
379
|
+
? `.then(${runtimeTemplate.returningFunction('{ "default": m }', "m")})`
|
|
380
|
+
: "";
|
|
320
381
|
if (!Array.isArray(moduleAndSpecifiers)) {
|
|
321
382
|
return {
|
|
322
383
|
expression: `${importName}(${JSON.stringify(
|
|
323
384
|
moduleAndSpecifiers
|
|
324
|
-
)}${attributes});`
|
|
385
|
+
)}${attributes})${asNamespace};`
|
|
325
386
|
};
|
|
326
387
|
}
|
|
327
388
|
if (moduleAndSpecifiers.length === 1) {
|
|
328
389
|
return {
|
|
329
390
|
expression: `${importName}(${JSON.stringify(
|
|
330
391
|
moduleAndSpecifiers[0]
|
|
331
|
-
)}${attributes});`
|
|
392
|
+
)}${attributes})${asNamespace};`
|
|
332
393
|
};
|
|
333
394
|
}
|
|
334
395
|
const moduleName = moduleAndSpecifiers[0];
|
|
@@ -384,6 +445,14 @@ class ModuleExternalInitFragment extends InitFragment {
|
|
|
384
445
|
.digest("hex")
|
|
385
446
|
.slice(0, 8)}`;
|
|
386
447
|
}
|
|
448
|
+
// One request in two phases is two imports, so the phase must reach the dedupe
|
|
449
|
+
// key and the binding name — otherwise one silently replaces the other.
|
|
450
|
+
const phase = dependencyMeta && dependencyMeta.phase;
|
|
451
|
+
if (ImportPhaseUtils.isDefer(phase)) {
|
|
452
|
+
ident += "_defer";
|
|
453
|
+
} else if (ImportPhaseUtils.isSource(phase)) {
|
|
454
|
+
ident += "_source";
|
|
455
|
+
}
|
|
387
456
|
}
|
|
388
457
|
|
|
389
458
|
super(
|
|
@@ -444,8 +513,15 @@ class ModuleExternalInitFragment extends InitFragment {
|
|
|
444
513
|
: ` with ${JSON.stringify(dependencyMeta.attributes)}`
|
|
445
514
|
: "";
|
|
446
515
|
const phase = dependencyMeta && dependencyMeta.phase;
|
|
516
|
+
checkPhaseIsSupported(phase, context.runtimeTemplate);
|
|
447
517
|
let content = "";
|
|
448
|
-
if (imported === true) {
|
|
518
|
+
if (ImportPhaseUtils.isSource(phase) && imported === true) {
|
|
519
|
+
// There is no `import source * as ns` form: the source phase binds one
|
|
520
|
+
// identifier, so it stands in for the namespace the other branches build.
|
|
521
|
+
content = `import source ${identifier} from ${JSON.stringify(
|
|
522
|
+
request
|
|
523
|
+
)}${attributes};\n`;
|
|
524
|
+
} else if (imported === true) {
|
|
449
525
|
// namespace
|
|
450
526
|
const phaseKeyword = ImportPhaseUtils.isDefer(phase) ? "defer " : "";
|
|
451
527
|
content = `import ${phaseKeyword}* as ${identifier} from ${JSON.stringify(
|
|
@@ -621,6 +697,16 @@ const getSourceForModuleExternal = (
|
|
|
621
697
|
imported = true;
|
|
622
698
|
}
|
|
623
699
|
|
|
700
|
+
// A source phase binds `default` alone. With nothing used the list would be empty
|
|
701
|
+
// and emit `import "…"`, evaluating the module whose source was asked for instead.
|
|
702
|
+
if (
|
|
703
|
+
ImportPhaseUtils.isSource(phase) &&
|
|
704
|
+
Array.isArray(imported) &&
|
|
705
|
+
imported.length === 0
|
|
706
|
+
) {
|
|
707
|
+
imported = [["default", "default"]];
|
|
708
|
+
}
|
|
709
|
+
|
|
624
710
|
const initFragment = new ModuleExternalInitFragment(
|
|
625
711
|
moduleAndSpecifiers[0],
|
|
626
712
|
imported,
|
|
@@ -636,7 +722,9 @@ const getSourceForModuleExternal = (
|
|
|
636
722
|
)}`;
|
|
637
723
|
let expression = baseAccess;
|
|
638
724
|
|
|
639
|
-
|
|
725
|
+
// A source-phase binding is not a namespace object, so nothing about it can be
|
|
726
|
+
// remapped export by export — the binding itself is what the reference reads.
|
|
727
|
+
const useNamespace = imported === true && !ImportPhaseUtils.isSource(phase);
|
|
640
728
|
/** @type {undefined | string} */
|
|
641
729
|
let moduleRemapping;
|
|
642
730
|
if (useNamespace) {
|
|
@@ -653,7 +741,9 @@ const getSourceForModuleExternal = (
|
|
|
653
741
|
init: moduleRemapping
|
|
654
742
|
? `${runtimeTemplate.renderConst()} x = ${runtimeTemplate.basicFunction(
|
|
655
743
|
"y",
|
|
656
|
-
`${runtimeTemplate.renderConst()} x = {}; ${
|
|
744
|
+
`${runtimeTemplate.renderConst()} x = {}; ${
|
|
745
|
+
RuntimeGlobals.definePropertyGetters
|
|
746
|
+
}(x, y); return x`
|
|
657
747
|
)} \n${runtimeTemplate.renderConst()} y = ${runtimeTemplate.returningFunction(
|
|
658
748
|
runtimeTemplate.returningFunction("x"),
|
|
659
749
|
"x"
|
|
@@ -838,8 +928,16 @@ class ExternalModule extends Module {
|
|
|
838
928
|
* @param {string} userRequest user request
|
|
839
929
|
* @param {DependencyMeta=} dependencyMeta dependency meta
|
|
840
930
|
* @param {ExternalInterop=} interop how the external's exports interoperate with ES module imports
|
|
931
|
+
* @param {boolean=} sideEffects whether importing the external has side effects (undefined = assume it has)
|
|
841
932
|
*/
|
|
842
|
-
constructor(
|
|
933
|
+
constructor(
|
|
934
|
+
request,
|
|
935
|
+
type,
|
|
936
|
+
userRequest,
|
|
937
|
+
dependencyMeta,
|
|
938
|
+
interop,
|
|
939
|
+
sideEffects
|
|
940
|
+
) {
|
|
843
941
|
super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, null);
|
|
844
942
|
|
|
845
943
|
// Redeclared with the external module specific shape
|
|
@@ -857,6 +955,11 @@ class ExternalModule extends Module {
|
|
|
857
955
|
this.dependencyMeta = dependencyMeta;
|
|
858
956
|
/** @type {ExternalInterop | undefined} interop shape of the external's exports (undefined = importer-driven default) */
|
|
859
957
|
this.interop = interop;
|
|
958
|
+
/** @type {boolean | undefined} declared side-effects state (undefined = assume side effects, webpack can't analyze an external) */
|
|
959
|
+
this.sideEffects = sideEffects;
|
|
960
|
+
if (sideEffects !== undefined) {
|
|
961
|
+
this.factoryMeta = { sideEffectFree: !sideEffects };
|
|
962
|
+
}
|
|
860
963
|
}
|
|
861
964
|
|
|
862
965
|
/**
|
|
@@ -864,17 +967,14 @@ class ExternalModule extends Module {
|
|
|
864
967
|
* @returns {SourceTypes} types available (do not mutate)
|
|
865
968
|
*/
|
|
866
969
|
getSourceTypes() {
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
return ASSET_URL_TYPES;
|
|
874
|
-
}
|
|
875
|
-
} else if (this.externalType === "css-import") {
|
|
876
|
-
return CSS_IMPORT_TYPES;
|
|
970
|
+
// resolved, so a type rendering no javascript is never reported as a
|
|
971
|
+
// javascript module — that would emit a dead `false` factory in the chunk
|
|
972
|
+
const type = this._resolveExternalType(this.externalType);
|
|
973
|
+
// TODO webpack 6 drop "css-url" once the alias is removed
|
|
974
|
+
if (type === ASSET_URL_TYPE || type === "css-url") {
|
|
975
|
+
return ASSET_URL_TYPES;
|
|
877
976
|
}
|
|
977
|
+
if (type === "css-import") return CSS_IMPORT_TYPES;
|
|
878
978
|
|
|
879
979
|
return JAVASCRIPT_TYPES;
|
|
880
980
|
}
|
|
@@ -909,6 +1009,19 @@ class ExternalModule extends Module {
|
|
|
909
1009
|
return compilation.chunkGraph.getNumberOfEntryModules(chunk) > 0;
|
|
910
1010
|
}
|
|
911
1011
|
|
|
1012
|
+
/**
|
|
1013
|
+
* Gets side effects connection state.
|
|
1014
|
+
* @param {ModuleGraph} moduleGraph the module graph
|
|
1015
|
+
* @returns {ConnectionState} how this module should be connected to referencing modules when consumed for side-effects only
|
|
1016
|
+
*/
|
|
1017
|
+
getSideEffectsConnectionState(moduleGraph) {
|
|
1018
|
+
if (this.factoryMeta !== undefined) {
|
|
1019
|
+
if (this.factoryMeta.sideEffectFree) return false;
|
|
1020
|
+
if (this.factoryMeta.sideEffectFree === false) return true;
|
|
1021
|
+
}
|
|
1022
|
+
return true;
|
|
1023
|
+
}
|
|
1024
|
+
|
|
912
1025
|
/**
|
|
913
1026
|
* Returns the unique identifier used to reference this module.
|
|
914
1027
|
* @returns {string} a unique identifier of the module
|
|
@@ -929,6 +1042,11 @@ class ExternalModule extends Module {
|
|
|
929
1042
|
}
|
|
930
1043
|
}
|
|
931
1044
|
if (this.interop) id += `|interop=${this.interop}`;
|
|
1045
|
+
// two externals for the same target with a different side-effects state
|
|
1046
|
+
// must not be merged into one module
|
|
1047
|
+
if (this.sideEffects !== undefined) {
|
|
1048
|
+
id += `|sideEffects=${this.sideEffects}`;
|
|
1049
|
+
}
|
|
932
1050
|
return id;
|
|
933
1051
|
}
|
|
934
1052
|
|
|
@@ -1014,7 +1132,7 @@ class ExternalModule extends Module {
|
|
|
1014
1132
|
}
|
|
1015
1133
|
} else {
|
|
1016
1134
|
this.buildMeta.async = true;
|
|
1017
|
-
|
|
1135
|
+
getEnvironmentNotSupportAsyncWarning().check(
|
|
1018
1136
|
this,
|
|
1019
1137
|
compilation.runtimeTemplate,
|
|
1020
1138
|
"external module"
|
|
@@ -1027,7 +1145,7 @@ class ExternalModule extends Module {
|
|
|
1027
1145
|
break;
|
|
1028
1146
|
case "script":
|
|
1029
1147
|
this.buildMeta.async = true;
|
|
1030
|
-
|
|
1148
|
+
getEnvironmentNotSupportAsyncWarning().check(
|
|
1031
1149
|
this,
|
|
1032
1150
|
compilation.runtimeTemplate,
|
|
1033
1151
|
"external script"
|
|
@@ -1035,7 +1153,7 @@ class ExternalModule extends Module {
|
|
|
1035
1153
|
break;
|
|
1036
1154
|
case "promise":
|
|
1037
1155
|
this.buildMeta.async = true;
|
|
1038
|
-
|
|
1156
|
+
getEnvironmentNotSupportAsyncWarning().check(
|
|
1039
1157
|
this,
|
|
1040
1158
|
compilation.runtimeTemplate,
|
|
1041
1159
|
"external promise"
|
|
@@ -1043,7 +1161,7 @@ class ExternalModule extends Module {
|
|
|
1043
1161
|
break;
|
|
1044
1162
|
case "amd-async":
|
|
1045
1163
|
this.buildMeta.async = true;
|
|
1046
|
-
|
|
1164
|
+
getEnvironmentNotSupportAsyncWarning().check(
|
|
1047
1165
|
this,
|
|
1048
1166
|
compilation.runtimeTemplate,
|
|
1049
1167
|
"external amd-async"
|
|
@@ -1051,7 +1169,7 @@ class ExternalModule extends Module {
|
|
|
1051
1169
|
break;
|
|
1052
1170
|
case "import":
|
|
1053
1171
|
this.buildMeta.async = true;
|
|
1054
|
-
|
|
1172
|
+
getEnvironmentNotSupportAsyncWarning().check(
|
|
1055
1173
|
this,
|
|
1056
1174
|
compilation.runtimeTemplate,
|
|
1057
1175
|
"external import"
|
|
@@ -1107,6 +1225,19 @@ class ExternalModule extends Module {
|
|
|
1107
1225
|
return undefined;
|
|
1108
1226
|
}
|
|
1109
1227
|
|
|
1228
|
+
/**
|
|
1229
|
+
* @returns {boolean} true, when it may be wrapped
|
|
1230
|
+
*/
|
|
1231
|
+
canBeWrappedInConcatenation() {
|
|
1232
|
+
if (/** @type {BuildMeta} */ (this.buildMeta).async) {
|
|
1233
|
+
return false;
|
|
1234
|
+
}
|
|
1235
|
+
// every other synchronous type is a plain expression; only "module"
|
|
1236
|
+
// renders as a hoisted `import` declaration, and passing it the
|
|
1237
|
+
// concatenation scope is what narrows it to named specifiers
|
|
1238
|
+
return this._resolveExternalType(this.externalType) !== "module";
|
|
1239
|
+
}
|
|
1240
|
+
|
|
1110
1241
|
/**
|
|
1111
1242
|
* Get request and external type.
|
|
1112
1243
|
* @private
|
|
@@ -1138,7 +1269,14 @@ class ExternalModule extends Module {
|
|
|
1138
1269
|
.externalType;
|
|
1139
1270
|
}
|
|
1140
1271
|
return "module";
|
|
1141
|
-
} else if (
|
|
1272
|
+
} else if (
|
|
1273
|
+
// TODO webpack 6 drop "css-url" once the alias is removed
|
|
1274
|
+
externalType === "asset" ||
|
|
1275
|
+
externalType === ASSET_URL_TYPE ||
|
|
1276
|
+
externalType === "css-url"
|
|
1277
|
+
) {
|
|
1278
|
+
// the consumer decides: a css `url()` reads the url out of the module
|
|
1279
|
+
// (marked by the factory), a `new URL()` requires the `asset` wrapper
|
|
1142
1280
|
if (
|
|
1143
1281
|
this.dependencyMeta &&
|
|
1144
1282
|
/** @type {AssetDependencyMeta} */
|
|
@@ -1343,6 +1481,13 @@ class ExternalModule extends Module {
|
|
|
1343
1481
|
};
|
|
1344
1482
|
}
|
|
1345
1483
|
default: {
|
|
1484
|
+
// A wrapped external runs as a module body inside the wrapper, so it
|
|
1485
|
+
// renders the plain `module.exports =` form: its exports are read
|
|
1486
|
+
// through the wrapper accessor, not through a shared-scope binding.
|
|
1487
|
+
const wrapped = Boolean(
|
|
1488
|
+
concatenationScope &&
|
|
1489
|
+
/** @type {ConcatenationScope} */ (concatenationScope).isWrapped()
|
|
1490
|
+
);
|
|
1346
1491
|
const sourceData = this._getSourceData(
|
|
1347
1492
|
request,
|
|
1348
1493
|
externalType,
|
|
@@ -1351,7 +1496,7 @@ class ExternalModule extends Module {
|
|
|
1351
1496
|
chunkGraph,
|
|
1352
1497
|
runtime,
|
|
1353
1498
|
this.dependencyMeta,
|
|
1354
|
-
concatenationScope
|
|
1499
|
+
wrapped ? undefined : concatenationScope
|
|
1355
1500
|
);
|
|
1356
1501
|
|
|
1357
1502
|
// sourceString can be empty str only when there is concatenationScope
|
|
@@ -1365,9 +1510,12 @@ class ExternalModule extends Module {
|
|
|
1365
1510
|
sourceString = "";
|
|
1366
1511
|
const scope = /** @type {ConcatenationScope} */ (concatenationScope);
|
|
1367
1512
|
for (const [specifier, finalName] of specifiers) {
|
|
1513
|
+
// the hoisted `import { x as finalName }` binding is a top-level
|
|
1514
|
+
// name of the chunk, reserve it before members get renamed
|
|
1515
|
+
scope.usedNames.add(finalName);
|
|
1368
1516
|
scope.registerRawExport(specifier, finalName);
|
|
1369
1517
|
}
|
|
1370
|
-
} else if (concatenationScope) {
|
|
1518
|
+
} else if (concatenationScope && !wrapped) {
|
|
1371
1519
|
sourceString = `${runtimeTemplate.renderConst()} ${
|
|
1372
1520
|
ConcatenationScope.NAMESPACE_OBJECT_EXPORT
|
|
1373
1521
|
} = ${sourceString};`;
|
|
@@ -1454,6 +1602,9 @@ class ExternalModule extends Module {
|
|
|
1454
1602
|
}
|
|
1455
1603
|
}
|
|
1456
1604
|
if (this.interop) hash.update(`|interop=${this.interop}`);
|
|
1605
|
+
if (this.sideEffects !== undefined) {
|
|
1606
|
+
hash.update(`|sideEffects=${this.sideEffects}`);
|
|
1607
|
+
}
|
|
1457
1608
|
super.updateHash(hash, context);
|
|
1458
1609
|
}
|
|
1459
1610
|
|
|
@@ -1467,7 +1618,8 @@ class ExternalModule extends Module {
|
|
|
1467
1618
|
.write(this.externalType)
|
|
1468
1619
|
.write(this.userRequest)
|
|
1469
1620
|
.write(this.dependencyMeta)
|
|
1470
|
-
.write(this.interop)
|
|
1621
|
+
.write(this.interop)
|
|
1622
|
+
.write(this.sideEffects);
|
|
1471
1623
|
|
|
1472
1624
|
super.serialize(context);
|
|
1473
1625
|
}
|
|
@@ -1486,8 +1638,10 @@ class ExternalModule extends Module {
|
|
|
1486
1638
|
this.dependencyMeta = c3.read();
|
|
1487
1639
|
const c4 = c3.rest;
|
|
1488
1640
|
this.interop = c4.read();
|
|
1641
|
+
const c5 = c4.rest;
|
|
1642
|
+
this.sideEffects = c5.read();
|
|
1489
1643
|
|
|
1490
|
-
super.deserialize(
|
|
1644
|
+
super.deserialize(c5.rest);
|
|
1491
1645
|
}
|
|
1492
1646
|
}
|
|
1493
1647
|
|
|
@@ -1497,7 +1651,8 @@ ExternalModule.getCompilationHooks = createHooksRegistry(
|
|
|
1497
1651
|
|
|
1498
1652
|
makeSerializable(ExternalModule, "webpack/lib/ExternalModule");
|
|
1499
1653
|
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
module.exports.getExternalModuleNodeCommonjsInitFragment =
|
|
1654
|
+
ExternalModule.ModuleExternalInitFragment = ModuleExternalInitFragment;
|
|
1655
|
+
ExternalModule.getExternalModuleNodeCommonjsInitFragment =
|
|
1503
1656
|
getExternalModuleNodeCommonjsInitFragment;
|
|
1657
|
+
|
|
1658
|
+
module.exports = ExternalModule;
|