@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
|
@@ -6,19 +6,18 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const { InlinedUsedName } = require("../optimize/InlineExports");
|
|
9
|
-
const memoize = require("../util/memoize");
|
|
10
9
|
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
14
|
-
/** @
|
|
15
|
-
/** @
|
|
16
|
-
/** @
|
|
17
|
-
/** @
|
|
18
|
-
/** @
|
|
19
|
-
/** @
|
|
20
|
-
/** @
|
|
21
|
-
/** @
|
|
10
|
+
/** @import { Expression } from "estree" */
|
|
11
|
+
/** @import Dependency from "../Dependency" */
|
|
12
|
+
/** @import Module from "../Module" */
|
|
13
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
14
|
+
/** @import JavascriptParser from "../javascript/JavascriptParser" */
|
|
15
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
16
|
+
/** @import CommonJsFullRequireDependency from "./CommonJsFullRequireDependency" */
|
|
17
|
+
/** @import CommonJsRequireDependency from "./CommonJsRequireDependency" */
|
|
18
|
+
/** @import HarmonyEvaluatedImportSpecifierDependency from "./HarmonyEvaluatedImportSpecifierDependency" */
|
|
19
|
+
/** @import HarmonyImportSpecifierDependency from "./HarmonyImportSpecifierDependency" */
|
|
20
|
+
/** @import ImportDependency from "./ImportDependency" */
|
|
22
21
|
|
|
23
22
|
// Tuple-encoded boolean formula over guard dependencies. Split into per-shape
|
|
24
23
|
// aliases so the recursive references resolve through array/object types.
|
|
@@ -44,13 +43,6 @@ const memoize = require("../util/memoize");
|
|
|
44
43
|
* @property {GuardFormula | null=} presenceFormula memoized presence formula (null = no presence atom)
|
|
45
44
|
*/
|
|
46
45
|
|
|
47
|
-
const getHarmonyImportSpecifierDependency = memoize(() =>
|
|
48
|
-
require("./HarmonyImportSpecifierDependency")
|
|
49
|
-
);
|
|
50
|
-
const getHarmonyEvaluatedImportSpecifierDependency = memoize(() =>
|
|
51
|
-
require("./HarmonyEvaluatedImportSpecifierDependency")
|
|
52
|
-
);
|
|
53
|
-
|
|
54
46
|
// Tri-state truthiness: UNKNOWN means not statically known.
|
|
55
47
|
const UNKNOWN = 0;
|
|
56
48
|
const FALSE = 1;
|
|
@@ -214,19 +206,17 @@ const isDeadByGuards = (guards, moduleGraph, runtime) => {
|
|
|
214
206
|
* @returns {GuardFormula | null} formula, or null when it has no knowable atom
|
|
215
207
|
*/
|
|
216
208
|
const buildFrameLivenessFormula = (parser, frame) => {
|
|
217
|
-
const HarmonyImportSpecifierDependency =
|
|
218
|
-
getHarmonyImportSpecifierDependency();
|
|
219
|
-
const HarmonyEvaluatedImportSpecifierDependency =
|
|
220
|
-
getHarmonyEvaluatedImportSpecifierDependency();
|
|
221
209
|
const deps = /** @type {Module} */ (parser.state.module).dependencies;
|
|
222
210
|
/** @type {Map<number, HarmonyImportSpecifierDependency>} */
|
|
223
211
|
const depByRangeStart = new Map();
|
|
224
212
|
for (let i = /** @type {number} */ (frame.depStart); i < deps.length; i++) {
|
|
225
|
-
const dep =
|
|
213
|
+
const dep = /** @type {HarmonyEvaluatedImportSpecifierDependency} */ (
|
|
214
|
+
deps[i]
|
|
215
|
+
);
|
|
226
216
|
// Exclude `"x" in ns` evaluated deps; those feed the presence formula only.
|
|
227
217
|
if (
|
|
228
|
-
dep
|
|
229
|
-
|
|
218
|
+
dep.isHarmonyImportSpecifier === true &&
|
|
219
|
+
dep.isHarmonyEvaluatedImportSpecifier !== true &&
|
|
230
220
|
dep.range
|
|
231
221
|
) {
|
|
232
222
|
depByRangeStart.set(dep.range[0], dep);
|
|
@@ -341,14 +331,14 @@ const evalPresenceFormula = (formula, name, member, needTruthy) => {
|
|
|
341
331
|
* @returns {GuardFormula | null} formula, or null when it has no presence atom
|
|
342
332
|
*/
|
|
343
333
|
const buildFramePresenceFormula = (parser, frame) => {
|
|
344
|
-
const HarmonyEvaluatedImportSpecifierDependency =
|
|
345
|
-
getHarmonyEvaluatedImportSpecifierDependency();
|
|
346
334
|
const deps = /** @type {Module} */ (parser.state.module).dependencies;
|
|
347
335
|
/** @type {Map<number, HarmonyEvaluatedImportSpecifierDependency>} */
|
|
348
336
|
const depByRangeStart = new Map();
|
|
349
337
|
for (let i = /** @type {number} */ (frame.depStart); i < deps.length; i++) {
|
|
350
|
-
const dep =
|
|
351
|
-
|
|
338
|
+
const dep = /** @type {HarmonyEvaluatedImportSpecifierDependency} */ (
|
|
339
|
+
deps[i]
|
|
340
|
+
);
|
|
341
|
+
if (dep.isHarmonyEvaluatedImportSpecifier === true && dep.range) {
|
|
352
342
|
depByRangeStart.set(dep.range[0], dep);
|
|
353
343
|
}
|
|
354
344
|
}
|
|
@@ -6,19 +6,35 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const Dependency = require("../Dependency");
|
|
9
|
+
const InitFragment = require("../InitFragment");
|
|
9
10
|
const Module = require("../Module");
|
|
10
11
|
const { JAVASCRIPT_TYPE } = require("../ModuleSourceTypeConstants");
|
|
11
12
|
const makeSerializable = require("../util/makeSerializable");
|
|
12
13
|
const HarmonyImportDependency = require("./HarmonyImportDependency");
|
|
14
|
+
const { ImportPhaseUtils } = require("./ImportPhase");
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
/** @
|
|
17
|
-
/** @
|
|
18
|
-
/** @
|
|
19
|
-
/** @
|
|
20
|
-
/** @
|
|
21
|
-
/** @
|
|
16
|
+
const { ExportPresenceModes } = HarmonyImportDependency;
|
|
17
|
+
|
|
18
|
+
/** @import { ReplaceSource } from "webpack-sources" */
|
|
19
|
+
/** @import { GetConditionFn, LazyUntil } from "../Dependency" */
|
|
20
|
+
/** @import { DependencyTemplateContext } from "../DependencyTemplate" */
|
|
21
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
22
|
+
/** @import { ConnectionState } from "../ModuleGraphConnection" */
|
|
23
|
+
/** @import { ImportAttributes } from "../javascript/JavascriptParser" */
|
|
24
|
+
/** @import { ImportPhaseType } from "./ImportPhase" */
|
|
25
|
+
/** @import { Ids, ExportPresenceMode } from "./HarmonyImportDependency" */
|
|
26
|
+
/** @import { JavascriptModuleBuildMeta } from "../javascript/JavascriptModule" */
|
|
27
|
+
/** @import WebpackError from "../errors/WebpackError" */
|
|
28
|
+
/** @import { ObjectSerializerContext, ObjectDeserializerContext } from "../serialization/ObjectMiddleware" */
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Specifiers the module declares but never reads, with the presence level to
|
|
32
|
+
* report them at. Allocated only for a module that has one, so the common
|
|
33
|
+
* import pays a single empty slot.
|
|
34
|
+
* @typedef {object} UnusedSpecifiers
|
|
35
|
+
* @property {ExportPresenceMode} exportPresenceMode
|
|
36
|
+
* @property {[Ids, string][]} specifiers
|
|
37
|
+
*/
|
|
22
38
|
|
|
23
39
|
class HarmonyImportSideEffectDependency extends HarmonyImportDependency {
|
|
24
40
|
/**
|
|
@@ -30,12 +46,111 @@ class HarmonyImportSideEffectDependency extends HarmonyImportDependency {
|
|
|
30
46
|
*/
|
|
31
47
|
constructor(request, sourceOrder, phase, attributes) {
|
|
32
48
|
super(request, sourceOrder, phase, attributes);
|
|
49
|
+
/** @type {UnusedSpecifiers | undefined} */
|
|
50
|
+
this.unusedSpecifiers = undefined;
|
|
33
51
|
}
|
|
34
52
|
|
|
35
53
|
get type() {
|
|
36
54
|
return "harmony side effect evaluation";
|
|
37
55
|
}
|
|
38
56
|
|
|
57
|
+
/**
|
|
58
|
+
* Returns warnings.
|
|
59
|
+
* @param {ModuleGraph} moduleGraph module graph
|
|
60
|
+
* @returns {WebpackError[] | null | undefined} warnings
|
|
61
|
+
*/
|
|
62
|
+
getWarnings(moduleGraph) {
|
|
63
|
+
if (
|
|
64
|
+
this._getEffectiveExportPresenceLevel(moduleGraph) !==
|
|
65
|
+
ExportPresenceModes.WARN
|
|
66
|
+
) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
return this._getUnusedSpecifierErrors(moduleGraph);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Get effective export presence level.
|
|
74
|
+
* @param {ModuleGraph} moduleGraph module graph
|
|
75
|
+
* @returns {ExportPresenceMode} effective mode
|
|
76
|
+
*/
|
|
77
|
+
_getEffectiveExportPresenceLevel(moduleGraph) {
|
|
78
|
+
if (this.unusedSpecifiers === undefined) return ExportPresenceModes.NONE;
|
|
79
|
+
const mode = this.unusedSpecifiers.exportPresenceMode;
|
|
80
|
+
if (mode !== ExportPresenceModes.AUTO) return mode;
|
|
81
|
+
const buildMeta =
|
|
82
|
+
/** @type {JavascriptModuleBuildMeta} */
|
|
83
|
+
(
|
|
84
|
+
/** @type {Module} */
|
|
85
|
+
(moduleGraph.getParentModule(this)).buildMeta
|
|
86
|
+
);
|
|
87
|
+
return buildMeta.strictHarmonyModule
|
|
88
|
+
? ExportPresenceModes.ERROR
|
|
89
|
+
: ExportPresenceModes.WARN;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Returns errors.
|
|
94
|
+
* @param {ModuleGraph} moduleGraph module graph
|
|
95
|
+
* @returns {WebpackError[] | null | undefined} errors
|
|
96
|
+
*/
|
|
97
|
+
getErrors(moduleGraph) {
|
|
98
|
+
if (
|
|
99
|
+
this._getEffectiveExportPresenceLevel(moduleGraph) !==
|
|
100
|
+
ExportPresenceModes.ERROR
|
|
101
|
+
) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
return this._getUnusedSpecifierErrors(moduleGraph);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Linking errors for specifiers the module declares but never references.
|
|
109
|
+
* The spec resolves every import entry, so a name that does not exist is a
|
|
110
|
+
* link error whether or not the binding is read.
|
|
111
|
+
* @param {ModuleGraph} moduleGraph module graph
|
|
112
|
+
* @returns {WebpackError[] | undefined} errors
|
|
113
|
+
*/
|
|
114
|
+
_getUnusedSpecifierErrors(moduleGraph) {
|
|
115
|
+
// Both callers resolve the presence level first, which is NONE without
|
|
116
|
+
// specifiers, so this only runs when there are some.
|
|
117
|
+
const { specifiers } = /** @type {UnusedSpecifiers} */ (
|
|
118
|
+
this.unusedSpecifiers
|
|
119
|
+
);
|
|
120
|
+
/** @type {WebpackError[] | undefined} */
|
|
121
|
+
let errors;
|
|
122
|
+
for (const [ids, name] of specifiers) {
|
|
123
|
+
const linkingErrors = this.getLinkingErrors(
|
|
124
|
+
moduleGraph,
|
|
125
|
+
ids,
|
|
126
|
+
`(imported as '${name}')`
|
|
127
|
+
);
|
|
128
|
+
if (linkingErrors) {
|
|
129
|
+
if (errors === undefined) errors = linkingErrors;
|
|
130
|
+
else errors.push(...linkingErrors);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return errors;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Serializes this instance into the provided serializer context.
|
|
138
|
+
* @param {ObjectSerializerContext} context context
|
|
139
|
+
*/
|
|
140
|
+
serialize(context) {
|
|
141
|
+
context.write(this.unusedSpecifiers);
|
|
142
|
+
super.serialize(context);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Restores this instance from the provided deserializer context.
|
|
147
|
+
* @param {ObjectDeserializerContext} context context
|
|
148
|
+
*/
|
|
149
|
+
deserialize(context) {
|
|
150
|
+
this.unusedSpecifiers = context.read();
|
|
151
|
+
super.deserialize(context);
|
|
152
|
+
}
|
|
153
|
+
|
|
39
154
|
/**
|
|
40
155
|
* Returns the export name this dependency requests from its target module (lazy barrel optimization).
|
|
41
156
|
* @returns {string | true | null} export name, true for all exports, null for none
|
|
@@ -93,7 +208,8 @@ HarmonyImportSideEffectDependency.Template = class HarmonyImportSideEffectDepend
|
|
|
93
208
|
* @returns {void}
|
|
94
209
|
*/
|
|
95
210
|
apply(dependency, source, templateContext) {
|
|
96
|
-
const { moduleGraph, concatenationScope } =
|
|
211
|
+
const { moduleGraph, concatenationScope, runtime, initFragments } =
|
|
212
|
+
templateContext;
|
|
97
213
|
|
|
98
214
|
const module = /** @type {Module} */ (moduleGraph.getModule(dependency));
|
|
99
215
|
|
|
@@ -103,6 +219,33 @@ HarmonyImportSideEffectDependency.Template = class HarmonyImportSideEffectDepend
|
|
|
103
219
|
}
|
|
104
220
|
|
|
105
221
|
if (concatenationScope && concatenationScope.isModuleInScope(module)) {
|
|
222
|
+
if (concatenationScope.isModuleWrapped(module)) {
|
|
223
|
+
const dep = /** @type {HarmonyImportSideEffectDependency} */ (
|
|
224
|
+
dependency
|
|
225
|
+
);
|
|
226
|
+
if (ImportPhaseUtils.isDefer(dep.phase)) return;
|
|
227
|
+
const connection = moduleGraph.getConnection(dep);
|
|
228
|
+
if (!connection || !connection.isTargetActive(runtime)) return;
|
|
229
|
+
// A hoisted body cannot be deferred, so its imports evaluate at their
|
|
230
|
+
// own slots; calling from here would run them after everything hoisted
|
|
231
|
+
// in between. Eagerness stops at one level: a module is generated
|
|
232
|
+
// before its importers, so it never learns whether it is itself eager.
|
|
233
|
+
if (concatenationScope.isWrapped()) {
|
|
234
|
+
initFragments.push(
|
|
235
|
+
new InitFragment(
|
|
236
|
+
`${concatenationScope.createModuleReference(module, {
|
|
237
|
+
moduleExportsAccess: true,
|
|
238
|
+
asiSafe: true
|
|
239
|
+
})};\n`,
|
|
240
|
+
InitFragment.STAGE_HARMONY_IMPORTS,
|
|
241
|
+
/** @type {number} */ (dep.sourceOrder),
|
|
242
|
+
`cjs eager init ${module.identifier()}`
|
|
243
|
+
)
|
|
244
|
+
);
|
|
245
|
+
} else {
|
|
246
|
+
concatenationScope.registerEagerModule(module);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
106
249
|
return;
|
|
107
250
|
}
|
|
108
251
|
super.apply(dependency, source, templateContext);
|
|
@@ -11,6 +11,7 @@ const Template = require("../Template");
|
|
|
11
11
|
const {
|
|
12
12
|
InlinedUsedName,
|
|
13
13
|
isExportInlined,
|
|
14
|
+
isInlineEnabled,
|
|
14
15
|
isInlineExportsEnabled
|
|
15
16
|
} = require("../optimize/InlineExports");
|
|
16
17
|
const {
|
|
@@ -18,38 +19,48 @@ const {
|
|
|
18
19
|
} = require("../optimize/InnerGraph");
|
|
19
20
|
const { getTrimmedIdsAndRange } = require("../util/chainedImports");
|
|
20
21
|
const makeSerializable = require("../util/makeSerializable");
|
|
21
|
-
const memoize = require("../util/memoize");
|
|
22
22
|
const { propertyAccess } = require("../util/property");
|
|
23
23
|
const traverseDestructuringAssignmentProperties = require("../util/traverseDestructuringAssignmentProperties");
|
|
24
24
|
const HarmonyImportDependency = require("./HarmonyImportDependency");
|
|
25
|
+
const HarmonyImportGuard = require("./HarmonyImportGuard");
|
|
25
26
|
const { ImportPhaseUtils } = require("./ImportPhase");
|
|
26
27
|
|
|
27
|
-
/** @
|
|
28
|
-
/** @
|
|
29
|
-
/** @
|
|
30
|
-
/** @
|
|
31
|
-
/** @
|
|
32
|
-
/**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
/** @
|
|
38
|
-
/**
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
/** @
|
|
46
|
-
/**
|
|
28
|
+
/** @import { ReplaceSource } from "webpack-sources" */
|
|
29
|
+
/** @import { GetConditionFn, ReferencedExports } from "../Dependency" */
|
|
30
|
+
/** @import { DependencyTemplateContext } from "../DependencyTemplate" */
|
|
31
|
+
/** @import Module, { BuildMeta } from "../Module" */
|
|
32
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
33
|
+
/**
|
|
34
|
+
* @import ModuleGraphConnection, {
|
|
35
|
+
* ConnectionState
|
|
36
|
+
* } from "../ModuleGraphConnection"
|
|
37
|
+
*/
|
|
38
|
+
/** @import WebpackError from "../errors/WebpackError" */
|
|
39
|
+
/**
|
|
40
|
+
* @import {
|
|
41
|
+
* DestructuringAssignmentProperties,
|
|
42
|
+
* ImportAttributes,
|
|
43
|
+
* Range
|
|
44
|
+
* } from "../javascript/JavascriptParser"
|
|
45
|
+
*/
|
|
46
|
+
/** @import { UsedByExports } from "../optimize/InnerGraph" */
|
|
47
|
+
/**
|
|
48
|
+
* @import {
|
|
49
|
+
* ObjectDeserializerContext,
|
|
50
|
+
* ObjectSerializerContext
|
|
51
|
+
* } from "../serialization/ObjectMiddleware"
|
|
52
|
+
*/
|
|
53
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
54
|
+
/** @import { IdRanges } from "../util/chainedImports" */
|
|
55
|
+
/** @import { ExportPresenceMode } from "./HarmonyImportDependency" */
|
|
47
56
|
/** @typedef {HarmonyImportDependency.Ids} Ids */
|
|
48
|
-
/** @
|
|
49
|
-
/** @
|
|
50
|
-
/**
|
|
51
|
-
|
|
52
|
-
|
|
57
|
+
/** @import { ImportPhaseType } from "./ImportPhase" */
|
|
58
|
+
/** @import { DependencyGuard } from "./HarmonyImportGuard" */
|
|
59
|
+
/**
|
|
60
|
+
* @import {
|
|
61
|
+
* JavascriptModuleBuildMeta
|
|
62
|
+
* } from "../javascript/JavascriptModule"
|
|
63
|
+
*/
|
|
53
64
|
|
|
54
65
|
const idsSymbol = /** @type {symbol} */ (
|
|
55
66
|
Symbol("HarmonyImportSpecifierDependency.ids")
|
|
@@ -57,7 +68,22 @@ const idsSymbol = /** @type {symbol} */ (
|
|
|
57
68
|
|
|
58
69
|
const { ExportPresenceModes } = HarmonyImportDependency;
|
|
59
70
|
|
|
71
|
+
/**
|
|
72
|
+
* One condition closure per module graph and variant rather than per dependency.
|
|
73
|
+
* The dependency the condition was built for is always the one on the connection
|
|
74
|
+
* it is called with, since `ModuleGraph#setResolvedModule` is the only caller of
|
|
75
|
+
* `getCondition` and pairs the two. Indexed by
|
|
76
|
+
* `(usedByExports ? 1 : 0) | (inlineEnabled ? 2 : 0)`.
|
|
77
|
+
* @type {WeakMap<ModuleGraph, (GetConditionFn | undefined)[]>}
|
|
78
|
+
*/
|
|
79
|
+
const conditionsByModuleGraph = new WeakMap();
|
|
80
|
+
|
|
60
81
|
class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
82
|
+
// read by `HarmonyImportGuard` in place of `instanceof`, which would cycle
|
|
83
|
+
get isHarmonyImportSpecifier() {
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
|
|
61
87
|
/**
|
|
62
88
|
* Creates an instance of HarmonyImportSpecifierDependency.
|
|
63
89
|
* @param {string} request request
|
|
@@ -181,36 +207,59 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
181
207
|
moduleGraph
|
|
182
208
|
);
|
|
183
209
|
if (usedByExportsCondition === false) return false;
|
|
210
|
+
const inlineEnabled = isInlineExportsEnabled(moduleGraph);
|
|
184
211
|
// Keep the connection unconditional (fast path) when nothing can deactivate it
|
|
185
212
|
if (
|
|
186
213
|
usedByExportsCondition === null &&
|
|
187
214
|
this.branchGuards === undefined &&
|
|
188
|
-
!
|
|
215
|
+
!inlineEnabled
|
|
189
216
|
) {
|
|
190
217
|
return null;
|
|
191
218
|
}
|
|
192
|
-
|
|
193
|
-
|
|
219
|
+
// Everything the condition still needs is either per module graph or on
|
|
220
|
+
// the connection it is called with, so one closure per variant serves the
|
|
221
|
+
// whole graph instead of one per dependency.
|
|
222
|
+
const slot =
|
|
223
|
+
(usedByExportsCondition === null ? 0 : 1) | (inlineEnabled ? 2 : 0);
|
|
224
|
+
let variants = conditionsByModuleGraph.get(moduleGraph);
|
|
225
|
+
if (variants === undefined) {
|
|
226
|
+
variants = [undefined, undefined, undefined, undefined];
|
|
227
|
+
conditionsByModuleGraph.set(moduleGraph, variants);
|
|
228
|
+
}
|
|
229
|
+
const cached = variants[slot];
|
|
230
|
+
if (cached !== undefined) return cached;
|
|
231
|
+
/** @type {GetConditionFn} */
|
|
232
|
+
const condition = (connection, runtime) => {
|
|
233
|
+
const dep = /** @type {HarmonyImportSpecifierDependency} */ (
|
|
234
|
+
connection.dependency
|
|
235
|
+
);
|
|
194
236
|
if (usedByExportsCondition !== null) {
|
|
195
237
|
const result = usedByExportsCondition(connection, runtime);
|
|
196
238
|
if (result === false) return false;
|
|
197
239
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
240
|
+
// `isInlineEnabled` is the cheap module-level precondition of
|
|
241
|
+
// `isExportInlined`; checking it here keeps the id lookup off the hot
|
|
242
|
+
// path for the common target module that has no inlined exports
|
|
243
|
+
if (inlineEnabled && isInlineEnabled(connection.module)) {
|
|
244
|
+
const ids = dep.getIds(moduleGraph);
|
|
245
|
+
if (
|
|
246
|
+
ids.length > 0 &&
|
|
247
|
+
isExportInlined(moduleGraph, connection.module, ids, runtime)
|
|
248
|
+
) {
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
204
251
|
}
|
|
205
252
|
const guards = dep.branchGuards;
|
|
206
253
|
if (
|
|
207
254
|
guards !== undefined &&
|
|
208
|
-
|
|
255
|
+
HarmonyImportGuard.isDeadByGuards(guards, moduleGraph, runtime)
|
|
209
256
|
) {
|
|
210
257
|
return false;
|
|
211
258
|
}
|
|
212
259
|
return true;
|
|
213
260
|
};
|
|
261
|
+
variants[slot] = condition;
|
|
262
|
+
return condition;
|
|
214
263
|
}
|
|
215
264
|
|
|
216
265
|
/**
|
|
@@ -287,21 +336,19 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
287
336
|
*/
|
|
288
337
|
_getReferencedExportsInDestructuring(ids) {
|
|
289
338
|
if (this.referencedPropertiesInDestructuring) {
|
|
290
|
-
/** @type {
|
|
291
|
-
const
|
|
339
|
+
/** @type {ReferencedExports} */
|
|
340
|
+
const refs = [];
|
|
292
341
|
traverseDestructuringAssignmentProperties(
|
|
293
342
|
this.referencedPropertiesInDestructuring,
|
|
294
|
-
(stack) =>
|
|
343
|
+
(stack) => {
|
|
344
|
+
const idsInDestructuring = stack.map((p) => p.id);
|
|
345
|
+
// Destructuring consumer can't accept an inlined literal
|
|
346
|
+
refs.push({
|
|
347
|
+
name: ids ? [...ids, ...idsInDestructuring] : idsInDestructuring,
|
|
348
|
+
canInline: false
|
|
349
|
+
});
|
|
350
|
+
}
|
|
295
351
|
);
|
|
296
|
-
/** @type {ReferencedExports} */
|
|
297
|
-
const refs = [];
|
|
298
|
-
for (const idsInDestructuring of refsInDestructuring) {
|
|
299
|
-
// Destructuring consumer can't accept an inlined literal
|
|
300
|
-
refs.push({
|
|
301
|
-
name: ids ? [...ids, ...idsInDestructuring] : idsInDestructuring,
|
|
302
|
-
canInline: false
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
352
|
return refs;
|
|
306
353
|
}
|
|
307
354
|
return ids
|
|
@@ -643,5 +690,6 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
643
690
|
}
|
|
644
691
|
};
|
|
645
692
|
|
|
693
|
+
HarmonyImportSpecifierDependency.idsSymbol = idsSymbol;
|
|
694
|
+
|
|
646
695
|
module.exports = HarmonyImportSpecifierDependency;
|
|
647
|
-
module.exports.idsSymbol = idsSymbol;
|
|
@@ -27,9 +27,13 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend
|
|
|
27
27
|
const HarmonyTopLevelThisParserPlugin = require("./HarmonyTopLevelThisParserPlugin");
|
|
28
28
|
const TopLevelAwaitDependency = require("./TopLevelAwaitDependency");
|
|
29
29
|
|
|
30
|
-
/**
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
/**
|
|
31
|
+
* @import {
|
|
32
|
+
* JavascriptParserOptions
|
|
33
|
+
* } from "../../declarations/WebpackOptions"
|
|
34
|
+
*/
|
|
35
|
+
/** @import Compiler from "../Compiler" */
|
|
36
|
+
/** @import Parser from "../javascript/JavascriptParser" */
|
|
33
37
|
|
|
34
38
|
/**
|
|
35
39
|
* Defines the harmony modules plugin options type used by this module.
|
|
@@ -8,9 +8,7 @@
|
|
|
8
8
|
const ConstDependency = require("./ConstDependency");
|
|
9
9
|
const HarmonyExports = require("./HarmonyExports");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
12
|
-
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
|
13
|
-
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
11
|
+
/** @import JavascriptParser, { Range } from "../javascript/JavascriptParser" */
|
|
14
12
|
|
|
15
13
|
const PLUGIN_NAME = "HarmonyTopLevelThisParserPlugin";
|
|
16
14
|
|